16#ifndef _B2ELEMENT_KLT_COMPUTE_STRAIN_H_ 
   17#define _B2ELEMENT_KLT_COMPUTE_STRAIN_H_ 
   19#include "b2element_klt_util.H" 
   22namespace b2000 { 
namespace klt {
 
   26    void compute_strain_covariant(
 
   27          const DofVec3d& g1, 
const DofVec3d& g2, 
const double G1[3], 
const double G2[3],
 
   28          const bool first, 
const bool second, 
const bool a3_second, DofVector<3>& strain) {
 
   30            compute_green_lagrange_strain_covariant_d2(g1, g2, G1, G2, first, second, strain);
 
   32            compute_green_lagrange_strain_covariant_d1(g1, g2, G1, G2, first, second, strain);
 
   36    void compute_strain_ts_covariant(
 
   37          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a3, 
const bool first,
 
   38          const bool second, 
const bool a3_second, DofScalar& gamma13, DofScalar& gamma23) {
 
   40            compute_green_lagrange_strain_ts_covariant_d2(
 
   41                  a1, a2, a3, first, second, gamma13, gamma23);
 
   43            compute_green_lagrange_strain_ts_covariant_d1(
 
   44                  a1, a2, a3, first, second, gamma13, gamma23);
 
   48    void compute_deformation_gradient(
 
   49          const DofVec3d& g1, 
const DofVec3d& g2, 
const DofVec3d& g3, 
const double G1[3],
 
   50          const double G2[3], 
const double G3[3], 
double F[3][3]);
 
   53    void compute_green_lagrange_strain_covariant_d2(
 
   54          const DofVec3d& g1, 
const DofVec3d& g2, 
const double G1[3], 
const double G2[3],
 
   55          const bool first, 
const bool second, DofVector<3>& strain);
 
   57    void compute_green_lagrange_strain_covariant_d1(
 
   58          const DofVec3d& g1, 
const DofVec3d& g2, 
const double G1[3], 
const double G2[3],
 
   59          const bool first, 
const bool second, DofVector<3>& strain);
 
   61    void compute_green_lagrange_strain_ts_covariant_d1(
 
   62          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a3, 
const bool first,
 
   63          const bool second, DofScalar& gamma13, DofScalar& gamma23);
 
   65    void compute_green_lagrange_strain_ts_covariant_d2(
 
   66          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a3, 
const bool first,
 
   67          const bool second, DofScalar& gamma13, DofScalar& gamma23);
 
   70class ComputeStrainPreintegration {
 
   72    void compute_strain_covariant(
 
   73          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a31, 
const DofVec3d& a32,
 
   74          const double A1[3], 
const double A2[3], 
const double A31[3], 
const double A32[3],
 
   75          const bool first, 
const bool second, 
const bool a3_second, DofVector<3>& strain0,
 
   76          DofVector<3>& strain1) {
 
   78            compute_green_lagrange_strain_covariant_d2(
 
   79                  a1, a2, a31, a32, A1, A2, A31, A32, first, second, strain0, strain1);
 
   81            compute_green_lagrange_strain_covariant_d1(
 
   82                  a1, a2, a31, a32, A1, A2, A31, A32, first, second, strain0, strain1);
 
   86    void compute_strain_ts_covariant(
 
   87          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a3, 
const bool first,
 
   88          const bool second, 
const bool a3_second, DofScalar& gamma13, DofScalar& gamma23) {
 
   90            compute_green_lagrange_strain_ts_covariant_d2(
 
   91                  a1, a2, a3, first, second, gamma13, gamma23);
 
   93            compute_green_lagrange_strain_ts_covariant_d1(
 
   94                  a1, a2, a3, first, second, gamma13, gamma23);
 
   98    void compute_strain_covariant(
 
   99          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a3, 
const DofVec3d& a3d1,
 
  100          const DofVec3d& a3d2, 
const double A1[3], 
const double A2[3], 
const double A3[3],
 
  101          const double A3d1[3], 
const double A3d2[3], 
const bool first, 
const bool second,
 
  102          const bool a3_second, DofVector<8>& strain) {
 
  104            compute_green_lagrange_strain_covariant_d2(
 
  105                  a1, a2, a3, a3d1, a3d2, A1, A2, A3, A3d1, A3d2, first, second, strain);
 
  107            compute_green_lagrange_strain_covariant_d1(
 
  108                  a1, a2, a3, a3d1, a3d2, A1, A2, A3, A3d1, A3d2, first, second, strain);
 
  112    void compute_strain_covariant_nitsche(
 
  113          const DofVec3d& an, 
const DofVec3d& a3r, 
const bool first, 
const bool second,
 
  114          const bool a3_second, DofScalar& gamma) {
 
  116            compute_green_lagrange_strain_covariant_nitsche_d2(an, a3r, first, second, gamma);
 
  118            compute_green_lagrange_strain_covariant_nitsche_d1(an, a3r, first, second, gamma);
 
  123    void compute_green_lagrange_strain_covariant_d2(
 
  124          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a31, 
const DofVec3d& a32,
 
  125          const double A1[3], 
const double A2[3], 
const double A31[3], 
const double A32[3],
 
  126          const bool first, 
const bool second, DofVector<3>& strain_0, DofVector<3>& strain_1);
 
  128    void compute_green_lagrange_strain_covariant_d1(
 
  129          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a31, 
const DofVec3d& a32,
 
  130          const double A1[3], 
const double A2[3], 
const double A31[3], 
const double A32[3],
 
  131          const bool first, 
const bool second, DofVector<3>& strain_0, DofVector<3>& strain_1);
 
  133    void compute_green_lagrange_strain_ts_covariant_d1(
 
  134          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a3, 
const bool first,
 
  135          const bool second, DofScalar& gamma13, DofScalar& gamma23);
 
  137    void compute_green_lagrange_strain_ts_covariant_d2(
 
  138          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a3, 
const bool first,
 
  139          const bool second, DofScalar& gamma13, DofScalar& gamma23);
 
  141    void compute_green_lagrange_strain_covariant_d2(
 
  142          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a3, 
const DofVec3d& a31,
 
  143          const DofVec3d& a32, 
const double A1[3], 
const double A2[3], 
const double A3[3],
 
  144          const double A31[3], 
const double A32[3], 
const bool first, 
const bool second,
 
  145          DofVector<8>& strain);
 
  147    void compute_green_lagrange_strain_covariant_d1(
 
  148          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a3, 
const DofVec3d& a31,
 
  149          const DofVec3d& a32, 
const double A1[3], 
const double A2[3], 
const double A3[3],
 
  150          const double A31[3], 
const double A32[3], 
const bool first, 
const bool second,
 
  151          DofVector<8>& strain);
 
  153    void compute_green_lagrange_strain_covariant_nitsche_d1(
 
  154          const DofVec3d& an, 
const DofVec3d& a3r, 
const bool first, 
const bool second,
 
  157    void compute_green_lagrange_strain_covariant_nitsche_d2(
 
  158          const DofVec3d& an, 
const DofVec3d& a3r, 
const bool first, 
const bool second,
 
  162class ComputeStrainMembrane {
 
  164    void compute_strain_covariant(
 
  165          const DofVec3d& a1, 
const DofVec3d& a2, 
const double A1[3], 
const double A2[3],
 
  166          const int component, 
const bool first, 
const bool second, DofScalar& strain) {
 
  167        if (component == 0) {
 
  168            compute_strain_covariant_11(a1, a2, A1, A2, first, second, strain);
 
  169        } 
else if (component == 1) {
 
  170            compute_strain_covariant_22(a1, a2, A1, A2, first, second, strain);
 
  172            compute_strain_covariant_12(a1, a2, A1, A2, first, second, strain);
 
  176    void compute_strain_covariant_11(
 
  177          const DofVec3d& a1, 
const DofVec3d& a2, 
const double A1[3], 
const double A2[3],
 
  178          const bool first, 
const bool second, DofScalar& strain);
 
  180    void compute_strain_covariant_22(
 
  181          const DofVec3d& a1, 
const DofVec3d& a2, 
const double A1[3], 
const double A2[3],
 
  182          const bool first, 
const bool second, DofScalar& strain);
 
  184    void compute_strain_covariant_12(
 
  185          const DofVec3d& a1, 
const DofVec3d& a2, 
const double A1[3], 
const double A2[3],
 
  186          const bool first, 
const bool second, DofScalar& strain);
 
  189class ComputeStrainBending {
 
  191    void compute_strain_covariant(
 
  192          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a31, 
const DofVec3d& a32,
 
  193          const double A1[3], 
const double A2[3], 
const double A31[3], 
const double A32[3],
 
  194          const int component, 
const bool first, 
const bool second, DofScalar& strain) {
 
  195        if (component == 0) {
 
  196            compute_strain_covariant_11(a1, a2, a31, a32, A1, A2, A31, A32, first, second, strain);
 
  197        } 
else if (component == 1) {
 
  198            compute_strain_covariant_22(a1, a2, a31, a32, A1, A2, A31, A32, first, second, strain);
 
  200            compute_strain_covariant_12(a1, a2, a31, a32, A1, A2, A31, A32, first, second, strain);
 
  204    void compute_strain_covariant_11(
 
  205          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a31, 
const DofVec3d& a32,
 
  206          const double A1[3], 
const double A2[3], 
const double A31[3], 
const double A32[3],
 
  207          const bool first, 
const bool second, DofScalar& strain);
 
  209    void compute_strain_covariant_22(
 
  210          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a31, 
const DofVec3d& a32,
 
  211          const double A1[3], 
const double A2[3], 
const double A31[3], 
const double A32[3],
 
  212          const bool first, 
const bool second, DofScalar& strain);
 
  214    void compute_strain_covariant_12(
 
  215          const DofVec3d& a1, 
const DofVec3d& a2, 
const DofVec3d& a31, 
const DofVec3d& a32,
 
  216          const double A1[3], 
const double A2[3], 
const double A31[3], 
const double A32[3],
 
  217          const bool first, 
const bool second, DofScalar& strain);
 
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32