LCOV - code coverage report
Current view: top level - src/kernels - ACGBPoly.C (source / functions) Hit Total Coverage
Test: idaholab/moose phase_field: #31405 (292dce) with base fef103 Lines: 28 33 84.8 %
Date: 2025-09-04 07:55:36 Functions: 4 4 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 "ACGBPoly.h"
      11             : #include "Material.h"
      12             : 
      13             : registerMooseObject("PhaseFieldApp", ACGBPoly);
      14             : 
      15             : InputParameters
      16         276 : ACGBPoly::validParams()
      17             : {
      18         276 :   InputParameters params = ACBulk<Real>::validParams();
      19         276 :   params.addClassDescription("Grain-Boundary model concentration dependent residual");
      20         552 :   params.addRequiredCoupledVar("c", "Other species concentration");
      21         552 :   params.addParam<Real>("en_ratio", 1.0, "Ratio of surface energy to GB energy");
      22         276 :   return params;
      23           0 : }
      24             : 
      25         144 : ACGBPoly::ACGBPoly(const InputParameters & parameters)
      26             :   : ACBulk<Real>(parameters),
      27         144 :     _c(coupledValue("c")),
      28         144 :     _c_var(coupled("c")),
      29         288 :     _mu(getMaterialProperty<Real>("mu")),
      30         288 :     _gamma(getMaterialProperty<Real>("gamma_asymm")),
      31         432 :     _en_ratio(getParam<Real>("en_ratio"))
      32             : {
      33         144 : }
      34             : 
      35             : Real
      36    37586384 : ACGBPoly::computeDFDOP(PFFunctionType type)
      37             : {
      38    37586384 :   Real mult = 2.0 * _en_ratio * _mu[_qp] * _gamma[_qp];
      39             : 
      40    37586384 :   Real c = _c[_qp];
      41    37586384 :   if (c < 1.0e-8)
      42             :     c = 0.0;
      43     3839248 :   if (c > 1.0)
      44             :     c = 1.0;
      45             : 
      46    37586384 :   switch (type)
      47             :   {
      48    23662864 :     case Residual:
      49    23662864 :       return mult * _u[_qp] * c * c;
      50             : 
      51    13923520 :     case Jacobian:
      52    13923520 :       return mult * _phi[_j][_qp] * c * c;
      53             :   }
      54             : 
      55           0 :   mooseError("Invalid type passed in");
      56             : }
      57             : 
      58             : Real
      59    17779584 : ACGBPoly::computeQpOffDiagJacobian(unsigned int jvar)
      60             : {
      61    17779584 :   Real c = _c[_qp];
      62    17779584 :   if (c < 1.0e-8)
      63             :     c = 0.0;
      64     1110912 :   if (c > 1.0)
      65             :     c = 1.0;
      66             : 
      67    17779584 :   if (jvar == _c_var)
      68             :   {
      69           0 :     Real mult = 2.0 * _en_ratio * _mu[_qp] * _gamma[_qp];
      70           0 :     Real dDFDOP = 2.0 * mult * _u[_qp] * c * _phi[_j][_qp];
      71             : 
      72           0 :     return _L[_qp] * _test[_i][_qp] * dDFDOP;
      73             :   }
      74             : 
      75             :   return 0.0;
      76             : }

Generated by: LCOV version 1.14