35#ifndef abaqususermaterial_h
36#define abaqususermaterial_h
46#define _IFT_AbaqusUserMaterial_Name "abaqususermaterial"
47#define _IFT_AbaqusUserMaterial_numState "numstate"
48#define _IFT_AbaqusUserMaterial_properties "properties"
49#define _IFT_AbaqusUserMaterial_initialStress "initialstress"
50#define _IFT_AbaqusUserMaterial_userMaterial "umat"
51#define _IFT_AbaqusUserMaterial_name "name"
52#define _IFT_AbaqusUserMaterial_numericalTangent "numericaltangent"
53#define _IFT_AbaqusUserMaterial_numericalTangentPerturbation "perturbation"
88 void ( *
umat )(
double *stress,
double *statev,
double *ddsdde,
double *sse,
double *spd,
89 double *scd,
double *rpl,
double *ddsddt,
double *drplde,
double *drpldt,
90 double *stran,
double *dstran,
double time[ 2 ],
double *dtime,
double *temp,
91 double *dtemp,
double predef[ 1 ],
double dpred[ 1 ],
char cmname[ 80 ],
int *ndi,
92 int *nshr,
int *ntens,
int *nstatv,
double *props,
int *nprops,
double coords[ 3 ],
93 double *drot,
double *pnewdt,
double *celent,
double *dfgrd0,
double *dfgrd1,
94 int *noel,
int *npt,
int *layer,
int *kspt,
int *kstep,
int *kinc) =
nullptr;
201 const char *
giveClassName()
const override {
return "AbaqusUserMaterialStatus"; }
#define _IFT_AbaqusUserMaterial_Name
const char * giveClassName() const override
const FloatArray & giveStateVector() const
FloatArray stateVector
General state vector.
void letTempTangentBe(FloatMatrix t)
void initTempStatus() override
AbaqusUserMaterialStatus(GaussPoint *gp, int numState)
Constructor.
FloatMatrix tempTangent
Temporary elastic tangent.
int numState
Number of state variables.
void updateYourself(TimeStep *tStep) override
FloatArray & letTempStateVectorBe(FloatArray &s)
bool hasTangentFlag
Checker to see if tangent has been computed.
const FloatMatrix & giveTempTangent()
FloatArray tempStateVector
Temporary state vector.
FloatArray & letStateVectorBe(FloatArray &s)
const FloatArray & giveTempStateVector() const
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
const char * giveInputRecordName() const override
static std::size_t const abq2oo9[9]
void giveInputRecord(DynamicInputRecord &input) override
std::string filename
Name of the file that contains the umat function.
const char * giveClassName() const override
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
AbaqusUserMaterial(int n, Domain *d)
Constructor.
void * umatobj
Dynamically loaded umat.
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).
FloatArrayF< 6 > initialStress
Initial stress.
bool mUseNumericalTangent
char cmname[80]
Name for material routine.
FloatMatrixF< 5, 5 > givePlaneStrainStiffnessMatrix_dPdF(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 9, 9 > give3dMaterialStiffnessMatrix_dPdF(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
static std::size_t const abq2oo6[6]
virtual ~AbaqusUserMaterial()
Destructor.
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
int mStressInterpretation
FloatArrayF< 6 > giveRealStressVector_3d(const FloatArrayF< 6 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
FloatArrayF< 9 > giveFirstPKStressVector_3d(const FloatArrayF< 9 > &vF, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
FloatArray properties
Material properties.
FloatMatrixF< 6, 6 > give3dMaterialStiffnessMatrix(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
void initializeFrom(InputRecord &ir) override
int numState
Size of the state vector.
GaussPoint * gp
Associated integration point.
StructuralMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralMaterialStatus with IntegrationPoint g.
StructuralMaterial(int n, Domain *d)