37 #include "../sm/Materials/structuralmaterial.h" 43 #include "../sm/Materials/structuralms.h" 48 #define _IFT_TrabBone3D_Name "trabbone3d" 49 #define _IFT_TrabBone3D_eps0 "eps0" 50 #define _IFT_TrabBone3D_nu0 "nu0" 51 #define _IFT_TrabBone3D_mu0 "mu0" 52 #define _IFT_TrabBone3D_expk "expk" 53 #define _IFT_TrabBone3D_expl "expl" 55 #define _IFT_TrabBone3D_m1 "m1" 56 #define _IFT_TrabBone3D_m2 "m2" 57 #define _IFT_TrabBone3D_rho "rho" 59 #define _IFT_TrabBone3D_sig0Pos "sig0pos" 60 #define _IFT_TrabBone3D_sig0Neg "sig0neg" 61 #define _IFT_TrabBone3D_chi0Pos "chi0pos" 62 #define _IFT_TrabBone3D_chi0Neg "chi0neg" 63 #define _IFT_TrabBone3D_tau0 "tau0" 64 #define _IFT_TrabBone3D_expp "expp" 65 #define _IFT_TrabBone3D_expq "expq" 66 #define _IFT_TrabBone3D_plasHardFactor "plashardfactor" 67 #define _IFT_TrabBone3D_expPlasHard "expplashard" 69 #define _IFT_TrabBone3D_expDam "expdam" 70 #define _IFT_TrabBone3D_critDam "critdam" 72 #define _IFT_TrabBone3D_x1 "x1" 73 #define _IFT_TrabBone3D_x2 "x2" 74 #define _IFT_TrabBone3D_x3 "x3" 75 #define _IFT_TrabBone3D_y1 "y1" 76 #define _IFT_TrabBone3D_y2 "y2" 77 #define _IFT_TrabBone3D_y3 "y3" 79 #define _IFT_TrabBone3D_viscosity "viscosity" 82 #define _IFT_TrabBone3D_gMin "gmin" 83 #define _IFT_TrabBone3D_gammaL "gammal" 84 #define _IFT_TrabBone3D_gammaP "gammap" 85 #define _IFT_TrabBone3D_tDens "tdens" 86 #define _IFT_TrabBone3D_densCrit "denscrit" 88 #define _IFT_TrabBone3D_printflag "printflag" 89 #define _IFT_TrabBone3D_max_num_iter "max_num_iter" 90 #define _IFT_TrabBone3D_max_num_substeps "max_num_substeps" 91 #define _IFT_TrabBone3D_rel_yield_tol "rel_yield_tol" 92 #define _IFT_TrabBone3D_strain_tol "strain_tol" 170 double m1, m2, rho, eps0, nu0, mu0, expk, expl, sig0Pos, sig0Neg, chi0Pos, chi0, chi0Neg,
tau0, expq, expp;
175 double x1, x2, x3, y1, y2, y3, z1, z2,
z3;
177 double gammaL0, gammaP0,
tDens, densCrit, rL, rP, gammaL, gammaP;
185 double evaluateCurrentYieldStress(
const double kappa);
186 double evaluateCurrentPlasticModulus(
const double kappa);
187 double evaluateCurrentViscousStress(
const double deltaKappa,
TimeStep *tStep);
188 double evaluateCurrentViscousModulus(
const double deltaKappa,
TimeStep *tStep);
198 double computeDamageParam(
double kappa);
199 double computeDamageParamPrime(
double kappa);
210 void constructAnisoComplTensor(
FloatMatrix &answer);
212 void constructAnisoStiffnessTensor(
FloatMatrix &answer);
215 void constructAnisoFabricTensor(
FloatMatrix &answer);
216 void constructAnisoFtensor(
FloatArray &answer);
218 void constructStiffnessTransformationMatrix(
FloatMatrix &answer);
219 void constructFabricTransformationMatrix(
FloatMatrix &answer);
221 void constructNormAdjustTensor(
FloatMatrix &answer);
224 virtual void give3dMaterialStiffnessMatrix(
FloatMatrix & answer,
240 virtual double predictRelativeComputationalCost(
GaussPoint *gp);
241 virtual double predictRelativeRedistributionCost(
GaussPoint *gp);
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
TrabBone3DStatus(int n, Domain *d, GaussPoint *g)
GaussPoint * gp
Associated integration point.
void setTangentMatrix(FloatMatrix &tmm)
const FloatArray & giveTempEffectiveStress() const
void setTempPSED(double pse)
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Defines several material constant (respective their representative number).
This class implements a structural material status information.
void setTempKappa(double al)
virtual const char * giveClassName() const
MatResponseMode
Describes the character of characteristic material matrix.
void setSSaTensor(FloatMatrix &ssa)
#define _IFT_TrabBone3D_Name
void setTempTSED(double tse)
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
bool isCharacteristicMtrxSymmetric(MatResponseMode rMode)
Returns true if stiffness matrix of receiver is symmetric Default implementation returns true...
void setSmtrx(FloatMatrix &smt)
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
const FloatMatrix & giveTangentMatrix() const
const FloatArray & giveTempPlasDef() const
void setPlasFlowDirec(FloatArray &pfd)
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
virtual const char * giveInputRecordName() const
virtual void updateYourself(TimeStep *)
Update equilibrium history variables according to temp-variables.
void setTempDam(double da)
Abstract base class representing a material status information.
virtual ~TrabBone3DStatus()
Class representing vector of real numbers.
virtual const char * giveClassName() const
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
const FloatArray & givePlasFlowDirec() const
const FloatArray & givePlasDef() const
void setTempPlasDef(FloatArray &epsip)
double norm(const FloatArray &x)
const FloatMatrix & giveSSaTensor() const
void setTempEffectiveStress(FloatArray &sc)
const FloatMatrix & giveSmtrx() const
void setKappa(double values)
FloatMatrix tangentMatrix
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Abstract base class for all "structural" constitutive models.
This class implements associated Material Status to TrabBone3D (trabecular bone material).
double densG
Densificator criterion.
double viscosity
Viscosity parameter.
the oofem namespace is to define a context or scope in which all oofem names are defined.
FloatArray tempEffectiveStress
Class representing integration point in finite element program.
Class representing solution step.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
FloatArray effectiveStress