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

Generated by: LCOV version 1.14