v0.10.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 835 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 836 of file EshelbianPlasticity.hpp.

838  : 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 683 of file EshelbianOperators.cpp.

683  {
685  int nb_dofs = data.getIndices().size();
686  int nb_integration_pts = data.getN().size1();
687  auto v = getVolume();
688  auto t_w = getFTensor0IntegrationWeight();
689  auto t_R = getFTensor2FromMat<3, 3>(dataAtPts->rotMatAtPts);
690  auto t_u = getFTensor2SymmetricFromMat<3>(dataAtPts->streachTensorAtPts);
691 
692  int nb_base_functions = data.getN().size2() / 9;
693  auto t_row_base_fun = data.getFTensor2N<3, 3>();
698 
699  auto get_ftensor0 = [](auto &v) {
701  };
702 
703  for (int gg = 0; gg != nb_integration_pts; ++gg) {
704  double a = v * t_w;
705  auto t_nf = get_ftensor0(nF);
706 
707  constexpr auto t_kd = FTensor::Kronecker_Delta<int>();
709  t_residuum(i, j) = t_R(i, k) * t_u(k, j) - t_kd(i, j);
710 
711  int bb = 0;
712  for (; bb != nb_dofs; ++bb) {
713  t_nf += a * t_row_base_fun(i, j) * t_residuum(i, j);
714  ++t_nf;
715  ++t_row_base_fun;
716  }
717  for (; bb != nb_base_functions; ++bb) {
718  ++t_row_base_fun;
719  }
720  ++t_w;
721  ++t_R;
722  ++t_u;
723  }
724 
726 }
Kronecker Delta class.
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:485
boost::shared_ptr< DataAtIntegrationPts > dataAtPts
data at integration pts
const VectorInt & getIndices() const
Get global indices of dofs on entity.
static Index< 'm', 3 > m
static Index< 'i', 3 > i
FTensor::Tensor2< FTensor::PackPtr< double *, Tensor_Dim0 *Tensor_Dim1 >, Tensor_Dim0, Tensor_Dim1 > getFTensor2N(FieldApproximationBase base)
Get base functions for Hdiv/Hcurl spaces.
static Index< 'j', 3 > j
static Index< 'k', 3 > k
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:415
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: