OOFEM 3.0
Loading...
Searching...
No Matches
lattice2dboundary.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 - 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
36#ifndef lattice2dboundary_h
37#define lattice2dboundary_h
38
40
42
43#define _IFT_Lattice2dBoundary_Name "latticeboundary2d"
44#define _IFT_Lattice2dBoundary_location "location"
46
47#define TOL 1.e-8
48
49namespace oofem {
50class ParamKey;
52{
53 /*
54 * This class implements a 2-dimensional lattice element for the
55 * boundaries of periodic cells. The theory for this element is
56 * described in the "P. Grassl and M. Jirásek. "Meso-scale approach
57 * to modelling the fracture process zone of concrete subjected to
58 * uniaxial tension". International Journal of Solids and Structures.
59 * Volume 47, Issues 7-8, pp. 957-968, 2010"
60 * The unknowns of the control node are Exx, Eyy and Gxy.
61 * Exx = axial strain x-direction
62 * Eyy = axial strain y-direction
63 * Gxy = 2Exy (assuming symmetry)
64 */
65protected:
68
69public:
70 Lattice2dBoundary(int, Domain *); // constructor
71 ~Lattice2dBoundary(); // destructor
72
74 TimeStep *, int useUpdatedGpRecord = 0) override;
75
76 const IntArray giveLocation() override;
77
78 int computeNumberOfDofs() override { return 9; }
79 void giveDofManDofIDMask(int inode, IntArray &) const override;
80 double computeVolumeAround(GaussPoint *) override;
81
82 //
83 // definition & identification
84 //
85 const char *giveInputRecordName() const override { return _IFT_Lattice2dBoundary_Name; }
86 const char *giveClassName() const override { return "Lattice2dBoundary"; }
87 void initializeFrom(InputRecord &ir, int priority) override;
88 void postInitialize() override;
89
90 void saveContext(DataStream &stream, ContextMode mode) override;
91 void restoreContext(DataStream &stream, ContextMode mode) override;
92
93#ifdef __OOFEG
94 void drawYourself(oofegGraphicContext &context, TimeStep *tStep) override;
95 void drawRawGeometry(oofegGraphicContext &, TimeStep *tStep) override;
98 void drawSpecial(oofegGraphicContext &gc, TimeStep *tStep) override;
99 void giveCrossSectionCoordinates(FloatArray &coords) override;
100#endif
101
102
103protected:
104 void computeBmatrixAt(GaussPoint *, FloatMatrix &, int = 1, int = ALL_STRAINS) override;
105 bool computeGtoLRotationMatrix(FloatMatrix &) override;
106
107 void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep) override;
108
109 void computeStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *stepN) override;
110
111 double giveLength() override;
112 double givePitch();
113 void recalculateCoordinates(int nodeNumber, FloatArray &coords) override;
114 void giveSwitches(FloatArray &answer);
115};
116} // end namespace oofem
117
118#endif
const char * giveInputRecordName() const override
void computeStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *stepN) override
void giveCrossSectionCoordinates(FloatArray &coords) override
void giveSwitches(FloatArray &answer)
static ParamKey IPK_Lattice2dBoundary_location
void computeBmatrixAt(GaussPoint *, FloatMatrix &, int=1, int=ALL_STRAINS) override
void drawSpecial(oofegGraphicContext &gc, TimeStep *tStep) override
void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep) override
void drawRawGeometry(oofegGraphicContext &, TimeStep *tStep) override
bool computeGtoLRotationMatrix(FloatMatrix &) override
void initializeFrom(InputRecord &ir, int priority) override
void saveContext(DataStream &stream, ContextMode mode) override
void drawDeformedGeometry(oofegGraphicContext &, TimeStep *tStep, UnknownType) override
void restoreContext(DataStream &stream, ContextMode mode) override
const char * giveClassName() const override
void drawRawCrossSections(oofegGraphicContext &, TimeStep *tStep)
void recalculateCoordinates(int nodeNumber, FloatArray &coords) override
int computeNumberOfDofs() override
void giveInternalForcesVector(FloatArray &answer, TimeStep *, int useUpdatedGpRecord=0) override
const IntArray giveLocation() override
double computeVolumeAround(GaussPoint *) override
void postInitialize() override
Performs post initialization steps.
void drawYourself(oofegGraphicContext &context, TimeStep *tStep) override
void giveDofManDofIDMask(int inode, IntArray &) const override
Lattice2d(int n, Domain *d)
Definition lattice2d.C:69
#define _IFT_Lattice2dBoundary_Name
long ContextMode
Definition contextmode.h:43
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
#define ALL_STRAINS

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