OOFEM 3.0
Loading...
Searching...
No Matches
structuralinterfacematerialstatus.C
Go to the documentation of this file.
1/*
2 *
3 * ##### ##### ###### ###### ### ###
4 * ## ## ## ## ## ## ## ### ##
5 * ## ## ## ## #### #### ## # ##
6 * ## ## ## ## ## ## ## ##
7 * ## ## ## ## ## ## ## ##
8 * ##### ##### ## ###### ## ##
9 *
10 *
11 * OOFEM : Object Oriented Finite Element Code
12 *
13 * Copyright (C) 1993 - 2025 Borek Patzak
14 *
15 *
16 *
17 * Czech Technical University, Faculty of Civil Engineering,
18 * Department of Structural Mechanics, 166 29 Prague, Czech Republic
19 *
20 * This library is free software; you can redistribute it and/or
21 * modify it under the terms of the GNU Lesser General Public
22 * License as published by the Free Software Foundation; either
23 * version 2.1 of the License, or (at your option) any later version.
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28 * Lesser General Public License for more details.
29 *
30 * You should have received a copy of the GNU Lesser General Public
31 * License along with this library; if not, write to the Free Software
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33 */
34
35
37#include "contextioerr.h"
38
41#include "gausspoint.h"
42
43namespace oofem {
44
45StructuralInterfaceMaterialStatus :: StructuralInterfaceMaterialStatus(GaussPoint *g) :
47{
48 F = eye<3>();
49 tempF = F;
50}
51
52
53void StructuralInterfaceMaterialStatus :: printOutputAt(FILE *file, TimeStep *tStep) const
54{
55 MaterialStatus :: printOutputAt(file, tStep);
56
57 fprintf(file, " jump ");
58 for ( auto &val : this->jump ) {
59 fprintf(file, " %.4e", val );
60 }
61
62 fprintf(file, "\n traction ");
63 for ( auto &val : this->traction ) {
64 fprintf(file, " %.4e", val );
65 }
66 fprintf(file, "\n");
67}
68
69
70void StructuralInterfaceMaterialStatus :: updateYourself(TimeStep *tStep)
71{
72 MaterialStatus :: updateYourself(tStep);
73
74 this->jump = this->tempJump;
75 this->traction = this->tempTraction;
77 this->F = this->tempF;
78}
79
80
81void StructuralInterfaceMaterialStatus :: initTempStatus()
82{
83 MaterialStatus :: initTempStatus();
84
85 this->tempJump = this->jump;
86 this->tempTraction = this->traction;
88 this->tempF = this->F;
89}
90
91
92void
93StructuralInterfaceMaterialStatus :: saveContext(DataStream &stream, ContextMode mode)
94{
95#if 0
96 MaterialStatus :: saveContext(stream, mode);
97
99 if ( ( iores = strainVector.storeYourself(stream) ) != CIO_OK ) {
100 THROW_CIOERR(iores);
101 }
102
103 if ( ( iores = stressVector.storeYourself(stream) ) != CIO_OK ) {
104 THROW_CIOERR(iores);
105 }
106#endif
107}
108
109
110void
111StructuralInterfaceMaterialStatus :: restoreContext(DataStream &stream, ContextMode mode)
112{
113#if 0
114 MaterialStatus :: restoreContext(stream, mode);
115
117 if ( ( iores = strainVector.restoreYourself(stream) ) != CIO_OK ) {
118 THROW_CIOERR(iores);
119 }
120
121 if ( ( iores = stressVector.restoreYourself(stream) ) != CIO_OK ) {
122 THROW_CIOERR(iores);
123 }
124#endif
125}
126
127void StructuralInterfaceMaterialStatus :: copyStateVariables(const MaterialStatus &iStatus)
128{
129 const StructuralInterfaceMaterialStatus &structStatus = static_cast< const StructuralInterfaceMaterialStatus & >(iStatus);
130
131 jump = structStatus.giveJump();
132 traction = structStatus.giveTraction();
133 tempTraction = structStatus.giveTempTraction();
134 tempJump = structStatus.giveTempJump();
135 firstPKTraction = structStatus.giveFirstPKTraction();
137 F = structStatus.giveF();
138 tempF = structStatus.giveTempF();
139 mNormalDir = structStatus.giveNormal();
140}
141
142
143void StructuralInterfaceMaterialStatus :: addStateVariables(const MaterialStatus &iStatus)
144{
145 OOFEM_ERROR("not implemented");
146}
147} // end namespace oofem
MaterialStatus(GaussPoint *g)
Definition matstatus.h:91
StructuralInterfaceMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralInterfaceMaterialStatus with number n, belonging to domain d and I...
const FloatMatrixF< 3, 3 > & giveF() const
Returns the const pointer to receiver's deformation gradient vector.
const FloatArrayF< 3 > & giveTempFirstPKTraction() const
Returns the const pointer to receiver's temporary first Piola-Kirchhoff traction 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.
FloatArrayF< 3 > tempTraction
Temporary (engineering) traction vector.
FloatArrayF< 3 > tempFirstPKTraction
Temporary first Piola-Kirchhoff traction vector (to find balanced state).
FloatArrayF< 3 > jump
Equilibrated jump (discontinuity).
FloatMatrixF< 3, 3 > F
Equilibrated deformation gradient in reduced form.
const FloatArrayF< 3 > & giveFirstPKTraction() const
Returns the const pointer to receiver's first Piola-Kirchhoff traction vector.
FloatArrayF< 3 > tempJump
Temporary jump (discontinuity).
FloatArrayF< 3 > traction
Equilibrated (engineering) traction vector.
FloatArrayF< 3 > firstPKTraction
Equilibrated first Piola-Kirchhoff traction vector T.
const FloatArrayF< 3 > & giveTempTraction() const
Returns the const pointer to receiver's temporary traction vector.
FloatMatrixF< 3, 3 > tempF
Temporary deformation gradient in reduced form (to find balanced state).
const FloatMatrixF< 3, 3 > & giveTempF() const
Returns the const pointer to receiver's temporary deformation gradient vector.
FloatArrayF< 3 > mNormalDir
Interface normal direction.
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.
#define THROW_CIOERR(e)
#define OOFEM_ERROR(...)
Definition error.h:79
long ContextMode
Definition contextmode.h:43
FloatMatrixF< N, N > eye()
Constructs an identity matrix.

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011