LCOV - code coverage report
Current view: top level - src/mfem/kernels - MFEMLinearElasticityKernel.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 419b9d Lines: 11 12 91.7 %
Date: 2025-08-08 20:01:16 Functions: 3 3 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 "MFEMLinearElasticityKernel.h"
      13             : #include "MFEMProblem.h"
      14             : 
      15             : registerMooseObject("MooseApp", MFEMLinearElasticityKernel);
      16             : 
      17             : InputParameters
      18        8658 : MFEMLinearElasticityKernel::validParams()
      19             : {
      20        8658 :   InputParameters params = MFEMKernel::validParams();
      21        8658 :   params.addClassDescription(
      22             :       "The isotropic linear elasticity operator with weak form "
      23             :       "$(c_{ikjl} \\nabla u_j, \\nabla v_i)$, to be added to an MFEM problem, where "
      24             :       "$c_{ikjl}$ is the isotropic elasticity tensor, "
      25             :       "$c_{ikjl} = \\lambda \\delta_{ik} \\delta_{jl} + \\mu \\left( \\delta_{ij} \\delta_{kl} + "
      26             :       "\\delta_{il} \\delta_{jk} \\right)$, "
      27             :       "$\\lambda$ is the first Lame parameter, $\\lambda = \\frac{E\\nu}{(1-2\\nu)(1+\\nu)}$, "
      28             :       "$\\mu$ is the second Lame parameter, $\\mu = \\frac{E}{2(1+\\nu)}$, "
      29             :       "where $E$ is Young's modulus and $\\nu$ is Poisson's ratio.");
      30             : 
      31        8658 :   params.addParam<MFEMScalarCoefficientName>(
      32             :       "lambda", "1.", "Name of MFEM Lame constant lambda to multiply the div(u)*I term by");
      33        8658 :   params.addParam<MFEMScalarCoefficientName>(
      34             :       "mu", "1.", "Name of MFEM Lame constant mu to multiply the gradients term by");
      35             : 
      36        8658 :   return params;
      37           0 : }
      38             : 
      39          14 : MFEMLinearElasticityKernel::MFEMLinearElasticityKernel(const InputParameters & parameters)
      40          14 :   : MFEMKernel(parameters), _lambda(getScalarCoefficient("lambda")), _mu(getScalarCoefficient("mu"))
      41             : {
      42          14 : }
      43             : 
      44             : mfem::BilinearFormIntegrator *
      45          14 : MFEMLinearElasticityKernel::createBFIntegrator()
      46             : {
      47          14 :   return new mfem::ElasticityIntegrator(_lambda, _mu);
      48             : }
      49             : 
      50             : #endif

Generated by: LCOV version 1.14