v0.10.0
Public Member Functions | List of all members
EshelbianPlasticity::OpSpatialConsistencyDivTerm Struct Reference

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

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

Public Member Functions

 OpSpatialConsistencyDivTerm (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 842 of file EshelbianPlasticity.hpp.

Constructor & Destructor Documentation

◆ OpSpatialConsistencyDivTerm()

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

Definition at line 843 of file EshelbianPlasticity.hpp.

845  : 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::OpSpatialConsistencyDivTerm::integrate ( EntData data)
virtual

Reimplemented from EshelbianPlasticity::OpAssembleBasic< VolUserDataOperator >.

Definition at line 728 of file EshelbianOperators.cpp.

728  {
730  int nb_dofs = data.getIndices().size();
731  int nb_integration_pts = data.getN().size1();
732  auto v = getVolume();
733  auto t_w = getFTensor0IntegrationWeight();
734  auto t_s_w = getFTensor1FromMat<3>(dataAtPts->wAtPts);
735  int nb_base_functions = data.getN().size2() / 3;
736  auto t_row_diff_base_fun = data.getFTensor2DiffN<3, 3>();
738  auto get_ftensor1 = [](auto &v) {
739  return FTensor::Tensor1<FTensor::PackPtr<double *, 3>, 3>(&v[0], &v[1],
740  &v[2]);
741  };
742 
743  for (int gg = 0; gg != nb_integration_pts; ++gg) {
744  double a = v * t_w;
745  auto t_nf = get_ftensor1(nF);
746  int bb = 0;
747  for (; bb != nb_dofs / 3; ++bb) {
748  double div_row_base = t_row_diff_base_fun(i, i);
749  t_nf(i) += a * div_row_base * t_s_w(i);
750  ++t_nf;
751  ++t_row_diff_base_fun;
752  }
753  for (; bb != nb_base_functions; ++bb) {
754  ++t_row_diff_base_fun;
755  }
756  ++t_w;
757  ++t_s_w;
758  }
759 
761 }
#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< 'i', 3 > i
FTensor::Tensor2< FTensor::PackPtr< double *, Tensor_Dim0 *Tensor_Dim1 >, Tensor_Dim0, Tensor_Dim1 > getFTensor2DiffN(FieldApproximationBase base)
Get derivatives of base functions for Hdiv space.
#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: