LCOV - code coverage report
Current view: top level - src/materials - ADComputeFiniteShellStrain.C (source / functions) Hit Total Coverage
Test: idaholab/moose solid_mechanics: #32971 (54bef8) with base c6cf66 Lines: 261 262 99.6 %
Date: 2026-05-29 20:40:07 Functions: 8 8 100.0 %
Legend: Lines: hit not hit

          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 : }

Generated by: LCOV version 1.14