19#ifndef B2ELEMENT_BEAM_CROSS_SECTION_H_
20#define B2ELEMENT_BEAM_CROSS_SECTION_H_
22#include "model/b2element.H"
23#include "utils/b2linear_algebra.H"
27class BeamCrossSectionBaseElement :
public TypedElement<double> {
29 virtual void add_value_0(
30 Model* model,
double& area,
double neutral_point[2],
double& mass,
31 double inertia_point[2]) = 0;
33 virtual void add_value_01(
34 Model* model,
const double center[2],
double neutral_axis[3],
35 double inertia_moment[3]) = 0;
37 virtual void add_value_1(
38 Model* model,
const double neutral_point[2],
const double inetria_axis[2][2],
39 const size_t number_of_disp_dof, b2linalg::Index& dof_numbering,
40 b2linalg::Matrix<double, b2linalg::Mpacked>& K) = 0;
42 virtual void add_value_2(
43 Model* model,
const double neutral_point[2],
const double neutral_axis[2][2],
44 const b2linalg::Matrix<double, b2linalg::Mrectangle_constref>& v,
45 const b2linalg::Matrix<double, b2linalg::Mrectangle_constref>& lambda,
46 const bool beta_cd[6][6],
const int beta_cs,
const int beta_c[6],
const int beta_ds,
47 const int beta_d[6], b2float128 beta[6][6]) = 0;
49 virtual void add_value_3(
50 Model* model,
const double neutral_point[2],
const double neutral_axis[2][2],
51 const size_t number_of_disp_dof,
52 const b2linalg::Matrix<double, b2linalg::Mrectangle_constref>& v,
53 const b2linalg::Matrix<double, b2linalg::Mrectangle_constref>& lambda,
54 const b2float128 beta[6][6], b2linalg::Matrix<double>& u) = 0;
57 virtual void add_value_4(
58 Model* model,
const double neutral_point[2],
const double neutral_axis[2][2],
59 const b2linalg::Matrix<double, b2linalg::Mrectangle_constref>& v,
60 const b2linalg::Matrix<double, b2linalg::Mrectangle_constref>& lambda,
61 const b2float128 beta[6][6], std::vector<size_t>& node_weight,
62 b2linalg::Matrix<double> strain[6], b2linalg::Matrix<double> stress[6]) = 0;
65 virtual void add_value_5(
66 Model* model,
const double neutral_point[2],
const double neutral_axis[2][2],
69 virtual void add_value_6(
70 Model* model,
const double neutral_point[2],
const double neutral_axis[2][2],
71 const size_t number_of_disp_dof,
const double f[6],
72 const b2linalg::Matrix<double, b2linalg::Mrectangle_constref>& u,
73 const b2linalg::Matrix<double> stress[6], b2linalg::Vector<double>& value) = 0;
76 virtual void add_value_7(
77 Model* model,
const double neutral_point[2],
const double neutral_axis[2][2],
78 const double f[6],
const b2linalg::Matrix<double, b2linalg::Mrectangle_constref>& u,
79 const b2linalg::Vector<double, b2linalg::Vdense_constref>& vd,
80 const b2linalg::Vector<double, b2linalg::Vdense_constref>& lambdad,
81 b2linalg::Matrix<double>& straind, b2linalg::Matrix<double>& stressd) = 0;
83 virtual void add_value_8(
84 Model* model,
const double neutral_point[2],
const double neutral_axis[2][2],
85 const b2linalg::Matrix<double, b2linalg::Mrectangle_constref>& u,
86 const b2linalg::Vector<double, b2linalg::Vdense_constref>& vd,
87 const b2linalg::Matrix<double> stress[6],
const b2linalg::Matrix<double>& stressd,
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32