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