v0.9.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 856 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 857 of file EshelbianPlasticity.hpp.

859  : 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 299 of file EshelbianOperators.cpp.

299  {
301  int nb_dofs = data.getIndices().size();
302  int nb_integration_pts = data.getN().size1();
303  auto v = getVolume();
304  auto t_w = getFTensor0IntegrationWeight();
305  auto t_s_w = getFTensor1FromMat<3>(*(dataAtPts->wAtPts));
306  int nb_base_functions = data.getN().size2() / 3;
307  auto t_row_diff_base_fun = data.getFTensor2DiffN<3, 3>();
309  auto get_ftensor1 = [](auto &v) {
310  return FTensor::Tensor1<FTensor::PackPtr<double *, 3>, 3>(&v[0], &v[1],
311  &v[2]);
312  };
313 
314  for (int gg = 0; gg != nb_integration_pts; ++gg) {
315  double a = v * t_w;
316  auto t_nf = get_ftensor1(nF);
317  int bb = 0;
318  for (; bb != nb_dofs / 3; ++bb) {
319  double div_row_base = t_row_diff_base_fun(i, i);
320  t_nf(i) += a * div_row_base * t_s_w(i);
321  ++t_nf;
322  ++t_row_diff_base_fun;
323  }
324  for (; bb != nb_base_functions; ++bb) {
325  ++t_row_diff_base_fun;
326  }
327  ++t_w;
328  ++t_s_w;
329  }
330 
332 }
#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 > 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: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: