LCOV - code coverage report
Current view: top level - src/kernels - ACInterfaceKobayashi2.C (source / functions) Hit Total Coverage
Test: idaholab/moose phase_field: #31405 (292dce) with base fef103 Lines: 22 30 73.3 %
Date: 2025-09-04 07:55:36 Functions: 4 5 80.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 "ACInterfaceKobayashi2.h"
      11             : 
      12             : registerMooseObject("PhaseFieldApp", ACInterfaceKobayashi2);
      13             : 
      14             : InputParameters
      15          40 : ACInterfaceKobayashi2::validParams()
      16             : {
      17          40 :   InputParameters params = JvarMapKernelInterface<KernelGrad>::validParams();
      18          40 :   params.addClassDescription("Anisotropic Gradient energy Allen-Cahn Kernel Part 2");
      19          80 :   params.addParam<MaterialPropertyName>("mob_name", "L", "The mobility used with the kernel");
      20          80 :   params.addParam<MaterialPropertyName>("eps_name", "eps", "The anisotropic parameter");
      21          80 :   params.addParam<MaterialPropertyName>(
      22             :       "depsdgrad_op_name",
      23             :       "depsdgrad_op",
      24             :       "The derivative of the anisotropic interface parameter eps with respect to grad_op");
      25          40 :   return params;
      26           0 : }
      27             : 
      28          21 : ACInterfaceKobayashi2::ACInterfaceKobayashi2(const InputParameters & parameters)
      29             :   : DerivativeMaterialInterface<JvarMapKernelInterface<KernelGrad>>(parameters),
      30          21 :     _L(getMaterialProperty<Real>("mob_name")),
      31          21 :     _dLdop(getMaterialPropertyDerivative<Real>("mob_name", _var.name())),
      32          42 :     _eps(getMaterialProperty<Real>("eps_name")),
      33          42 :     _depsdgrad_op(getMaterialProperty<RealGradient>("depsdgrad_op_name")),
      34          21 :     _dLdarg(_n_args),
      35          42 :     _depsdarg(_n_args)
      36             : {
      37             :   // Iterate over all coupled variables
      38          21 :   for (unsigned int i = 0; i < _n_args; ++i)
      39             :   {
      40           0 :     _dLdarg[i] = &getMaterialPropertyDerivative<Real>("mob_name", i);
      41           0 :     _depsdarg[i] = &getMaterialPropertyDerivative<Real>("eps_name", i);
      42             :   }
      43          21 : }
      44             : 
      45             : RealGradient
      46     2449408 : ACInterfaceKobayashi2::precomputeQpResidual()
      47             : {
      48             :   // Set interfacial part of residual
      49     2449408 :   return _eps[_qp] * _eps[_qp] * _L[_qp] * _grad_u[_qp];
      50             : }
      51             : 
      52             : RealGradient
      53     3031040 : ACInterfaceKobayashi2::precomputeQpJacobian()
      54             : {
      55             :   // Calculate depsdop_i
      56     3031040 :   Real depsdop_i = _depsdgrad_op[_qp] * _grad_phi[_j][_qp];
      57             : 
      58             :   // Set Jacobian using product rule
      59     3031040 :   return _L[_qp] *
      60     3031040 :          (_eps[_qp] * _eps[_qp] * _grad_phi[_j][_qp] + 2.0 * _eps[_qp] * depsdop_i * _grad_u[_qp]);
      61             : }
      62             : 
      63             : Real
      64           0 : ACInterfaceKobayashi2::computeQpOffDiagJacobian(unsigned int jvar)
      65             : {
      66             :   // get the coupled variable jvar is referring to
      67             :   const unsigned int cvar = mapJvarToCvar(jvar);
      68             : 
      69             :   // Set off-diagonal jaocbian terms from mobility and epsilon dependence
      70           0 :   Real dsum = _L[_qp] * 2.0 * _eps[_qp] * (*_depsdarg[cvar])[_qp] * _phi[_j][_qp] * _grad_u[_qp] *
      71           0 :               _grad_test[_i][_qp];
      72           0 :   dsum += _eps[_qp] * _eps[_qp] * (*_dLdarg[cvar])[_qp] * _phi[_j][_qp] * _grad_u[_qp] *
      73             :           _grad_test[_i][_qp];
      74             : 
      75           0 :   return dsum;
      76             : }

Generated by: LCOV version 1.14