https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
69void
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
81void
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
registerMooseObject("MooseApp", MFEMParaViewDataCollection)
void ErrorVector unsigned int
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
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.
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.
Class for output information saved in MFEM DataCollections.
void registerFields()
Register fields (GridFunctions) to be saved in the DataCollection.
MFEMProblemData & _problem_data
Reference to the MFEMProblemData struct storing the output variables.
static InputParameters validParams()
Class for output information saved in MFEM ParaViewDataCollections.
void registerVectorCoefficients(std::vector< MFEMVectorCoefficientName > &vector_coefficient_names)
Register user-specified vector coefficients to the DataCollection.
static InputParameters validParams()
std::vector< MFEMScalarCoefficientName > _scalar_coefficient_names
void registerScalarCoefficients(std::vector< MFEMScalarCoefficientName > &scalar_coefficient_names)
Register user-specified scalar coefficients to the DataCollection.
MFEMParaViewDataCollection(const InputParameters &parameters)
std::vector< MFEMVectorCoefficientName > _vector_coefficient_names
mfem::ParaViewDataCollection _pv_dc
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition MooseEnum.h:55
mfem::VectorCoefficient & getVectorCoefficient(const std::string &name)
Return a vector coefficient with the given name or, if that doesn't exists, try interpreting the name...
mfem::Coefficient & getScalarCoefficient(const std::string &name)
Return a scalar coefficient with the given name or, if that doesn't exists, try interpreting the name...
Moose::MFEM::CoefficientManager coefficients