35 #ifndef abaqususermaterial_h 36 #define abaqususermaterial_h 38 #include "../sm/Materials/structuralmaterial.h" 39 #include "../sm/Materials/structuralms.h" 45 #define _IFT_AbaqusUserMaterial_Name "abaqususermaterial" 46 #define _IFT_AbaqusUserMaterial_numState "numstate" 47 #define _IFT_AbaqusUserMaterial_properties "properties" 48 #define _IFT_AbaqusUserMaterial_initialStress "initialstress" 49 #define _IFT_AbaqusUserMaterial_userMaterial "umat" 50 #define _IFT_AbaqusUserMaterial_name "name" 51 #define _IFT_AbaqusUserMaterial_numericalTangent "numericaltangent" 52 #define _IFT_AbaqusUserMaterial_numericalTangentPerturbation "perturbation" 89 void ( *
umat )(
double *stress,
double *statev,
double *ddsdde,
double *sse,
double *spd,
90 double *scd,
double *rpl,
double *ddsddt,
double *drplde,
double *drpldt,
91 double *stran,
double *dstran,
double time [ 2 ],
double *dtime,
double *temp,
92 double *dtemp,
double predef [ 1 ],
double dpred [ 1 ],
char cmname [ 80 ],
int *ndi,
93 int *nshr,
int *ntens,
int *nstatv,
double *props,
int *nprops,
double coords [ 3 ],
94 double *drot,
double *pnewdt,
double *celent,
double *dfgrd0,
double *dfgrd1,
95 int *noel,
int *npt,
int *layer,
int *kspt,
int *kstep,
int *kinc);
188 virtual void updateYourself(
TimeStep *tStep);
198 tempTangent = std :: move(t);
199 hasTangentFlag =
true;
206 virtual const char *
giveClassName()
const {
return "AbaqusUserMaterialStatus"; }
209 #endif // abaqususermaterial_h
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
int numState
Number of state variables.
virtual void giveRealStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
double mPerturbation
Size of perturbation if numerical tangent is used.
FloatArray & letTempStateVectorBe(FloatArray &s)
AbaqusUserMaterial(int n, Domain *d)
Constructor.
FloatArray tempStateVector
Temporary state vector.
int numState
Size of the state vector.
This class implements a structural material status information.
char cmname[80]
Name for material routine.
virtual void give3dMaterialStiffnessMatrix_dPdF(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
const FloatArray & giveTempStateVector() const
MatResponseMode
Describes the character of characteristic material matrix.
virtual const char * giveClassName() const
virtual void give3dMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes full 3d material stiffness matrix at given integration point, time, respecting load history ...
static int n
Gausspoint counter.
FloatArray stateVector
General state vector.
virtual ~AbaqusUserMaterialStatus()
Destructor.
bool mUseNumericalTangent
Flag to determine if numerical tangent should be used.
const FloatArray & giveStateVector() const
virtual void giveFirstPKStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedF, TimeStep *tStep)
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
std::string filename
Name of the file that contains the umat function.
virtual ~AbaqusUserMaterial()
Destructor.
virtual IRResultType initializeFrom(InputRecord *ir)
Reads the following values;.
Abstract base class representing a material status information.
Class representing vector of real numbers.
int mStressInterpretation
Flag to determine how the stress and Jacobian are interpreted.
FloatArray initialStress
Initial stress.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
FloatArray properties
Material properties.
void * umatobj
Dynamically loaded umat.
virtual const char * giveInputRecordName() const
virtual const char * giveClassName() const
FloatArray & letStateVectorBe(FloatArray &s)
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Prints output of receiver to stream, for given time step.
#define _IFT_AbaqusUserMaterial_Name
Abstract base class for all "structural" constitutive models.
This class allows for custom user materials from Abaqus (UMAT).
FloatMatrix tempTangent
Temporary elastic tangent.
the oofem namespace is to define a context or scope in which all oofem names are defined.
void(* umat)(double *stress, double *statev, double *ddsdde, double *sse, double *spd, double *scd, double *rpl, double *ddsddt, double *drplde, double *drpldt, double *stran, double *dstran, double time[2], double *dtime, double *temp, double *dtemp, double predef[1], double dpred[1], char cmname[80], int *ndi, int *nshr, int *ntens, int *nstatv, double *props, int *nprops, double coords[3], double *drot, double *pnewdt, double *celent, double *dfgrd0, double *dfgrd1, int *noel, int *npt, int *layer, int *kspt, int *kstep, int *kinc)
Pointer to the dynamically loaded umat-function (translated to C)
virtual void initTempStatus(GaussPoint *gp)
Initializes temporary variables stored in integration point status at the beginning of new time step...
bool hasTangentFlag
Checker to see if tangent has been computed.
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
Class representing integration point in finite element program.
Class representing solution step.
virtual void givePlaneStrainStiffMtrx_dPdF(FloatMatrix &answer, MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep)
void letTempTangentBe(FloatMatrix t)
virtual int hasNonLinearBehaviour()
Returns nonzero if receiver is non linear.
const FloatMatrix & giveTempTangent()