v0.15.0
Loading...
Searching...
No Matches
ADOLCPlasticity::OpLhsImpl< DIM, GAUSS, AssemblyDomainEleOp > Struct Template Reference

#include "users_modules/adolc-plasticity/src/ADOLCPlasticity.hpp"

Inheritance diagram for ADOLCPlasticity::OpLhsImpl< DIM, GAUSS, AssemblyDomainEleOp >:
[legend]
Collaboration diagram for ADOLCPlasticity::OpLhsImpl< DIM, GAUSS, AssemblyDomainEleOp >:
[legend]

Public Member Functions

 OpLhsImpl (std::string field_name, boost::shared_ptr< CommonData > common_data_ptr)
 
MoFEMErrorCode iNtegrate (DataForcesAndSourcesCore::EntData &row_data, DataForcesAndSourcesCore::EntData &col_data)
 

Protected Attributes

boost::shared_ptr< CommonDatacommonDataPtr
 
MatrixDouble baseRowStorage
 Store tensorial base functions.
 
MatrixDouble baseColStorage
 Store tensorial base functions.
 

Detailed Description

template<int DIM, typename AssemblyDomainEleOp>
struct ADOLCPlasticity::OpLhsImpl< DIM, GAUSS, AssemblyDomainEleOp >

Definition at line 567 of file ADOLCPlasticity.hpp.

Constructor & Destructor Documentation

◆ OpLhsImpl()

template<int DIM, typename AssemblyDomainEleOp >
ADOLCPlasticity::OpLhsImpl< DIM, GAUSS, AssemblyDomainEleOp >::OpLhsImpl ( std::string field_name,
boost::shared_ptr< CommonData > common_data_ptr )

Member Function Documentation

◆ iNtegrate()

template<int DIM, typename AssemblyDomainEleOp >
MoFEMErrorCode ADOLCPlasticity::OpLhsImpl< DIM, GAUSS, AssemblyDomainEleOp >::iNtegrate ( DataForcesAndSourcesCore::EntData & row_data,
DataForcesAndSourcesCore::EntData & col_data )
Examples
ADOLCPlasticity.hpp.

Definition at line 626 of file ADOLCPlasticity.hpp.

628 {
630 using OP = AssemblyDomainEleOp;
631
632 double *w_ptr = &(OP::getGaussPts()(DIM, 0));
633 auto t_diff_row = MakeB::getFTensor2SymmetricDiffBase(
634 row_data, baseRowStorage, commonDataPtr->bBar, OP::getGaussPts().size2(),
635 w_ptr, FTensor::Number<DIM>());
636 auto t_diff_col = MakeB::getFTensor2SymmetricDiffBase(
637 col_data, baseColStorage, commonDataPtr->bBar, OP::getGaussPts().size2(),
638 w_ptr, FTensor::Number<DIM>());
639
640 auto get_ftensor2_symmetric = [&](auto &storage, const auto gg,
641 const auto rr) {
643 &storage(gg, 6 * rr + 0), &storage(gg, 6 * rr + 1),
644 &storage(gg, 6 * rr + 2), &storage(gg, 6 * rr + 3),
645 &storage(gg, 6 * rr + 4), &storage(gg, 6 * rr + 5)};
646 };
647
648 FTensor::Index<'i', 3> i;
649 FTensor::Index<'j', 3> j;
650 FTensor::Index<'k', 3> k;
651 FTensor::Index<'l', 3> l;
652
653 auto t_Cep =
654 getFTensor4DdgFromMat<3, 3, 1>(commonDataPtr->materialTangentOperator);
655 const auto vol = OP::getMeasure();
656 auto t_w = OP::getFTensor0IntegrationWeight();
657 for (int gg = 0; gg != OP::nbIntegrationPts; ++gg) {
658 const double alpha = vol * t_w;
659 ++t_w;
660
661 for (auto rr = 0; rr != OP::nbRows; ++rr) {
663 t_rowCep(k, l) = t_Cep(i, j, k, l) * t_diff_row(i, j);
664 auto t_diff_col = get_ftensor2_symmetric(baseColStorage, gg, 0);
665 for (auto cc = 0; cc != OP::nbCols; ++cc) {
666 OP::locMat(rr, cc) += alpha * (t_rowCep(k, l) * t_diff_col(k, l));
667 ++t_diff_col;
668 }
669 ++t_diff_row;
670 }
671
672 ++t_Cep;
673 }
675}
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
static FTensor::Tensor2_symmetric< FTensor::PackPtr< double *, 6 >, 3 > getFTensor2SymmetricDiffBase(DataForcesAndSourcesCore::EntData &data, MatrixDouble &storage, const bool b_bar, const int nb_integration_pts, double *w_ptr, FTensor::Number< 2 >)
MatrixDouble baseRowStorage
Store tensorial base functions.
MatrixDouble baseColStorage
Store tensorial base functions.
FormsIntegrators< DomainEleOp >::Assembly< A >::OpBase AssemblyDomainEleOp

Member Data Documentation

◆ baseColStorage

template<int DIM, typename AssemblyDomainEleOp >
MatrixDouble ADOLCPlasticity::OpLhsImpl< DIM, GAUSS, AssemblyDomainEleOp >::baseColStorage
protected

Store tensorial base functions.

Definition at line 576 of file ADOLCPlasticity.hpp.

◆ baseRowStorage

template<int DIM, typename AssemblyDomainEleOp >
MatrixDouble ADOLCPlasticity::OpLhsImpl< DIM, GAUSS, AssemblyDomainEleOp >::baseRowStorage
protected

Store tensorial base functions.

Definition at line 575 of file ADOLCPlasticity.hpp.

◆ commonDataPtr

template<int DIM, typename AssemblyDomainEleOp >
boost::shared_ptr<CommonData> ADOLCPlasticity::OpLhsImpl< DIM, GAUSS, AssemblyDomainEleOp >::commonDataPtr
protected

Definition at line 574 of file ADOLCPlasticity.hpp.


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