24constexpr auto A = AssemblyType::BLOCK_MAT;
28#ifndef __ESHELBIAN_PLASTICITY_HPP__
29 #define __ESHELBIAN_PLASTICITY_HPP__
35using DL = DataLayoutTraits<DataLayout::GaussByCoeffs>;
52using EntData = EntitiesFieldData::EntData;
56using EleOnSide = PipelineManager::ElementsAndOpsByDim<SPACE_DIM>::FaceSideEle;
62struct AnalyticalExprPython;
65 :
public boost::enable_shared_from_this<MatOpsDataAtIntegrationPts> {
74 matOpsData->insertCommonData(
"wL2DotDotAtPts");
75 matOpsData->insertCommonData(
"logStretchTensorAtPts");
76 matOpsData->insertCommonData(
"logStretchTensor0AtPts");
77 matOpsData->insertCommonData(
"logStretchDotTensorAtPts");
78 matOpsData->insertCommonData(
"gradLogStretchDotTensorAtPts");
81 matOpsData->insertCommonData(
"rotAxisGradAtPts");
82 matOpsData->insertCommonData(
"rotAxisDotAtPts");
83 matOpsData->insertCommonData(
"rotAxisGradDotAtPts");
84 matOpsData->insertCommonData(
"stretchH1AtPts");
86 matOpsData->insertCommonData(
"stretchTensorAtPts");
87 matOpsData->insertCommonData(
"diffStretchH1AtPts");
88 matOpsData->insertCommonData(
"diffStretchTensorAtPts");
90 matOpsData->insertCommonData(
"adjointPdstretchAtPts");
91 matOpsData->insertCommonData(
"adjointPdUAtPts");
92 matOpsData->insertCommonData(
"adjointPdUdOmegaAtPts");
93 matOpsData->insertCommonData(
"adjointPdUdPAtPts");
159 return boost::shared_ptr<double>(shared_from_this(), &
piolaScale);
164 template <
class Tensor>
165 static inline auto getFTensor(MatrixDouble &
m,
const int nb_gauss_pts) {
166 return MatrixSizeHelper<Tensor, DL>::get(
m, nb_gauss_pts)();
169 template <
class Tensor>
171 return getFTensor<Tensor>(*
m, nb_gauss_pts);
177 matOpsData->getCommonDataPtr(
"approxPAtPts"), nb_gauss_pts);
183 matOpsData->getCommonDataPtr(
"approxP0AtPts"), nb_gauss_pts);
189 matOpsData->getCommonDataPtr(
"PAtPts"), nb_gauss_pts);
195 matOpsData->getCommonDataPtr(
"PAtPts_du"), nb_gauss_pts);
200 matOpsData->getCommonDataPtr(
"divPAtPts"), nb_gauss_pts);
205 matOpsData->getCommonDataPtr(
"wL2AtPts"), nb_gauss_pts);
210 matOpsData->getCommonDataPtr(
"wL2DotAtPts"), nb_gauss_pts);
215 matOpsData->getCommonDataPtr(
"wL2DotDotAtPts"), nb_gauss_pts);
220 matOpsData->getCommonDataPtr(
"logStretchTensorAtPts"),
226 matOpsData->getCommonDataPtr(
"logStretchTensor0AtPts"),
232 matOpsData->getCommonDataPtr(
"logStretchDotTensorAtPts"),
238 matOpsData->getCommonDataPtr(
"gradLogStretchDotTensorAtPts"),
244 matOpsData->getCommonDataPtr(
"rotAxisAtPts"), nb_gauss_pts);
249 matOpsData->getCommonDataPtr(
"rotAxis0AtPts"), nb_gauss_pts);
255 matOpsData->getCommonDataPtr(
"rotAxisGradAtPts"), nb_gauss_pts);
260 matOpsData->getCommonDataPtr(
"rotAxisDotAtPts"), nb_gauss_pts);
266 matOpsData->getCommonDataPtr(
"rotAxisGradDotAtPts"), nb_gauss_pts);
272 matOpsData->getCommonDataPtr(
"stretchH1AtPts"), nb_gauss_pts);
278 matOpsData->getCommonDataPtr(
"wGradH1AtPts"), nb_gauss_pts);
283 matOpsData->getCommonDataPtr(
"stretchTensorAtPts"), nb_gauss_pts);
289 matOpsData->getCommonDataPtr(
"diffStretchH1AtPts"), nb_gauss_pts);
295 matOpsData->getCommonDataPtr(
"diffStretchTensorAtPts"),
302 matOpsData->getCommonDataPtr(
"hAtPts"), nb_gauss_pts);
308 matOpsData->getCommonDataPtr(
"adjointPdstretchAtPts"),
314 matOpsData->getCommonDataPtr(
"adjointPdUAtPts"), nb_gauss_pts);
319 matOpsData->getCommonDataPtr(
"adjointPdUdOmegaAtPts"),
326 matOpsData->getCommonDataPtr(
"adjointPdUdPAtPts"), nb_gauss_pts);
331 matOpsData->getCommonDataPtr(
"eigenVals"), nb_gauss_pts);
337 matOpsData->getCommonDataPtr(
"eigenVecs"), nb_gauss_pts);
341 return matOpsData->getCommonDataPtr(
"approxPAtPts");
345 return matOpsData->getCommonDataPtr(
"approxP0AtPts");
351 return matOpsData->getCommonDataPtr(
"PAtPts_du");
355 return matOpsData->getCommonDataPtr(
"diffStretchH1AtPts");
359 return matOpsData->getCommonDataPtr(
"stretchH1AtPts");
363 return matOpsData->getCommonDataPtr(
"adjointPdstretchAtPts");
367 return matOpsData->getCommonDataPtr(
"adjointPdUAtPts");
371 return matOpsData->getCommonDataPtr(
"adjointPdUdOmegaAtPts");
375 return matOpsData->getCommonDataPtr(
"adjointPdUdPAtPts");
379 return matOpsData->getCommonDataPtr(
"eigenVals");
383 return matOpsData->getCommonDataPtr(
"eigenVecs");
387 return matOpsData->getCommonDataPtr(
"divPAtPts");
391 return matOpsData->getCommonDataPtr(
"wL2AtPts");
395 return matOpsData->getCommonDataPtr(
"wL2DotAtPts");
399 return matOpsData->getCommonDataPtr(
"wL2DotDotAtPts");
403 return matOpsData->getCommonDataPtr(
"logStretchTensorAtPts");
407 return boost::shared_ptr<MatrixDouble>(
412 return matOpsData->getCommonDataPtr(
"logStretchTensor0AtPts");
416 return matOpsData->getCommonDataPtr(
"stretchTensorAtPts");
420 return matOpsData->getCommonDataPtr(
"diffStretchTensorAtPts");
424 return matOpsData->getCommonDataPtr(
"hAtPts");
428 return matOpsData->getCommonDataPtr(
"logStretchDotTensorAtPts");
432 return matOpsData->getCommonDataPtr(
"gradLogStretchDotTensorAtPts");
436 return matOpsData->getCommonDataPtr(
"rotAxisAtPts");
440 return matOpsData->getCommonDataPtr(
"rotAxis0AtPts");
444 return matOpsData->getCommonDataPtr(
"rotAxisGradAtPts");
448 return matOpsData->getCommonDataPtr(
"rotAxisDotAtPts");
452 return matOpsData->getCommonDataPtr(
"rotAxisGradDotAtPts");
456 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
matD);
460 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
matInvD);
464 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
matAxiatorD);
468 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
matDeviatorD);
472 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
wH1AtPts);
476 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
XH1AtPts);
480 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
contactL2AtPts);
484 return matOpsData->getCommonDataPtr(
"wGradH1AtPts");
488 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
493 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
varRotAxis);
497 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
varGradRotAxis);
501 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
varLogStreach);
505 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
varPiola);
509 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
varDivPiola);
513 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
varWL2);
517 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
522 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
527 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
532 return boost::shared_ptr<MatrixDouble>(shared_from_this(),
537 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
gradientAtPts);
541 return boost::shared_ptr<MatrixDouble>(shared_from_this(), &
rotMatAtPts);
706 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
707 boost::shared_ptr<PhysicalEquations> physics_ptr);
711 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
712 const double alpha_u);
716 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
717 boost::shared_ptr<ExternalStrainVec> external_strain_vec_ptr,
718 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv);
721 std::string row_field, std::string col_field,
722 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
const double alpha);
726 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
727 SmartPetscObj<Vec> assemble_vec,
728 boost::shared_ptr<TopologicalData> topo_ptr,
const double alpha_u,
729 boost::shared_ptr<double> J_ptr);
733 boost::shared_ptr<double> total_energy_ptr);
736 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
737 boost::shared_ptr<PhysicalEquations> physics_ptr,
738 boost::shared_ptr<MatrixDouble> strain_ptr =
nullptr);
741 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
742 boost::shared_ptr<PhysicalEquations> physics_ptr,
743 boost::shared_ptr<MatrixDouble> strain_ptr,
748 boost::shared_ptr<ExternalStrainVec> external_strain_vec_ptr,
749 std::map<std::string, boost::shared_ptr<ScalingMethod>> smv);
752 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
753 boost::shared_ptr<PhysicalEquations> physics_ptr);
758 std::string load_history_file =
"");
769 std::string load_history_file =
"");
782 std::string load_history_file =
"");
793 std::string load_history_file =
"");
812 Range faces, std::string load_history_file =
"");
821 std::string load_history_file =
"");
830 std::string load_history_file =
"");
840 std::string load_history_file =
"");
854template <
typename OpVector>
856 OpVector &op_vector, boost::shared_ptr<PhysicalEquations> physics_ptr,
857 boost::shared_ptr<DataAtIntegrationPts> data_ptr,
858 boost::shared_ptr<ExternalStrainVec> external_strain_vec_ptr,
859 const std::map<std::string, boost::shared_ptr<ScalingMethod>> &smv,
860 boost::shared_ptr<MatrixDouble> strain_ptr =
nullptr) {
861 auto external_pressure_ptr = boost::make_shared<VectorDouble>();
862 if (
auto op = physics_ptr->returnOpCalculateExternalPressure(
863 external_pressure_ptr, std::move(external_strain_vec_ptr), smv)) {
864 op_vector.push_back(op);
866 op_vector.push_back(physics_ptr->returnOpCalculateStretchFromStress(
867 std::move(data_ptr), physics_ptr, std::move(strain_ptr),
868 std::move(external_pressure_ptr)));
871template <
typename OP_PTR>
872std::tuple<std::string, MatrixDouble>
874 const std::string block_name);
876template <
typename OP_PTR>
877std::tuple<std::string, VectorDouble>
879 const std::string block_name);
881template <
typename OP_PTR>
886 MatrixDouble &m_ref_coords,
887 MatrixDouble &m_ref_normals,
888 const std::string block_name);
892 MatrixDouble &m_ref_coords,
893 const std::string block_name);
897 MatrixDouble &m_ref_coords,
898 const std::string block_name);
Analytical expression Python bridge.
VectorDouble analytical_externalstrain_function(double delta_t, double t, int nb_gauss_pts, MatrixDouble &m_ref_coords, const std::string block_name)
boost::shared_ptr< MatrixDouble > MatrixPtr
std::vector< AnalyticalTractionBc > AnalyticalTractionBcVec
std::vector< TractionBc > TractionBcVec
std::tuple< std::string, VectorDouble > getAnalyticalExternalStrain(OP_PTR op_ptr, VectorDouble &analytical_expr, const std::string block_name)
std::vector< AnalyticalDisplacementBc > AnalyticalDisplacementBcVec
std::vector< PressureBc > PressureBcVec
std::vector< SpringBc > SpringBcVec
std::tuple< std::string, MatrixDouble > getAnalyticalExpr(OP_PTR op_ptr, MatrixDouble &analytical_expr, const std::string block_name)
VectorDouble analytical_elastic_function(double delta_t, double t, int nb_gauss_pts, MatrixDouble &m_ref_coords, const std::string block_name)
std::vector< Range > TractionFreeBc
std::vector< ExternalStrain > ExternalStrainVec
ForcesAndSourcesCore::UserDataOperator UserDataOperator
VectorDouble getAnalyticalElastic(OP_PTR op_ptr, const std::string block_name)
DataLayoutTraits< DataLayout::GaussByCoeffs > DL
std::vector< BcRot > BcRotVec
void pushOpCalculateStretchFromStress(OpVector &op_vector, boost::shared_ptr< PhysicalEquations > physics_ptr, boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< ExternalStrainVec > external_strain_vec_ptr, const std::map< std::string, boost::shared_ptr< ScalingMethod > > &smv, boost::shared_ptr< MatrixDouble > strain_ptr=nullptr)
Push pointwise external-pressure evaluation before stress recovery.
std::vector< NormalDisplacementBc > NormalDisplacementBcVec
FaceElementForcesAndSourcesCore::UserDataOperator FaceUserDataOperator
PipelineManager::ElementsAndOpsByDim< SPACE_DIM >::FaceSideEle EleOnSide
MatrixDouble analytical_expr_function(double delta_t, double t, int nb_gauss_pts, MatrixDouble &m_ref_coords, MatrixDouble &m_ref_normals, const std::string block_name)
std::vector< BcDisp > BcDispVec
boost::shared_ptr< VectorDouble > VectorPtr
boost::shared_ptr< MatOpsData > createMatOpsDataPtr()
constexpr double t
plate stiffness
constexpr auto field_name
FTensor::Index< 'm', 3 > m
std::string loadHistoryFile
std::string loadHistoryFile
MatrixPtr getAdjointPdUdOmegaAtPts()
MatrixPtr getAdjointPdstretchAtPts()
MatrixPtr getHybridDispAtPts()
auto getFTensorSmallWH1(const int nb_gauss_pts)
auto getFTensorPDu(const int nb_gauss_pts)
MatrixPtr getApproxP0AtPts()
MatrixPtr getLogStretchTensorAtPts()
VectorDouble normalPressureAtPts
MatrixDouble matDeviatorD
auto getFTensorStretch(const int nb_gauss_pts)
auto getFTensorLogStretchDot(const int nb_gauss_pts)
MatrixDouble logStretchTotalTensorAtPts
MatrixDouble hdOmegaAtPts
auto getFTensorVarGradRotAxis(const int nb_gauss_pts)
auto getFTensorEigenVecsC(const int nb_gauss_pts)
auto getFTensorSigma(const int nb_gauss_pts)
MatrixDouble gradHybridDispAtPts
MatrixPtr getStretchH1AtPts()
MatrixDouble leviKirchhoffdOmegaAtPts
MatrixDouble leviKirchhoff0AtPts
MatrixDouble leviKirchhoffPAtPts
auto getFTensorSmallWL2Dot(const int nb_gauss_pts)
MatrixPtr getSmallWL2AtPts()
MatrixPtr getGradientAtPts()
auto getFTensorRotAxisGrad(const int nb_gauss_pts)
MatrixDouble internalStressAtPts
auto getFTensorVarPiola(const int nb_gauss_pts)
MatrixPtr getInternalStressAtPts()
auto getFTensorSmallHdLogStretch(const int nb_gauss_pts)
auto getFTensorAdjointPdstretch(const int nb_gauss_pts)
auto getFTensorSmallH(const int nb_gauss_pts)
auto getFTensorSmallHybridDisp(const int nb_gauss_pts)
auto getFTensorVarRotAxis(const int nb_gauss_pts)
MatrixPtr getRotAxisAtPts()
MatrixPtr getRotAxis0AtPts()
auto getFTensorLeviKirchhoffP(const int nb_gauss_pts)
MatrixPtr getLeviKirchhoffAtPts()
MatrixPtr getSmallWL2DotDotAtPts()
MatrixPtr getRotAxisGradDotAtPts()
auto getFTensorRotAxis0(const int nb_gauss_pts)
MatrixPtr getRotMatAtPts()
auto getFTensorLeviKirchhoff(const int nb_gauss_pts)
MatrixPtr getVarLogStreachPts()
MatrixPtr getRotAxisDotAtPts()
MatrixPtr getDivVarPiolaPts()
MatrixPtr getVarGradRotAxisPts()
MatrixPtr getSmallWGradH1AtPts()
auto getFTensorEigenVals(const int nb_gauss_pts)
auto getFTensorGradHybridDisp(const int nb_gauss_pts)
MatrixPtr getGradHybridDispAtPts()
MatrixPtr getMatAxiatorDPtr()
auto getFTensorVarLogStreach(const int nb_gauss_pts)
auto getFTensorEigenVecs(const int nb_gauss_pts)
auto getFTensorRotAxisDot(const int nb_gauss_pts)
auto getFTensorApproxP(const int nb_gauss_pts)
MatrixPtr getSmallWH1AtPts()
MatrixPtr getAdjointPdUAtPts()
MatrixPtr getLogStretchTensor0AtPts()
MatrixPtr getLogStretchDotTensorAtPts()
MatrixPtr getContactL2AtPts()
auto getFTensorRotMat(const int nb_gauss_pts)
auto getFTensorAdjointPdUdOmega(const int nb_gauss_pts)
auto getFTensorInternalStressVec(const int nb_gauss_pts)
MatrixPtr getApproxPAtPts()
auto getFTensorLeviKirchhoffdOmega(const int nb_gauss_pts)
MatrixPtr getStretchTensorAtPts()
auto getFTensorInternalStress(const int nb_gauss_pts)
auto getFTensorVarWL2(const int nb_gauss_pts)
auto getFTensorSmallWL2DotDot(const int nb_gauss_pts)
auto getFTensorEigenValsC(const int nb_gauss_pts)
auto getFTensorLogStretchTotal(const int nb_gauss_pts)
MatrixPtr getMatDeviatorDPtr()
MatrixPtr getDiffStretchH1AtPts()
MatrixPtr getVarRotAxisPts()
MatrixDouble hdLogStretchAtPts
MatrixPtr getVarPiolaPts()
MatrixPtr getLargeXH1AtPts()
static auto getFTensor(MatrixDouble &m, const int nb_gauss_pts)
MatrixPtr getVarHybridDispAtPts()
MatrixPtr getDeformationGradient()
auto getFTensorLeviKirchhoffdLogStretch(const int nb_gauss_pts)
MatrixPtr getSmallWL2DotAtPts()
auto getFTensorDiffStretchH1(const int nb_gauss_pts)
auto getFTensorFaceMaterialForce(const int nb_gauss_pts)
auto getFTensorLogStretch2H1(const int nb_gauss_pts)
auto getFTensorLeviKirchhoff0(const int nb_gauss_pts)
auto getFTensorSmallWGradH1(const int nb_gauss_pts)
auto getFTensorTraction(const int nb_gauss_pts)
auto getFTensorRotAxis(const int nb_gauss_pts)
MatrixDouble varHybridDispAtPts
MatrixDouble tractionAtPts
auto getFTensorLogStretch0(const int nb_gauss_pts)
MatrixDouble varLogStreach
MatrixPtr getAdjointPdUdPAtPts()
auto getFTensorSmallHdOmega(const int nb_gauss_pts)
MatrixDouble logStretch2H1AtPts
MatrixPtr getGradLogStretchDotTensorAtPts()
VectorDouble youngModulusAtPts
auto getFTensorGradient(const int nb_gauss_pts)
MatrixPtr getDiffStretchTensorAtPts()
MatrixDouble leviKirchhoffdLogStreatchAtPts
auto getFTensorDivVarPiola(const int nb_gauss_pts)
auto getFTensorAdjointPdU(const int nb_gauss_pts)
MatrixPtr getLogStretchTotalTensorAtPts()
auto getFTensorSmallWL2(const int nb_gauss_pts)
auto getFTensorP(const int nb_gauss_pts)
auto getFTensorRotAxisGradDot(const int nb_gauss_pts)
static constexpr int SizeSymm
MatrixDouble gradientAtPts
MatrixDouble varGradRotAxis
MatrixDouble leviKirchhoffAtPts
MatrixDouble faceMaterialForceAtPts
auto getFTensorDivP(const int nb_gauss_pts)
MatrixDouble hybridDispAtPts
auto getFTensorLogStretch(const int nb_gauss_pts)
MatrixPtr getRotAxisGradAtPts()
auto getFTensorApproxP0(const int nb_gauss_pts)
MatrixPtr getMatInvDPtr()
auto getFTensorGradLogStretchDot(const int nb_gauss_pts)
auto getFTensorStretchH1(const int nb_gauss_pts)
boost::shared_ptr< PhysicalEquations > physicsPtr
auto getFTensorAdjointPdUdP(const int nb_gauss_pts)
static auto getFTensor(MatrixPtr m, const int nb_gauss_pts)
auto getFTensorDiffStretch(const int nb_gauss_pts)
MatrixDouble contactL2AtPts
std::string loadHistoryFile
boost::shared_ptr< MatOps::MatOpsData > matOpsData
MatOpsDataAtIntegrationPts()
std::string loadHistoryFile
PhysicalEquations()=default
virtual VolUserDataOperator * returnOpCalculateExternalPressure(VectorPtr external_pressure_ptr, boost::shared_ptr< ExternalStrainVec > external_strain_vec_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv)
virtual VolUserDataOperator * returnOpCalculateVarStretchFromStress(boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< PhysicalEquations > physics_ptr)
virtual VolUserDataOperator * returnOpCalculateEnergy(boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< double > total_energy_ptr)
virtual UserDataOperator * returnOpJacobian(const bool eval_rhs, const bool eval_lhs, boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< PhysicalEquations > physics_ptr)
virtual VolUserDataOperator * returnOpSpatialPhysical(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const double alpha_u)
virtual VolUserDataOperator * returnOpSpatialPhysicalExternalStrain(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< ExternalStrainVec > external_strain_vec_ptr, std::map< std::string, boost::shared_ptr< ScalingMethod > > smv)
virtual VolUserDataOperator * returnOpTopoSpatialPhysical(const std::string &field_name, boost::shared_ptr< DataAtIntegrationPts > data_ptr, SmartPetscObj< Vec > assemble_vec, boost::shared_ptr< TopologicalData > topo_ptr, const double alpha_u, boost::shared_ptr< double > J_ptr)
virtual VolUserDataOperator * returnOpCalculateStretchFromStress(boost::shared_ptr< DataAtIntegrationPts > data_ptr, boost::shared_ptr< PhysicalEquations > physics_ptr, boost::shared_ptr< MatrixDouble > strain_ptr=nullptr)
virtual ~PhysicalEquations()=default
virtual VolUserDataOperator * returnOpSpatialPhysical_du_du(std::string row_field, std::string col_field, boost::shared_ptr< DataAtIntegrationPts > data_ptr, const double alpha)
std::string loadHistoryFile
double tangentialStiffness
std::string loadHistoryFile
Data on single entity (This is passed as argument to DataOperator::doWork)