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