17#ifndef B2BOUNDARY_CONDITION_H_
18#define B2BOUNDARY_CONDITION_H_
20#include "b2ppconfig.h"
21#include "utils/b2linear_algebra.H"
42 virtual void set_model(
Model& model) = 0;
44 virtual void set_case(
Case& case_) = 0;
46 virtual void set_subcase_id(
const int subcase_id_) = 0;
80template <
typename T,
typename MATRIX_TYPE = b2linalg::Msym_compressed_col_update_inv>
110 const b2linalg::Vector<T, b2linalg::Vdense_constref>& dof,
double time,
112 b2linalg::Matrix<T, MATRIX_TYPE>& d_value_d_dof,
113 b2linalg::Vector<T, b2linalg::Vdense_ref> d_value_d_time,
SolverHints* solver_hints) {
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);
137 virtual void save_nonlinear_value(
138 const std::string& name,
const b2linalg::Vector<T, b2linalg::Vdense_constref>& dof,
143 virtual void save_linear_value(
const std::string& name) {
TypeError() <<
THROW; }
161 virtual void set_model(
Model& model) = 0;
163 virtual void set_case(
Case& case_) = 0;
225 const b2linalg::Vector<T, b2linalg::Vdense_constref>& dof,
double time,
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) {
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);
268 virtual void set_model(
Model& model) = 0;
270 virtual void set_case(
Case& case_) = 0;
307 const bool linear,
const b2linalg::Vector<T, b2linalg::Vdense_constref>& dof,
335 const b2linalg::Vector<T, b2linalg::Vdense_constref>& dof,
double time,
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) {
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);
377 const b2linalg::Matrix<T, b2linalg::Mrectangle_constref>& value,
double time,
378 b2linalg::Matrix<T, b2linalg::Mrectangle_ref> dof) = 0;
#define THROW
Definition b2exception.H:198
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 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