OOFEM 3.0
Loading...
Searching...
No Matches
intelpoint.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#ifndef intelpoint_h
36#define intelpoint_h
37
40#include "floatmatrixf.h"
41//#include "floatarrayf.h"
42
44
45#define _IFT_IntElPoint_Name "intelpoint"
46#define _IFT_IntElPoint_refnode "refnode"
47#define _IFT_IntElPoint_normal "normal"
48#define _IFT_IntElPoint_area "area"
49#define _IFT_IntElPoint_length "length"
51
52namespace oofem {
53class ParamKey;
65{
66protected:
70 double area = 0.;
71 double length = 0.;
72
77
78public:
79 IntElPoint(int n, Domain *d);
80
81 int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords) override;
82
83 int computeNumberOfDofs() override;
84 void giveDofManDofIDMask(int inode, IntArray &answer) const override;
85
86 double computeAreaAround(GaussPoint *gp) override;
87
88 // definition & identification
89 const char *giveInputRecordName() const override { return _IFT_IntElPoint_Name; }
90 void initializeFrom(InputRecord &ir, int priority) override;
91 void postInitialize() override;
92 Element_Geometry_Type giveGeometryType() const override { return EGT_line_1; }
93
94 MaterialMode giveMaterialMode() override;
95
96 void computeTransformationMatrixAt(GaussPoint *gp, FloatMatrix &answer) override;
97
98 void giveEngTraction(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep) override
99 {
100 if ( this->giveDomain()->giveNumberOfSpatialDimensions() == 3 ) {
101 answer = this->giveInterfaceCrossSection()->giveEngTraction_3d(jump, gp, tStep);
102 } else if ( this->giveDomain()->giveNumberOfSpatialDimensions() == 2 ) {
103 answer = this->giveInterfaceCrossSection()->giveEngTraction_2d(jump, gp, tStep);
104 } else if ( this->giveDomain()->giveNumberOfSpatialDimensions() == 1 ) {
105 answer = {this->giveInterfaceCrossSection()->giveEngTraction_1d(jump.at(1), gp, tStep)};
106 }
107 }
108
109 void giveStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, IntegrationPoint *ip, TimeStep *tStep) override
110 {
111 if ( this->giveDomain()->giveNumberOfSpatialDimensions() == 3 ) {
112 answer = this->giveInterfaceCrossSection()->give3dStiffnessMatrix_Eng(rMode, ip, tStep);
113 } else if ( this->giveDomain()->giveNumberOfSpatialDimensions() == 2 ) {
114 answer = this->giveInterfaceCrossSection()->give2dStiffnessMatrix_Eng(rMode, ip, tStep);
115 } else if ( this->giveDomain()->giveNumberOfSpatialDimensions() == 1 ) {
116 answer = this->giveInterfaceCrossSection()->give1dStiffnessMatrix_Eng(rMode, ip, tStep);
117 }
118 }
119
120#ifdef __OOFEG
121 void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override;
123 void drawScalar(oofegGraphicContext &gc, TimeStep *tStep) override;
124#endif
125
126protected:
127 void computeNmatrixAt(GaussPoint *gp, FloatMatrix &answer) override;
128 void computeGaussPoints() override;
129
130 // void computeLocalSlipDir(FloatArrayF &normal);
131 // void computeLocalSlipDir(FloatArrayF<3> normal);
132 void computeLocalSlipDir(void);
133 cmode giveCoordMode() const { return this->mode; }
134 void setCoordMode();
135};
136} // end namespace oofem
137#endif // interfaceelement1d_h
Domain * giveDomain() const
Definition femcmpnn.h:97
double & at(Index i)
Definition floatarray.h:202
void drawScalar(oofegGraphicContext &gc, TimeStep *tStep) override
Definition intelpoint.C:386
int computeNumberOfDofs() override
Definition intelpoint.C:268
static ParamKey IPK_IntElPoint_normal
Definition intelpoint.h:74
double computeAreaAround(GaussPoint *gp) override
Definition intelpoint.C:222
void computeNmatrixAt(GaussPoint *gp, FloatMatrix &answer) override
Definition intelpoint.C:108
MaterialMode giveMaterialMode() override
Definition intelpoint.C:91
void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType) override
Definition intelpoint.C:358
Element_Geometry_Type giveGeometryType() const override
Definition intelpoint.h:92
static ParamKey IPK_IntElPoint_refnode
Definition intelpoint.h:73
void giveStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, IntegrationPoint *ip, TimeStep *tStep) override
Definition intelpoint.h:109
void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override
Definition intelpoint.C:334
FloatArrayF< 3 > normal
Definition intelpoint.h:69
IntElPoint(int n, Domain *d)
Definition intelpoint.C:62
enum oofem::IntElPoint::cmode mode
static ParamKey IPK_IntElPoint_area
Definition intelpoint.h:75
void computeLocalSlipDir(void)
Definition intelpoint.C:311
void computeGaussPoints() override
Definition intelpoint.C:200
void postInitialize() override
Performs post initialization steps.
Definition intelpoint.C:255
int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords) override
Definition intelpoint.C:211
void computeTransformationMatrixAt(GaussPoint *gp, FloatMatrix &answer) override
Definition intelpoint.C:148
void initializeFrom(InputRecord &ir, int priority) override
Definition intelpoint.C:236
const char * giveInputRecordName() const override
Definition intelpoint.h:89
void giveEngTraction(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep) override
Definition intelpoint.h:98
static ParamKey IPK_IntElPoint_length
Definition intelpoint.h:76
cmode giveCoordMode() const
Definition intelpoint.h:133
void giveDofManDofIDMask(int inode, IntArray &answer) const override
Definition intelpoint.C:290
FloatMatrixF< 1, 1 > give1dStiffnessMatrix_Eng(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const
FloatArrayF< 3 > giveEngTraction_3d(const FloatArrayF< 3 > &jump, GaussPoint *gp, TimeStep *tStep) const
double giveEngTraction_1d(double jump, GaussPoint *gp, TimeStep *tStep) const
FloatMatrixF< 3, 3 > give3dStiffnessMatrix_Eng(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const
FloatMatrixF< 2, 2 > give2dStiffnessMatrix_Eng(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const
FloatArrayF< 2 > giveEngTraction_2d(const FloatArrayF< 2 > &jump, GaussPoint *gp, TimeStep *tStep) const
StructuralInterfaceCrossSection * giveInterfaceCrossSection()
#define _IFT_IntElPoint_Name
Definition intelpoint.h:45
GaussPoint IntegrationPoint
Definition gausspoint.h:272
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]

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