OOFEM 3.0
Loading...
Searching...
No Matches
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"
42
44
45#define _IFT_IGAElement_KnotSpanParallelMode "knotspanparmode"
47
48namespace oofem {
49#ifdef __OOFEG
50class StructuralElementEvaluator;
51void drawIGAPatchDeformedGeometry(Element *elem, StructuralElementEvaluator *se, oofegGraphicContext &gc, TimeStep *tStep, UnknownType);
52#endif
53
58{
59public:
62public:
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
75{
76protected:
77 IntArray knotSpan; // knot_span(nsd)
78public:
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
91{
92protected:
93#ifdef __MPI_PARALLEL_MODE
96#endif
97public:
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
110protected:
111 virtual int giveNsd(const Element_Geometry_Type) = 0; // this info is available also from interpolation. Do we need it here ???
112};
113
114
119{
120public:
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
int numberOfGaussPoints
Definition element.h:175
Element(int n, Domain *aDomain)
Definition element.C:86
const FloatArray giveVertexCoordinates(int i) const override
Definition iga.h:66
const IntArray * knotSpan
Definition iga.h:60
const Element_Geometry_Type giveGeometryType() const override
Definition iga.h:67
FEIIGAElementGeometryWrapper(Element *elem, const IntArray *knotSpan=nullptr)
Definition iga.h:63
int giveNumberOfVertices() const override
Definition iga.h:65
GaussIntegrationRule(int n, Element *e, int startIndx, int endIndx, bool dynamic=false)
virtual int giveNsd(const Element_Geometry_Type)=0
IntArray knotSpanParallelMode
Definition iga.h:95
static ParamKey IPK_IGAElement_knotSpanParallelMode
Definition iga.h:94
IGAElement(int n, Domain *aDomain)
Definition iga.h:98
IGAIntegrationElement(int _n, Element *e, IntArray knotSpan)
Definition iga.h:79
void setKnotSpan1(const IntArray &src)
Definition iga.h:83
const IntArray * giveKnotSpan() override
Returns receiver sub patch indices (if apply).
Definition iga.h:82
IGATSplineElement(int n, Domain *aDomain)
Definition iga.h:121
elementParallelMode
Definition element.h:87
void drawIGAPatchDeformedGeometry(Element *elem, StructuralElementEvaluator *se, oofegGraphicContext &gc, TimeStep *tStep, UnknownType)
Definition iga.C:1001
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
#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