https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
14namespace Moose::MFEM
15{
16template <>
18VectorMap::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
24template <>
25MatrixMap::PWData
26MatrixMap::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
33template <>
34void
35VectorMap::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
45template <>
46void
47MatrixMap::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).