suanPan
🧮 An Open Source, Parallel and Heterogeneous Finite Element Analysis Framework
Loading...
Searching...
No Matches
Patch.h
Go to the documentation of this file.
1/*******************************************************************************
2 * Copyright (C) 2017-2026 Theodore Chang
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 ******************************************************************************/
29#ifndef PATCH_H
30#define PATCH_H
31
34
35class Patch {
36protected:
37 const field<vec> knot_pool;
38 std::vector<uvec> element_span;
39
40public:
41 explicit Patch(field<vec>&&);
42
43 [[nodiscard]] uvec get_number_of_control_points() const;
44};
45
46class MaterialPatch : public Patch, public MaterialElement {
47public:
49 unsigned, // tag
50 unsigned, // number of dofs
51 uvec&&, // node encoding
52 uvec&&, // material tags
53 field<vec>&&, // knot pool
54 bool, // nonlinear geometry switch
55 MaterialType, // material type
56 std::vector<Node::DOF>&& // dof identifier
57 );
58};
59
61public:
63 unsigned, // tag
64 unsigned, // number of dofs
65 uvec&&, // node encoding
66 uvec&&, // material tags
67 field<vec>&&, // knot pool
68 bool // nonlinear geometry switch
69 );
70};
71
73public:
75 unsigned, // tag
76 unsigned, // number of dofs
77 uvec&&, // node encoding
78 uvec&&, // material tags
79 field<vec>&&, // knot pool
80 bool // nonlinear geometry switch
81 );
82};
83
84class SectionPatch : public Patch, public SectionElement {
85public:
87 unsigned, // tag
88 unsigned, // number of dofs
89 uvec&&, // node encoding
90 uvec&&, // section tags
91 field<vec>&&, // knot pool
92 bool, // nonlinear geometry switch
93 SectionType, // section type
94 std::vector<Node::DOF>&& // dof identifier
95 );
96};
97
99public:
101 unsigned, // tag
102 unsigned, // number of dofs
103 uvec&&, // node encoding
104 uvec&&, // section tags
105 field<vec>&&, // knot pool
106 bool // nonlinear geometry switch
107 );
108};
109
111public:
113 unsigned, // tag
114 unsigned, // number of dofs
115 uvec&&, // node encoding
116 uvec&&, // section tags
117 field<vec>&&, // knot pool
118 bool // nonlinear geometry switch
119 );
120};
121
122#endif
123
The MaterialElement class.
Definition MaterialElement.h:33
Definition Patch.h:60
Definition Patch.h:72
Definition Patch.h:46
A Patch class.
Definition Patch.h:35
std::vector< uvec > element_span
Definition Patch.h:38
uvec get_number_of_control_points() const
Definition Patch.cpp:31
const field< vec > knot_pool
Definition Patch.h:37
The SectionElement class.
Definition SectionElement.h:33
Definition Patch.h:98
Definition Patch.h:110
Definition Patch.h:84
MaterialType
Definition Material.h:37
SectionType
Definition Section.h:33