LCOV - code coverage report
Current view: top level - src/mfem/fespaces - MFEMFESpace.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: #31706 (f8ed4a) with base bb0a08 Lines: 31 31 100.0 %
Date: 2025-11-03 17:23:24 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             : #ifdef MOOSE_MFEM_ENABLED
      11             : 
      12             : #include "MFEMFESpace.h"
      13             : #include "MFEMProblem.h"
      14             : 
      15             : InputParameters
      16       29378 : MFEMFESpace::validParams()
      17             : {
      18       29378 :   InputParameters params = MFEMGeneralUserObject::validParams();
      19       58756 :   params.registerBase("MFEMFESpace");
      20      117512 :   MooseEnum ordering("NODES VDIM", "VDIM", false);
      21      117512 :   params.addParam<MooseEnum>("ordering", ordering, "Ordering style to use for vector DoFs.");
      22      117512 :   params.addParam<int>("vdim", 1, "The number of degrees of freedom per basis function.");
      23       88134 :   params.addParam<std::string>("submesh",
      24             :                                "Submesh to define the FESpace on. Leave blank to use base mesh.");
      25       58756 :   return params;
      26       29378 : }
      27             : 
      28         827 : MFEMFESpace::MFEMFESpace(const InputParameters & parameters)
      29             :   : MFEMGeneralUserObject(parameters),
      30         827 :     _ordering(parameters.get<MooseEnum>("ordering")),
      31         827 :     _pmesh(
      32         827 :         parameters.isParamValid("submesh")
      33        1782 :             ? getMFEMProblem().getProblemData().submeshes.GetRef(getParam<std::string>("submesh"))
      34        2353 :             : const_cast<mfem::ParMesh &>(getMFEMProblem().mesh().getMFEMParMesh()))
      35             : {
      36         827 : }
      37             : 
      38             : void
      39         811 : MFEMFESpace::buildFEC(const std::string & fec_name) const
      40             : {
      41         811 :   auto name = fec_name.c_str();
      42             :   // Handle a few cases that were not supported by mfem::FiniteElementCollection::New as of v4.7
      43         811 :   if (!strncmp(name, "RT_R1D", 6))
      44             :   {
      45           2 :     _fec = std::make_shared<mfem::RT_R1D_FECollection>(atoi(name + 11), atoi(name + 7));
      46             :   }
      47         809 :   else if (!strncmp(name, "RT_R2D", 6))
      48             :   {
      49           4 :     _fec = std::make_shared<mfem::RT_R2D_FECollection>(atoi(name + 11), atoi(name + 7));
      50             :   }
      51         805 :   else if (!strncmp(name, "ND_R1D", 6))
      52             :   {
      53           4 :     _fec = std::make_shared<mfem::ND_R1D_FECollection>(atoi(name + 11), atoi(name + 7));
      54             :   }
      55         801 :   else if (!strncmp(name, "ND_R2D", 6))
      56             :   {
      57           2 :     _fec = std::make_shared<mfem::ND_R2D_FECollection>(atoi(name + 11), atoi(name + 7));
      58             :   }
      59             :   else
      60             :   {
      61         799 :     _fec = std::shared_ptr<mfem::FiniteElementCollection>(mfem::FiniteElementCollection::New(name));
      62             :   }
      63         811 : }
      64             : 
      65             : void
      66         827 : MFEMFESpace::buildFESpace(const int vdim) const
      67             : {
      68             :   _fespace =
      69         827 :       std::make_shared<mfem::ParFiniteElementSpace>(&_pmesh, getFEC().get(), vdim, _ordering);
      70         811 : }
      71             : 
      72             : #endif

Generated by: LCOV version 1.14