55 bool shearYieldingFlag =
false;
56 double normalStrain = jump.
at(1);
57 double normalStress, maxShearStress;
65 maxShearStress = fabs(normalStress) * this->
frictCoeff;
69 maxShearStress = fabs(normalStress) * this->
frictCoeff;
78 auto shearTraction = this->
ks * shearJump - tempShearStressShift;
79 double dpn =
norm(shearTraction);
80 if ( dpn > maxShearStress ) {
81 shearYieldingFlag =
true;
82 shearTraction *= maxShearStress / dpn;
85 tempShearStressShift = this->
ks * shearJump - shearTraction;
88 FloatArrayF<3> answer = {
max(
min(normalStress, lim), -lim), shearTraction.at(1), shearTraction.at(2)};
100SimpleInterfaceMaterial :: give3dStiffnessMatrix_Eng(MatResponseMode rMode,
GaussPoint *gp,
TimeStep *tStep)
const
112 answer.
at(2, 2) = answer.
at(3, 3) = traction.
at(2)/jump.
at(2);
114 answer.
at(2, 2) = answer.
at(3, 3) =
ks;
118 if ( rMode == SecantStiffness || rMode == TangentStiffness ) {
120 answer.
at(1, 1) =
kn;
125 answer.
at(2, 2) = answer.
at(3, 3) = traction.
at(2)/jump.
at(2);
127 answer.
at(2, 2) = answer.
at(3, 3) =
ks;
131 answer.
at(2, 2) = answer.
at(3, 3) = 0;
134 answer.
at(1, 1) =
kn;
135 answer.
at(2, 2) = answer.
at(3, 3) = this->
ks;
145 return StructuralInterfaceMaterial :: giveIPValue(answer, gp, type, tStep);
152 StructuralInterfaceMaterial :: initializeFrom(ir);
172 StructuralInterfaceMaterial :: giveInputRecord(input);
189SimpleInterfaceMaterialStatus :: printOutputAt(FILE *file,
TimeStep *tStep)
const
191 StructuralInterfaceMaterialStatus :: printOutputAt(file, tStep);
192 fprintf(file,
"status { ");
193 fprintf( file,
"shearStressShift (%f, %f)", this->
shearStressShift.at(1), this->shearStressShift.at(2) );
194 fprintf(file,
"}\n");
199SimpleInterfaceMaterialStatus :: initTempStatus()
201 StructuralInterfaceMaterialStatus :: initTempStatus();
207SimpleInterfaceMaterialStatus :: updateYourself(
TimeStep *tStep)
209 StructuralInterfaceMaterialStatus :: updateYourself(tStep);
217 StructuralInterfaceMaterialStatus :: saveContext(stream, mode);
228 StructuralInterfaceMaterialStatus :: restoreContext(stream, mode);
#define REGISTER_Material(class)
double & at(std::size_t i)
double at(std::size_t i, std::size_t j) const
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
FloatArrayF< 2 > tempShearStressShift
void setShearYieldingFlag(bool sY)
const FloatArrayF< 2 > & giveShearStressShift() const
FloatArrayF< 2 > shearStressShift
bool giveShearYieldingFlag()
void setTempShearStressShift(const FloatArrayF< 2 > &newShearStressShift)
double normalClearance
Normal distance which needs to be closed when interface element should act in compression (distance i...
StructuralInterfaceMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralInterfaceMaterialStatus with number n, belonging to domain d and I...
const FloatArrayF< 3 > & giveTempJump() const
Returns the const pointer to receiver's temporary jump.
const FloatArrayF< 3 > & giveTempTraction() const
Returns the const pointer to receiver's temporary traction vector.
void letTempTractionBe(const FloatArrayF< 3 > v)
Assigns tempTraction to given vector v.
void letTempJumpBe(const FloatArrayF< 3 > v)
Assigns tempJump to given vector v.
StructuralInterfaceMaterial(int n, Domain *d)
double norm(const FloatArray &x)
FloatArrayF< N > min(const FloatArrayF< N > &a, const FloatArrayF< N > &b)
FloatArrayF< N > max(const FloatArrayF< N > &a, const FloatArrayF< N > &b)
#define _IFT_SimpleInterfaceMaterial_ks
#define _IFT_SimpleInterfaceMaterial_stiffCoeff
#define _IFT_SimpleInterfaceMaterial_regularizedModel
#define _IFT_SimpleInterfaceMaterial_regularizationCoeff
#define _IFT_SimpleInterfaceMaterial_normalClearance
#define _IFT_SimpleInterfaceMaterial_kn
#define _IFT_SimpleInterfaceMaterial_frictCoeff