36 #include "../sm/Elements/structuralelement.h" 58 bool shearYieldingFlag =
false;
61 double normalStrain = jump.
at(1);
62 double normalStress, maxShearStress, dp;
65 if ( normalStrain + normalClearance <= 0. ) {
67 maxShearStress = fabs(normalStress) * this->
frictCoeff;
74 shearJump.at(1) = jump.
at(2);
75 shearJump.at(2) = jump.
at(3);
77 shearTraction.
subtract(tempShearStressShift);
78 dp = shearTraction.
dotProduct(shearTraction, 2);
79 if ( dp > maxShearStress * maxShearStress ) {
80 shearYieldingFlag =
true;
81 shearTraction.
times( maxShearStress / sqrt(dp) );
84 tempShearStressShift.
beScaled(this->
ks, shearJump);
85 tempShearStressShift.
subtract(shearTraction);
89 answer.
at(1) =
max(
min(normalStress, lim), -lim);
90 answer.
at(2) = shearTraction.
at(1);
91 answer.
at(3) = shearTraction.
at(2);
108 if ( rMode == SecantStiffness || rMode == TangentStiffness ) {
110 answer.
at(1, 1) =
kn;
112 answer.
at(2, 2) = answer.
at(3, 3) = 0;
114 answer.
at(2, 2) = answer.
at(3, 3) =
ks;
117 answer.
at(2, 2) = answer.
at(3, 3) = 0;
120 answer.
at(1, 1) =
kn;
121 answer.
at(2, 2) = answer.
at(3, 3) = this->
ks;
181 fprintf(file,
"status { ");
183 fprintf(file,
"}\n");
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
void subtract(const FloatArray &src)
Subtracts array src to receiver.
This class implements associated Material Status to SimpleInterfaceMaterial.
SimpleInterfaceMaterialStatus(int n, Domain *d, GaussPoint *g)
Constructor.
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 ~SimpleInterfaceMaterialStatus()
Destructor.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
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.
#define _IFT_SimpleInterfaceMaterial_kn
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.
MatResponseMode
Describes the character of characteristic material matrix.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
virtual ~SimpleInterfaceMaterial()
Destructor.
FloatArray tempShearStressShift
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
#define _IFT_SimpleInterfaceMaterial_normalClearance
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
void beScaled(double s, const FloatArray &b)
Sets receiver to be .
virtual void giveEngTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
SimpleInterfaceMaterial(int n, Domain *d)
Constructor.
double dotProduct(const FloatArray &x) const
Computes the dot product (or inner product) of receiver and argument.
void letTempJumpBe(FloatArray v)
Assigns tempJump to given vector v.
virtual void give3dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
This class implements a structural interface material status information.
#define _IFT_SimpleInterfaceMaterial_ks
void setTempShearStressShift(FloatArray newShearStressShift)
double at(int i, int j) const
Coefficient access function.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
void setShearYieldingFlag(bool sY)
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
bool giveShearYieldingFlag()
IRResultType
Type defining the return values of InputRecord reading operations.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
#define _IFT_SimpleInterfaceMaterial_frictCoeff
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
void zero()
Zeroes all coefficients of receiver.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
void times(double s)
Multiplies receiver with scalar.
const FloatArray & giveShearStressShift()
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
double normalClearance
Normal distance which needs to be closed when interface element should act in compression (distance i...
int min(int i, int j)
Returns smaller value from two given decimals.
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.
FloatArray shearStressShift
const FloatArray & giveTempJump() const
Returns the const pointer to receiver's temporary jump.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
#define _IFT_SimpleInterfaceMaterial_stiffCoeff
Class representing integration point in finite element program.
Class representing solution step.
void resize(int s)
Resizes receiver towards requested size.