41StructuralInterfaceMaterial :: StructuralInterfaceMaterial(
int n,
Domain *d) :
Material(n, d)
51 if ( type == IST_InterfaceJump ) {
54 }
else if ( type == IST_InterfaceTraction ) {
57 }
else if ( type == IST_InterfaceFirstPKTraction ) {
60 }
else if ( type == IST_DeformationGradientTensor ) {
63 }
else if ( type == IST_InterfaceNormal ) {
66 }
else if ( type == IST_DamageScalar ) {
71 return Material :: giveIPValue(answer, gp, type, tStep);
86 Material :: giveInputRecord(input);
91StructuralInterfaceMaterial :: give1dStiffnessMatrix_Eng(MatResponseMode mode,
GaussPoint *gp,
TimeStep *tStep)
const
99StructuralInterfaceMaterial :: give2dStiffnessMatrix_Eng(MatResponseMode mode,
GaussPoint *gp,
TimeStep *tStep)
const
102 return d({0,1}, {0,1});
104 answer3D.printYourself(
"analytical tangent");
113 comp.
printYourself(
"difference in numerical tangent to mat method");
118StructuralInterfaceMaterial :: give3dStiffnessMatrix_Eng(MatResponseMode mode,
GaussPoint *gp,
TimeStep *tStep)
const
126StructuralInterfaceMaterial :: give1dStiffnessMatrix_dTdj(MatResponseMode rMode,
GaussPoint *gp,
TimeStep *tStep)
const
134StructuralInterfaceMaterial :: give2dStiffnessMatrix_dTdj(MatResponseMode rMode,
GaussPoint *gp,
TimeStep *tStep)
const
137 return d({0,1}, {0,1});
141StructuralInterfaceMaterial :: give3dStiffnessMatrix_dTdj(MatResponseMode rMode,
GaussPoint *gp,
TimeStep *tStep)
const
149StructuralInterfaceMaterial :: giveFirstPKTraction_1d(
double jump,
double reducedF,
GaussPoint *gp,
TimeStep *tStep)
const
158 reducedF(0,0), reducedF(1,0), 0.,
159 reducedF(0,1), reducedF(1,1), 0.,
164 return { traction3D.at(1), traction3D.at(2) };
171 return traction3D.at(1);
178 return { traction3D.at(1), traction3D.at(2) };
206 return (tPlus - tMinus) / ( 2 * eps );
222 for (
int i = 1; i <= 2; i++ ) {
223 auto jumpPlus = jump;
224 auto jumpMinus = jump;
225 jumpPlus.
at( i ) += eps;
226 jumpMinus.at( i ) -= eps;
230 auto Kcolumn = TPlus - TMinus;
233 answer *= 1.0 / ( 2 * eps );
249 for(
int i = 1; i <= 3; i++) {
250 auto jumpPlus = jump;
251 auto jumpMinus = jump;
252 jumpPlus.at( i ) += eps;
253 jumpMinus.at( i ) -= eps;
257 auto Kcolumn = TPlus - TMinus;
260 answer *= 1.0 / ( 2 * eps );
279 return (tPlus - tMinus) / ( 2 * eps );
289 double eps = 1.0e-12;
293 for(
int i = 1; i <= 2; i++) {
294 auto jumpPlus = jump;
295 auto jumpMinus = jump;
296 jumpPlus.
at( i ) += eps;
297 jumpMinus.at( i ) -= eps;
301 auto Kcolumn = tPlus - tMinus;
304 answer *= 1.0 / ( 2 * eps );
320 for(
int i = 1; i <= 3; i++) {
321 auto jumpPlus = jump;
322 auto jumpMinus = jump;
323 jumpPlus.at( i ) += eps;
324 jumpMinus.at( i ) -= eps;
328 auto Kcolumn = tPlus - tMinus;
331 answer *= 1.0 / ( 2 * eps );
double & at(std::size_t i)
void setColumn(const FloatArrayF< N > &src, std::size_t c)
double at(std::size_t i, std::size_t j) const
*Prints matrix to stdout Useful for debugging void printYourself() const
void subtract(const FloatMatrix &a)
Material(int n, Domain *d)
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
const FloatMatrixF< 3, 3 > & giveF() const
Returns the const pointer to receiver's deformation gradient vector.
const FloatArrayF< 3 > & giveTempJump() const
Returns the const pointer to receiver's temporary jump.
const FloatArrayF< 3 > & giveJump() const
Returns the const pointer to receiver's jump.
const FloatArrayF< 3 > & giveFirstPKTraction() const
Returns the const pointer to receiver's first Piola-Kirchhoff traction vector.
virtual double giveDamage() const
const FloatMatrixF< 3, 3 > & giveTempF() const
Returns the const pointer to receiver's temporary deformation gradient vector.
const FloatArrayF< 3 > & giveNormal() const
Returns const reference to normal vector.
const FloatArrayF< 3 > & giveTraction() const
Returns the const pointer to receiver's traction vector.
virtual double giveFirstPKTraction_1d(double jump, double reducedF, GaussPoint *gp, TimeStep *tStep) const
virtual FloatArrayF< 3 > giveEngTraction_3d(const FloatArrayF< 3 > &jump, GaussPoint *gp, TimeStep *tStep) const
virtual double giveEngTraction_1d(double jump, GaussPoint *gp, TimeStep *tStep) const
virtual FloatArrayF< 3 > giveFirstPKTraction_3d(const FloatArrayF< 3 > &jump, const FloatMatrixF< 3, 3 > &F, GaussPoint *gp, TimeStep *tStep) const
FloatMatrixF< 2, 2 > give2dStiffnessMatrix_Eng_Num(GaussPoint *gp, TimeStep *tStep) const
virtual FloatMatrixF< 3, 3 > give3dStiffnessMatrix_dTdj(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const
virtual FloatArrayF< 2 > giveFirstPKTraction_2d(const FloatArrayF< 2 > &jump, const FloatMatrixF< 2, 2 > &reducedF, GaussPoint *gp, TimeStep *tStep) const
FloatMatrixF< 3, 3 > give3dStiffnessMatrix_dTdj_Num(GaussPoint *gp, TimeStep *tStep) const
virtual FloatMatrixF< 3, 3 > give3dStiffnessMatrix_Eng(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const
virtual FloatArrayF< 2 > giveEngTraction_2d(const FloatArrayF< 2 > &jump, GaussPoint *gp, TimeStep *tStep) const
#define OOFEM_WARNING(...)
FloatArrayF< 9 > to_voigt_form_33(const FloatMatrixF< 3, 3 > &t)
FloatMatrixF< N, N > diag(const FloatArrayF< N > &v)
FloatMatrixF< N, N > eye()
Constructs an identity matrix.
#define _IFT_StructuralInterfaceMaterial_useNumericalTangent