OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
structuralinterfaceelementphf.h
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 - 2013 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 #ifndef structuralinterfaceelementphf_h
36 #define structuralinterfaceelementphf_h
37 
39 #include "../sm/CrossSections/structuralinterfacecrosssection.h"
40 #include "element.h"
41 #include "floatmatrix.h"
42 #include "function.h"
43 #include "matresponsemode.h"
44 #include "valuemodetype.h"
45 #include "integrationdomain.h"
46 #include "dofmantransftype.h"
47 
48 namespace oofem {
49 class TimeStep;
50 class Node;
51 class StructuralInterfaceMaterial;
52 class GaussPoint;
53 class FloatArray;
54 class IntArray;
55 class FEInterpolation;
56 
57 
62 {
63 protected:
69 
70 
72 
73 public:
82 
83  //virtual FEInterpolation *giveInterpolation() const { return interpolation; };
84 
85  virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep);
86 
87 
88  //Phf
93 
94  void giveInternalForcesVector_u(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord = 0);
95  void giveInternalForcesVector_d(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord = 0);
96 
97  virtual void giveDofManDofIDMask_u(IntArray &answer) = 0;
98  virtual void giveDofManDofIDMask_d(IntArray &answer) = 0;
99  virtual void computeLocationArrayOfDofIDs( const IntArray &dofIdArray, IntArray &answer );
100 
101  virtual void getLocationArray_u( IntArray &answer )=0;
102  virtual void getLocationArray_d( IntArray &answer )=0;
103 
104  //remove
105  int computeNumberOfDofs();
106 
109  double giveInternalLength( ) { return internalLength; };
110  //double criticalEnergy;
111  //double giveCriticalEnergy() { return criticalEnergy; };
112  //double relaxationTime;
113  //double giveRelaxationTime( ) { return relaxationTime; };
114  //double penaltyParameter;
115  //double givePenaltyParameter() { return penaltyParameter; };
116  //double psiBar0;
117  //double givePsiBar0() { return psiBar0; };
118 
119 
121  double computeFreeEnergy( GaussPoint *gp, TimeStep *tStep );
122 
123  virtual double computeDamageAt(GaussPoint *gp, ValueModeType valueMode, TimeStep *stepN);
124 
125 
126  void computeDisplacementUnknowns(FloatArray &answer, ValueModeType valueMode, TimeStep *stepN);
127  void computeDamageUnknowns(FloatArray &answer, ValueModeType valueMode, TimeStep *stepN);
128 
129 
130 
131  void computeBStress_u(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, int useUpdatedGpRecord);
132  void computeNStress_d( FloatArray &answer, GaussPoint *gp, TimeStep *tStep, int useUpdatedGpRecord );
133 
134 
135  //Interpolation matrices for phase field
136  virtual void computeBd_matrixAt(GaussPoint *, FloatMatrix &);
137  virtual void computeNd_matrixAt(const FloatArray &lCoords, FloatMatrix &N);
138 
139 
140  virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord = 0);
141  virtual void computeTraction(FloatArray &traction, IntegrationPoint *ip, FloatArray &jump, TimeStep *tStep);
142  //virtual void computeSpatialJump(FloatArray &answer, GaussPoint *gp, TimeStep *tStep);
143  //virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
144 
145  virtual void computeCovarBaseVectorsAt(GaussPoint *gp, FloatMatrix &G) = 0;
146 
147 
149 
150  // Overloaded methods.
151  virtual void updateInternalState(TimeStep *tStep);
152  virtual void updateYourself(TimeStep *tStep);
153  //virtual int checkConsistency();
154  //virtual IRResultType initializeFrom(InputRecord *ir);
155  //virtual void giveInputRecord(DynamicInputRecord &input);
156  virtual const char *giveClassName() const { return "StructuralInterfaceElementPhF"; };
157 
158  //StructuralInterfaceCrossSection *giveInterfaceCrossSection();
159 
160  //virtual methods that should be overloaded by the elements
161  virtual void giveEngTraction(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const double damage, TimeStep *tStep)
162  {
163  OOFEM_ERROR("not implemented for the current element");
164  }
165 
166 
167 
168 protected:
169 
170 
171 };
172 } // end namespace oofem
173 #endif // structuralinterfaceelement_h
virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
Returns equivalent nodal forces vectors.
virtual void giveEngTraction(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const double damage, TimeStep *tStep)
virtual void getLocationArray_u(IntArray &answer)=0
Class and object Domain.
Definition: domain.h:115
virtual double computeDamageAt(GaussPoint *gp, ValueModeType valueMode, TimeStep *stepN)
virtual void computeNd_matrixAt(const FloatArray &lCoords, FloatMatrix &N)
void computeStiffnessMatrix_du(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
virtual void computeTraction(FloatArray &traction, IntegrationPoint *ip, FloatArray &jump, TimeStep *tStep)
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
virtual void computeCovarBaseVectorsAt(GaussPoint *gp, FloatMatrix &G)=0
void giveInternalForcesVector_u(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
StructuralInterfaceElementPhF(int n, Domain *d)
Constructor.
virtual void computeBd_matrixAt(GaussPoint *, FloatMatrix &)
Class implementing an array of integers.
Definition: intarray.h:61
MatResponseMode
Describes the character of characteristic material matrix.
void computeDamageUnknowns(FloatArray &answer, ValueModeType valueMode, TimeStep *stepN)
virtual void computeLocationArrayOfDofIDs(const IntArray &dofIdArray, IntArray &answer)
int computeNumberOfDofs()
Computes or simply returns total number of element's local DOFs.
Class representing a general abstraction for finite element interpolation class.
Definition: feinterpol.h:132
virtual void getLocationArray_d(IntArray &answer)=0
virtual void updateYourself(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
#define OOFEM_ERROR(...)
Definition: error.h:61
int nlGeometry
Flag indicating if geometrical nonlinearities apply.
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes the stiffness/tangent matrix of receiver.
FloatArray initialDisplacements
Initial displacement vector, describes the initial nodal displacements when element has been casted...
#define N(p, q)
Definition: mdm.C:367
void computeStiffnessMatrix_uu(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
virtual void updateInternalState(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
void computeDisplacementUnknowns(FloatArray &answer, ValueModeType valueMode, TimeStep *stepN)
void computeStiffnessMatrix_ud(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
void computeStiffnessMatrix_dd(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Class representing vector of real numbers.
Definition: floatarray.h:82
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
void computeBStress_u(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, int useUpdatedGpRecord)
virtual void giveDofManDofIDMask_d(IntArray &answer)=0
void computeNStress_d(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, int useUpdatedGpRecord)
Abstract base class for all structural interface elements.
the oofem namespace is to define a context or scope in which all oofem names are defined.
double computeFreeEnergy(GaussPoint *gp, TimeStep *tStep)
Class representing integration point in finite element program.
Definition: gausspoint.h:93
Interface element class with phase field (PhF) modeling of damage.
Class representing solution step.
Definition: timestep.h:80
virtual void giveDofManDofIDMask_u(IntArray &answer)=0
void giveInternalForcesVector_d(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:31 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011