LCOV - code coverage report
Current view: top level - src/materials - NEMLThermalExpansionEigenstrain.C (source / functions) Hit Total Coverage
Test: idaholab/blackbear: 75f23c Lines: 25 26 96.2 %
Date: 2025-07-17 04:05:57 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /****************************************************************/
       2             : /*               DO NOT MODIFY THIS HEADER                      */
       3             : /*                       BlackBear                              */
       4             : /*                                                              */
       5             : /*           (c) 2017 Battelle Energy Alliance, LLC             */
       6             : /*                   ALL RIGHTS RESERVED                        */
       7             : /*                                                              */
       8             : /*          Prepared by Battelle Energy Alliance, LLC           */
       9             : /*            Under Contract No. DE-AC07-05ID14517              */
      10             : /*            With the U. S. Department of Energy               */
      11             : /*                                                              */
      12             : /*            See COPYRIGHT for full restrictions               */
      13             : /****************************************************************/
      14             : 
      15             : #ifdef NEML_ENABLED
      16             : 
      17             : #include "NEMLThermalExpansionEigenstrain.h"
      18             : #include "CastDualNumber.h"
      19             : #include <string>
      20             : 
      21             : registerMooseObject("BlackBearApp", NEMLThermalExpansionEigenstrain);
      22             : 
      23             : InputParameters
      24          55 : NEMLThermalExpansionEigenstrain::validParams()
      25             : {
      26          55 :   InputParameters params = ComputeThermalExpansionEigenstrainBase::validParams();
      27          55 :   params.addClassDescription("Use a model in the NEML library to compute thermal expansion");
      28         110 :   params.addRequiredParam<FileName>("database", "Path to NEML XML database.");
      29         110 :   params.addRequiredParam<std::string>("model", "Model name in NEML database.");
      30          55 :   return params;
      31           0 : }
      32             : 
      33          42 : NEMLThermalExpansionEigenstrain::NEMLThermalExpansionEigenstrain(const InputParameters & parameters)
      34             :   : ComputeThermalExpansionEigenstrainBase(parameters),
      35          84 :     _fname(getParam<FileName>("database")),
      36          84 :     _mname(getParam<std::string>("model")),
      37          84 :     _thermal_strain(declareGenericProperty<Real, false>(_base_name + "tstrain")),
      38          84 :     _thermal_strain_old(getMaterialPropertyOld<Real>(_base_name + "tstrain")),
      39         126 :     _temperature_old(coupledValueOld("temperature"))
      40             : {
      41         126 :   _model = neml::parse_xml_unique(_fname, _mname);
      42          42 : }
      43             : 
      44             : ValueAndDerivative<false>
      45         336 : NEMLThermalExpansionEigenstrain::computeThermalStrain()
      46             : {
      47         336 :   Real nemlCTE = _model->alpha(MetaPhysicL::raw_value(_temperature[_qp]));
      48         336 :   Real nemlCTE_old = _model->alpha(_temperature_old[_qp]);
      49             : 
      50             :   const auto thermal_strain =
      51         336 :       _thermal_strain_old[_qp] +
      52         336 :       (nemlCTE + nemlCTE_old) / 2 * (_temperature[_qp] - _temperature_old[_qp]);
      53         336 :   _thermal_strain[_qp] = dual_number_cast<GenericReal<false>>(thermal_strain);
      54             : 
      55         336 :   return thermal_strain;
      56             : }
      57             : 
      58             : void
      59         112 : NEMLThermalExpansionEigenstrain::initQpStatefulProperties()
      60             : {
      61         112 :   ComputeThermalExpansionEigenstrainBase::initQpStatefulProperties();
      62         112 :   _thermal_strain[_qp] = 0.0;
      63         112 : }
      64             : 
      65             : #endif // NEML_ENABLED

Generated by: LCOV version 1.14