https://mooseframework.inl.gov
CoefficientMap.C
Go to the documentation of this file.
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 "CoefficientMap.h"
13 
14 namespace Moose::MFEM
15 {
16 template <>
18 VectorMap::emptyPWData(std::shared_ptr<mfem::VectorCoefficient> coeff)
19 {
20  return std::make_tuple(this->make<mfem::PWVectorCoefficient>(coeff->GetVDim()),
21  std::map<const std::string, std::shared_ptr<mfem::VectorCoefficient>>());
22 }
23 
24 template <>
25 MatrixMap::PWData
26 MatrixMap::emptyPWData(std::shared_ptr<mfem::MatrixCoefficient> coeff)
27 {
28  return std::make_tuple(
29  this->make<mfem::PWMatrixCoefficient>(coeff->GetHeight(), coeff->GetWidth()),
30  std::map<const std::string, std::shared_ptr<mfem::MatrixCoefficient>>());
31 }
32 
33 template <>
34 void
35 VectorMap::checkPWData(std::shared_ptr<mfem::VectorCoefficient> coeff,
36  std::shared_ptr<mfem::PWVectorCoefficient> existing_pw,
37  const std::string & name)
38 {
39  const int new_dim = coeff->GetVDim(), old_dim = existing_pw->GetVDim();
40  if (new_dim != old_dim)
41  mooseError("Trying to assign vector of dimension " + std::to_string(new_dim) +
42  " to property '" + name + "' with dimension dimension " + std::to_string(old_dim));
43 }
44 
45 template <>
46 void
47 MatrixMap::checkPWData(std::shared_ptr<mfem::MatrixCoefficient> coeff,
48  std::shared_ptr<mfem::PWMatrixCoefficient> existing_pw,
49  const std::string & name)
50 {
51  const int new_height = coeff->GetHeight(), new_width = coeff->GetWidth(),
52  old_height = existing_pw->GetHeight(), old_width = existing_pw->GetWidth();
53  if (new_height != old_height || new_width != old_width)
54  mooseError("Trying to assign matrix with dimensions (" + std::to_string(new_height) + ", " +
55  std::to_string(new_width) + ") to property '" + name + "' with dimensions (" +
56  std::to_string(old_height) + ", " + std::to_string(old_width) + ")");
57 }
58 }
59 
60 #endif
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:311
std::tuple< std::shared_ptr< mfem::PWVectorCoefficient >, std::map< const std::string, std::shared_ptr< mfem::VectorCoefficient > >> PWData
Utilities for converting between vector(s) of libMesh Points and MFEM Vector(s).