66 OOFEM_ERROR(
"Attempted to evaluate E modulus at time lower than casting time");
74 for ( mu = 1; mu <=
nUnits; mu++ ) {
77 sum += ( 1 - lambdaMu ) / Emu;
94 FloatArray *sigmaVMu = NULL, reducedAnswer, help;
99 OOFEM_ERROR(
"Attempted to evaluate creep strain for time lower than casting time");
107 if ( mode == VM_Incremental ) {
108 for ( mu = 1; mu <=
nUnits; mu++ ) {
114 help.add(* sigmaVMu);
116 reducedAnswer.add(help);
121 help = reducedAnswer;
123 reducedAnswer.beProductOf(C, help);
125 reducedAnswer.times(1. / v);
128 answer = reducedAnswer;
145 if ( deltaT / tauMu > 30 ) {
148 betaMu = exp(-( deltaT ) / tauMu);
164 if ( deltaT / tauMu < 1.e-5 ) {
165 lambdaMu = 1 - 0.5 * ( deltaT / tauMu ) + 1 / 6 * ( pow(deltaT / tauMu, 2) ) - 1 / 24 * ( pow(deltaT / tauMu, 3) );
166 }
else if ( deltaT / tauMu > 30 ) {
167 lambdaMu = tauMu / deltaT;
169 lambdaMu = ( 1.0 - exp(-( deltaT ) / tauMu) ) * tauMu / deltaT;
196 FloatArray help, SigmaVMu, deltaEps0, deltaSigma;
203 for (
int mu = 1; mu <=
nUnits; mu++ ) {
224 for (
int mu = 1; mu <=
nUnits; mu++ ) {
229 help.
times(lambdaMu);
234 SigmaVMu.
times(betaMu);
263 OOFEM_ERROR(
"function has not been yet implemented to KelvinChainSolidMaterialStatus.C");
static int giveSizeOfVoigtSymVector(MaterialMode mmode)
Returns the size of symmetric part of a reduced stress/strain vector according to given mode...
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
void subtract(const FloatArray &src)
Subtracts array src to receiver.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
virtual bool isActivated(TimeStep *tStep)
double giveCharTime(int) const
Access to the characteristic time of a given unit.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
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...
void computeHiddenVars(GaussPoint *gp, TimeStep *tStep)
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
virtual void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)
Computes the real stress vector for given total strain and integration point.
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.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
virtual void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)
Computes the real stress vector for given total strain and integration point.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
This class implements a rheologic chain model describing a viscoelastic material. ...
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...
KelvinChainSolidMaterial(int n, Domain *d)
double giveEparModulus(int iChain)
Access to partial modulus of a given unit.
void letTempHiddenVarsVectorBe(int i, FloatArray &valueArray)
double giveTimeIncrement()
Returns solution step associated time increment.
void giveUnitStiffnessMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)
Evaluation of elastic stiffness matrix for unit Young's modulus.
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
void giveUnitComplianceMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)
Evaluation of elastic compliance matrix for unit Young's modulus.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
virtual double giveEModulus(GaussPoint *gp, TimeStep *tStep)
Evaluation of the incremental modulus.
const FloatArray & giveTempStrainVector() const
Returns the const pointer to receiver's temporary strain vector.
virtual double computeBetaMu(GaussPoint *gp, TimeStep *tStep, int Mu)
factors for exponential algorithm
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
bool isEmpty() const
Returns true if receiver is empty.
KelvinChainSolidMaterialStatus(int n, Domain *d, GaussPoint *g, int nunits)
double giveIntrinsicTime()
Returns intrinsic time, e.g. time in which constitutive model is evaluated.
FloatArray & giveHiddenVarsVector(int i)
virtual double computeCreepFunction(double ofAge, double tPrime, GaussPoint *gp, TimeStep *tStep)
Evaluation of the creep compliance function - function useless here.
Abstract base class representing a material status information.
virtual void updateEparModuli(double tPrime, GaussPoint *gp, TimeStep *tStep)
Update of partial moduli of individual chain units.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
virtual void computeStressIndependentStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode)
Computes reduced strain vector in given integration point, generated by internal processes in materia...
IRResultType
Type defining the return values of InputRecord reading operations.
This class implements associated Material Status to KelvinChainSolidMaterial, which corresponds to a ...
void zero()
Zeroes all coefficients of receiver.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
void times(double s)
Multiplies receiver with scalar.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Domain * giveDomain() const
virtual double computeSolidifiedVolume(GaussPoint *gp, TimeStep *tStep)=0
Evaluation of the relative volume of the solidified material.
double castingTime
Casting time.
int giveSize() const
Returns the size of receiver.
the oofem namespace is to define a context or scope in which all oofem names are defined.
bool isNotEmpty() const
Returns true if receiver is not empty.
const FloatArray & giveStrainVector() const
Returns the const pointer to receiver's strain vector.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
int nUnits
Number of (Maxwell or Kelvin) units in the rheologic chain.
virtual double computeLambdaMu(GaussPoint *gp, TimeStep *tStep, int Mu)
Class representing integration point in finite element program.
Class representing solution step.
void add(const FloatArray &src)
Adds array src to receiver.
void resize(int s)
Resizes receiver towards requested size.