51 mDamageNew(0.), mDamageOld(0.),
52 mTractionOld(3), mTractionNew(3),
53 mJumpOld(3), mJumpNew(3),
54 mPlastMultIncNew(0.), mPlastMultIncOld(0.)
104 mPenaltyStiffness(0.0),
105 mGIc(0.0), mGIIc(0.0),
124 double maxDamage = 0.99999999;
136 double TTrNormal = tractionTrial.
at(3);
137 double TTrTang = sqrt( pow(tractionTrial.
at(1), 2.0) + pow(tractionTrial.
at(2), 2.0) );
156 answer = tractionTrial;
172 if(answer.
at(3) > 0.0) {
181 double absTol = 1.0e-9;
182 double relTol = 1.0e-9;
183 double eps = 1.0e-12;
184 double plastMultInc = 0.0;
185 double initialRes = 0.0;
187 for (
int iter = 0; iter < maxIter; iter++ ) {
191 double TNormal = answer.
at(3);
192 double TTang = sqrt( pow(answer.
at(1), 2.0) + pow(answer.
at(2), 2.0) );
200 initialRes = fabs(phi);
201 initialRes =
max(initialRes, 1.0e-12);
204 if ( (iter >= minIter && fabs(phi) < absTol) || ( iter >= minIter && ( fabs(phi) / initialRes ) < relTol ) ) {
231 if(answer.
at(3) > 0.0) {
241 if(answer.
at(3) > 0.0) {
252 double TNormalPert = tractionPert.
at(3);
253 double TTangPert = sqrt( pow(tractionPert.
at(1), 2.0) + pow(tractionPert.
at(2), 2.0) );
256 double Jac = ( phiPert - phi ) / eps;
257 plastMultInc -= ( 1.0 / Jac ) * phi;
266 OOFEM_WARNING(
"not implemented. Use numerical Jacobian instead.");
274 + ( mSigmaF /
mGamma ) * (
mGamma - 2.0 *
mMu ) * pow( (
max(iTractionNormal, 0.0) ) / mSigmaF, 2.0 )
275 - ( 1.0 /
mGamma ) * (
mGamma * mSigmaF - 2.0 *
mMu * iTractionNormal ) );
290 if ( iTTrial.
at(3) <= 0.0 ) {
291 oT.
at(3) = iTTrial.
at(3);
300 if ( type == IST_DamageScalar ) {
328 printf(
"In IntMatBilinearCZ::initializeFrom: Semi-explicit time integration activated.\n");
350 printf(
"\nInitializing IntMatBilinearCZ:\n");
352 printf(
"mGIc: %e\n",
mGIc);
353 printf(
"mGIIc: %e\n",
mGIIc);
354 printf(
"mSigmaF: %e\n",
mSigmaF);
355 printf(
"mMu: %e\n",
mMu);
356 printf(
"mGamma: %e\n\n",
mGamma);
#define _IFT_IntMatBilinearCZ_sigf
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual void giveFirstPKTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep)
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
void give3dStiffnessMatrix_dTdj_Num(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
double & at(int i)
Coefficient access function.
int max(int i, int j)
Returns bigger value form two given decimals.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
virtual void copyStateVariables(const MaterialStatus &iStatus)
Functions for MaterialStatusMapperInterface.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
IntMatBilinearCZ(int n, Domain *d)
virtual ~IntMatBilinearCZ()
FloatArray mJumpOld
Discontinuity.
virtual void give3dStiffnessMatrix_dTdj(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
#define _IFT_IntMatBilinearCZ_mu
virtual int checkConsistency()
Allows programmer to test some internal data, before computation begins.
MatResponseMode
Describes the character of characteristic material matrix.
double mDamageNew
damage variable
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
void beDifferenceOf(const FloatArray &a, const FloatArray &b)
Sets receiver to be a - b.
#define _IFT_IntMatBilinearCZ_g1c
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
void computeTraction(FloatArray &oT, const FloatArray &iTTrial, const double &iPlastMultInc) const
virtual void printYourself()
Prints receiver state on stdout. Useful for debugging.
void letTempJumpBe(FloatArray v)
Assigns tempJump to given vector v.
#define _IFT_IntMatBilinearCZ_PenaltyStiffness
This class implements a structural interface material status information.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
FloatArray jump
Equilibrated jump (discontinuity)
void letTempFirstPKTractionBe(FloatArray v)
Assigns tempFirstPKTraction to given vector v.
double computeYieldFunction(const double &iTractionNormal, const double &iTractionTang) const
Abstract base class representing a material status information.
IntMatBilinearCZStatus(int n, Domain *d, GaussPoint *g)
Class representing vector of real numbers.
#define _IFT_IntMatBilinearCZ_g2c
Implementation of matrix containing floating point numbers.
This class implements associated Material Status for IntMatBilinearCZFagerstrom.
IRResultType
Type defining the return values of InputRecord reading operations.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
#define _IFT_IntMatBilinearCZ_gamma
virtual void addStateVariables(const MaterialStatus &iStatus)
virtual ~IntMatBilinearCZStatus()
void zero()
Zeroes all coefficients of receiver.
double mPenaltyStiffness
Material parameters.
FloatArray mTractionOld
Traction.
virtual void copyStateVariables(const MaterialStatus &iStatus)
Functions for MaterialStatusMapperInterface.
REGISTER_Material(DummyMaterial)
void letTempTractionBe(FloatArray v)
Assigns tempTraction to given vector v.
Abstract base class for all "structural" interface models.
the oofem namespace is to define a context or scope in which all oofem names are defined.
#define _IFT_IntMatBilinearCZ_semiexplicit
Class representing integration point in finite element program.
#define OOFEM_WARNING(...)
double mPlastMultIncNew
Increment of plastic multiplier.
Class representing solution step.
void add(const FloatArray &src)
Adds array src to receiver.
void resize(int s)
Resizes receiver towards requested size.