Operators and data structures for large strain plasticity.
struct OpTransferCommonData : public ForcesAndSourcesCore::UserDataOperator {
boost::shared_ptr<MatrixDouble>
mA;
boost::shared_ptr<MatrixDouble>
mB;
boost::shared_ptr<MatrixDouble> m_b)
: ForcesAndSourcesCore::UserDataOperator(
NOSPACE,
UserDataOperator::OPSPACE),
DataForcesAndSourcesCore::EntData &data) {
}
};
template <int DIM, IntegrationType I, typename DomainEleOp>
std::string block_name,
boost::shared_ptr<ADOLCPlasticity::CommonData> common_data_ptr,
boost::shared_ptr<ClosestPointProjection> cp_ptr);
template <int DIM, IntegrationType I, typename DomainEleOp>
std::string block_name,
boost::shared_ptr<ADOLCPlasticity::CommonData> common_data_ptr,
boost::shared_ptr<ClosestPointProjection> cp_ptr) {
using P = ADOLCPlasticityIntegrators<DomainEleOp>;
auto common_hencky_ptr = boost::make_shared<HenckyOps::CommonData>();
common_hencky_ptr->matDPtr = boost::make_shared<MatrixDouble>();
common_hencky_ptr->matGradPtr = boost::make_shared<MatrixDouble>();
pip.push_back(new typename H::template OpCalculateEigenVals<DIM, I>(
pip.push_back(new typename H::template OpCalculateLogC<DIM, I>(
pip.push_back(new typename H::template OpCalculateLogC_dC<DIM, I>(
pip.push_back(
new OpTransferCommonData(common_data_ptr->getGradAtGaussPtsPtr(),
common_hencky_ptr->getMatLogC()));
CHKERR cp_ptr->addMatBlockOps(m_field, pip, block_name, Sev::inform);
cp_ptr, false));
pip.push_back(
new OpTransferCommonData(common_hencky_ptr->getMatHenckyStress(),
common_data_ptr->getStressMatrixPtr()));
pip.push_back(new OpTransferCommonData(common_hencky_ptr->matDPtr,
common_data_ptr->getMatTangentPtr()));
pip.push_back(new typename H::template OpCalculatePiolaStress<DIM, I, 1>(
pip.push_back(
new OpTransferCommonData(common_data_ptr->getStressMatrixPtr(),
common_hencky_ptr->getMatFirstPiolaStress()));
};
template <int DIM, IntegrationType I, typename DomainEleOp>
std::string block_name,
boost::shared_ptr<ADOLCPlasticity::CommonData> common_data_ptr,
boost::shared_ptr<ClosestPointProjection> cp_ptr) {
m_field,
field_name, pip, block_name, common_data_ptr, cp_ptr);
};
template <int DIM, IntegrationType I, typename DomainEleOp>
std::string block_name,
boost::shared_ptr<ADOLCPlasticity::CommonData> common_data_ptr,
boost::shared_ptr<ClosestPointProjection> cp_ptr);
template <int DIM, IntegrationType I, typename DomainEleOp>
std::string block_name,
boost::shared_ptr<ADOLCPlasticity::CommonData> common_data_ptr,
boost::shared_ptr<ClosestPointProjection> cp_ptr) {
auto common_hencky_ptr = boost::make_shared<HenckyOps::CommonData>();
common_hencky_ptr->matDPtr = boost::make_shared<MatrixDouble>();
common_hencky_ptr->matGradPtr = boost::make_shared<MatrixDouble>();
pip.push_back(new typename H::template OpCalculateEigenVals<DIM, I>(
pip.push_back(new typename H::template OpCalculateLogC<DIM, I>(
pip.push_back(new typename H::template OpCalculateLogC_dC<DIM, I>(
pip.push_back(
new OpTransferCommonData(common_data_ptr->getGradAtGaussPtsPtr(),
common_hencky_ptr->getMatLogC()));
CHKERR cp_ptr->addMatBlockOps(m_field, pip, block_name, Sev::inform);
pip.push_back(
pip.push_back(
new OpTransferCommonData(common_hencky_ptr->getMatHenckyStress(),
common_data_ptr->getStressMatrixPtr()));
pip.push_back(new OpTransferCommonData(common_hencky_ptr->matDPtr,
common_data_ptr->getMatTangentPtr()));
pip.push_back(new typename H::template OpCalculatePiolaStress<DIM, I, 1>(
pip.push_back(new typename H::template OpHenckyTangent<DIM, I, 1>(
pip.push_back(new OpTransferCommonData(common_data_ptr->getMatTangentPtr(),
common_hencky_ptr->getMatTangent()));
};
template <int DIM, IntegrationType I, typename DomainEleOp>
std::string block_name,
boost::shared_ptr<ADOLCPlasticity::CommonData> common_data_ptr,
boost::shared_ptr<ClosestPointProjection> cp_ptr) {
m_field,
field_name, pip, block_name, common_data_ptr, cp_ptr);
};
}
#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()
#define CHKERR
Inline error check.
MoFEMErrorCode opFactoryDomainHenckyStrainLhs(MoFEM::Interface &m_field, std::string field_name, Pip &pip, std::string block_name, boost::shared_ptr< ADOLCPlasticity::CommonData > common_data_ptr, boost::shared_ptr< ClosestPointProjection > cp_ptr)
MoFEMErrorCode opFactoryDomainHenckyStrainRhs(MoFEM::Interface &m_field, std::string field_name, Pip &pip, std::string block_name, boost::shared_ptr< ADOLCPlasticity::CommonData > common_data_ptr, boost::shared_ptr< ClosestPointProjection > cp_ptr)
ForcesAndSourcesCore::UserDataOperator * getRawPtrOpCalculateStress(MoFEM::Interface &m_field, boost::shared_ptr< CommonData > common_data_ptr, boost::shared_ptr< ClosestPointProjection > cp_ptr, bool calc_lhs)
Get opreator to calulate stress.
MoFEMErrorCode opFactoryDomainHenckyStrainRhsImpl(MoFEM::Interface &m_field, std::string field_name, Pip &pip, std::string block_name, boost::shared_ptr< ADOLCPlasticity::CommonData > common_data_ptr, boost::shared_ptr< ClosestPointProjection > cp_ptr)
MoFEMErrorCode opFactoryDomainHenckyStrainLhsImpl(MoFEM::Interface &m_field, std::string field_name, Pip &pip, std::string block_name, boost::shared_ptr< ADOLCPlasticity::CommonData > common_data_ptr, boost::shared_ptr< ClosestPointProjection > cp_ptr)
boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > Pip
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
implementation of Data Operators for Forces and Sources
constexpr auto field_name
boost::shared_ptr< MatrixDouble > mA
OpTransferCommonData(boost::shared_ptr< MatrixDouble > m_a, boost::shared_ptr< MatrixDouble > m_b)
MoFEMErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
boost::shared_ptr< MatrixDouble > mB
Deprecated interface functions.
Get field gradients at integration pts for scalar field rank 0, i.e. vector field.