https://mooseframework.inl.gov
MFEMParaViewDataCollection.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 
13 
15 
18 {
20  params.addClassDescription("Output for controlling export to an mfem::ParaViewDataCollection.");
21  params.addParam<unsigned int>("refinements",
22  0,
23  "Number of uniform refinements for oversampling "
24  "(refinement levels beyond any uniform "
25  "refinements)");
26  params.addParam<bool>("high_order_output",
27  false,
28  "Sets whether or not to output the data as "
29  "high-order elements (false by default)."
30  "Reading high-order data requires ParaView"
31  "5.5 or later.");
32  params.addParam<std::vector<MFEMScalarCoefficientName>>(
33  "scalar_coefficients",
34  {},
35  "Optional set of scalar coefficient names to evaluate and include in output.");
36  params.addParam<std::vector<MFEMVectorCoefficientName>>(
37  "vector_coefficients",
38  {},
39  "Optional set of vector coefficient names to evaluate and include in output.");
40 
41  MooseEnum vtk_format("ASCII BINARY BINARY32", "BINARY", true);
42  params.addParam<MooseEnum>(
43  "vtk_format",
44  vtk_format,
45  "Select VTK data format to use, choosing between BINARY, BINARY32, and ASCII.");
46  return params;
47 }
48 
50  : MFEMDataCollection(parameters),
51  _pv_dc((_file_base + std::string("/Run") + std::to_string(getFileNumber())).c_str(), &_pmesh),
52  _scalar_coefficient_names(
53  getParam<std::vector<MFEMScalarCoefficientName>>("scalar_coefficients")),
54  _vector_coefficient_names(
55  getParam<std::vector<MFEMVectorCoefficientName>>("vector_coefficients")),
56  _high_order_output(getParam<bool>("high_order_output")),
57  _refinements(getParam<unsigned int>("refinements")),
58  _vtk_format(parameters.get<MooseEnum>("vtk_format").getEnum<mfem::VTKFormat>())
59 {
60  _pv_dc.SetPrecision(9);
61  _pv_dc.SetHighOrderOutput(_high_order_output);
62  _pv_dc.SetLevelsOfDetail(_refinements + 1);
63  _pv_dc.SetDataFormat(_vtk_format);
67 }
68 
69 void
71  std::vector<MFEMScalarCoefficientName> & scalar_coefficient_names)
72 {
73  for (const auto & scalar_coefficient_name : scalar_coefficient_names)
74  {
75  std::string coef_name(scalar_coefficient_name + "_coef");
76  _pv_dc.RegisterCoeffField(
77  coef_name, &_problem_data.coefficients.getScalarCoefficient(scalar_coefficient_name));
78  }
79 }
80 
81 void
83  std::vector<MFEMVectorCoefficientName> & vector_coefficient_names)
84 {
85  for (const auto & vector_coefficient_name : vector_coefficient_names)
86  {
87  std::string vec_coef_name(vector_coefficient_name + "_coef");
88  _pv_dc.RegisterVCoeffField(
89  vec_coef_name, &_problem_data.coefficients.getVectorCoefficient(vector_coefficient_name));
90  }
91 }
92 
93 #endif
void registerScalarCoefficients(std::vector< MFEMScalarCoefficientName > &scalar_coefficient_names)
Register user-specified scalar coefficients to the DataCollection.
mfem::VectorCoefficient & getVectorCoefficient(const std::string &name)
Return a vector coefficient with the given name or, if that doesn&#39;t exists, try interpreting the name...
MFEMProblemData & _problem_data
Reference to the MFEMProblemData struct storing the output variables.
Class for output information saved in MFEM DataCollections.
static InputParameters validParams()
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
Moose::MFEM::CoefficientManager coefficients
mfem::ParaViewDataCollection _pv_dc
std::vector< MFEMVectorCoefficientName > _vector_coefficient_names
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:54
void registerVectorCoefficients(std::vector< MFEMVectorCoefficientName > &vector_coefficient_names)
Register user-specified vector coefficients to the DataCollection.
void registerFields()
Register fields (GridFunctions) to be saved in the DataCollection.
std::vector< MFEMScalarCoefficientName > _scalar_coefficient_names
mfem::Coefficient & getScalarCoefficient(const std::string &name)
Return a scalar coefficient with the given name or, if that doesn&#39;t exists, try interpreting the name...
static InputParameters validParams()
Class for output information saved in MFEM ParaViewDataCollections.
void addClassDescription(const std::string &doc_string)
This method adds a description of the class that will be displayed in the input file syntax dump...
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an optional parameter and a documentation string to the InputParameters object...
MFEMParaViewDataCollection(const InputParameters &parameters)
void ErrorVector unsigned int
registerMooseObject("MooseApp", MFEMParaViewDataCollection)
const Elem & get(const ElemType type_in)