v0.13.0
Public Member Functions | Private Attributes | List of all members
PlasticOps::OpCalculatePlasticInternalForceLhs_LogStrain_dEP Struct Reference

#include <users_modules/tutorials/adv-0/src/PlasticOps.hpp>

Inheritance diagram for PlasticOps::OpCalculatePlasticInternalForceLhs_LogStrain_dEP:
[legend]
Collaboration diagram for PlasticOps::OpCalculatePlasticInternalForceLhs_LogStrain_dEP:
[legend]

Public Member Functions

 OpCalculatePlasticInternalForceLhs_LogStrain_dEP (const std::string row_field_name, const std::string col_field_name, boost::shared_ptr< CommonData > common_data_ptr, boost::shared_ptr< HenckyOps::CommonData > common_henky_data_ptr, boost::shared_ptr< MatrixDouble > m_D_ptr)
 
MoFEMErrorCode iNtegrate (EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
 
- Public Member Functions inherited from MoFEM::OpBaseImpl< A, EleOp >
 OpBaseImpl (const std::string row_field_name, const std::string col_field_name, const OpType type)
 
MoFEMErrorCode doWork (int row_side, int col_side, EntityType row_type, EntityType col_type, EntData &row_data, EntData &col_data)
 Do calculations for the left hand side. More...
 
MoFEMErrorCode doWork (int row_side, EntityType row_type, EntData &row_data)
 Do calculations for the right hand side. More...
 

Private Attributes

boost::shared_ptr< CommonDatacommonDataPtr
 
boost::shared_ptr< HenckyOps::CommonDatacommonHenckyDataPtr
 
boost::shared_ptr< MatrixDouble > mDPtr
 
MatrixDouble locMat
 

Additional Inherited Members

- Public Types inherited from MoFEM::OpBaseImpl< A, EleOp >
using OpType = typename EleOp::OpType
 
using EntData = EntitiesFieldData::EntData
 
- Protected Member Functions inherited from MoFEM::OpBaseImpl< A, EleOp >
template<int DIM>
FTensor::Tensor1< FTensor::PackPtr< double *, DIM >, DIM > getNf ()
 
template<int DIM>
FTensor::Tensor2< FTensor::PackPtr< double *, DIM >, DIM, DIM > getLocMat (const int rr)
 
virtual MoFEMErrorCode iNtegrate (EntData &row_data, EntData &col_data)
 Integrate grad-grad operator. More...
 
virtual MoFEMErrorCode aSsemble (EntData &row_data, EntData &col_data, const bool trans)=0
 
virtual MoFEMErrorCode iNtegrate (EntData &data)
 Class dedicated to integrate operator. More...
 
virtual MoFEMErrorCode aSsemble (EntData &data)=0
 
- Protected Attributes inherited from MoFEM::OpBaseImpl< A, EleOp >
int nbRows
 number of dofs on rows More...
 
int nbCols
 number if dof on column More...
 
int nbIntegrationPts
 number of integration points More...
 
int nbRowBaseFunctions
 number or row base functions More...
 
int rowSide
 row side number More...
 
int colSide
 column side number More...
 
EntityType rowType
 row type More...
 
EntityType colType
 column type More...
 
bool assembleTranspose
 
bool onlyTranspose
 
MatrixDouble locMat
 local entity block matrix More...
 
MatrixDouble locMatTranspose
 local entity block matrix More...
 
VectorDouble locF
 local entity vector More...
 

Detailed Description

Definition at line 159 of file PlasticOps.hpp.

Constructor & Destructor Documentation

◆ OpCalculatePlasticInternalForceLhs_LogStrain_dEP()

PlasticOps::OpCalculatePlasticInternalForceLhs_LogStrain_dEP::OpCalculatePlasticInternalForceLhs_LogStrain_dEP ( const std::string  row_field_name,
const std::string  col_field_name,
boost::shared_ptr< CommonData common_data_ptr,
boost::shared_ptr< HenckyOps::CommonData common_henky_data_ptr,
boost::shared_ptr< MatrixDouble >  m_D_ptr 
)
Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 301 of file PlasticOpsGeneric.hpp.

307  : AssemblyDomainEleOp(row_field_name, col_field_name,
309  commonDataPtr(common_data_ptr),
310  commonHenckyDataPtr(common_henky_data_ptr), mDPtr(m_D_ptr) {
311  sYmm = false;
312 }
FormsIntegrators< DomainEleOp >::Assembly< PETSC >::OpBase AssemblyDomainEleOp
Definition: plastic.cpp:63
boost::shared_ptr< HenckyOps::CommonData > commonHenckyDataPtr
Definition: PlasticOps.hpp:171

Member Function Documentation

◆ iNtegrate()

MoFEMErrorCode PlasticOps::OpCalculatePlasticInternalForceLhs_LogStrain_dEP::iNtegrate ( EntitiesFieldData::EntData row_data,
EntitiesFieldData::EntData col_data 
)
Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 314 of file PlasticOpsGeneric.hpp.

316  {
318 
320 
321  const size_t nb_integration_pts = row_data.getN().size1();
322  const size_t nb_row_base_functions = row_data.getN().size2();
323  auto t_w = getFTensor0IntegrationWeight();
324  auto t_row_diff_base = row_data.getFTensor1DiffN<SPACE_DIM>();
325 
326  constexpr auto t_kd = FTensor::Kronecker_Delta<int>();
327  auto t_D = getFTensor4DdgFromMat<SPACE_DIM, SPACE_DIM, 0>(*mDPtr);
328  auto t_logC_dC = getFTensor4DdgFromMat<SPACE_DIM, SPACE_DIM>(
329  commonHenckyDataPtr->matLogCdC);
330  auto t_grad = getFTensor2FromMat<SPACE_DIM, SPACE_DIM>(
331  *(commonHenckyDataPtr->matGradPtr));
332 
333  for (size_t gg = 0; gg != nb_integration_pts; ++gg) {
334  double alpha = getMeasure() * t_w;
335 
337  t_F(i, j) = t_grad(i, j) + t_kd(i, j);
338 
340  t_DLogC_dC;
341  t_DLogC_dC(i, j, k, l) = 0;
342  for (int ii = 0; ii != SPACE_DIM; ++ii)
343  for (int jj = 0; jj != SPACE_DIM; ++jj)
344  for (int kk = 0; kk != SPACE_DIM; ++kk)
345  for (int ll = 0; ll != SPACE_DIM; ++ll)
346  for (int mm = 0; mm != SPACE_DIM; ++mm)
347  for (int nn = 0; nn != SPACE_DIM; ++nn)
348  t_DLogC_dC(ii, jj, kk, ll) +=
349  t_D(mm, nn, kk, ll) * t_logC_dC(mm, nn, ii, jj);
350 
352  t_FDLogC_dC;
353  t_FDLogC_dC(i, j, k, l) = t_F(i, m) * t_DLogC_dC(m, j, k, l);
354 
355  constexpr auto size_symm = (SPACE_DIM * (SPACE_DIM + 1)) / 2;
356  auto t_L = symm_L_tensor();
357 
359  t_DL(i, j, L) = 0;
360  for (int ii = 0; ii != SPACE_DIM; ++ii)
361  for (int jj = 0; jj != SPACE_DIM; ++jj)
362  for (int kk = 0; kk != SPACE_DIM; ++kk)
363  for (int ll = 0; ll != SPACE_DIM; ++ll)
364  for (int LL = 0; LL != size_symm; ++LL)
365  t_DL(ii, jj, LL) += t_FDLogC_dC(ii, jj, kk, ll) * t_L(kk, ll, LL);
366 
367  size_t rr = 0;
368  for (; rr != AssemblyDomainEleOp::nbRows / SPACE_DIM; ++rr) {
369 
370  auto t_mat =
372 
374  t_tmp(i, L) = (t_DL(i, j, L) * (alpha * t_row_diff_base(j)));
375 
376  auto t_col_base = col_data.getFTensor0N(gg, 0);
377  for (size_t cc = 0; cc != AssemblyDomainEleOp::nbCols / size_symm; ++cc) {
378 
379  t_mat(i, L) -= (t_col_base * t_tmp(i, L));
380 
381  ++t_mat;
382  ++t_col_base;
383  }
384 
385  ++t_row_diff_base;
386  }
387 
388  for (; rr < nb_row_base_functions; ++rr)
389  ++t_row_diff_base;
390 
391  ++t_w;
392  ++t_logC_dC;
393  ++t_grad;
394  }
395 
397 }
constexpr int SPACE_DIM
Kronecker Delta class.
constexpr double alpha
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:359
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:429
constexpr auto t_kd
auto symm_L_tensor()
Definition: PlasticOps.hpp:301
FTensor::Index< 'j', SPACE_DIM > j
[Common data]
Definition: PlasticOps.hpp:91
FTensor::Index< 'l', SPACE_DIM > l
Definition: PlasticOps.hpp:93
FTensor::Index< 'k', SPACE_DIM > k
Definition: PlasticOps.hpp:92
FTensor::Index< 'i', SPACE_DIM > i
Definition: PlasticOps.hpp:95
FTensor::Index< 'm', SPACE_DIM > m
Definition: PlasticOps.hpp:94
static FTensor::Tensor2< FTensor::PackPtr< double *, 3 >, 2, 3 > get_mat_vector_dtensor_sym(size_t rr, MatrixDouble &mat, FTensor::Number< 2 >)
FTensor::Index< 'L',(SPACE_DIM *(SPACE_DIM+1))/2 > L
Definition: PlasticOps.hpp:103
int nbRows
number of dofs on rows
MatrixDouble locMat
local entity block matrix
int nbCols
number if dof on column

Member Data Documentation

◆ commonDataPtr

boost::shared_ptr<CommonData> PlasticOps::OpCalculatePlasticInternalForceLhs_LogStrain_dEP::commonDataPtr
private
Examples
PlasticOps.hpp.

Definition at line 170 of file PlasticOps.hpp.

◆ commonHenckyDataPtr

boost::shared_ptr<HenckyOps::CommonData> PlasticOps::OpCalculatePlasticInternalForceLhs_LogStrain_dEP::commonHenckyDataPtr
private
Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 171 of file PlasticOps.hpp.

◆ locMat

MatrixDouble PlasticOps::OpCalculatePlasticInternalForceLhs_LogStrain_dEP::locMat
private
Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 173 of file PlasticOps.hpp.

◆ mDPtr

boost::shared_ptr<MatrixDouble> PlasticOps::OpCalculatePlasticInternalForceLhs_LogStrain_dEP::mDPtr
private
Examples
PlasticOps.hpp, and PlasticOpsGeneric.hpp.

Definition at line 172 of file PlasticOps.hpp.


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