71 StructuralInterfaceMaterial :: initializeFrom(ir);;
107std::unique_ptr<MaterialStatus>
110 return std::make_unique<LinkSlipStatus>(gp);
114LinkSlip :: evaluateBondStress(
const double kappa)
const
116 if ( this->
type == 0 ) {
118 }
else if ( this->
type == 1 ) {
126 }
else if ( this->
type == 2 ) {
141 OOFEM_ERROR(
"Unknown bond model type. Type should be 0, 1 or 2.");
156 const auto &oldJump = status->giveJump();
159 double tempKappa = status->giveKappa() + fabs(jump.
at(1)-oldJump.at(1));
164 traction.
at(1) = oldTraction.at(1) + (jump.
at(1)-oldJump.at(1))*this->
kNormal;
175 for (
int i = 2; i <= 3; i++ ) {
180 status->letTempKappaBe(tempKappa);
181 status->letTempJumpBe(jump);
182 status->letTempTractionBe(traction);
205LinkSlipStatus :: initTempStatus()
211 StructuralInterfaceMaterialStatus :: initTempStatus();
217LinkSlipStatus :: printOutputAt(FILE *file,
TimeStep *tStep)
const
219 StructuralInterfaceMaterialStatus :: printOutputAt(file, tStep);
220 fprintf(file,
" jump ");
221 for (
auto &val : this->
jump ) {
222 fprintf(file,
" %.4e", val );
225 fprintf(file,
"\n traction ");
226 for (
auto &val : this->
traction ) {
227 fprintf(file,
" %.4e", val );
231 fprintf(file,
"kappa %.8e\n", this->
kappa);
240 StructuralInterfaceMaterialStatus :: saveContext(stream, mode);
253 StructuralInterfaceMaterialStatus :: restoreContext(stream, mode);
264 StructuralInterfaceMaterialStatus :: updateYourself(atTime);
276 if (
type == IST_InterfaceJump ) {
279 answer = status->giveJump();
281 }
else if (
type == IST_InterfaceTraction ) {
284 answer = status->giveTraction();
287 return StructuralInterfaceMaterial :: giveIPValue(answer, gp,
type, atTime);
#define REGISTER_Material(class)
virtual int read(int *data, std::size_t count)=0
Reads count integer values into array pointed by data.
virtual int write(const int *data, std::size_t count)=0
Writes count integer values from array pointed by data.
double & at(std::size_t i)
void zero()
Zeroes all coefficients of receiver.
double kLateral
Lateral modulus.
double evaluateBondStress(const double kappa) const
double tauMax
Strength for slip component.
double kNormal
Normal modulus.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
StructuralInterfaceMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralInterfaceMaterialStatus with number n, belonging to domain d and I...
FloatArrayF< 3 > jump
Equilibrated jump (discontinuity).
FloatArrayF< 3 > traction
Equilibrated (engineering) traction vector.
const FloatArrayF< 3 > & giveTraction() const
Returns the const pointer to receiver's traction vector.
StructuralInterfaceMaterial(int n, Domain *d)
#define OOFEM_WARNING(...)
#define _IFT_LinkSlip_alpha
#define _IFT_LinkSlip_type
FloatMatrixF< N, N > diag(const FloatArrayF< N > &v)
double sgn(double i)
Returns the signum of given value (if value is < 0 returns -1, otherwise returns 1).
@ CIO_IOERR
General IO error.