LCOV - code coverage report
Current view: top level - src/materials - ADComputeFiniteShellStrain.C (source / functions) Hit Total Coverage
Test: idaholab/moose solid_mechanics: #31405 (292dce) with base fef103 Lines: 261 262 99.6 %
Date: 2025-09-04 07:57:23 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          80 : ADComputeFiniteShellStrain::validParams()
      24             : {
      25          80 :   InputParameters params = ADComputeIncrementalShellStrain::validParams();
      26          80 :   params.addClassDescription("Compute a large strain increment for the shell.");
      27          80 :   return params;
      28           0 : }
      29             : 
      30          60 : ADComputeFiniteShellStrain::ADComputeFiniteShellStrain(const InputParameters & parameters)
      31          60 :   : ADComputeIncrementalShellStrain(parameters), _B_nl()
      32             : {
      33          60 :   _B_nl.resize(_t_points.size());
      34             : 
      35         180 :   for (unsigned int i = 0; i < _t_points.size(); ++i)
      36         240 :     _B_nl[i] = &declareADProperty<DenseMatrix<Real>>("B_nl_t_points_" + std::to_string(i));
      37          60 : }
      38             : 
      39             : void
      40         400 : ADComputeFiniteShellStrain::initQpStatefulProperties()
      41             : {
      42         400 :   computeGMatrix();
      43             : 
      44         400 :   ADDenseMatrix b(5, 20);
      45        1200 :   for (unsigned int t = 0; t < _t_points.size(); ++t)
      46         800 :     (*_B_nl[t])[_qp] = b;
      47         400 : }
      48             : 
      49             : void
      50        2133 : ADComputeFiniteShellStrain::computeProperties()
      51             : {
      52             :   // quadrature points in isoparametric space
      53        2133 :   _2d_points = _qrule->get_points(); // would be in 2D
      54             : 
      55        2133 :   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        2133 :   FEType fe_type(Utility::string_to_enum<Order>("First"),
      60        2133 :                  Utility::string_to_enum<FEFamily>("LAGRANGE"));
      61        2133 :   auto & fe = _fe_problem.assembly(_tid, /*nl_sys_num=*/0).getFE(fe_type, dim);
      62        2133 :   _dphidxi_map = fe->get_fe_map().get_dphidxi_map();
      63        2133 :   _dphideta_map = fe->get_fe_map().get_dphideta_map();
      64        2133 :   _phi_map = fe->get_fe_map().get_phi_map();
      65             : 
      66       10665 :   for (unsigned int i = 0; i < 4; ++i)
      67        8532 :     _nodes[i] = _current_elem->node_ptr(i);
      68             : 
      69       10665 :   for (unsigned int i = 0; i < _2d_points.size(); ++i)
      70             :   {
      71       25596 :     for (unsigned int j = 0; j < _t_points.size(); ++j)
      72             :     {
      73       17064 :       (*_ge[j])[i] = (*_ge_old[j])[i];
      74       17064 :       (*_J_map[j])[i] = (*_J_map_old[j])[i];
      75             :     }
      76             :   }
      77             : 
      78        2133 :   computeSolnVector();
      79        2133 :   updatedxyz();
      80             : 
      81       10665 :   for (unsigned int k = 0; k < _nodes.size(); ++k)
      82        8532 :     _node_normal[k] = _node_normal_old[k];
      83             : 
      84        2133 :   computeBMatrix();
      85             : 
      86        2133 :   computeNodeNormal();
      87             : 
      88        2133 :   computeBNLMatrix();
      89             : 
      90       10665 :   for (unsigned int i = 0; i < _2d_points.size(); ++i)
      91             :   {
      92       25596 :     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      102384 :       for (unsigned int temp1 = 0; temp1 < 5; ++temp1)
      96             :       {
      97       85320 :         _strain_vector(temp1) = 0.0;
      98     1791720 :         for (unsigned int temp2 = 0; temp2 < 20; ++temp2)
      99     3412800 :           _strain_vector(temp1) += (*_B[j])[i](temp1, temp2) * _soln_vector(temp2);
     100             :       }
     101             : 
     102       17064 :       (*_strain_increment[j])[i](0, 0) = _strain_vector(0);
     103       17064 :       (*_strain_increment[j])[i](1, 1) = _strain_vector(1);
     104       17064 :       (*_strain_increment[j])[i](0, 1) = _strain_vector(2);
     105       17064 :       (*_strain_increment[j])[i](0, 2) = _strain_vector(3);
     106       17064 :       (*_strain_increment[j])[i](1, 2) = _strain_vector(4);
     107       17064 :       (*_strain_increment[j])[i](1, 0) = (*_strain_increment[j])[i](0, 1);
     108       17064 :       (*_strain_increment[j])[i](2, 0) = (*_strain_increment[j])[i](0, 2);
     109       17064 :       (*_strain_increment[j])[i](2, 1) = (*_strain_increment[j])[i](1, 2);
     110       17064 :       (*_total_strain[j])[i] = (*_total_strain_old[j])[i] + (*_strain_increment[j])[i];
     111       68256 :       for (unsigned int ii = 0; ii < 3; ++ii)
     112      204768 :         for (unsigned int jj = 0; jj < 3; ++jj)
     113      153576 :           _unrotated_total_strain(ii, jj) = MetaPhysicL::raw_value((*_total_strain[j])[i](ii, jj));
     114       17064 :       (*_total_global_strain[j])[i] = (*_contravariant_transformation_matrix[j])[i] *
     115       17064 :                                       _unrotated_total_strain *
     116       17064 :                                       (*_contravariant_transformation_matrix[j])[i].transpose();
     117             :     }
     118             :   }
     119        2133 : }
     120             : 
     121             : void
     122        2133 : ADComputeFiniteShellStrain::computeNodeNormal()
     123             : {
     124             :   // update _node_normal
     125       10665 :   for (unsigned int k = 0; k < _nodes.size(); ++k)
     126             :   {
     127        8532 :     _node_normal[k] =
     128        8532 :         -_v2[k] * _soln_vector(12 + k) + _v1[k] * _soln_vector(16 + k) + _node_normal_old[k];
     129       17064 :     _node_normal[k] /= _node_normal[k].norm();
     130             :   }
     131        2133 : }
     132             : 
     133             : void
     134        2133 : ADComputeFiniteShellStrain::updatedxyz()
     135             : {
     136       10665 :   for (unsigned int i = 0; i < _2d_points.size(); ++i)
     137             :   {
     138       25596 :     for (unsigned int j = 0; j < _t_points.size(); ++j)
     139             :     {
     140       68256 :       for (unsigned int component = 0; component < 3; ++component)
     141             :       {
     142       51192 :         (*_dxyz_dxi[j])[i](component) = 0.0;
     143       51192 :         (*_dxyz_deta[j])[i](component) = 0.0;
     144       51192 :         (*_dxyz_dzeta[j])[i](component) = 0.0;
     145      255960 :         for (unsigned int k = 0; k < _nodes.size(); ++k)
     146             :         {
     147      204768 :           (*_dxyz_dxi[j])[i](component) +=
     148      409536 :               _dphidxi_map[k][i] *
     149      204768 :                   ((*_nodes[k])(component) + _sol_old(_soln_disp_index[k][component])) +
     150      204768 :               _t_points[j](0) / 2.0 * _thickness[i] * _dphidxi_map[k][i] *
     151      204768 :                   _node_normal_old[k](component);
     152      204768 :           (*_dxyz_deta[j])[i](component) +=
     153      409536 :               _dphideta_map[k][i] *
     154      204768 :                   ((*_nodes[k])(component) + _sol_old(_soln_disp_index[k][component])) +
     155      204768 :               _t_points[j](0) / 2.0 * _thickness[i] * _dphideta_map[k][i] *
     156      204768 :                   _node_normal_old[k](component);
     157      204768 :           (*_dxyz_dzeta[j])[i](component) +=
     158      204768 :               _thickness[i] * _phi_map[k][i] * _node_normal_old[k](component) / 2.0;
     159             :         }
     160             :       }
     161             :     }
     162             :   }
     163        2133 : }
     164             : 
     165             : void
     166       17064 : ADComputeFiniteShellStrain::updateGVectors()
     167             : {
     168       68256 :   for (unsigned int component = 0; component < 3; ++component)
     169             :   {
     170             :     _g1_a(component) +=
     171       51192 :         0.5 * (_sol_old(_soln_disp_index[2][component]) - _sol_old(_soln_disp_index[3][component]));
     172             :     _g1_c(component) +=
     173       51192 :         0.5 * (_sol_old(_soln_disp_index[1][component]) - _sol_old(_soln_disp_index[0][component]));
     174             :     _g2_b(component) +=
     175       51192 :         0.5 * (_sol_old(_soln_disp_index[3][component]) - _sol_old(_soln_disp_index[0][component]));
     176             :     _g2_d(component) +=
     177       51192 :         0.5 * (_sol_old(_soln_disp_index[2][component]) - _sol_old(_soln_disp_index[1][component]));
     178             :   }
     179       17064 : }
     180             : 
     181             : void
     182        2133 : 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       10665 :   for (unsigned int i = 0; i < _2d_points.size(); ++i)
     188             :   {
     189       25596 :     for (unsigned int j = 0; j < _t_points.size(); ++j)
     190             :     {
     191       17064 :       (*_B_nl[j])[i].resize(5, 20);
     192       17064 :       (*_B_nl[j])[i].zero();
     193       85320 :       for (unsigned int k = 0; k < 4; ++k)
     194             :       {
     195      341280 :         for (unsigned int p = 0; p < 4; ++p) // loop over nodes
     196             :         {
     197             :           // corresponding to strain(0,0)
     198      546048 :           (*_B_nl[j])[i](0, k) += _dphidxi_map[k][i] * _dphidxi_map[p][i] *
     199      273024 :                                   (_soln_vector(p) + _t_points[j](0) / 2.0 * _thickness[i] *
     200      273024 :                                                          (-_soln_vector(p + 12) * _v2[p](0) +
     201      546048 :                                                           _soln_vector(p + 16) * _v1[p](0)));
     202      273024 :           (*_B_nl[j])[i](0, 4 + k) +=
     203      273024 :               _dphidxi_map[k][i] * _dphidxi_map[p][i] *
     204      273024 :               (_soln_vector(p + 4) +
     205      273024 :                _t_points[j](0) / 2.0 * _thickness[i] *
     206      546048 :                    (-_soln_vector(p + 12) * _v2[p](1) + _soln_vector(p + 16) * _v1[p](1)));
     207      273024 :           (*_B_nl[j])[i](0, 8 + k) +=
     208      273024 :               _dphidxi_map[k][i] * _dphidxi_map[p][i] *
     209      273024 :               (_soln_vector(p + 8) +
     210      273024 :                _t_points[j](0) / 2.0 * _thickness[i] *
     211      546048 :                    (-_soln_vector(p + 12) * _v2[p](2) + _soln_vector(p + 16) * _v1[p](2)));
     212      273024 :           (*_B_nl[j])[i](0, 12 + k) +=
     213      273024 :               _t_points[j](0) / 2.0 * _thickness[i] * _dphidxi_map[k][i] * _dphidxi_map[p][i] *
     214      273024 :               (-(_v2[p](0) * _soln_vector(p) + _v2[p](1) * _soln_vector(p + 4) +
     215      273024 :                  _v2[p](2) * _soln_vector(p + 8)) +
     216      273024 :                _t_points[j](0) / 2.0 * _thickness[i] * _v2[k] *
     217      546048 :                    (_v2[p] * _soln_vector(p + 12) - _v1[p] * _soln_vector(p + 16)));
     218      273024 :           (*_B_nl[j])[i](0, 16 + k) +=
     219      273024 :               _t_points[j](0) / 2.0 * _thickness[i] * _dphidxi_map[k][i] * _dphidxi_map[p][i] *
     220      273024 :               ((_v1[p](0) * _soln_vector(p) + _v1[p](1) * _soln_vector(p + 4) +
     221      273024 :                 _v1[p](2) * _soln_vector(p + 8)) +
     222      273024 :                _t_points[j](0) / 2.0 * _thickness[i] * _v1[k] *
     223      546048 :                    (-_v2[p] * _soln_vector(p + 12) + _v1[p] * _soln_vector(p + 16)));
     224             : 
     225             :           // corresponding to strain(1,1)
     226      546048 :           (*_B_nl[j])[i](1, k) += _dphideta_map[k][i] * _dphideta_map[p][i] *
     227      273024 :                                   (_soln_vector(p) + _t_points[j](0) / 2.0 * _thickness[i] *
     228      273024 :                                                          (-_soln_vector(p + 12) * _v2[p](0) +
     229      273024 :                                                           _soln_vector(p + 16) * _v1[p](0)));
     230      273024 :           (*_B_nl[j])[i](1, 4 + k) +=
     231      273024 :               _dphideta_map[k][i] * _dphideta_map[p][i] *
     232      273024 :               (_soln_vector(p + 4) +
     233      273024 :                _t_points[j](0) / 2.0 * _thickness[i] *
     234      546048 :                    (-_soln_vector(p + 12) * _v2[p](1) + _soln_vector(p + 16) * _v1[p](1)));
     235      273024 :           (*_B_nl[j])[i](1, 8 + k) +=
     236      273024 :               _dphideta_map[k][i] * _dphideta_map[p][i] *
     237      273024 :               (_soln_vector(p + 8) +
     238      273024 :                _t_points[j](0) / 2.0 * _thickness[i] *
     239      546048 :                    (-_soln_vector(p + 12) * _v2[p](2) + _soln_vector(p + 16) * _v1[p](2)));
     240      273024 :           (*_B_nl[j])[i](1, 12 + k) +=
     241      273024 :               _t_points[j](0) / 2.0 * _thickness[i] * _dphideta_map[k][i] * _dphideta_map[p][i] *
     242      273024 :               (-(_v2[p](0) * _soln_vector(p) + _v2[p](1) * _soln_vector(p + 4) +
     243      273024 :                  _v2[p](2) * _soln_vector(p + 8)) +
     244      273024 :                _t_points[j](0) / 2.0 * _thickness[i] * _v2[k] *
     245      546048 :                    (_v2[p] * _soln_vector(p + 12) - _v1[p] * _soln_vector(p + 16)));
     246      273024 :           (*_B_nl[j])[i](1, 16 + k) +=
     247      273024 :               _t_points[j](0) / 2.0 * _thickness[i] * _dphideta_map[k][i] * _dphideta_map[p][i] *
     248      273024 :               ((_v1[p](0) * _soln_vector(p) + _v1[p](1) * _soln_vector(p + 4) +
     249      273024 :                 _v1[p](2) * _soln_vector(p + 8)) +
     250      273024 :                _t_points[j](0) / 2.0 * _thickness[i] * _v1[k] *
     251      546048 :                    (-_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      273024 :           (*_B_nl[j])[i](2, k) += 0.5 *
     257      273024 :                                   (_dphidxi_map[k][i] * _dphideta_map[p][i] +
     258      273024 :                                    _dphideta_map[k][i] * _dphidxi_map[p][i]) *
     259      273024 :                                   (_soln_vector(p) + _t_points[j](0) / 2.0 * _thickness[i] *
     260      273024 :                                                          (-_soln_vector(p + 12) * _v2[p](0) +
     261      273024 :                                                           _soln_vector(p + 16) * _v1[p](0)));
     262      273024 :           (*_B_nl[j])[i](2, 4 + k) +=
     263      546048 :               0.5 *
     264      273024 :               (_dphidxi_map[k][i] * _dphideta_map[p][i] +
     265      273024 :                _dphideta_map[k][i] * _dphidxi_map[p][i]) *
     266      273024 :               (_soln_vector(p + 4) +
     267      273024 :                _t_points[j](0) / 2.0 * _thickness[i] *
     268      546048 :                    (-_soln_vector(p + 12) * _v2[p](1) + _soln_vector(p + 16) * _v1[p](1)));
     269      273024 :           (*_B_nl[j])[i](2, 8 + k) +=
     270      546048 :               0.5 *
     271      273024 :               (_dphidxi_map[k][i] * _dphideta_map[p][i] +
     272      273024 :                _dphideta_map[k][i] * _dphidxi_map[p][i]) *
     273      273024 :               (_soln_vector(p + 8) +
     274      273024 :                _t_points[j](0) / 2.0 * _thickness[i] *
     275      546048 :                    (-_soln_vector(p + 12) * _v2[p](2) + _soln_vector(p + 16) * _v1[p](2)));
     276      273024 :           (*_B_nl[j])[i](2, 12 + k) +=
     277      273024 :               _t_points[j](0) * 0.25 *
     278      273024 :               (_dphidxi_map[k][i] * _dphideta_map[p][i] +
     279      546048 :                _dphideta_map[k][i] * _dphidxi_map[p][i]) *
     280      273024 :               _thickness[i] *
     281      273024 :               (-(_v2[k](0) * _soln_vector(p) + _v2[k](1) * _soln_vector(p + 4) +
     282      273024 :                  _v2[k](2) * _soln_vector(p + 8)) +
     283      273024 :                _t_points[j](0) / 2.0 * _thickness[i] * _v2[k] *
     284      546048 :                    (_v2[p] * _soln_vector(p + 12) - _v1[p] * _soln_vector(p + 16)));
     285      273024 :           (*_B_nl[j])[i](2, 16 + k) +=
     286      273024 :               _t_points[j](0) * 0.25 *
     287      273024 :               (_dphidxi_map[k][i] * _dphideta_map[p][i] +
     288      546048 :                _dphideta_map[k][i] * _dphidxi_map[p][i]) *
     289      273024 :               _thickness[i] *
     290      273024 :               ((_v1[k](0) * _soln_vector(p) + _v1[k](1) * _soln_vector(p + 4) +
     291      273024 :                 _v1[k](2) * _soln_vector(p + 8)) +
     292      273024 :                _t_points[j](0) / 2.0 * _thickness[i] * _v1[k] *
     293      546048 :                    (-_v2[p] * _soln_vector(p + 12) + _v1[p] * _soln_vector(p + 16)));
     294             :         }
     295             :       }
     296             : 
     297       68256 :       for (unsigned int component = 0; component < 3; ++component)
     298             :       {
     299             :         // corresponding to strain(0,2)
     300       51192 :         (*_B_nl[j])[i](3, 2 + component * 4) +=
     301       51192 :             1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] *
     302       51192 :             (-_soln_vector(12 + 2) * _v2[2](component) + _soln_vector(16 + 2) * _v1[2](component) -
     303       51192 :              _soln_vector(12 + 3) * _v2[3](component) + _soln_vector(16 + 3) * _v1[3](component));
     304       51192 :         (*_B_nl[j])[i](3, 3 + component * 4) += -(*_B_nl[j])[i](3, 2 + component * 4);
     305             : 
     306       51192 :         (*_B_nl[j])[i](3, 1 + component * 4) +=
     307       51192 :             1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] *
     308       51192 :             (-_soln_vector(12 + 1) * _v2[1](component) + _soln_vector(16 + 1) * _v1[1](component) -
     309       51192 :              _soln_vector(12 + 0) * _v2[0](component) + _soln_vector(16 + 0) * _v1[0](component));
     310       51192 :         (*_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       51192 :         (*_B_nl[j])[i](3, 12 + 2) +=
     314       51192 :             -1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] * _v2[2](component) *
     315       51192 :             (_soln_vector(2 + component * 4) - _soln_vector(3 + component * 4));
     316       51192 :         (*_B_nl[j])[i](3, 16 + 2) +=
     317       51192 :             1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] * _v1[2](component) *
     318       51192 :             (_soln_vector(2 + component * 4) - _soln_vector(3 + component * 4));
     319       51192 :         (*_B_nl[j])[i](3, 12 + 3) +=
     320       51192 :             -1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] * _v2[3](component) *
     321       51192 :             (_soln_vector(2 + component * 4) - _soln_vector(3 + component * 4));
     322       51192 :         (*_B_nl[j])[i](3, 16 + 3) +=
     323       51192 :             1.0 / 32.0 * (1.0 + _2d_points[i](1)) * _thickness[i] * _v1[3](component) *
     324       51192 :             (_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       51192 :         (*_B_nl[j])[i](3, 12 + 1) +=
     328       51192 :             -1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] * _v2[1](component) *
     329       51192 :             (_soln_vector(1 + component * 4) - _soln_vector(component * 4));
     330       51192 :         (*_B_nl[j])[i](3, 16 + 1) +=
     331       51192 :             1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] * _v1[1](component) *
     332       51192 :             (_soln_vector(1 + component * 4) - _soln_vector(component * 4));
     333       51192 :         (*_B_nl[j])[i](3, 12 + 0) +=
     334       51192 :             -1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] * _v2[0](component) *
     335       51192 :             (_soln_vector(1 + component * 4) - _soln_vector(component * 4));
     336       51192 :         (*_B_nl[j])[i](3, 16 + 0) +=
     337       51192 :             1.0 / 32.0 * (1.0 - _2d_points[i](1)) * _thickness[i] * _v1[0](component) *
     338       51192 :             (_soln_vector(1 + component * 4) - _soln_vector(component * 4));
     339             : 
     340             :         // corresponding to strain(1,2)
     341       51192 :         (*_B_nl[j])[i](4, 2 + component * 4) +=
     342       51192 :             1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] *
     343       51192 :             (-_soln_vector(12 + 2) * _v2[2](component) + _soln_vector(16 + 2) * _v1[2](component) -
     344       51192 :              _soln_vector(12 + 1) * _v2[1](component) + _soln_vector(16 + 1) * _v1[1](component));
     345       51192 :         (*_B_nl[j])[i](4, 1 + component * 4) += -(*_B_nl[j])[i](3, 2 + component * 4);
     346             : 
     347       51192 :         (*_B_nl[j])[i](4, 3 + component * 4) +=
     348       51192 :             1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] *
     349       51192 :             (-_soln_vector(12 + 3) * _v2[3](component) + _soln_vector(16 + 3) * _v1[3](component) -
     350       51192 :              _soln_vector(12 + 0) * _v2[0](component) + _soln_vector(16 + 0) * _v1[0](component));
     351       51192 :         (*_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       51192 :         (*_B_nl[j])[i](4, 12 + 2) +=
     355       51192 :             -1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] * _v2[2](component) *
     356       51192 :             (_soln_vector(2 + component * 4) - _soln_vector(1 + component * 4));
     357       51192 :         (*_B_nl[j])[i](4, 16 + 2) +=
     358       51192 :             1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] * _v1[2](component) *
     359       51192 :             (_soln_vector(2 + component * 4) - _soln_vector(1 + component * 4));
     360       51192 :         (*_B_nl[j])[i](4, 12 + 1) +=
     361       51192 :             -1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] * _v2[1](component) *
     362       51192 :             (_soln_vector(2 + component * 4) - _soln_vector(1 + component * 4));
     363       51192 :         (*_B_nl[j])[i](4, 16 + 1) +=
     364       51192 :             1.0 / 32.0 * (1.0 + _2d_points[i](0)) * _thickness[i] * _v1[1](component) *
     365       51192 :             (_soln_vector(2 + component * 4) - _soln_vector(1 + component * 4));
     366             : 
     367             :         // adding contributions corresponding to alpha 3, 0 and beta 3 , 0
     368       51192 :         (*_B_nl[j])[i](4, 12 + 3) +=
     369       51192 :             -1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] * _v2[3](component) *
     370       51192 :             (_soln_vector(3 + component * 4) - _soln_vector(component * 4));
     371       51192 :         (*_B_nl[j])[i](4, 16 + 3) +=
     372       51192 :             1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] * _v1[3](component) *
     373       51192 :             (_soln_vector(3 + component * 4) - _soln_vector(component * 4));
     374       51192 :         (*_B_nl[j])[i](4, 12 + 0) +=
     375       51192 :             -1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] * _v2[0](component) *
     376       51192 :             (_soln_vector(3 + component * 4) - _soln_vector(component * 4));
     377       51192 :         (*_B_nl[j])[i](4, 16 + 0) +=
     378       51192 :             1.0 / 32.0 * (1.0 - _2d_points[i](0)) * _thickness[i] * _v1[0](component) *
     379       51192 :             (_soln_vector(3 + component * 4) - _soln_vector(component * 4));
     380             :       }
     381             :     }
     382             :   }
     383        2133 : }

Generated by: LCOV version 1.14