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

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

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

Public Member Functions

 OpSpatialConsistency_dBubble_dx (const std::string &row_field, const std::string &col_field, boost::shared_ptr< DataAtIntegrationPts > &data_ptr, const bool assemble_off=false)
 
MoFEMErrorCode integrate (EntData &row_data, EntData &col_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 (EntData &data)
 
virtual MoFEMErrorCode integrate (int row_side, EntityType row_type, EntData &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 1124 of file EshelbianPlasticity.hpp.

Constructor & Destructor Documentation

◆ OpSpatialConsistency_dBubble_dx()

EshelbianPlasticity::OpSpatialConsistency_dBubble_dx::OpSpatialConsistency_dBubble_dx ( const std::string &  row_field,
const std::string &  col_field,
boost::shared_ptr< DataAtIntegrationPts > &  data_ptr,
const bool  assemble_off = false 
)

Definition at line 1125 of file EshelbianPlasticity.hpp.

1129  : OpAssembleVolume(row_field, col_field, data_ptr, OPROWCOL,
1130  assemble_off) {
1131  sYmm = false;
1132  }
OpAssembleVolume(const std::string &field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const char type)

Member Function Documentation

◆ integrate()

MoFEMErrorCode EshelbianPlasticity::OpSpatialConsistency_dBubble_dx::integrate ( EntData row_data,
EntData col_data 
)
virtual

Reimplemented from EshelbianPlasticity::OpAssembleBasic< VolUserDataOperator >.

Definition at line 1797 of file EshelbianOperators.cpp.

1798  {
1800 
1801  int nb_integration_pts = row_data.getN().size1();
1802  int row_nb_dofs = row_data.getIndices().size();
1803  int col_nb_dofs = col_data.getIndices().size();
1804 
1805  auto get_ftensor2 = [](MatrixDouble &m, const int r, const int c) {
1807  &m(r, c + 0), &m(r, c + 1), &m(r, c + 2));
1808  };
1809 
1814 
1815  auto v = getVolume();
1816  auto t_w = getFTensor0IntegrationWeight();
1817  auto t_delta_h = getFTensor2FromMat<3, 3>(*(dataAtPts->hDeltaAtPts));
1818  int row_nb_base_functions = row_data.getN().size2() / 9;
1819  auto t_row_base_fun = row_data.getFTensor2N<3, 3>();
1820 
1821  for (int gg = 0; gg != nb_integration_pts; ++gg) {
1822  double a = v * t_w;
1823 
1824  int rr = 0;
1825  for (; rr != row_nb_dofs; ++rr) {
1826 
1827  auto t_col_diff_base_fun = col_data.getFTensor1DiffN<3>(gg, 0);
1828  auto t_m = get_ftensor2(K, rr, 0);
1829 
1830  for (int cc = 0; cc != col_nb_dofs / 3; ++cc) {
1831 
1832  FTensor::Tensor1<double, 3> t_pushed_base_dx;
1833  t_pushed_base_dx(i) = a * t_col_diff_base_fun(l) * t_row_base_fun(i, l);
1834  t_m(j) += t_pushed_base_dx(i) * t_delta_h(i, j);
1835  t_m(i) -= t_pushed_base_dx(i);
1836 
1837  ++t_m;
1838  ++t_col_diff_base_fun;
1839  }
1840 
1841  ++t_row_base_fun;
1842  }
1843 
1844  for (; rr != row_nb_base_functions; ++rr)
1845  ++t_row_base_fun;
1846 
1847  ++t_w;
1848  ++t_delta_h;
1849  }
1851 }
ublas::matrix< double, ublas::row_major, DoubleAllocator > MatrixDouble
Definition: Types.hpp:74
#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
FTensor::Tensor1< double *, Tensor_Dim > getFTensor1DiffN(const FieldApproximationBase base)
Get derivatives of base functions.
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: