OOFEM
3.0
Loading...
Searching...
No Matches
src
core
iga
iga.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 iga_h
36
#define iga_h
37
38
#include "
inputrecord.h
"
39
#include "
intarray.h
"
40
#include "
feinterpol.h
"
41
#include "
gaussintegrationrule.h
"
42
44
45
#define _IFT_IGAElement_KnotSpanParallelMode "knotspanparmode"
47
48
namespace
oofem
{
49
#ifdef __OOFEG
50
class
StructuralElementEvaluator;
51
void
drawIGAPatchDeformedGeometry
(Element *elem, StructuralElementEvaluator *se, oofegGraphicContext &
gc
, TimeStep *tStep,
UnknownType
);
52
#endif
53
57
class
OOFEM_EXPORT
FEIIGAElementGeometryWrapper
:
public
FEICellGeometry
58
{
59
public
:
60
const
IntArray
*
knotSpan
;
61
Element
*
elem
;
62
public
:
63
FEIIGAElementGeometryWrapper
(
Element
*
elem
,
const
IntArray
*
knotSpan
=
nullptr
) :
FEICellGeometry
(),
knotSpan
(
knotSpan
),
elem
(
elem
) { }
64
65
int
giveNumberOfVertices
()
const override
{
return
elem
->giveNumberOfNodes(); }
66
const
FloatArray
giveVertexCoordinates
(
int
i)
const override
{
return
elem
->giveNode(i)->giveCoordinates(); }
67
const
Element_Geometry_Type
giveGeometryType
()
const override
{
return
elem
->giveGeometryType();}
68
};
69
70
74
class
OOFEM_EXPORT
IGAIntegrationElement
:
public
GaussIntegrationRule
75
{
76
protected
:
77
IntArray
knotSpan
;
// knot_span(nsd)
78
public
:
79
IGAIntegrationElement
(
int
_n,
Element
*e,
IntArray
knotSpan
) :
80
GaussIntegrationRule
(_n, e, 0, 0, false),
81
knotSpan
(std::move(
knotSpan
)) { }
82
const
IntArray
*
giveKnotSpan
()
override
{
return
& this->knotSpan; }
83
void
setKnotSpan1
(
const
IntArray
&src) { this->knotSpan = src; }
84
};
85
86
90
class
OOFEM_EXPORT
IGAElement
:
public
Element
91
{
92
protected
:
93
#ifdef __MPI_PARALLEL_MODE
94
static
ParamKey
IPK_IGAElement_knotSpanParallelMode
;
95
IntArray
knotSpanParallelMode
;
96
#endif
97
public
:
98
IGAElement
(
int
n,
Domain
* aDomain) :
Element
(n, aDomain) {
numberOfGaussPoints
=1;}
99
void
initializeFrom(
InputRecord
&ir,
int
priority)
override
;
100
void
initializeFinish()
override
;
101
102
#ifdef __MPI_PARALLEL_MODE
103
elementParallelMode
giveKnotSpanParallelMode(
int
)
const override
;
104
#endif
105
106
#ifdef __OOFEG
107
void
drawRawGeometry(
oofegGraphicContext
&
gc
,
TimeStep
*tStep)
override
;
108
#endif
109
110
protected
:
111
virtual
int
giveNsd
(
const
Element_Geometry_Type
) = 0;
// this info is available also from interpolation. Do we need it here ???
112
};
113
114
118
class
OOFEM_EXPORT
IGATSplineElement
:
public
IGAElement
119
{
120
public
:
121
IGATSplineElement
(
int
n,
Domain
* aDomain) :
IGAElement
(n, aDomain) { }
122
void
initializeFrom(
InputRecord
&ir,
int
priority)
override
;
123
void
initializeFinish()
override
;
124
};
125
}
// end namespace oofem
126
#endif
//iga_h
oofem::Domain
Definition
domain.h:121
oofem::Element
Definition
element.h:133
oofem::Element::numberOfGaussPoints
int numberOfGaussPoints
Definition
element.h:175
oofem::Element::Element
Element(int n, Domain *aDomain)
Definition
element.C:86
oofem::FEICellGeometry::FEICellGeometry
FEICellGeometry()
Definition
feinterpol.h:69
oofem::FEIIGAElementGeometryWrapper::elem
Element * elem
Definition
iga.h:61
oofem::FEIIGAElementGeometryWrapper::giveVertexCoordinates
const FloatArray giveVertexCoordinates(int i) const override
Definition
iga.h:66
oofem::FEIIGAElementGeometryWrapper::knotSpan
const IntArray * knotSpan
Definition
iga.h:60
oofem::FEIIGAElementGeometryWrapper::giveGeometryType
const Element_Geometry_Type giveGeometryType() const override
Definition
iga.h:67
oofem::FEIIGAElementGeometryWrapper::FEIIGAElementGeometryWrapper
FEIIGAElementGeometryWrapper(Element *elem, const IntArray *knotSpan=nullptr)
Definition
iga.h:63
oofem::FEIIGAElementGeometryWrapper::giveNumberOfVertices
int giveNumberOfVertices() const override
Definition
iga.h:65
oofem::FloatArray
Definition
floatarray.h:92
oofem::GaussIntegrationRule::GaussIntegrationRule
GaussIntegrationRule(int n, Element *e, int startIndx, int endIndx, bool dynamic=false)
Definition
gaussintegrationrule.C:44
oofem::IGAElement::giveNsd
virtual int giveNsd(const Element_Geometry_Type)=0
oofem::IGAElement::knotSpanParallelMode
IntArray knotSpanParallelMode
Definition
iga.h:95
oofem::IGAElement::IPK_IGAElement_knotSpanParallelMode
static ParamKey IPK_IGAElement_knotSpanParallelMode
Definition
iga.h:94
oofem::IGAElement::IGAElement
IGAElement(int n, Domain *aDomain)
Definition
iga.h:98
oofem::IGAIntegrationElement::IGAIntegrationElement
IGAIntegrationElement(int _n, Element *e, IntArray knotSpan)
Definition
iga.h:79
oofem::IGAIntegrationElement::knotSpan
IntArray knotSpan
Definition
iga.h:77
oofem::IGAIntegrationElement::setKnotSpan1
void setKnotSpan1(const IntArray &src)
Definition
iga.h:83
oofem::IGAIntegrationElement::giveKnotSpan
const IntArray * giveKnotSpan() override
Returns receiver sub patch indices (if apply).
Definition
iga.h:82
oofem::IGATSplineElement::IGATSplineElement
IGATSplineElement(int n, Domain *aDomain)
Definition
iga.h:121
oofem::InputRecord
Definition
inputrecord.h:98
oofem::IntArray
Definition
intarray.h:63
oofem::ParamKey
Definition
paramkey.h:51
oofem::TimeStep
Definition
timestep.h:82
oofem::oofegGraphicContext
Definition
oofeggraphiccontext.h:133
feinterpol.h
gaussintegrationrule.h
inputrecord.h
intarray.h
oofem
Definition
additivemanufacturingproblem.C:83
oofem::Element_Geometry_Type
Element_Geometry_Type
Definition
elementgeometrytype.h:82
oofem::elementParallelMode
elementParallelMode
Definition
element.h:87
oofem::drawIGAPatchDeformedGeometry
void drawIGAPatchDeformedGeometry(Element *elem, StructuralElementEvaluator *se, oofegGraphicContext &gc, TimeStep *tStep, UnknownType)
Definition
iga.C:1001
oofem::UnknownType
UnknownType
Definition
unknowntype.h:59
gc
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
OOFEM_EXPORT
#define OOFEM_EXPORT
Definition
oofemcfg.h:7
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