b2api
B2000++ API Reference Manual, VERSION 4.6
 
Loading...
Searching...
No Matches
b2boundary_condition.H
Go to the documentation of this file.
1//------------------------------------------------------------------------
2// b2boundary_condition.H --
3//
4//
5// written by Mathias Doreille
6//
7// Copyright (c) 2004-2012,2016
8// SMR Engineering & Development SA
9// 2502 Bienne, Switzerland
10//
11// All Rights Reserved. Proprietary source code. The contents of
12// this file may not be disclosed to third parties, copied or
13// duplicated in any form, in whole or in part, without the prior
14// written permission of SMR.
15//------------------------------------------------------------------------
16
17#ifndef B2BOUNDARY_CONDITION_H_
18#define B2BOUNDARY_CONDITION_H_
19
20#include "b2ppconfig.h"
21#include "utils/b2linear_algebra.H"
22#include "utils/b2object.H"
23#include "utils/b2type.H"
24
32namespace b2000 {
33
34class Model;
35class Case;
36class SolverHints;
37
41public:
42 virtual void set_model(Model& model) = 0;
43
44 virtual void set_case(Case& case_) = 0;
45
46 virtual void set_subcase_id(const int subcase_id_) = 0;
47
49 enum Type {
51 none = 0,
52
56
61
66 };
67
71 virtual Type get_type() const = 0;
72
74 static type_t type;
75};
76
80template <typename T, typename MATRIX_TYPE = b2linalg::Msym_compressed_col_update_inv>
82public:
110 const b2linalg::Vector<T, b2linalg::Vdense_constref>& dof, double time,
111 EquilibriumSolution equilibrium_solution, b2linalg::Vector<T, b2linalg::Vdense_ref> value,
112 b2linalg::Matrix<T, MATRIX_TYPE>& d_value_d_dof,
113 b2linalg::Vector<T, b2linalg::Vdense_ref> d_value_d_time, SolverHints* solver_hints) {
114 TypeError() << THROW;
115 }
116
129 virtual void get_linear_value(
130 b2linalg::Vector<T, b2linalg::Vdense_ref> value,
131 b2linalg::Matrix<T, MATRIX_TYPE>& d_value_d_dof, double time = 1) {
133 b2linalg::Vector<T, b2linalg::Vdense_constref>::null, 0, false, value, d_value_d_dof,
134 b2linalg::Vector<T, b2linalg::Vdense_ref>::null, 0);
135 }
136
137 virtual void save_nonlinear_value(
138 const std::string& name, const b2linalg::Vector<T, b2linalg::Vdense_constref>& dof,
139 double time = 0) {
140 TypeError() << THROW;
141 }
142
143 virtual void save_linear_value(const std::string& name) { TypeError() << THROW; }
144
148};
149
160public:
161 virtual void set_model(Model& model) = 0;
162
163 virtual void set_case(Case& case_) = 0;
164
181
185 virtual Type get_type() const = 0;
186
188 virtual size_t get_size(const bool linear) = 0;
189
191 static type_t type;
192};
193
197template <typename T>
199public:
225 const b2linalg::Vector<T, b2linalg::Vdense_constref>& dof, double time,
226 EquilibriumSolution equilibrium_solution, b2linalg::Vector<T, b2linalg::Vdense_ref> value,
227 b2linalg::Matrix<T, b2linalg::Mcompressed_col>& d_value_d_dof_trans,
228 b2linalg::Vector<T, b2linalg::Vdense_ref> d_value_d_time, SolverHints* solver_hints) {
229 TypeError() << THROW;
230 }
231
244 virtual void get_linear_value(
245 b2linalg::Vector<T, b2linalg::Vdense_ref> value,
246 b2linalg::Matrix<T, b2linalg::Mcompressed_col>& d_value_d_dof_trans, double time = 1) {
248 b2linalg::Vector<T, b2linalg::Vdense_constref>::null, 0, false, value,
249 d_value_d_dof_trans, b2linalg::Vector<T, b2linalg::Vdense_ref>::null, 0);
250 }
251
255};
256
267public:
268 virtual void set_model(Model& model) = 0;
269
270 virtual void set_case(Case& case_) = 0;
271
288
292 virtual Type get_type() const = 0;
293
295 static type_t type;
296};
297
301template <typename T>
303public:
306 virtual size_t get_size(
307 const bool linear, const b2linalg::Vector<T, b2linalg::Vdense_constref>& dof,
308 double time) = 0;
309
335 const b2linalg::Vector<T, b2linalg::Vdense_constref>& dof, double time,
336 EquilibriumSolution equilibrium_solution, b2linalg::Vector<T, b2linalg::Vdense_ref> value,
337 b2linalg::Matrix<T, b2linalg::Mcompressed_col>& d_value_d_dof_trans,
338 b2linalg::Matrix<T, b2linalg::Mrectangle_ref> d_value_d_time, SolverHints* solver_hints) {
339 TypeError() << THROW;
340 }
341
354 virtual void get_linear_value(
355 b2linalg::Vector<T, b2linalg::Vdense_ref> value,
356 b2linalg::Matrix<T, b2linalg::Mcompressed_col>& d_value_d_dof_trans, double time = 1) {
358 b2linalg::Vector<T, b2linalg::Vdense_constref>::null, 0, true, value,
359 d_value_d_dof_trans, b2linalg::Matrix<T, b2linalg::Mrectangle_ref>::null, 0);
360 }
361
377 const b2linalg::Matrix<T, b2linalg::Mrectangle_constref>& value, double time,
378 b2linalg::Matrix<T, b2linalg::Mrectangle_ref> dof) = 0;
379
383};
384
385} // namespace b2000
386
387#endif // B2BOUNDARY_CONDITION_H_
#define THROW
Definition b2exception.H:198
Definition b2case.H:110
Definition b2boundary_condition.H:159
Type
Definition b2boundary_condition.H:166
@ noconstant_derivative
Definition b2boundary_condition.H:179
@ constant_derivative
Definition b2boundary_condition.H:176
@ constant_value
Definition b2boundary_condition.H:172
@ none
Definition b2boundary_condition.H:168
virtual Type get_type() const =0
virtual size_t get_size(const bool linear)=0
Definition b2boundary_condition.H:266
virtual Type get_type() const =0
Type
Definition b2boundary_condition.H:273
@ noconstant_derivative_constant_struct
Definition b2boundary_condition.H:286
@ const_derivative
Definition b2boundary_condition.H:282
@ const_value
Definition b2boundary_condition.H:278
@ none
Definition b2boundary_condition.H:275
Definition b2model.H:69
Definition b2boundary_condition.H:40
virtual Type get_type() const =0
Type
Definition b2boundary_condition.H:49
@ constant
Definition b2boundary_condition.H:55
@ noconservative
Definition b2boundary_condition.H:65
@ conservative
Definition b2boundary_condition.H:60
@ none
Definition b2boundary_condition.H:51
Definition b2object.H:340
Definition b2object.H:456
Definition b2solver.H:168
Definition b2boundary_condition.H:198
virtual void get_linear_value(b2linalg::Vector< T, b2linalg::Vdense_ref > value, b2linalg::Matrix< T, b2linalg::Mcompressed_col > &d_value_d_dof_trans, double time=1)
Definition b2boundary_condition.H:244
virtual void get_nonlinear_value(const b2linalg::Vector< T, b2linalg::Vdense_constref > &dof, double time, EquilibriumSolution equilibrium_solution, b2linalg::Vector< T, b2linalg::Vdense_ref > value, b2linalg::Matrix< T, b2linalg::Mcompressed_col > &d_value_d_dof_trans, b2linalg::Vector< T, b2linalg::Vdense_ref > d_value_d_time, SolverHints *solver_hints)
Definition b2boundary_condition.H:224
TypedEssentialBoundaryCondition typed_base_t
Definition b2boundary_condition.H:254
Definition b2boundary_condition.H:302
TypedModelReductionBoundaryCondition typed_base_t
Definition b2boundary_condition.H:382
virtual void get_nonlinear_inverse_value(const b2linalg::Matrix< T, b2linalg::Mrectangle_constref > &value, double time, b2linalg::Matrix< T, b2linalg::Mrectangle_ref > dof)=0
virtual size_t get_size(const bool linear, const b2linalg::Vector< T, b2linalg::Vdense_constref > &dof, double time)=0
virtual void get_linear_value(b2linalg::Vector< T, b2linalg::Vdense_ref > value, b2linalg::Matrix< T, b2linalg::Mcompressed_col > &d_value_d_dof_trans, double time=1)
Definition b2boundary_condition.H:354
virtual void get_nonlinear_value(const b2linalg::Vector< T, b2linalg::Vdense_constref > &dof, double time, EquilibriumSolution equilibrium_solution, b2linalg::Vector< T, b2linalg::Vdense_ref > value, b2linalg::Matrix< T, b2linalg::Mcompressed_col > &d_value_d_dof_trans, b2linalg::Matrix< T, b2linalg::Mrectangle_ref > d_value_d_time, SolverHints *solver_hints)
Definition b2boundary_condition.H:334
Definition b2boundary_condition.H:81
virtual void get_linear_value(b2linalg::Vector< T, b2linalg::Vdense_ref > value, b2linalg::Matrix< T, MATRIX_TYPE > &d_value_d_dof, double time=1)
Definition b2boundary_condition.H:129
TypedNaturalBoundaryCondition typed_base_t
Definition b2boundary_condition.H:147
virtual void get_nonlinear_value(const b2linalg::Vector< T, b2linalg::Vdense_constref > &dof, double time, EquilibriumSolution equilibrium_solution, b2linalg::Vector< T, b2linalg::Vdense_ref > value, b2linalg::Matrix< T, MATRIX_TYPE > &d_value_d_dof, b2linalg::Vector< T, b2linalg::Vdense_ref > d_value_d_time, SolverHints *solver_hints)
Definition b2boundary_condition.H:109
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32
GenericException< TypeError_name > TypeError
Definition b2exception.H:325
Definition b2type.H:72