v0.14.0
Public Member Functions | Private Attributes | List of all members
EshelbianPlasticity::OpCalculateStrainEnergy Struct Reference

#include <users_modules/eshelbian_plasticit/src/EshelbianPlasticity.hpp>

Inheritance diagram for EshelbianPlasticity::OpCalculateStrainEnergy:
[legend]
Collaboration diagram for EshelbianPlasticity::OpCalculateStrainEnergy:
[legend]

Public Member Functions

 OpCalculateStrainEnergy (const std::string field_name, boost::shared_ptr< DataAtIntegrationPts > data_at_pts, boost::shared_ptr< double > &e)
 
MoFEMErrorCode doWork (int side, EntityType type, EntitiesFieldData::EntData &data)
 

Private Attributes

boost::shared_ptr< DataAtIntegrationPtsdataAtPts
 
boost::shared_ptr< doubleenergy
 

Detailed Description

Definition at line 846 of file EshelbianPlasticity.hpp.

Constructor & Destructor Documentation

◆ OpCalculateStrainEnergy()

EshelbianPlasticity::OpCalculateStrainEnergy::OpCalculateStrainEnergy ( const std::string  field_name,
boost::shared_ptr< DataAtIntegrationPts data_at_pts,
boost::shared_ptr< double > &  e 
)
inline

Definition at line 848 of file EshelbianPlasticity.hpp.

Member Function Documentation

◆ doWork()

MoFEMErrorCode EshelbianPlasticity::OpCalculateStrainEnergy::doWork ( int  side,
EntityType  type,
EntitiesFieldData::EntData data 
)

Definition at line 2409 of file EshelbianOperators.cpp.

2410  {
2412  if (type == MBTET) {
2413  int nb_integration_pts = data.getN().size1();
2414  auto v = getVolume();
2415  auto t_w = getFTensor0IntegrationWeight();
2416  auto t_P = getFTensor2FromMat<3, 3>(dataAtPts->approxPAtPts);
2417  auto t_h = getFTensor2FromMat<3, 3>(dataAtPts->hAtPts);
2418 
2421 
2422  for (int gg = 0; gg != nb_integration_pts; ++gg) {
2423  const double a = t_w * v;
2424  // FIXME: this is wrong, energy should be calculated in material
2425  (*energy) += a * t_P(i, J) * t_h(i, J);
2426  ++t_w;
2427  ++t_P;
2428  ++t_h;
2429  }
2430  }
2432 }

Member Data Documentation

◆ dataAtPts

boost::shared_ptr<DataAtIntegrationPts> EshelbianPlasticity::OpCalculateStrainEnergy::dataAtPts
private

Definition at line 858 of file EshelbianPlasticity.hpp.

◆ energy

boost::shared_ptr<double> EshelbianPlasticity::OpCalculateStrainEnergy::energy
private

Definition at line 859 of file EshelbianPlasticity.hpp.


The documentation for this struct was generated from the following files:
J
FTensor::Index< 'J', DIM1 > J
Definition: level_set.cpp:30
a
constexpr double a
Definition: approx_sphere.cpp:30
EshelbianPlasticity::OpCalculateStrainEnergy::dataAtPts
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
Definition: EshelbianPlasticity.hpp:858
convert.type
type
Definition: convert.py:64
EshelbianPlasticity::VolUserDataOperator
VolumeElementForcesAndSourcesCore::UserDataOperator VolUserDataOperator
Definition: EshelbianPlasticity.hpp:28
i
FTensor::Index< 'i', SPACE_DIM > i
Definition: hcurl_divergence_operator_2d.cpp:27
field_name
constexpr auto field_name
Definition: poisson_2d_homogeneous.cpp:13
FTensor::Index< 'i', 3 >
v
const double v
phase velocity of light in medium (cm/ns)
Definition: initial_diffusion.cpp:40
MoFEM::EntitiesFieldData::EntData::getN
MatrixDouble & getN(const FieldApproximationBase base)
get base functions this return matrix (nb. of rows is equal to nb. of Gauss pts, nb....
Definition: EntitiesFieldData.hpp:1305
EshelbianPlasticity::OpCalculateStrainEnergy::energy
boost::shared_ptr< double > energy
Definition: EshelbianPlasticity.hpp:859
MoFEMFunctionReturn
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:416
MoFEMFunctionBegin
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:346
MoFEM::ForcesAndSourcesCore::UserDataOperator::OPROW
@ OPROW
operator doWork function is executed on FE rows
Definition: ForcesAndSourcesCore.hpp:567