#ifndef __NONLINEARELEMENTINTERFACE_HPP__
#define __NONLINEARELEMENTINTERFACE_HPP__
boost::shared_ptr<
PostProcBrokenMeshInMoab<VolumeElementForcesAndSourcesCore>>
string postion_field,
string mesh_posi_field_name = "MESH_NODE_POSITIONS",
bool is_displacement_field = true,
}
PETSC_NULLPTR);
CHKERR PetscOptionsGetInt(PETSC_NULLPTR,
"-order", &
oRder, PETSC_NULLPTR);
};
3);
}
3);
}
};
};
}
this->dM = dm;
CHKERR DMMoFEMAddElement(
dM,
"ELASTIC");
"ELASTIC");
};
CHKERR DMMoFEMSNESSetJacobian(
};
CHKERR DMMoFEMSNESSetFunction(
dM,
"ELASTIC",
PETSC_NULLPTR, PETSC_NULLPTR);
};
CHKERR DMMoFEMTSSetIJacobian(
dM,
"ELASTIC", &method, &method, &method);
break;
CHKERR DMMoFEMTSSetI2Jacobian(
dM,
"ELASTIC", &method, &method, &method);
break;
CHKERR DMMoFEMTSSetRHSJacobian(
dM,
"ELASTIC", &method, &method, &method);
break;
default:
"This TS is not yet implemented");
break;
}
};
CHKERR DMMoFEMTSSetIFunction(
dM,
"ELASTIC", &method, &method, &method);
break;
CHKERR DMMoFEMTSSetI2Function(
dM,
"ELASTIC", &method, &method, &method);
break;
CHKERR DMMoFEMTSSetRHSFunction(
dM,
"ELASTIC", &method, &method, &method);
break;
default:
break;
}
};
PostProcBrokenMeshInMoab<VolumeElementForcesAndSourcesCore>>(
mField);
"MESH_NODE_POSITIONS");
auto position_ptr = boost::make_shared<MatrixDouble>();
auto mesh_pos_ptr = boost::make_shared<MatrixDouble>();
auto position_grad_ptr = boost::make_shared<MatrixDouble>();
new OpCalculateVectorFieldValues<3>(
positionField, position_ptr));
new OpCalculateVectorFieldValues<3>(
meshNodeField, mesh_pos_ptr));
position_grad_ptr));
}
using OpPPMap = OpPostProcMapInMoab<3, 3>;
{{positionField, position_ptr}, {meshNodeField, mesh_pos_ptr}},
}
CHKERR DMoFEMLoopFiniteElements(
dM,
"ELASTIC",
MOFEM_LOG_C(
"WORLD", Sev::inform,
"%d Time %3.2e Elastic energy %3.2e",
auto out_name = "out_vol_" + to_string(step) + ".h5m";
};
};
#endif
#define MOFEM_LOG_C(channel, severity, format,...)
void simple(double P1[], double P2[], double P3[], double c[], const int N)
@ AINSWORTH_LEGENDRE_BASE
Ainsworth Cole (Legendre) approx. base .
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#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.
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
virtual bool check_field(const std::string &name) const =0
check if field is in database
OpPostProcMapInMoab< SPACE_DIM, SPACE_DIM > OpPPMap
Set of functions declaring elements and setting operators for generic element interface.
BcMarkerPtr mBoundaryMarker
Deprecated interface functions.
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface reference to pointer of interface.
Set of functions declaring elements and setting operators for generic element interface.
~NonlinearElasticElementInterface()
MoFEMErrorCode createElements()
MoFEMErrorCode setupSolverFunctionSNES()
boost::shared_ptr< PostProcBrokenMeshInMoab< VolumeElementForcesAndSourcesCore > > postProcMeshPtr
MoFEMErrorCode setOperators()
MoFEMErrorCode setupSolverJacobianSNES()
MoFEMErrorCode updateElementVariables()
boost::shared_ptr< ElasticMaterials > elasticMaterialsPtr
BitRefLevel getBitRefLevel()
MoFEM::Interface & mField
MoFEMErrorCode setupSolverJacobianTS(const TSType type)
MoFEMErrorCode addElementFields()
MoFEMErrorCode setupSolverFunctionTS(const TSType type)
boost::shared_ptr< NonlinearElasticElement > elasticElementPtr
MoFEMErrorCode addElementsToDM(SmartPetscObj< DM > dm)
MoFEMErrorCode getCommandLineParameters()
MoFEMErrorCode postProcessElement(int step)
PetscBool is_quasi_static