44 #include "../sm/CrossSections/structuralcrosssection.h"    49     EparVal(), charTimes(), discreteTimeScale()
    73     return mode == _3dMat || mode == _PlaneStress ||
    74            mode == _PlaneStrain || mode == _1dMat ||
    75            mode == _PlateLayer || mode == _2dBeamLayer ||
    76            mode == _2dLattice || mode == _3dLattice;
    92     FloatArray stressIncrement, stressVector, strainIncrement, reducedStrain;
   117                                                 tStep, VM_Incremental);
   143         Binv.
times(Emodulus);
   147     stressIncrement.
beProductOf(Binv, strainIncrement);
   151     stressVector.
add(stressIncrement);
   164     answer = stressVector;
   183     if ( mMode ==  _2dLattice || mMode ==  _3dLattice ) {
   195                                                        double t0, 
double tr, 
   198     int size, nsteps, si;
   199     double taui, tauk, Jtrt0, totalDeltaSigma;
   214     totalDeltaSigma = 0.;
   215     for ( 
int k = si; k <= nsteps; k++ ) {
   217         for ( 
int i = si; i <= k - 1; i++ ) {
   221                 taui = 0.5 * ( t0 + tSteps.
at(i) + tr );
   223                 taui = t0 + 0.5 * ( tSteps.
at(i) + tSteps.
at(i - 1) );
   232             tauk = 0.5 * ( t0 + tSteps.
at(k) + tr );
   234             tauk = t0 + 0.5 * ( tSteps.
at(k) + tSteps.
at(k - 1) );
   240         totalDeltaSigma += deltaSigma.
at(k);
   241         answer.
at(k) = sig0 - totalDeltaSigma;
   252     double help = log(to / from) / nsteps;
   253     for ( 
int i = 1; i <= nsteps; i++ ) {
   254         answer.
at(i) = exp(i * help) * from;
   362 #ifdef keep_track_of_strains   422     double endTime, Taun1, Tau1, help;
   424     double stepMultiplier = 10.;
   427     Taun1 = 0.75 * endTime;
   436         OOFEM_ERROR(
"begOfTimeOfInterest must be a positive number");
   439     nsteps = ( int ) ( ( log(Taun1) - log(Tau1) ) / log(stepMultiplier) + 1. );
   444     this->
nUnits = size = nsteps + 2;
   451     help = ( log(Taun1) - log(Tau1) ) / ( 
double ) nsteps;
   452     for ( 
int i = 1; i <= nsteps; i++ ) {
   480         answer.
times(incrStiffness);
   498         answer.
times(incrStiffness);
   515         answer.
times(incrStiffness);
   533         answer.
times(incrStiffness);
   551         answer.
times(incrStiffness);
   569         answer.
times(incrStiffness);
   588     if ( result != 
IRRT_OK ) 
return result;
   703     if ( type == IST_ThermalStrainTensor ) {
   728 #ifdef keep_track_of_strains   744         OOFEM_ERROR(
"unit number exceeds the specified limit");
   757     fprintf(file, 
"{hidden variables: ");
   758     for ( 
int i = 0; i < 
nUnits; i++ ) {
   761             fprintf( file, 
"%f ", val );
   768         fprintf(file, 
"shrinkageStrain: {");
   770             fprintf( file, 
"%f ", val );
   776     fprintf(file, 
"}\n");
   785     for ( 
int i = 0; i < 
nUnits; i++ ) {
   789 #ifdef keep_track_of_strains   814     for ( 
int i = 0; i < 
nUnits; i++ ) {
   841     for ( 
int i = 0; i < 
nUnits; i++ ) {
 
static int giveSizeOfVoigtSymVector(MaterialMode mmode)
Returns the size of symmetric part of a reduced stress/strain vector according to given mode...
 
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables. 
 
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable. 
 
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver. 
 
double relMatAge
Physical age of the material at simulation time = 0. 
 
void letTempStrainVectorBe(const FloatArray &v)
Assigns tempStrainVector to given vector v. 
 
virtual void give1dStressStiffMtrx(FloatMatrix &answer, MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep)
Method for computing 1d stiffness matrix of 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. 
 
double nu
Poisson's ratio (assumed to be constant, unaffected by creep). 
 
virtual void give3dMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes full 3d material stiffness matrix at given integration point, time, respecting load history ...
 
std::vector< FloatArray > tempHiddenVars
 
Domain * domain
Link to domain object, useful for communicating with other FEM components. 
 
virtual ~RheoChainMaterialStatus()
 
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables. 
 
virtual contextIOResultType saveIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp)
Stores integration point state to output stream. 
 
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...
 
contextIOResultType storeYourself(DataStream &stream) const 
 
double giveThermalStrain(void)
 
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form. 
 
#define _IFT_RheoChainMaterial_endoftimeofinterest
 
virtual void give1dStressStiffMtrx(FloatMatrix &answer, MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep)
Method for computing 1d stiffness matrix of receiver. 
 
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. 
 
virtual void givePlaneStrainStiffMtrx(FloatMatrix &answer, MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep)
Method for computing plane strain stiffness matrix of receiver. 
 
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. 
 
LinearElasticMaterial * giveLinearElasticMaterial()
Access to the underlying linear elastic material with unit Young's modulus. 
 
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...
 
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. 
 
int preCastingTimeMat
Stiffness at time less than casting time - optional parameter, negative by default. 
 
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream. 
 
EngngModel * giveEngngModel()
Returns engineering model to which receiver is associated. 
 
void setTempThermalStrain(double src)
 
virtual double computeCreepFunction(double t, double t_prime, GaussPoint *gp, TimeStep *tStep)=0
Evaluation of the creep compliance function at time t when loading is acting from time t_prime...
 
virtual contextIOResultType restoreIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp)
Reads integration point state to output stream. 
 
#define _IFT_RheoChainMaterial_timefactor
 
virtual contextIOResultType restoreIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp)
Reads integration point state to output stream. 
 
void giveStressDependentPartOfStrainVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrainVector, TimeStep *tStep, ValueModeType mode)
Method for subtracting from reduced space strain vector its stress-independent parts (caused by tempe...
 
MaterialMode
Type representing material mode of integration point. 
 
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream. 
 
MatResponseMode
Describes the character of characteristic material matrix. 
 
const FloatArray & giveDiscreteTimes()
 
#define _IFT_RheoChainMaterial_alphaOne
 
virtual void give2dLatticeStiffMtrx(FloatMatrix &answer, MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep)
Method for computing 2d lattice stiffness matrix of receiver. 
 
virtual void giveThermalDilatationVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
Returns a vector of coefficients of thermal dilatation in direction of each material principal (local...
 
double giveEndOfTimeOfInterest()
Access to the time up to which the response should be accurate. 
 
This class is a abstract base class for all linear elastic material models in a finite element proble...
 
double giveEparModulus(int iChain)
Access to partial modulus of a given unit. 
 
FloatArray charTimes
Characteristic times of individual units (relaxation or retardation times). 
 
void letTempHiddenVarsVectorBe(int i, FloatArray &valueArray)
 
void beDifferenceOf(const FloatArray &a, const FloatArray &b)
Sets receiver to be a - b. 
 
virtual contextIOResultType saveIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp)
Stores integration point state to output stream. 
 
virtual int hasMaterialModeCapability(MaterialMode mode)
Tests if material supports material mode. 
 
void giveUnitStiffnessMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)
Evaluation of elastic stiffness matrix for unit Young's modulus. 
 
virtual void give3dLatticeStiffMtrx(FloatMatrix &answer, MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep)
Method for computing 3d lattice stiffness matrix of receiver. 
 
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)
 
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record. 
 
virtual ~RheoChainMaterial()
 
virtual void giveStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes the stiffness matrix for giveRealStressVector of receiver in given integration point...
 
double alphaOne
Parameters for the lattice model. 
 
double endOfTimeOfInterest
Time (age???) up to which the model should give a good approximation. 
 
virtual double giveEModulus(GaussPoint *gp, TimeStep *tStep)=0
Evaluation of the incremental modulus. 
 
Material * giveMaterial(int n)
Service for accessing particular domain material model. 
 
This class implements an isotropic linear elastic material in a finite element problem. 
 
void giveUnitComplianceMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)
Evaluation of elastic compliance 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. 
 
virtual void give3dMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes full 3d material stiffness matrix at given integration point, time, respecting load history ...
 
void times(double f)
Multiplies receiver by factor f. 
 
contextIOResultType restoreYourself(DataStream &stream)
 
FloatArray shrinkageStrain
Total shrinkage strain (needed only when the shrinkage evolution is described in the incremental form...
 
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. 
 
RheoChainMaterial(int n, Domain *d)
 
#define _IFT_RheoChainMaterial_talpha
 
#define _IFT_RheoChainMaterial_n
 
double giveIntrinsicTime()
Returns intrinsic time, e.g. time in which constitutive model is evaluated. 
 
std::vector< FloatArray > hiddenVars
Hidden (internal) variables, the meaning of which depends on the type of chain. 
 
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream. 
 
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form. 
 
virtual double giveEndOfTimeOfInterest()
Returns end of time interest (time corresponding to end of time integration). 
 
virtual void givePlaneStressStiffMtrx(FloatMatrix &answer, MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep)
Method for computing plane stress stiffness matrix of receiver. 
 
#define _IFT_RheoChainMaterial_preCastingTimeMat
 
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 void give3dLatticeStiffMtrx(FloatMatrix &answer, MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep)
Method for computing 3d lattice stiffness matrix of receiver. 
 
Class representing vector of real numbers. 
 
#define _IFT_RheoChainMaterial_begoftimeofinterest
 
#define _IFT_RheoChainMaterial_relmatage
 
virtual void givePlaneStrainStiffMtrx(FloatMatrix &answer, MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep)
Method for computing plane strain stiffness matrix of receiver. 
 
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. 
 
virtual void give2dLatticeStiffMtrx(FloatMatrix &answer, MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep)
Method for computing 2d lattice stiffness matrix of receiver. 
 
void letTempStressVectorBe(const FloatArray &v)
Assigns tempStressVector to given vector v. 
 
void zero()
Zeroes all coefficients of receiver. 
 
virtual void computeCharTimes()
Evaluation of characteristic times. 
 
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. 
 
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record. 
 
Abstract base class for all "structural" constitutive models. 
 
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
 
virtual void computeCharCoefficients(FloatArray &answer, double tPrime, GaussPoint *gp, TimeStep *tStep)=0
Evaluation of the moduli of individual units. 
 
Domain * giveDomain() const 
 
FloatArray discreteTimeScale
Times at which the errors are evaluated if the least-square method is used. 
 
double talpha
thermal dilatation coeff. 
 
double castingTime
Casting time. 
 
#define _IFT_RheoChainMaterial_alphaTwo
 
int giveSize() const 
Returns the size of receiver. 
 
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream. 
 
virtual const FloatArray & giveViscoelasticStressVector() const 
 
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. 
 
virtual void initTempStatus(GaussPoint *gp)
Initializes temporary variables stored in integration point status at the beginning of new time step...
 
void beInverseOf(const FloatMatrix &src)
Modifies receiver to become inverse of given parameter. 
 
virtual void givePlaneStressStiffMtrx(FloatMatrix &answer, MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep)
Method for computing plane stress stiffness matrix of receiver. 
 
const FloatArray & giveStrainVector() const 
Returns the const pointer to receiver's strain vector. 
 
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. 
 
void add(const FloatArray &src)
Adds array src to receiver. 
 
#define _IFT_RheoChainMaterial_lattice
 
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...
 
int nUnits
Number of units in the chain. 
 
void resize(int s)
Resizes receiver towards requested size. 
 
static void generateLogTimeScale(FloatArray &answer, double from, double to, int nsteps)
Generates discrete times starting from time "from" to time "to" uniformly distributed in log time sca...