50 double SvDash, SvSum = 0.;
54 double mPlaneIntegrationWeight;
56 FloatArray mPlaneStressCmpns, mPlaneStrainCmpns;
67 int mPlaneIndex1 = mPlaneIndex + 1;
73 mPlaneNormalStress.at(mPlaneIndex1) = mPlaneStressCmpns.
at(2);
74 mPlaneShear_L_Stress.at(mPlaneIndex1) = mPlaneStressCmpns.
at(3);
75 mPlaneShear_M_Stress.
at(mPlaneIndex1) = mPlaneStressCmpns.
at(4);
78 SvSum += mPlaneNormalStress.at(mPlaneIndex1) * mPlaneIntegrationWeight;
79 SD = mPlaneNormalStress.at(mPlaneIndex1) - mPlaneStressCmpns.
at(1);
90 for (
int i = 0; i < 6; i++ ) {
91 answer.
at(i + 1) += ( (
N [ mPlaneIndex ] [ i ] -
Kronecker [ i ] / 3. ) * SD +
92 L [ mPlaneIndex ] [ i ] * mPlaneShear_L_Stress.at(mPlaneIndex1) +
93 M [ mPlaneIndex ] [ i ] * mPlaneShear_M_Stress.
at(mPlaneIndex1) )
94 * mPlaneIntegrationWeight;
101 SvDash = mPlaneStressCmpns.
at(1);
109 if ( SvDash > SvSum / 3. ) {
115 int mPlaneIndex1 = mPlaneIndex + 1;
119 SD = mPlaneNormalStress.at(mPlaneIndex1) - SvDash;
122 for (
int i = 0; i < 6; i++ ) {
123 answer.
at(i + 1) += ( (
N [ mPlaneIndex ] [ i ] -
Kronecker [ i ] / 3. ) * SD +
124 L [ mPlaneIndex ] [ i ] * mPlaneShear_L_Stress.at(mPlaneIndex1) +
125 M [ mPlaneIndex ] [ i ] * mPlaneShear_M_Stress.
at(mPlaneIndex1) )
126 * mPlaneIntegrationWeight;
134 answer.
at(1) += SvDash;
135 answer.
at(2) += SvDash;
136 answer.
at(3) += SvDash;
int numberOfMicroplanes
Number of microplanes.
void letTempStrainVectorBe(const FloatArray &v)
Assigns tempStrainVector to given vector v.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
double L[MAX_NUMBER_OF_MICROPLANES][6]
Shear projection tensors (l direction) for all microplanes.
double M[MAX_NUMBER_OF_MICROPLANES][6]
Shear projection tensors (m direction) for all microplanes.
double & at(int i)
Coefficient access function.
This class implements a structural material status information.
Microplane * giveMicroplane(int i, GaussPoint *masterGp)
Returns i-th microplane belonging to master-macro-integration point. )-based indexing.
virtual void giveRealStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
virtual void giveRealMicroplaneStressVector(FloatArray &answer, Microplane *mplane, const FloatArray &strain, TimeStep *tStep)=0
Computes real stress vector on given microplane (the meaning of values depends on particular implemen...
virtual void initTempStatus(GaussPoint *gp)
Initializes temporary variables stored in integration point status at the beginning of new time step...
Abstract base class for all microplane models.
virtual void updateVolumetricStressTo(Microplane *mPlane, double sigv)=0
Updates the volumetric stress component after computing real stress microplane vectors.
Class representing microplane integration point in finite element program.
virtual double giveMicroplaneIntegrationWeight(Microplane *mplane)
Returns microplane integration weight.
Class representing vector of real numbers.
double N[MAX_NUMBER_OF_MICROPLANES][6]
Normal projection tensors for all microplanes.
void letTempStressVectorBe(const FloatArray &v)
Assigns tempStressVector to given vector v.
void zero()
Zeroes all coefficients of receiver.
MicroplaneMaterial_Bazant(int n, Domain *d)
Constructor.
void times(double s)
Multiplies receiver with scalar.
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class representing integration point in finite element program.
Class representing solution step.
double Kronecker[6]
Kronecker's delta.
void computeStrainVectorComponents(FloatArray &answer, Microplane *mplane, const FloatArray ¯oStrain)
Computes the vector of all micro stress components (Ev, En, Em, El) of macro strain vector on given m...
void resize(int s)
Resizes receiver towards requested size.