v0.9.0
Public Member Functions | List of all members
EshelbianPlasticity::OpSpatialConsistencyBubble Struct Reference

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

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

Public Member Functions

 OpSpatialConsistencyBubble (const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > &data_ptr)
 
MoFEMErrorCode integrate (EntData &data)
 
- Public Member Functions inherited from EshelbianPlasticity::OpAssembleVolume
 OpAssembleVolume (const std::string &field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)
 
 OpAssembleVolume (const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type, const bool assemble_symmetry)
 
- Public Member Functions inherited from EshelbianPlasticity::OpAssembleBasic< VolUserDataOperator >
 OpAssembleBasic (const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)
 
 OpAssembleBasic (const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type, const bool assemble_symmetry)
 
virtual MoFEMErrorCode integrate (int row_side, EntityType row_type, EntData &data)
 
virtual MoFEMErrorCode integrate (EntData &row_data, EntData &col_data)
 
virtual MoFEMErrorCode assemble (EntData &data)
 
virtual MoFEMErrorCode assemble (int row_side, EntityType row_type, EntData &data)
 
virtual MoFEMErrorCode assemble (int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
 
MoFEMErrorCode doWork (int side, EntityType type, EntData &data)
 
MoFEMErrorCode doWork (int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
 

Additional Inherited Members

- Public Attributes inherited from EshelbianPlasticity::OpAssembleBasic< VolUserDataOperator >
const bool assembleSymmetry
 
boost::shared_ptr< DataAtIntegrationPtsdataAtPts
 data at integration pts More...
 
VectorDouble nF
 local right hand side vector More...
 
MatrixDouble K
 local tangent matrix More...
 
MatrixDouble transposeK
 

Detailed Description

Definition at line 849 of file EshelbianPlasticity.hpp.

Constructor & Destructor Documentation

◆ OpSpatialConsistencyBubble()

EshelbianPlasticity::OpSpatialConsistencyBubble::OpSpatialConsistencyBubble ( const std::string &  field_name,
boost::shared_ptr< DataAtIntegrationPts > &  data_ptr 
)

Definition at line 850 of file EshelbianPlasticity.hpp.

852  : OpAssembleVolume(field_name, data_ptr, OPROW) {}
OpAssembleVolume(const std::string &field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)

Member Function Documentation

◆ integrate()

MoFEMErrorCode EshelbianPlasticity::OpSpatialConsistencyBubble::integrate ( EntData data)
virtual

Reimplemented from EshelbianPlasticity::OpAssembleBasic< VolUserDataOperator >.

Definition at line 258 of file EshelbianOperators.cpp.

258  {
260  int nb_dofs = data.getIndices().size();
261  int nb_integration_pts = data.getN().size1();
262  auto v = getVolume();
263  auto t_w = getFTensor0IntegrationWeight();
264  auto t_delta_h = getFTensor2FromMat<3, 3>(*(dataAtPts->hDeltaAtPts));
265  auto t_x_grad = getFTensor2FromMat<3, 3>(*(dataAtPts->xGradAtPts));
266 
267  int nb_base_functions = data.getN().size2() / 9;
268  auto t_row_base_fun = data.getFTensor2N<3, 3>();
272  auto get_ftensor0 = [](auto &v) {
274  };
275 
276  for (int gg = 0; gg != nb_integration_pts; ++gg) {
277  double a = v * t_w;
278  auto t_nf = get_ftensor0(nF);
279  int bb = 0;
280  for (; bb != nb_dofs; ++bb) {
281  FTensor::Tensor2<double, 3, 3> t_pushed_base;
282  t_pushed_base(i, j) = t_x_grad(j, k) * t_row_base_fun(i, k);
283  t_nf += a * t_pushed_base(i, j) * t_delta_h(i, j);
284  t_nf -= a * t_pushed_base(i, i);
285  ++t_nf;
286  ++t_row_base_fun;
287  }
288  for (; bb != nb_base_functions; ++bb) {
289  ++t_row_base_fun;
290  }
291  ++t_w;
292  ++t_delta_h;
293  ++t_x_grad;
294  }
295 
297 }
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:477
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
const VectorInt & getIndices() const
Get global indices of dofs on entity.
FTensor::Tensor2< FTensor::PackPtr< double *, Tensor_Dim0 *Tensor_Dim1 >, Tensor_Dim0, Tensor_Dim1 > getFTensor2N(FieldApproximationBase base)
Get base functions for Hdiv/Hcurl spaces.
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:407
MatrixDouble & getN(const FieldApproximationBase base)
get base functions this return matrix (nb. of rows is equal to nb. of Gauss pts, nb....

The documentation for this struct was generated from the following files: