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