LCOV - code coverage report
Current view: top level - src/mfem/integrators - NLCurlCurlIntegrator.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: fa5e60 Lines: 30 36 83.3 %
Date: 2026-06-24 08:03:36 Functions: 5 6 83.3 %
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             : 
      11             : #ifdef MOOSE_MFEM_ENABLED
      12             : 
      13             : #include "NLCurlCurlIntegrator.h"
      14             : 
      15             : namespace Moose::MFEM
      16             : {
      17          26 : NLCurlCurlJacMatrixCoefficient::NLCurlCurlJacMatrixCoefficient(mfem::Coefficient & k,
      18             :                                                                mfem::Coefficient & curlu_dk_dcurlu,
      19             :                                                                mfem::VectorCoefficient & curlu_vec,
      20          26 :                                                                mfem::real_t curlu_zero_tol)
      21             :   : mfem::MatrixCoefficient(curlu_vec.GetVDim()),
      22          26 :     _k_coef(k),
      23          26 :     _curlu_dk_dcurlu_coef(curlu_dk_dcurlu),
      24          26 :     _curlu_zero_tol(curlu_zero_tol),
      25          26 :     _curlu_hat_coef(curlu_vec, _curlu_zero_tol)
      26             : {
      27          26 : }
      28             : 
      29             : void
      30           0 : NLCurlCurlJacMatrixCoefficient::SetTime(mfem::real_t t)
      31             : {
      32           0 :   MatrixCoefficient::SetTime(t);
      33           0 :   _k_coef.SetTime(t);
      34           0 :   _curlu_dk_dcurlu_coef.SetTime(t);
      35           0 :   _curlu_hat_coef.SetTime(t);
      36           0 : }
      37             : 
      38             : void
      39     3063924 : NLCurlCurlJacMatrixCoefficient::Eval(mfem::DenseMatrix & K,
      40             :                                      mfem::ElementTransformation & T,
      41             :                                      const mfem::IntegrationPoint & ip)
      42             : {
      43     3063924 :   const int dim = GetHeight();
      44     3063924 :   mfem::Vector curlu_hat(dim);
      45             : 
      46     3063924 :   _curlu_hat_coef.Eval(curlu_hat, T, ip);
      47     3063924 :   const mfem::real_t k = _k_coef.Eval(T, ip);
      48     3063924 :   const mfem::real_t curlu_dk_dcurlu = _curlu_dk_dcurlu_coef.Eval(T, ip);
      49             : 
      50     3063924 :   K.Diag(k, dim);
      51    12255696 :   for (int i = 0; i < dim; ++i)
      52    36767088 :     for (int j = 0; j < dim; ++j)
      53    27575316 :       K(i, j) += curlu_dk_dcurlu * curlu_hat(i) * curlu_hat(j);
      54     3063924 : }
      55             : 
      56          26 : NLCurlCurlIntegrator::NLCurlCurlIntegrator(mfem::Coefficient & k,
      57             :                                            mfem::Coefficient & curlu_dk_dcurlu,
      58             :                                            mfem::VectorCoefficient & curlu_vec,
      59             :                                            mfem::real_t curlu_zero_tol,
      60          26 :                                            const mfem::IntegrationRule * ir)
      61          26 :   : _curlcurl_res_integ(k, ir),
      62          26 :     _curlcurl_jac_matrix_coef(k, curlu_dk_dcurlu, curlu_vec, curlu_zero_tol),
      63          52 :     _curlcurl_jac_integ(_curlcurl_jac_matrix_coef, ir)
      64             : {
      65          26 : }
      66             : 
      67             : void
      68     3459260 : NLCurlCurlIntegrator::AssembleElementVector(const mfem::FiniteElement & el,
      69             :                                             mfem::ElementTransformation & Tr,
      70             :                                             const mfem::Vector & elfun,
      71             :                                             mfem::Vector & elvect)
      72             : {
      73     3459260 :   _curlcurl_res_integ.AssembleElementVector(el, Tr, elfun, elvect);
      74     3459260 : }
      75             : 
      76             : void
      77     3063918 : NLCurlCurlIntegrator::AssembleElementGrad(const mfem::FiniteElement & el,
      78             :                                           mfem::ElementTransformation & Tr,
      79             :                                           const mfem::Vector & elfun,
      80             :                                           mfem::DenseMatrix & elmat)
      81             : {
      82     3063918 :   _curlcurl_jac_integ.AssembleElementGrad(el, Tr, elfun, elmat);
      83     3063918 : }
      84             : }
      85             : 
      86             : #endif

Generated by: LCOV version 1.14