Line data Source code
1 : //* This file is part of the MOOSE framework
2 : //* https://mooseframework.inl.gov
3 : //*
4 : //* All rights reserved, see COPYRIGHT for full restrictions
5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 : //*
7 : //* Licensed under LGPL 2.1, please see LICENSE for details
8 : //* https://www.gnu.org/licenses/lgpl-2.1.html
9 :
10 : #include "ADComputeFiniteShellStrain.h"
11 : #include "DenseMatrix.h"
12 :
13 : #include "libmesh/quadrature.h"
14 : #include "libmesh/utility.h"
15 : #include "libmesh/enum_quadrature_type.h"
16 : #include "libmesh/fe_type.h"
17 : #include "libmesh/string_to_enum.h"
18 : #include "libmesh/quadrature_gauss.h"
19 :
20 : registerMooseObject("SolidMechanicsApp", ADComputeFiniteShellStrain);
21 :
22 : InputParameters
23 44 : ADComputeFiniteShellStrain::validParams()
24 : {
25 44 : InputParameters params = ADComputeIncrementalShellStrain::validParams();
26 44 : params.addClassDescription("Compute a large strain increment for the shell.");
27 44 : return params;
28 0 : }
29 :
30 33 : ADComputeFiniteShellStrain::ADComputeFiniteShellStrain(const InputParameters & parameters)
31 33 : : ADComputeIncrementalShellStrain(parameters), _B_nl()
32 : {
33 33 : _B_nl.resize(_t_points.size());
34 :
35 99 : for (unsigned int i = 0; i < _t_points.size(); ++i)
36 132 : _B_nl[i] = &declareADProperty<DenseMatrix<Real>>("B_nl_t_points_" + std::to_string(i));
37 33 : }
38 :
39 : void
40 224 : ADComputeFiniteShellStrain::initQpStatefulProperties()
41 : {
42 224 : computeGMatrix();
43 :
44 224 : ADDenseMatrix b(5, 20);
45 672 : for (unsigned int t = 0; t < _t_points.size(); ++t)
46 448 : (*_B_nl[t])[_qp] = b;
47 224 : }
48 :
49 : void
50 1155 : ADComputeFiniteShellStrain::computeProperties()
51 : {
52 : // quadrature points in isoparametric space
53 1155 : _2d_points = _qrule->get_points(); // would be in 2D
54 :
55 1155 : unsigned int dim = _current_elem->dim();
56 :
57 : // derivatives of shape functions (dphidxi, dphideta and dphidzeta) evaluated at quadrature points
58 : // (in isoparametric space).
59 1155 : FEType fe_type(Utility::string_to_enum<Order>("First"),
60 1155 : Utility::string_to_enum<FEFamily>("LAGRANGE"));
61 1155 : auto & fe = _fe_problem.assembly(_tid, /*nl_sys_num=*/0).getFE(fe_type, dim);
62 1155 : _dphidxi_map = fe->get_fe_map().get_dphidxi_map();
63 1155 : _dphideta_map = fe->get_fe_map().get_dphideta_map();
64 1155 : _phi_map = fe->get_fe_map().get_phi_map();
65 :
66 5775 : for (unsigned int i = 0; i < 4; ++i)
67 4620 : _nodes[i] = _current_elem->node_ptr(i);
68 :
69 5775 : for (unsigned int i = 0; i < _2d_points.size(); ++i)
70 : {
71 13860 : for (unsigned int j = 0; j < _t_points.size(); ++j)
72 : {
73 9240 : (*_ge[j])[i] = (*_ge_old[j])[i];
74 9240 : (*_J_map[j])[i] = (*_J_map_old[j])[i];
75 : }
76 : }
77 :
78 1155 : computeSolnVector();
79 1155 : updatedxyz();
80 :
81 5775 : for (unsigned int k = 0; k < _nodes.size(); ++k)
82 4620 : _node_normal[k] = _node_normal_old[k];
83 :
84 1155 : computeBMatrix();
85 :
86 1155 : computeNodeNormal();
87 :
88 1155 : computeBNLMatrix();
89 :
90 5775 : for (unsigned int i = 0; i < _2d_points.size(); ++i)
91 : {
92 13860 : for (unsigned int j = 0; j < _t_points.size(); ++j)
93 : {
94 : // compute strain increment in covariant coordinate system using B and _soln_vector
95 55440 : for (unsigned int temp1 = 0; temp1 < 5; ++temp1)
96 : {
97 46200 : _strain_vector(temp1) = 0.0;
98 970200 : for (unsigned int temp2 = 0; temp2 < 20; ++temp2)
99 1848000 : _strain_vector(temp1) += (*_B[j])[i](temp1, temp2) * _soln_vector(temp2);
100 : }
101 :
102 9240 : (*_strain_increment[j])[i](0, 0) = _strain_vector(0);
103 9240 : (*_strain_increment[j])[i](1, 1) = _strain_vector(1);
104 9240 : (*_strain_increment[j])[i](0, 1) = _strain_vector(2);
105 9240 : (*_strain_increment[j])[i](0, 2) = _strain_vector(3);
106 9240 : (*_strain_increment[j])[i](1, 2) = _strain_vector(4);
107 9240 : (*_strain_increment[j])[i](1, 0) = (*_strain_increment[j])[i](0, 1);
108 9240 : (*_strain_increment[j])[i](2, 0) = (*_strain_increment[j])[i](0, 2);
109 9240 : (*_strain_increment[j])[i](2, 1) = (*_strain_increment[j])[i](1, 2);
110 9240 : (*_total_strain[j])[i] = (*_total_strain_old[j])[i] + (*_strain_increment[j])[i];
111 36960 : for (unsigned int ii = 0; ii < 3; ++ii)
112 110880 : for (unsigned int jj = 0; jj < 3; ++jj)
113 83160 : _unrotated_total_strain(ii, jj) = MetaPhysicL::raw_value((*_total_strain[j])[i](ii, jj));
114 9240 : (*_total_global_strain[j])[i] = (*_contravariant_transformation_matrix[j])[i] *
115 9240 : _unrotated_total_strain *
116 9240 : (*_contravariant_transformation_matrix[j])[i].transpose();
117 : }
118 : }
119 1155 : }
120 :
121 : void
122 1155 : ADComputeFiniteShellStrain::computeNodeNormal()
123 : {
124 : // update _node_normal
125 5775 : for (unsigned int k = 0; k < _nodes.size(); ++k)
126 : {
127 4620 : _node_normal[k] =
128 4620 : -_v2[k] * _soln_vector(12 + k) + _v1[k] * _soln_vector(16 + k) + _node_normal_old[k];
129 9240 : _node_normal[k] /= _node_normal[k].norm();
130 : }
131 1155 : }
132 :
133 : void
134 1155 : ADComputeFiniteShellStrain::updatedxyz()
135 : {
136 5775 : for (unsigned int i = 0; i < _2d_points.size(); ++i)
137 : {
138 13860 : for (unsigned int j = 0; j < _t_points.size(); ++j)
139 : {
140 36960 : for (unsigned int component = 0; component < 3; ++component)
141 : {
142 27720 : (*_dxyz_dxi[j])[i](component) = 0.0;
143 27720 : (*_dxyz_deta[j])[i](component) = 0.0;
144 27720 : (*_dxyz_dzeta[j])[i](component) = 0.0;
145 138600 : for (unsigned int k = 0; k < _nodes.size(); ++k)
146 : {
147 110880 : (*_dxyz_dxi[j])[i](component) +=
148 221760 : _dphidxi_map[k][i] *
149 110880 : ((*_nodes[k])(component) + _sol_old(_soln_disp_index[k][component])) +
150 110880 : _t_points[j](0) / 2.0 * _thickness[i] * _dphidxi_map[k][i] *
151 110880 : _node_normal_old[k](component);
152 110880 : (*_dxyz_deta[j])[i](component) +=
153 221760 : _dphideta_map[k][i] *
154 110880 : ((*_nodes[k])(component) + _sol_old(_soln_disp_index[k][component])) +
155 110880 : _t_points[j](0) / 2.0 * _thickness[i] * _dphideta_map[k][i] *
156 110880 : _node_normal_old[k](component);
157 110880 : (*_dxyz_dzeta[j])[i](component) +=
158 110880 : _thickness[i] * _phi_map[k][i] * _node_normal_old[k](component) / 2.0;
159 : }
160 : }
161 : }
162 : }
163 1155 : }
164 :
165 : void
166 9240 : ADComputeFiniteShellStrain::updateGVectors()
167 : {
168 36960 : for (unsigned int component = 0; component < 3; ++component)
169 : {
170 : _g1_a(component) +=
171 27720 : 0.5 * (_sol_old(_soln_disp_index[2][component]) - _sol_old(_soln_disp_index[3][component]));
172 : _g1_c(component) +=
173 27720 : 0.5 * (_sol_old(_soln_disp_index[1][component]) - _sol_old(_soln_disp_index[0][component]));
174 : _g2_b(component) +=
175 27720 : 0.5 * (_sol_old(_soln_disp_index[3][component]) - _sol_old(_soln_disp_index[0][component]));
176 : _g2_d(component) +=
177 27720 : 0.5 * (_sol_old(_soln_disp_index[2][component]) - _sol_old(_soln_disp_index[1][component]));
178 : }
179 9240 : }
180 :
181 : void
182 1155 : ADComputeFiniteShellStrain::computeBNLMatrix()
183 : {
184 : // compute BNL matrix - rows correspond to [ux1, ux2, ux3, ux4, uy1, uy2, uy3, uy4, uz1, uz2, uz3,
185 : // uz4, a1, a2, a3, a4, b1, b2, b3, b4]
186 :
187 5775 : for (unsigned int i = 0; i < _2d_points.size(); ++i)
188 : {
189 13860 : for (unsigned int j = 0; j < _t_points.size(); ++j)
190 : {
191 9240 : (*_B_nl[j])[i].resize(5, 20);
192 9240 : (*_B_nl[j])[i].zero();
193 46200 : for (unsigned int k = 0; k < 4; ++k)
194 : {
195 184800 : for (unsigned int p = 0; p < 4; ++p) // loop over nodes
196 : {
197 : // corresponding to strain(0,0)
198 295680 : (*_B_nl[j])[i](0, k) += _dphidxi_map[k][i] * _dphidxi_map[p][i] *
199 147840 : (_soln_vector(p) + _t_points[j](0) / 2.0 * _thickness[i] *
200 147840 : (-_soln_vector(p + 12) * _v2[p](0) +
201 295680 : _soln_vector(p + 16) * _v1[p](0)));
202 147840 : (*_B_nl[j])[i](0, 4 + k) +=
203 147840 : _dphidxi_map[k][i] * _dphidxi_map[p][i] *
204 147840 : (_soln_vector(p + 4) +
205 147840 : _t_points[j](0) / 2.0 * _thickness[i] *
206 295680 : (-_soln_vector(p + 12) * _v2[p](1) + _soln_vector(p + 16) * _v1[p](1)));
207 147840 : (*_B_nl[j])[i](0, 8 + k) +=
208 147840 : _dphidxi_map[k][i] * _dphidxi_map[p][i] *
209 147840 : (_soln_vector(p + 8) +
210 147840 : _t_points[j](0) / 2.0 * _thickness[i] *
211 295680 : (-_soln_vector(p + 12) * _v2[p](2) + _soln_vector(p + 16) * _v1[p](2)));
212 147840 : (*_B_nl[j])[i](0, 12 + k) +=
213 147840 : _t_points[j](0) / 2.0 * _thickness[i] * _dphidxi_map[k][i] * _dphidxi_map[p][i] *
214 147840 : (-(_v2[p](0) * _soln_vector(p) + _v2[p](1) * _soln_vector(p + 4) +
215 147840 : _v2[p](2) * _soln_vector(p + 8)) +
216 147840 : _t_points[j](0) / 2.0 * _thickness[i] * _v2[k] *
217 295680 : (_v2[p] * _soln_vector(p + 12) - _v1[p] * _soln_vector(p + 16)));
218 147840 : (*_B_nl[j])[i](0, 16 + k) +=
219 147840 : _t_points[j](0) / 2.0 * _thickness[i] * _dphidxi_map[k][i] * _dphidxi_map[p][i] *
220 147840 : ((_v1[p](0) * _soln_vector(p) + _v1[p](1) * _soln_vector(p + 4) +
221 147840 : _v1[p](2) * _soln_vector(p + 8)) +
222 147840 : _t_points[j](0) / 2.0 * _thickness[i] * _v1[k] *
223 295680 : (-_v2[p] * _soln_vector(p + 12) + _v1[p] * _soln_vector(p + 16)));
224 :
225 : // corresponding to strain(1,1)
226 295680 : (*_B_nl[j])[i](1, k) += _dphideta_map[k][i] * _dphideta_map[p][i] *
227 147840 : (_soln_vector(p) + _t_points[j](0) / 2.0 * _thickness[i] *
228 147840 : (-_soln_vector(p + 12) * _v2[p](0) +
229 147840 : _soln_vector(p + 16) * _v1[p](0)));
230 147840 : (*_B_nl[j])[i](1, 4 + k) +=
231 147840 : _dphideta_map[k][i] * _dphideta_map[p][i] *
232 147840 : (_soln_vector(p + 4) +
233 147840 : _t_points[j](0) / 2.0 * _thickness[i] *
234 295680 : (-_soln_vector(p + 12) * _v2[p](1) + _soln_vector(p + 16) * _v1[p](1)));
235 147840 : (*_B_nl[j])[i](1, 8 + k) +=
236 147840 : _dphideta_map[k][i] * _dphideta_map[p][i] *
237 147840 : (_soln_vector(p + 8) +
238 147840 : _t_points[j](0) / 2.0 * _thickness[i] *
239 295680 : (-_soln_vector(p + 12) * _v2[p](2) + _soln_vector(p + 16) * _v1[p](2)));
240 147840 : (*_B_nl[j])[i](1, 12 + k) +=
241 147840 : _t_points[j](0) / 2.0 * _thickness[i] * _dphideta_map[k][i] * _dphideta_map[p][i] *
242 147840 : (-(_v2[p](0) * _soln_vector(p) + _v2[p](1) * _soln_vector(p + 4) +
243 147840 : _v2[p](2) * _soln_vector(p + 8)) +
244 147840 : _t_points[j](0) / 2.0 * _thickness[i] * _v2[k] *
245 295680 : (_v2[p] * _soln_vector(p + 12) - _v1[p] * _soln_vector(p + 16)));
246 147840 : (*_B_nl[j])[i](1, 16 + k) +=
247 147840 : _t_points[j](0) / 2.0 * _thickness[i] * _dphideta_map[k][i] * _dphideta_map[p][i] *
248 147840 : ((_v1[p](0) * _soln_vector(p) + _v1[p](1) * _soln_vector(p + 4) +
249 147840 : _v1[p](2) * _soln_vector(p + 8)) +
250 147840 : _t_points[j](0) / 2.0 * _thickness[i] * _v1[k] *
251 295680 : (-_v2[p] * _soln_vector(p + 12) + _v1[p] * _soln_vector(p + 16)));
252 :
253 : // terms corresponding to strain(2,2) are 0.
254 :
255 : // corresponding to strain(0,1)
256 147840 : (*_B_nl[j])[i](2, k) += 0.5 *
257 147840 : (_dphidxi_map[k][i] * _dphideta_map[p][i] +
258 147840 : _dphideta_map[k][i] * _dphidxi_map[p][i]) *
259 147840 : (_soln_vector(p) + _t_points[j](0) / 2.0 * _thickness[i] *
260 147840 : (-_soln_vector(p + 12) * _v2[p](0) +
261 147840 : _soln_vector(p + 16) * _v1[p](0)));
262 147840 : (*_B_nl[j])[i](2, 4 + k) +=
263 295680 : 0.5 *
264 147840 : (_dphidxi_map[k][i] * _dphideta_map[p][i] +
265 147840 : _dphideta_map[k][i] * _dphidxi_map[p][i]) *
266 147840 : (_soln_vector(p + 4) +
267 147840 : _t_points[j](0) / 2.0 * _thickness[i] *
268 295680 : (-_soln_vector(p + 12) * _v2[p](1) + _soln_vector(p + 16) * _v1[p](1)));
269 147840 : (*_B_nl[j])[i](2, 8 + k) +=
270 295680 : 0.5 *
271 147840 : (_dphidxi_map[k][i] * _dphideta_map[p][i] +
272 147840 : _dphideta_map[k][i] * _dphidxi_map[p][i]) *
273 147840 : (_soln_vector(p + 8) +
274 147840 : _t_points[j](0) / 2.0 * _thickness[i] *
275 295680 : (-_soln_vector(p + 12) * _v2[p](2) + _soln_vector(p + 16) * _v1[p](2)));
276 147840 : (*_B_nl[j])[i](2, 12 + k) +=
277 147840 : _t_points[j](0) * 0.25 *
278 147840 : (_dphidxi_map[k][i] * _dphideta_map[p][i] +
279 295680 : _dphideta_map[k][i] * _dphidxi_map[p][i]) *
280 147840 : _thickness[i] *
281 147840 : (-(_v2[k](0) * _soln_vector(p) + _v2[k](1) * _soln_vector(p + 4) +
282 147840 : _v2[k](2) * _soln_vector(p + 8)) +
283 147840 : _t_points[j](0) / 2.0 * _thickness[i] * _v2[k] *
284 295680 : (_v2[p] * _soln_vector(p + 12) - _v1[p] * _soln_vector(p + 16)));
285 147840 : (*_B_nl[j])[i](2, 16 + k) +=
286 147840 : _t_points[j](0) * 0.25 *
287 147840 : (_dphidxi_map[k][i] * _dphideta_map[p][i] +
288 295680 : _dphideta_map[k][i] * _dphidxi_map[p][i]) *
289 147840 : _thickness[i] *
290 147840 : ((_v1[k](0) * _soln_vector(p) + _v1[k](1) * _soln_vector(p + 4) +
291 147840 : _v1[k](2) * _soln_vector(p + 8)) +
292 147840 : _t_points[j](0) / 2.0 * _thickness[i] * _v1[k] *
293 295680 : (-_v2[p] * _soln_vector(p + 12) + _v1[p] * _soln_vector(p + 16)));
294 : }
295 : }
296 :
297 36960 : for (unsigned int component = 0; component < 3; ++component)
298 : {
299 : // corresponding to strain(0,2)
300 27720 : (*_B_nl[j])[i](3, 2 + component * 4) +=
301 27720 : 1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] *
302 27720 : (-_soln_vector(12 + 2) * _v2[2](component) + _soln_vector(16 + 2) * _v1[2](component) -
303 27720 : _soln_vector(12 + 3) * _v2[3](component) + _soln_vector(16 + 3) * _v1[3](component));
304 27720 : (*_B_nl[j])[i](3, 3 + component * 4) += -(*_B_nl[j])[i](3, 2 + component * 4);
305 :
306 27720 : (*_B_nl[j])[i](3, 1 + component * 4) +=
307 27720 : 1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] *
308 27720 : (-_soln_vector(12 + 1) * _v2[1](component) + _soln_vector(16 + 1) * _v1[1](component) -
309 27720 : _soln_vector(12 + 0) * _v2[0](component) + _soln_vector(16 + 0) * _v1[0](component));
310 27720 : (*_B_nl[j])[i](3, component * 4) += -(*_B_nl[j])[i](3, 1 + component * 4);
311 :
312 : // adding contributions corresponding to alpha 2 and 3 and beta 2 and 3
313 27720 : (*_B_nl[j])[i](3, 12 + 2) +=
314 27720 : -1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] * _v2[2](component) *
315 27720 : (_soln_vector(2 + component * 4) - _soln_vector(3 + component * 4));
316 27720 : (*_B_nl[j])[i](3, 16 + 2) +=
317 27720 : 1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] * _v1[2](component) *
318 27720 : (_soln_vector(2 + component * 4) - _soln_vector(3 + component * 4));
319 27720 : (*_B_nl[j])[i](3, 12 + 3) +=
320 27720 : -1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] * _v2[3](component) *
321 27720 : (_soln_vector(2 + component * 4) - _soln_vector(3 + component * 4));
322 27720 : (*_B_nl[j])[i](3, 16 + 3) +=
323 27720 : 1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] * _v1[3](component) *
324 27720 : (_soln_vector(2 + component * 4) - _soln_vector(3 + component * 4));
325 :
326 : // adding contributions corresponding to alpha 1 and 0 and beta 1 and 0
327 27720 : (*_B_nl[j])[i](3, 12 + 1) +=
328 27720 : -1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] * _v2[1](component) *
329 27720 : (_soln_vector(1 + component * 4) - _soln_vector(component * 4));
330 27720 : (*_B_nl[j])[i](3, 16 + 1) +=
331 27720 : 1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] * _v1[1](component) *
332 27720 : (_soln_vector(1 + component * 4) - _soln_vector(component * 4));
333 27720 : (*_B_nl[j])[i](3, 12 + 0) +=
334 27720 : -1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] * _v2[0](component) *
335 27720 : (_soln_vector(1 + component * 4) - _soln_vector(component * 4));
336 27720 : (*_B_nl[j])[i](3, 16 + 0) +=
337 27720 : 1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] * _v1[0](component) *
338 27720 : (_soln_vector(1 + component * 4) - _soln_vector(component * 4));
339 :
340 : // corresponding to strain(1,2)
341 27720 : (*_B_nl[j])[i](4, 2 + component * 4) +=
342 27720 : 1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] *
343 27720 : (-_soln_vector(12 + 2) * _v2[2](component) + _soln_vector(16 + 2) * _v1[2](component) -
344 27720 : _soln_vector(12 + 1) * _v2[1](component) + _soln_vector(16 + 1) * _v1[1](component));
345 27720 : (*_B_nl[j])[i](4, 1 + component * 4) += -(*_B_nl[j])[i](3, 2 + component * 4);
346 :
347 27720 : (*_B_nl[j])[i](4, 3 + component * 4) +=
348 27720 : 1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] *
349 27720 : (-_soln_vector(12 + 3) * _v2[3](component) + _soln_vector(16 + 3) * _v1[3](component) -
350 27720 : _soln_vector(12 + 0) * _v2[0](component) + _soln_vector(16 + 0) * _v1[0](component));
351 27720 : (*_B_nl[j])[i](4, component * 4) += -(*_B_nl[j])[i](3, 3 + component * 4);
352 :
353 : // adding contributions corresponding to alpha 2, 1 and beta 2 , 1
354 27720 : (*_B_nl[j])[i](4, 12 + 2) +=
355 27720 : -1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] * _v2[2](component) *
356 27720 : (_soln_vector(2 + component * 4) - _soln_vector(1 + component * 4));
357 27720 : (*_B_nl[j])[i](4, 16 + 2) +=
358 27720 : 1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] * _v1[2](component) *
359 27720 : (_soln_vector(2 + component * 4) - _soln_vector(1 + component * 4));
360 27720 : (*_B_nl[j])[i](4, 12 + 1) +=
361 27720 : -1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] * _v2[1](component) *
362 27720 : (_soln_vector(2 + component * 4) - _soln_vector(1 + component * 4));
363 27720 : (*_B_nl[j])[i](4, 16 + 1) +=
364 27720 : 1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] * _v1[1](component) *
365 27720 : (_soln_vector(2 + component * 4) - _soln_vector(1 + component * 4));
366 :
367 : // adding contributions corresponding to alpha 3, 0 and beta 3 , 0
368 27720 : (*_B_nl[j])[i](4, 12 + 3) +=
369 27720 : -1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] * _v2[3](component) *
370 27720 : (_soln_vector(3 + component * 4) - _soln_vector(component * 4));
371 27720 : (*_B_nl[j])[i](4, 16 + 3) +=
372 27720 : 1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] * _v1[3](component) *
373 27720 : (_soln_vector(3 + component * 4) - _soln_vector(component * 4));
374 27720 : (*_B_nl[j])[i](4, 12 + 0) +=
375 27720 : -1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] * _v2[0](component) *
376 27720 : (_soln_vector(3 + component * 4) - _soln_vector(component * 4));
377 27720 : (*_B_nl[j])[i](4, 16 + 0) +=
378 27720 : 1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] * _v1[0](component) *
379 27720 : (_soln_vector(3 + component * 4) - _soln_vector(component * 4));
380 : }
381 : }
382 : }
383 1155 : }
|