39#define keep_track_of_strains
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"
65#define TIME_DIFF 1.e-10
91#ifdef keep_track_of_strains
123#ifdef keep_track_of_strains
130 const char *
giveClassName()
const override {
return "RheoChainMaterialStatus"; }
295 ValueModeType mode)
const
325 return Material :: isActivated(tStep);
408 TimeStep *tStep, ValueModeType mode)
const;
int preCastingTimeMat
Material existing before casting time - optional parameter, zero by default.
double giveCurrentTime()
Returns current time - see explanation near initTempStatus in giveRealStressVector.
double giveThermalStrain(void)
RheoChainMaterialStatus(GaussPoint *g, int nunits)
FloatArray shrinkageStrain
int nUnits
Number of units in the chain.
const char * giveClassName() const override
void setCurrentTime(double src)
Stores current time.
void setTempThermalStrain(double src)
FloatArray & giveTempHiddenVarsVector(int i)
void updateYourself(TimeStep *tStep) override
void initTempStatus() override
void setShrinkageStrainVector(FloatArray src)
std ::vector< FloatArray > hiddenVars
Hidden (internal) variables, the meaning of which depends on the type of chain.
FloatArray * giveShrinkageStrainVector()
void restoreContext(DataStream &stream, ContextMode mode) override
void saveContext(DataStream &stream, ContextMode mode) override
FloatArray & giveHiddenVarsVector(int i)
double giveTempThermalStrain(void)
void letTempHiddenVarsVectorBe(int i, FloatArray &valueArray)
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
std ::vector< FloatArray > tempHiddenVars
virtual const FloatArray & giveViscoelasticStressVector() const
FloatArray * letHiddenVarsVectorBe(int i, FloatArray *)
FloatArrayF< 3 > giveRealStressVector_PlaneStress(const FloatArrayF< 3 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
double talpha
thermal dilatation coeff.
bool hasMaterialModeCapability(MaterialMode mode) const override
virtual double giveEModulus(GaussPoint *gp, TimeStep *tStep) const =0
Evaluation of the incremental modulus.
double giveEndOfTimeOfInterest()
Access to the time up to which the response should be accurate.
FloatMatrixF< 3, 3 > givePlaneStressStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
StructuralMaterial * linearElasticMaterial
Associated linearElasticMaterial, with E = 1.
FloatMatrixF< 6, 6 > give3dMaterialStiffnessMatrix(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
bool isActivated(TimeStep *tStep) const override
Extended meaning: returns true if the material is cast (target time > casting time) or the precasing ...
const FloatArray & giveDiscreteTimes() const
FloatMatrixF< 4, 4 > givePlaneStrainStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
int nUnits
Number of (Maxwell or Kelvin) units in the rheologic chain.
double relMatAge
Physical age of the material at castingTime.
void computeDiscreteRelaxationFunction(FloatArray &answer, const FloatArray &tSteps, double t0, double tr, GaussPoint *gp, TimeStep *tStep) const
void initializeFrom(InputRecord &ir) override
virtual double giveEquivalentTime(GaussPoint *gp, TimeStep *tStep) const
By default returns equivalent time in the middle of the time step.
void saveIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp) override
void giveUnitStiffnessMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) const
Evaluation of elastic stiffness matrix for unit Young's modulus.
const char * giveClassName() const override
virtual void giveShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const
FloatArrayF< 1 > giveRealStressVector_1d(const FloatArrayF< 1 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
double giveAlphaTwo() const
double giveCharTime(int) const
Access to the characteristic time of a given unit.
FloatMatrixF< 1, 1 > give1dStressStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
double endOfTimeOfInterest
Time (age???) up to which the model should give a good approximation.
FloatArray EparVal
Partial moduli of individual units.
void giveUnitComplianceMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) const
Evaluation of elastic compliance matrix for unit Young's modulus.
FloatArrayF< 6 > giveThermalDilatationVector(GaussPoint *gp, TimeStep *tStep) const override
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) const override
double begOfTimeOfInterest
Time from which the model should give a good approximation. Optional field. Default value is 0....
virtual void computeCharTimes()
Evaluation of characteristic times.
RheoChainMaterial(int n, Domain *d)
virtual ~RheoChainMaterial()
FloatArrayF< 5 > giveRealStressVector_PlateLayer(const FloatArrayF< 5 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
virtual double computeCreepFunction(double t, double t_prime, GaussPoint *gp, TimeStep *tStep) const =0
Evaluation of the creep compliance function at time t when loading is acting from time t_prime.
void restoreIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp) override
double giveEparModulus(int iChain) const
Access to partial modulus of a given unit.
virtual FloatArray computeCharCoefficients(double tPrime, GaussPoint *gp, TimeStep *tStep) const =0
Evaluation of the moduli of individual units.
double EparValTime
Time for which the partial moduli of individual units have been evaluated.
double giveAlphaOne() const
FloatArrayF< 6 > giveRealStressVector_3d(const FloatArrayF< 6 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
virtual double giveCharTimeExponent(int i) const
Exponent to be used with the char time of a given unit, usually = 1.0.
virtual bool hasIncrementalShrinkageFormulation() const
virtual void giveEigenStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const
bool hasCastingTimeSupport() const override
FloatArray discreteTimeScale
Times at which the errors are evaluated if the least-square method is used.
virtual void updateEparModuli(double tPrime, GaussPoint *gp, TimeStep *tStep) const
Update of partial moduli of individual chain units.
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
FloatArrayF< 2 > giveRealStressVector_2dBeamLayer(const FloatArrayF< 2 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
StructuralMaterial * giveLinearElasticMaterial()
Access to the underlying linear elastic material with unit Young's modulus.
double alphaOne
Parameters for the lattice model.
void computeTrueStressIndependentStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const
FloatArray charTimes
Characteristic times of individual units (relaxation or retardation times).
FloatArray computeStressIndependentStrainVector(GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const override
double nu
Poisson's ratio (assumed to be constant, unaffected by creep).
FloatArrayF< 4 > giveRealStressVector_PlaneStrain(const FloatArrayF< 4 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_3d.
double givePoissonsRatio() const
Returns Poisson's ratio.
static FloatArray generateLogTimeScale(double from, double to, int nsteps)
StructuralMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralMaterialStatus with IntegrationPoint g.
FloatArray stressVector
Equilibrated stress vector in reduced form.
StructuralMaterial(int n, Domain *d)
double giveTimeIncrement()
Returns solution step associated time increment.
double giveTargetTime()
Returns target time.