71 for (
int i = 1; i <= this->
nUnits; i++ ) {
73 for (
int j = 1; j <= this->
nUnits; j++ ) {
76 for (
int r = 1; r <= rSize; r++ ) {
81 sum += exp(-tti - ttj);
89 for (
int r = 1; r <= rSize; r++ ) {
92 sumRhs += exp(-tti) * discreteRelaxFunctionVal.
at(r);
118 OOFEM_ERROR(
"Attempted to evaluate E modulus at time lower than casting time");
124 for (
int mu = 1; mu <=
nUnits; mu++ ) {
126 if ( deltaYmu <= 0.0 ) {
132 double lambdaMu = ( 1.0 - exp(-deltaYmu) ) / deltaYmu;
157 OOFEM_ERROR(
"Attempted to evaluate creep strain for time lower than casting time");
160 if ( mode == VM_Incremental ) {
163 reducedAnswer.
zero();
165 for (
int mu = 1; mu <=
nUnits; mu++ ) {
173 help.
times( 1.0 - exp(-deltaYmu) );
174 reducedAnswer.
add(help);
180 reducedAnswer.
times(1.0 / E);
182 answer = reducedAnswer;
229 for (
int mu = 1; mu <=
nUnits; mu++ ) {
233 double lambdaMu = ( 1.0 - exp(-deltaYmu) ) / deltaYmu;
238 help.
times(lambdaMu * Emu);
239 if ( muthHiddenVarsVector.
giveSize() ) {
240 muthHiddenVarsVector.
times( exp(-deltaYmu) );
241 muthHiddenVarsVector.
add(help);
double relMatAge
Physical age of the material at simulation time = 0.
void subtract(const FloatArray &src)
Subtracts array src to receiver.
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
double giveCharTime(int) const
Access to the characteristic time of a given unit.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
bool solveForRhs(const FloatArray &b, FloatArray &answer, bool transpose=false)
Solves the system of linear equations .
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
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 computeTrueStressIndependentStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode)
Computes, for the given integration point, the strain vector induced by stress-independent internal p...
double & at(int i)
Coefficient access function.
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.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
double giveTargetTime()
Returns target time.
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...
MaxwellChainMaterialStatus(int n, Domain *d, GaussPoint *g, int nunits)
virtual void computeCharCoefficients(FloatArray &answer, double tPrime, GaussPoint *gp, TimeStep *tStep)
This function computes the moduli of individual Maxwell units such that the corresponding Dirichlet s...
const FloatArray & giveDiscreteTimes()
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.
double timeFactor
Scaling factor transforming the simulation time units into days (gives the number of simulation time ...
void giveUnitComplianceMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)
Evaluation of elastic compliance matrix for unit Young's modulus.
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 double giveEModulus(GaussPoint *gp, TimeStep *tStep)
Evaluation of the incremental modulus.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
void computeDiscreteRelaxationFunction(FloatArray &answer, const FloatArray &tSteps, double t0, double tr, GaussPoint *gp, TimeStep *tSte)
Evaluation of the relaxation function at given times.
const FloatArray & giveTempStrainVector() const
Returns the const pointer to receiver's temporary strain vector.
double at(int i, int j) const
Coefficient access function.
double giveIntrinsicTime()
Returns intrinsic time, e.g. time in which constitutive model is evaluated.
FloatArray & giveHiddenVarsVector(int i)
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.
virtual double giveCharTimeExponent(int i)
Exponent to be used with the char time of a given unit, usually = 1.0.
MaxwellChainMaterial(int n, Domain *d)
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
void zero()
Zeroes all coefficients of receiver.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
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.
void computeHiddenVars(GaussPoint *gp, TimeStep *tStep)
Domain * giveDomain() const
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.
const FloatArray & giveStrainVector() const
Returns the const pointer to receiver's strain vector.
int giveNumberOfRows() const
Returns number of rows of receiver.
int nUnits
Number of (Maxwell or Kelvin) units in the rheologic chain.
This class implements associated Material Status to MaxwellChainMaterial.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
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.