LCOV - code coverage report
Current view: top level - src/postprocessors - GrainTrackerElasticity.C (source / functions) Hit Total Coverage
Test: idaholab/moose phase_field: #31405 (292dce) with base fef103 Lines: 0 26 0.0 %
Date: 2025-09-04 07:55:36 Functions: 0 3 0.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 "GrainTrackerElasticity.h"
      11             : #include "EulerAngleProvider.h"
      12             : #include "RotationTensor.h"
      13             : 
      14             : registerMooseObject("PhaseFieldApp", GrainTrackerElasticity);
      15             : 
      16             : InputParameters
      17           0 : GrainTrackerElasticity::validParams()
      18             : {
      19           0 :   InputParameters params = GrainTracker::validParams();
      20           0 :   params.addParam<bool>("random_rotations",
      21           0 :                         true,
      22             :                         "Generate random rotations when the Euler Angle "
      23             :                         "provider runs out of data (otherwise error "
      24             :                         "out)");
      25           0 :   params.addRequiredParam<std::vector<Real>>("C_ijkl", "Unrotated stiffness tensor");
      26           0 :   params.addParam<MooseEnum>(
      27           0 :       "fill_method", RankFourTensor::fillMethodEnum() = "symmetric9", "The fill method");
      28           0 :   params.addRequiredParam<UserObjectName>("euler_angle_provider",
      29             :                                           "Name of Euler angle provider user object");
      30           0 :   return params;
      31           0 : }
      32             : 
      33           0 : GrainTrackerElasticity::GrainTrackerElasticity(const InputParameters & parameters)
      34             :   : GrainDataTracker<RankFourTensor>(parameters),
      35           0 :     _random_rotations(getParam<bool>("random_rotations")),
      36           0 :     _C_ijkl(getParam<std::vector<Real>>("C_ijkl"),
      37           0 :             getParam<MooseEnum>("fill_method").getEnum<RankFourTensor::FillMethod>()),
      38           0 :     _euler(getUserObject<EulerAngleProvider>("euler_angle_provider"))
      39             : {
      40           0 : }
      41             : 
      42             : RankFourTensor
      43           0 : GrainTrackerElasticity::newGrain(unsigned int new_grain_id)
      44             : {
      45           0 :   EulerAngles angles;
      46             : 
      47           0 :   if (new_grain_id < _euler.getGrainNum())
      48           0 :     angles = _euler.getEulerAngles(new_grain_id);
      49             :   else
      50             :   {
      51           0 :     if (_random_rotations)
      52           0 :       angles.random();
      53             :     else
      54           0 :       mooseError("GrainTrackerElasticity has run out of grain rotation data.");
      55             :   }
      56             : 
      57           0 :   RankFourTensor C_ijkl = _C_ijkl;
      58           0 :   C_ijkl.rotate(RotationTensor(RealVectorValue(angles)));
      59             : 
      60           0 :   return C_ijkl;
      61             : }

Generated by: LCOV version 1.14