libMesh
Loading...
Searching...
No Matches
assembly.h
Go to the documentation of this file.
1#ifndef ASSEMBLY_H
2#define ASSEMBLY_H
3
4// rbOOmit includes
5#include "libmesh/rb_parameters.h"
6#include "libmesh/rb_theta.h"
7#include "libmesh/rb_theta_expansion.h"
8#include "libmesh/rb_assembly_expansion.h"
9#include "libmesh/elem_assembly.h"
10
11// Bring in bits from the libMesh namespace.
12// Just the bits we're using, since this is a header.
15using libMesh::Number;
16using libMesh::Real;
22using libMesh::System;
23using libMesh::Node;
24
25// boundary IDs
26#define BOUNDARY_ID_MIN_Z 0
27#define BOUNDARY_ID_MIN_Y 1
28#define BOUNDARY_ID_MAX_X 2
29#define BOUNDARY_ID_MAX_Y 3
30#define BOUNDARY_ID_MIN_X 4
31#define BOUNDARY_ID_MAX_Z 5
32#define NODE_BOUNDARY_ID 10
33
35
36// Kronecker delta function
37inline Real kronecker_delta(unsigned int i,
38 unsigned int j);
39
40// Rank-4 tensor for elasticity
41Real elasticity_tensor(unsigned int i,
42 unsigned int j,
43 unsigned int k,
44 unsigned int l);
45
58
59struct ThetaA0 : RBTheta
60{
61 virtual Number evaluate(const RBParameters &)
62 {
63 return 1.;
64 }
65};
66
68{
69
71 ElasticityAssembly(rb_sys_in)
72 {}
73
74 // The interior assembly operator
75 virtual void interior_assembly(FEMContext & c);
76};
77
78struct ThetaA1 : RBTheta
79{
80 virtual Number evaluate(const RBParameters & mu)
81 {
82 return mu.get_value("x_scaling");
83 }
84};
85
87{
89 ElasticityAssembly(rb_sys_in)
90 {}
91
92 // The interior assembly operator
93 virtual void interior_assembly(FEMContext & c);
94};
95
96struct ThetaA2 : RBTheta
97{
98 virtual Number evaluate(const RBParameters & mu)
99 {
100 return 1./mu.get_value("x_scaling");
101 }
102};
103
105{
106
108 :
109 ElasticityAssembly(rb_sys_in)
110 {}
111
112 // The interior assembly operator
113 virtual void interior_assembly(FEMContext & c);
114};
115
117{
118 virtual Number evaluate(const RBParameters & mu)
119 {
120 return mu.get_value("load_Fx");
121 }
122};
123
125{
127 :
128 ElasticityAssembly(rb_sys_in)
129 {}
130
131 // Apply a traction
132 virtual void boundary_assembly(FEMContext & c);
133};
134
136{
137 virtual Number evaluate(const RBParameters & mu)
138 {
139 return mu.get_value("load_Fy");
140 }
141};
142
144{
146 :
147 ElasticityAssembly(rb_sys_in)
148 {}
149
150 // Apply a traction
151 virtual void boundary_assembly(FEMContext & c);
152};
153
155{
156 virtual Number evaluate(const RBParameters & mu)
157 {
158 return mu.get_value("load_Fz");
159 }
160};
161
163{
165 :
166 ElasticityAssembly(rb_sys_in)
167 {}
168
169 // Apply a traction
170 virtual void boundary_assembly(FEMContext & c);
171};
172
174{
175 virtual Number evaluate(const RBParameters & mu)
176 {
177 return mu.get_value("point_load_Fx");
178 }
179};
180
182{
185
186 // Apply a point load
187 virtual void get_nodal_rhs_values(std::map<numeric_index_type, Number> & values,
188 const System & sys,
189 const Node & node);
190
191};
192
194{
195 virtual Number evaluate(const RBParameters & mu)
196 {
197 return mu.get_value("point_load_Fy");
198 }
199};
200
202{
205
206 // Apply a point load
207 virtual void get_nodal_rhs_values(std::map<numeric_index_type, Number> & values,
208 const System & sys,
209 const Node & node);
210
211};
212
214{
215 virtual Number evaluate(const RBParameters & mu)
216 {
217 return mu.get_value("point_load_Fz");
218 }
219};
220
222{
225
226 // Apply a point load
227 virtual void get_nodal_rhs_values(std::map<numeric_index_type, Number> & values,
228 const System & sys,
229 const Node & node);
230
231};
232
234{
235
237 :
238 ElasticityAssembly(rb_sys_in)
239 {}
240
241 // The interior assembly operator
242 virtual void interior_assembly(FEMContext & c);
243};
244
245// Define an RBThetaExpansion class for this PDE
277
278// Define an RBAssemblyExpansion class for this PDE
315
316#endif
ElemAssembly provides a per-element (interior and boundary) assembly functionality.
This class provides all data required for a physics package (e.g.
Definition fem_context.h:63
A Node is like a Point, but with more information.
Definition node.h:55
This class stores the set of ElemAssembly functor objects that define the "parameter-independent expa...
void attach_A_assembly(ElemAssembly *Aq_assembly)
Attach ElemAssembly object for the left-hand side (both interior and boundary assembly).
void attach_F_assembly(ElemAssembly *Fq_assembly)
Attach ElemAssembly object for the right-hand side (both interior and boundary assembly).
This class is part of the rbOOmit framework.
Real get_value(const std::string &param_name) const
Get the value of the specified parameter, throw an error if it does not exist.
This class stores the set of RBTheta functor objects that define the "parameter-dependent expansion" ...
virtual void attach_F_theta(RBTheta *theta_q_f)
Attach a pointer to a functor object that defines one of the theta_q_a terms.
virtual void attach_A_theta(RBTheta *theta_q_a)
Attach a pointer to a functor object that defines one of the theta_q_a terms.
This class is part of the rbOOmit framework.
Definition rb_theta.h:47
Manages consistently variables, degrees of freedom, and coefficient vectors.
Definition system.h:100
dof_id_type numeric_index_type
Definition id_types.h:99
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Real kronecker_delta(unsigned int i, unsigned int j)
Definition assembly.C:37
Real elasticity_tensor(unsigned int i, unsigned int j, unsigned int k, unsigned int l)
Definition assembly.C:43
virtual void interior_assembly(FEMContext &c)
Perform the element interior assembly.
Definition assembly.C:60
AssemblyA0(ElasticityRBConstruction &rb_sys_in)
Definition assembly.h:70
virtual void interior_assembly(FEMContext &c)
Perform the element interior assembly.
Definition assembly.C:120
AssemblyA1(ElasticityRBConstruction &rb_sys_in)
Definition assembly.h:88
AssemblyA2(ElasticityRBConstruction &rb_sys_in)
Definition assembly.h:107
virtual void interior_assembly(FEMContext &c)
Perform the element interior assembly.
Definition assembly.C:163
virtual void boundary_assembly(FEMContext &c)
Perform the element boundary assembly.
Definition assembly.C:210
AssemblyF0(ElasticityRBConstruction &rb_sys_in)
Definition assembly.h:126
virtual void boundary_assembly(FEMContext &c)
Perform the element boundary assembly.
Definition assembly.C:237
AssemblyF1(ElasticityRBConstruction &rb_sys_in)
Definition assembly.h:145
virtual void boundary_assembly(FEMContext &c)
Perform the element boundary assembly.
Definition assembly.C:265
AssemblyF2(ElasticityRBConstruction &rb_sys_in)
Definition assembly.h:164
virtual void get_nodal_rhs_values(std::map< numeric_index_type, Number > &values, const System &sys, const Node &node)
Definition assembly.C:293
virtual void get_nodal_rhs_values(std::map< numeric_index_type, Number > &values, const System &sys, const Node &node)
Definition assembly.C:309
virtual void get_nodal_rhs_values(std::map< numeric_index_type, Number > &values, const System &sys, const Node &node)
Definition assembly.C:325
ElasticityAssemblyExpansion(ElasticityRBConstruction &rb_sys_in)
Constructor.
Definition assembly.h:284
AssemblyPointLoadY point_load_assembly_y
Definition assembly.h:312
AssemblyPointLoadZ point_load_assembly_z
Definition assembly.h:313
AssemblyPointLoadX point_load_assembly_x
Definition assembly.h:311
ElasticityAssembly(ElasticityRBConstruction &rb_sys_in)
Definition assembly.h:49
ElasticityRBConstruction & rb_sys
The ElasticityRBConstruction object that will use this assembly.
Definition assembly.h:56
ThetaPointLoadY theta_point_load_y
Definition assembly.h:274
ThetaPointLoadX theta_point_load_x
Definition assembly.h:273
ElasticityThetaExpansion()
Constructor.
Definition assembly.h:252
ThetaPointLoadZ theta_point_load_z
Definition assembly.h:275
InnerProductAssembly(ElasticityRBConstruction &rb_sys_in)
Definition assembly.h:236
virtual void interior_assembly(FEMContext &c)
Perform the element interior assembly.
Definition assembly.C:341
virtual Number evaluate(const RBParameters &)
Evaluate the functor object for the given parameter.
Definition assembly.h:61
virtual Number evaluate(const RBParameters &mu)
Evaluate the functor object for the given parameter.
Definition assembly.h:80
virtual Number evaluate(const RBParameters &mu)
Evaluate the functor object for the given parameter.
Definition assembly.h:98
virtual Number evaluate(const RBParameters &mu)
Evaluate the functor object for the given parameter.
Definition assembly.h:118
virtual Number evaluate(const RBParameters &mu)
Evaluate the functor object for the given parameter.
Definition assembly.h:137
virtual Number evaluate(const RBParameters &mu)
Evaluate the functor object for the given parameter.
Definition assembly.h:156
virtual Number evaluate(const RBParameters &mu)
Evaluate the functor object for the given parameter.
Definition assembly.h:175
virtual Number evaluate(const RBParameters &mu)
Evaluate the functor object for the given parameter.
Definition assembly.h:195
virtual Number evaluate(const RBParameters &mu)
Evaluate the functor object for the given parameter.
Definition assembly.h:215