53 return (
max(x, 0.0) );
60 return ( Ev * k1 * c13 / ( 1 + ( c14 / k1 ) *
macbra(ev - c13 * c15 * k1) ) );
67 return ( -E * k1 * k3 * exp( -ev / ( k1 * k4 ) ) );
77 a =
macbra(-ed - c8 * c9 * k1) / ( k1 *
c7 );
78 return ( -E * k1 * c8 / ( 1 + a * a ) );
87 a = (
macbra(ed - c5 * c6 * k1) / ( k1 * c20 *
c7 ) );
88 return ( E * k1 * c5 / ( 1 + a * a ) );
96 return ( E * k1 * c1 * exp( -
macbra(en - c1 * c2 * k1) / ( k1 * c3 +
macbra( -c4 * ( sv / Ev ) ) ) ) );
101 double c11,
double c12,
double Et)
106 sn0 = Et * k1 * c11 / ( 1 + c12 *
macbra(ev) );
108 return ( Et * k1 * k2 * c10 * a / ( Et * k1 * k2 + c10 * a ) );
121 double EpsN, DEpsN, DEpsL, DEpsM;
123 double SEV, SVdash, EpsD, DEpsD, SED, SEM, SEL, SD;
137 previousStress.
zero();
142 DEpsV = strainIncrement.
at(1);
143 DEpsN = strainIncrement.
at(2);
144 DEpsL = strainIncrement.
at(3);
145 DEpsM = strainIncrement.
at(4);
147 DEpsD = DEpsN - DEpsV;
174 SEV = previousStress.
at(1) + CV * DEpsV;
176 SVdash =
min(
max( SEV, this->
FVminus(EpsV,
k1,
k3,
k4,
E) ), this->
FVplus(EpsV,
k1,
c13,
c14,
c15,
EV) );
178 SED = previousStress.
at(2) - previousStress.
at(1) + CD * DEpsD;
182 SNdash = SVdash + SD;
185 SEM = previousStress.
at(4) +
ET * DEpsM;
186 SEL = previousStress.
at(3) +
ET * DEpsL;
192 }
else if (
SEL < -F ) {
200 }
else if ( SEM < -F ) {
206 answer.
at(1) = SVdash;
226 if ( result !=
IRRT_OK )
return result;
258 EV =
E / ( 1 - 2 *
nu );
259 ED = 5 *
E / ( 2 + 3 *
mu ) / ( 1 +
nu );
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
void letTempStrainVectorBe(const FloatArray &v)
Assigns tempStrainVector to given vector v.
#define _IFT_M4Material_k3
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
#define _IFT_M4Material_c20
double E
Young's modulus.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
double & at(int i)
Coefficient access function.
int max(int i, int j)
Returns bigger value form two given decimals.
This class implements a structural material status information.
#define _IFT_M4Material_k1
double FDminus(double ed, double k1, double c7, double c8, double c9, double E)
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 FVminus(double ev, double k1, double k3, double k4, double E)
void beDifferenceOf(const FloatArray &a, const FloatArray &b)
Sets receiver to be a - b.
double FT(double sn, double ev, double k1, double k2, double c10, double c11, double c12, double Et)
#define _IFT_M4Material_talpha
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
double nu
Poisson's ratio.
Class representing microplane integration point in finite element program.
#define _IFT_M4Material_c3
virtual void updateVolumetricStressTo(Microplane *mPlane, double sigv)
Updates the volumetric stress component after computing real stress microplane vectors.
M4Material(int n, Domain *d)
Constructor.
virtual void giveRealMicroplaneStressVector(FloatArray &answer, Microplane *mplane, const FloatArray &strain, TimeStep *tStep)
Computes real stress vector on given microplane (the meaning of values depends on particular implemen...
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
Class representing vector of real numbers.
M4MaterialStatus(int n, Domain *d, GaussPoint *g)
IRResultType
Type defining the return values of InputRecord reading operations.
void letTempStressVectorBe(const FloatArray &v)
Assigns tempStressVector to given vector v.
Abstract base class for all microplane models according to Bazant's approach.
const FloatArray & giveStressVector() const
Returns the const pointer to receiver's stress vector.
double FDplus(double ed, double k1, double c5, double c6, double c7, double c20, double E)
Related material model status to M4Material class for storing history variables in particular integra...
double FN(double en, double sv, double k1, double c1, double c2, double c3, double c4, double E, double Ev)
void zero()
Zeroes all coefficients of receiver.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
#define _IFT_M4Material_k2
virtual ~M4MaterialStatus()
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
int min(int i, int j)
Returns smaller value from two given decimals.
virtual IntegrationPointStatus * giveMicroplaneStatus(GaussPoint *gp)
REGISTER_Material(DummyMaterial)
#define _IFT_M4Material_k4
const FloatArray & giveTempStressVector() const
Returns the const pointer to receiver's temporary stress vector.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
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 contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
const FloatArray & giveStrainVector() const
Returns the const pointer to receiver's strain vector.
double FVplus(double ev, double k1, double c13, double c14, double c15, double Ev)
Class representing integration point in finite element program.
#define _IFT_M4Material_c4
Class representing solution step.
void resize(int s)
Resizes receiver towards requested size.