51 if ( type == IST_InterfaceJump ) {
55 }
else if ( type == IST_InterfaceTraction ) {
59 }
else if ( type == IST_InterfaceFirstPKTraction ) {
64 }
else if ( type == IST_DeformationGradientTensor ) {
67 }
else if ( type == IST_InterfaceNormal ) {
108 const double eps = 1.0e-9;
111 FloatArray jump, jumpPlus, jumpMinus, Kcolumn;
113 for (
int i = 1; i <= dim; i++ ) {
114 jumpPlus = jumpMinus = jump;
115 jumpPlus.
at(i) += eps;
116 jumpMinus.
at(i) -= eps;
120 Kcolumn = ( TPlus - TMinus );
123 answer.
times( 1.0 / ( 2 * eps ) );
136 answer.
at(1, 1) = answer3D.
at(1, 1);
158 comp.
printYourself(
"difference in numerical tangent to mat method");
175 answer.
at(1, 1) = answer.
at(1, 1);
205 F.
at(1, 1) = reducedF.
at(1, 1);
224 F.
at(1, 1) = reducedF.
at(1, 1);
225 F.
at(1, 2) = reducedF.
at(1, 2);
226 F.
at(2, 1) = reducedF.
at(2, 1);
227 F.
at(2, 2) = reducedF.
at(2, 2);
232 answer = { traction3D.
at(1), traction3D.
at(2) };
249 answer = { traction3D.
at(1), traction3D.
at(2) };
277 answer.
resize( dim, dim );
279 for (
int i = 1; i <= dim; i++ ) {
280 jumpPlus = jumpMinus = jump;
281 jumpPlus.
at( i ) += eps;
282 jumpMinus.
at( i ) -= eps;
289 answer.
times( 1.0 / ( 2 * eps ) );
306 answer.
resize( dim, dim );
308 for (
int i = 1; i <= dim; i++ ) {
309 jumpPlus = jumpMinus = jump;
310 jumpPlus.
at( i ) += eps;
311 jumpMinus.
at( i ) -= eps;
318 answer.
times( 1.0 / ( 2 * eps ) );
335 answer.
resize( dim, dim );
337 for(
int i = 1; i <= dim; i++) {
338 jumpPlus = jumpMinus = jump;
339 jumpPlus.
at( i ) += eps;
340 jumpMinus.
at( i ) -= eps;
347 answer.
times( 1.0 / ( 2 * eps ) );
364 answer.
resize( dim, dim );
367 for(
int i = 1; i <= dim; i++) {
368 jumpPlus = jumpMinus = jump;
369 jumpPlus.
at( i ) += eps;
370 jumpMinus.
at( i ) -= eps;
377 answer.
times( 1.0 / ( 2 * eps ) );
388 double eps = 1.0e-12;
390 FloatArray tempJump, jumpPlus, jumpMinus, Kcolumn;
396 for(
int i = 1; i <= dim; i++) {
397 jumpPlus = jumpMinus = jump;
398 jumpPlus.
at( i ) += eps;
399 jumpMinus.
at( i ) -= eps;
406 answer.
times( 1.0 / ( 2 * eps ) );
425 for(
int i = 1; i <= dim; i++) {
426 jumpPlus = jumpMinus = jump;
427 jumpPlus.
at( i ) += eps;
428 jumpMinus.
at( i ) -= eps;
435 answer.
times( 1.0 / ( 2 * eps ) );
virtual void giveEngTraction_2d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
virtual void giveEngTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
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 give3dStiffnessMatrix_dTdj(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
virtual void giveEngTraction_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
double & at(int i)
Coefficient access function.
void beSubMatrixOf(const FloatMatrix &src, int topRow, int bottomRow, int topCol, int bottomCol)
Assigns to the receiver the sub-matrix of another matrix.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
void beVectorForm(const FloatMatrix &aMatrix)
Reciever will be a vector with 9 components formed from a 3x3 matrix.
const FloatArray & giveFirstPKTraction() const
Returns the const pointer to receiver's first Piola-Kirchhoff traction vector.
void give1dStiffnessMatrix_dTdj_Num(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
Class implementing an array of integers.
MatResponseMode
Describes the character of characteristic material matrix.
virtual void give1dStiffnessMatrix_dTdj(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Gives the tangent: .
void beDifferenceOf(const FloatArray &a, const FloatArray &b)
Sets receiver to be a - b.
void give2dStiffnessMatrix_dTdj_Num(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)
virtual void giveFirstPKTraction_2d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &reducedF, TimeStep *tStep)
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
virtual void giveFirstPKTraction_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &reducedF, TimeStep *tStep)
Computes the first Piola-Kirchoff traction vector for given total jump/gap and integration point...
virtual void giveFirstPKTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep)
const FloatMatrix & giveTempF() const
Returns the const pointer to receiver's temporary deformation gradient vector.
void times(double f)
Multiplies receiver by factor f.
virtual void give2dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
This class implements a structural interface material status information.
void resizeWithValues(int s, int allocChunk=0)
Checks size of receiver towards requested bounds.
Abstract base class for all material models.
double at(int i, int j) const
Coefficient access function.
const FloatArray & giveJump() const
Returns the const pointer to receiver's jump.
void give2dStiffnessMatrix_Eng_Num(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)
virtual void give1dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
void subtract(const FloatMatrix &a)
Subtracts matrix from the receiver.
Class representing vector of real numbers.
const FloatArray & giveTraction() const
Returns the const pointer to receiver's traction vector.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
StructuralInterfaceMaterial(int n, Domain *d)
Constructor.
void give3dStiffnessMatrix_Eng_Num(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
const FloatArray & giveTempFirstPKTraction() const
Returns the const pointer to receiver's temporary first Piola-Kirchhoff traction vector.
void setColumn(const FloatArray &src, int c)
Sets the values of the matrix in specified column.
#define _IFT_StructuralInterfaceMaterial_useNumericalTangent
void printYourself() const
Prints matrix to stdout. Useful for debugging.
virtual void give2dStiffnessMatrix_dTdj(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
void zero()
Zeroes all coefficient of receiver.
void beUnitMatrix()
Sets receiver to unity matrix.
int giveSize() const
Returns the size of receiver.
void give1dStiffnessMatrix_Eng_Num(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep)
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual void give3dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
const FloatArray & giveTempJump() const
Returns the const pointer to receiver's temporary jump.
int giveNumberOfRows() const
Returns number of rows of receiver.
const FloatMatrix & giveF() const
Returns the const pointer to receiver's deformation gradient vector.
const FloatArray & giveNormal() const
Returns const reference to normal vector.
Class representing integration point in finite element program.
#define OOFEM_WARNING(...)
Class representing solution step.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.