39 #define keep_track_of_strains 41 #include "../sm/Materials/structuralmaterial.h" 47 #include "../sm/Elements/structuralelement.h" 48 #include "../sm/Materials/structuralms.h" 52 #define _IFT_RheoChainMaterial_n "n" 53 #define _IFT_RheoChainMaterial_alphaOne "a1" 54 #define _IFT_RheoChainMaterial_alphaTwo "a2" 55 #define _IFT_RheoChainMaterial_lattice "lattice" 56 #define _IFT_RheoChainMaterial_relmatage "relmatage" 57 #define _IFT_RheoChainMaterial_begoftimeofinterest "begoftimeofinterest" 58 #define _IFT_RheoChainMaterial_endoftimeofinterest "endoftimeofinterest" 59 #define _IFT_RheoChainMaterial_timefactor "timefactor" 60 #define _IFT_RheoChainMaterial_talpha "talpha" 61 #define _IFT_RheoChainMaterial_preCastingTimeMat "precastingtimemat" 65 #define MNC_NPOINTS 30 66 #define TIME_DIFF 1.e-10 86 #ifdef keep_track_of_strains 114 #ifdef keep_track_of_strains 121 virtual const char *
giveClassName()
const {
return "RheoChainMaterialStatus"; }
182 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
184 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
186 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
188 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
190 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
192 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
215 virtual int hasMaterialModeCapability(
MaterialMode mode);
228 virtual void give3dMaterialStiffnessMatrix(
FloatMatrix &answer,
233 virtual void givePlaneStressStiffMtrx(
FloatMatrix &answer,
237 virtual void givePlaneStrainStiffMtrx(
FloatMatrix &answer,
241 virtual void give1dStressStiffMtrx(
FloatMatrix &answer,
246 virtual void give2dLatticeStiffMtrx(
FloatMatrix &answer,
251 virtual void give3dLatticeStiffMtrx(
FloatMatrix &answer,
256 virtual void computeStressIndependentStrainVector(
FloatArray &answer,
290 virtual double computeCreepFunction(
double t,
double t_prime,
GaussPoint *gp,
TimeStep *tStep) = 0;
293 if ( this->preCastingTimeMat > 0 ) {
318 static void generateLogTimeScale(
FloatArray &answer,
double from,
double to,
int nsteps);
347 double giveEparModulus(
int iChain);
350 virtual void computeCharTimes();
353 double giveCharTime(
int)
const;
362 double giveEndOfTimeOfInterest();
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
double relMatAge
Physical age of the material at simulation time = 0.
virtual bool isActivated(TimeStep *tStep)
GaussPoint * gp
Associated integration point.
virtual const char * giveClassName() const
double nu
Poisson's ratio (assumed to be constant, unaffected by creep).
std::vector< FloatArray > tempHiddenVars
virtual ~RheoChainMaterialStatus()
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual void giveRealStressVector_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Defines several material constant (respective their representative number).
double giveThermalStrain(void)
virtual int hasIncrementalShrinkageFormulation()
If only incremental shrinkage strain formulation is provided, then total shrinkage strain must be tra...
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
virtual void giveShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode)
Computes, for the given integration point, the strain vector induced by stress-independent shrinkage...
This class implements a structural material status information.
double begOfTimeOfInterest
Time from which the model should give a good approximation. Optional field. Default value is 0...
void clear()
Clears receiver (zero size).
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
This class implements associated Material Status to RheoChainMaterial.
FloatArray EparVal
Partial moduli of individual units.
int preCastingTimeMat
Stiffness at time less than casting time - optional parameter, negative by default.
FloatArray stressVector
Equilibrated stress vector in reduced form.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
double giveAlphaTwo() const
double giveTempThermalStrain(void)
void setTempThermalStrain(double src)
This class implements a rheologic chain model describing a viscoelastic material. ...
MaterialMode
Type representing material mode of integration point.
MatResponseMode
Describes the character of characteristic material matrix.
virtual int hasNonLinearBehaviour()
Returns nonzero if receiver is non linear.
This class is a abstract base class for all linear elastic material models in a finite element proble...
FloatArray charTimes
Characteristic times of individual units (relaxation or retardation times).
void letTempHiddenVarsVectorBe(int i, FloatArray &valueArray)
double timeFactor
Scaling factor transforming the simulation time units into days (gives the number of simulation time ...
RheoChainMaterialStatus(int n, Domain *d, GaussPoint *g, int nunits)
double endOfTimeOfInterest
Time (age???) up to which the model should give a good approximation.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual int hasCastingTimeSupport()
Tests if material supports casting time.
FloatArray * letHiddenVarsVectorBe(int i, FloatArray *)
FloatArray shrinkageStrain
Total shrinkage strain (needed only when the shrinkage evolution is described in the incremental form...
virtual void giveRealStressVector_PlateLayer(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
FloatArray & giveHiddenVarsVector(int i)
std::vector< FloatArray > hiddenVars
Hidden (internal) variables, the meaning of which depends on the type of chain.
Abstract base class representing a material status information.
virtual double giveCharTimeExponent(int i)
Exponent to be used with the char time of a given unit, usually = 1.0.
Class representing vector of real numbers.
FloatArray & giveTempHiddenVarsVector(int i)
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
virtual void giveRealStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
double giveAlphaOne() const
FloatArray * giveShrinkageStrainVector()
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Abstract base class for all "structural" constitutive models.
virtual void giveRealStressVector_2dBeamLayer(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
virtual void giveRealStressVector_PlaneStress(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
virtual bool isActivated(TimeStep *tStep)
FloatArray discreteTimeScale
Times at which the errors are evaluated if the least-square method is used.
double talpha
thermal dilatation coeff.
virtual const FloatArray & giveViscoelasticStressVector() const
the oofem namespace is to define a context or scope in which all oofem names are defined.
int nUnits
Number of (Maxwell or Kelvin) units in the rheologic chain.
void setShrinkageStrainVector(FloatArray src)
virtual void giveEigenStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode)
Computes, for the given integration point, the strain vector induced by the stress history (typically...
LinearElasticMaterial * linearElasticMaterial
Associated linearElasticMaterial, with E = 1.
Class representing integration point in finite element program.
Class representing solution step.
double EparValTime
Time for which the partial moduli of individual units have been evaluated.
virtual void giveRealStressVector_PlaneStrain(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_3d.
int nUnits
Number of units in the chain.
virtual const char * giveClassName() const