LCOV - code coverage report
Current view: top level - src/constraints - ADMortarScalarBase.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 419b9d Lines: 36 39 92.3 %
Date: 2025-08-08 20:01:16 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 "ADMortarScalarBase.h"
      11             : 
      12             : // MOOSE includes
      13             : #include "Assembly.h"
      14             : #include "SystemBase.h"
      15             : #include "MooseVariable.h"
      16             : #include "MooseVariableScalar.h"
      17             : #include "ADUtils.h"
      18             : 
      19             : InputParameters
      20       43049 : ADMortarScalarBase::validParams()
      21             : {
      22       43049 :   InputParameters params = ADMortarConstraint::validParams();
      23             :   // This parameter can get renamed in derived class to a more relevant variable name
      24       43049 :   params.addCoupledVar("scalar_variable", "Primary coupled scalar variable");
      25       43049 :   params.addParam<bool>("compute_scalar_residuals", true, "Whether to compute scalar residuals");
      26       43049 :   return params;
      27           0 : }
      28             : 
      29         128 : ADMortarScalarBase::ADMortarScalarBase(const InputParameters & parameters)
      30             :   : ADMortarConstraint(parameters),
      31         128 :     _use_scalar(isParamValid("scalar_variable") ? true : false),
      32         128 :     _compute_scalar_residuals(!_use_scalar ? false : getParam<bool>("compute_scalar_residuals")),
      33         128 :     _kappa_var_ptr(_use_scalar ? getScalarVar("scalar_variable", 0) : nullptr),
      34         128 :     _kappa_var(_use_scalar ? _kappa_var_ptr->number() : 0),
      35         128 :     _k_order(_use_scalar ? _kappa_var_ptr->order() : 0),
      36         256 :     _kappa(_use_scalar ? _kappa_var_ptr->adSln() : _ad_zero)
      37             : {
      38         128 : }
      39             : 
      40             : void
      41        4088 : ADMortarScalarBase::computeResidual()
      42             : {
      43        4088 :   ADMortarConstraint::computeResidual();
      44             : 
      45        4088 :   if (!_compute_scalar_residuals)
      46           0 :     return;
      47             : 
      48        4088 :   std::vector<Real> scalar_residuals(_k_order);
      49       23952 :   for (_qp = 0; _qp < _qrule_msm->n_points(); _qp++)
      50             :   {
      51       19864 :     initScalarQpResidual();
      52       76152 :     for (_h = 0; _h < _k_order; _h++)
      53       56288 :       scalar_residuals[_h] += _JxW_msm[_qp] * _coord[_qp] * raw_value(computeScalarQpResidual());
      54             :   }
      55        4088 :   addResiduals(
      56        4088 :       _assembly, scalar_residuals, _kappa_var_ptr->dofIndices(), _kappa_var_ptr->scalingFactor());
      57        4088 : }
      58             : 
      59             : void
      60        1960 : ADMortarScalarBase::computeJacobian()
      61             : {
      62             :   // d-_var-residual / d-_var and d-_var-residual / d-jvar
      63        1960 :   ADMortarConstraint::computeJacobian();
      64             : 
      65        1960 :   if (!_compute_scalar_residuals)
      66           0 :     return;
      67             : 
      68        1960 :   std::vector<ADReal> scalar_residuals;
      69        1960 :   scalar_residuals.resize(_k_order, 0);
      70       12808 :   for (_qp = 0; _qp < _qrule_msm->n_points(); _qp++)
      71             :   {
      72       10848 :     initScalarQpResidual();
      73       42336 :     for (_h = 0; _h < _k_order; _h++)
      74       31488 :       scalar_residuals[_h] += _JxW_msm[_qp] * _coord[_qp] * computeScalarQpResidual();
      75             :   }
      76        1960 :   addResidualsAndJacobianWithoutConstraints(
      77        1960 :       _assembly, scalar_residuals, _kappa_var_ptr->dofIndices(), _kappa_var_ptr->scalingFactor());
      78        1960 : }

Generated by: LCOV version 1.14