LCOV - code coverage report
Current view: top level - src/materials - ComputeElasticityTensor.C (source / functions) Hit Total Coverage
Test: idaholab/moose solid_mechanics: f45d79 Lines: 22 23 95.7 %
Date: 2025-07-25 05:00:39 Functions: 6 6 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 "ComputeElasticityTensor.h"
      11             : #include "RotationTensor.h"
      12             : 
      13             : registerMooseObject("SolidMechanicsApp", ComputeElasticityTensor);
      14             : registerMooseObject("SolidMechanicsApp", ADComputeElasticityTensor);
      15             : 
      16             : template <bool is_ad>
      17             : InputParameters
      18       10794 : ComputeElasticityTensorTempl<is_ad>::validParams()
      19             : {
      20       10794 :   InputParameters params = ComputeRotatedElasticityTensorBaseTempl<is_ad>::validParams();
      21       10794 :   params.addClassDescription("Compute an elasticity tensor.");
      22       21588 :   params.addRequiredParam<std::vector<Real>>("C_ijkl", "Stiffness tensor for material");
      23       21588 :   params.addParam<MooseEnum>(
      24       21588 :       "fill_method", RankFourTensor::fillMethodEnum() = "symmetric9", "The fill method");
      25       10794 :   return params;
      26           0 : }
      27             : 
      28             : template <bool is_ad>
      29        8088 : ComputeElasticityTensorTempl<is_ad>::ComputeElasticityTensorTempl(
      30             :     const InputParameters & parameters)
      31             :   : ComputeRotatedElasticityTensorBaseTempl<is_ad>(parameters),
      32       24264 :     _Cijkl(this->template getParam<std::vector<Real>>("C_ijkl"),
      33        8088 :            (RankFourTensor::FillMethod)(int)this->template getParam<MooseEnum>("fill_method"))
      34             : {
      35       16176 :   if (!isParamValid("elasticity_tensor_prefactor"))
      36       16176 :     issueGuarantee(_elasticity_tensor_name, Guarantee::CONSTANT_IN_TIME);
      37             : 
      38        8088 :   if (_Cijkl.isIsotropic())
      39       12072 :     issueGuarantee(_elasticity_tensor_name, Guarantee::ISOTROPIC);
      40             :   else
      41             :   {
      42             :     // Use user-provided rotation matrix if given
      43        4104 :     if (parameters.isParamValid("rotation_matrix"))
      44          92 :       _Cijkl.rotate(_rotation_matrix);
      45             :     else
      46             :     {
      47             :       // Define a rotation according to Euler angle parameters
      48        1960 :       RotationTensor R(_Euler_angles); // R type: RealTensorValue
      49             : 
      50             :       // rotate elasticity tensor
      51        1960 :       _Cijkl.rotate(R);
      52             :     }
      53             :   }
      54        8088 : }
      55             : 
      56             : template <bool is_ad>
      57             : void
      58     8906572 : ComputeElasticityTensorTempl<is_ad>::computeQpElasticityTensor()
      59             : {
      60             :   // Assign elasticity tensor at a given quad point
      61     8906572 :   _elasticity_tensor[_qp] = _Cijkl;
      62     8906572 : }
      63             : 
      64             : template class ComputeElasticityTensorTempl<false>;
      65             : template class ComputeElasticityTensorTempl<true>;

Generated by: LCOV version 1.14