3 #include "parameters_grid_refinement_study.h" 5 #include "parameters/parameters_manufactured_convergence_study.h" 13 prm.enter_subsection(
"grid refinement study");
18 prm.enter_subsection(
"grid refinement");
22 prm.leave_subsection();
27 prm.enter_subsection(
"grid refinement [" + dealii::Utilities::int_to_string(i,1) +
"]");
31 prm.leave_subsection();
34 prm.declare_entry(
"poly_degree",
"1",
35 dealii::Patterns::Integer(),
36 "Polynomial order of starting mesh.");
38 prm.declare_entry(
"poly_degree_max",
"5",
39 dealii::Patterns::Integer(),
40 "Maximum polynomial order.");
42 prm.declare_entry(
"poly_degree_grid",
"2",
43 dealii::Patterns::Integer(),
44 "Polynomial degree of the grid.");
46 prm.declare_entry(
"num_refinements",
"0",
47 dealii::Patterns::Integer(0, MAX_REFINEMENTS),
48 "Number of different refinements to be performed.");
50 prm.declare_entry(
"grid_type",
"hypercube",
51 dealii::Patterns::Selection(
"hypercube|sinehypercube|read_grid"),
52 "Enum of generated grid. " 53 "If read_grid, must have grids xxxx.msh." 54 "Choices are <hypercube|read_grid>.");
56 prm.declare_entry(
"input_grid",
"xxxx",
57 dealii::Patterns::FileName(dealii::Patterns::FileName::FileType::input),
58 "Name of Gmsh grid xxxx.msh used in the grid refinement study if read_grid is chosen as the grid_type.");
60 prm.declare_entry(
"grid_left",
"0.0",
61 dealii::Patterns::Double(),
62 "for grid_type hypercube, left bound of domain.");
64 prm.declare_entry(
"grid_right",
"1.0",
65 dealii::Patterns::Double(),
66 "for grid_type hypercube, right bound of domain.");
68 prm.declare_entry(
"grid_size",
"4",
69 dealii::Patterns::Integer(),
70 "Initial grid size (number of elements per side).");
72 prm.declare_entry(
"use_interpolation",
"false",
73 dealii::Patterns::Bool(),
74 "Indicates whether to interpolate the problem instead of solving with DG.");
76 prm.declare_entry(
"approximate_functional",
"false",
77 dealii::Patterns::Bool(),
78 "Indicates whether function is to be approximated from manufactured solution" 79 "or exact value read from functional_value parameter.");
81 prm.declare_entry(
"functional_value",
"0.0",
82 dealii::Patterns::Double(),
83 "Exact value of functional for goal-oriented convergence.");
85 prm.declare_entry(
"output_vtk",
"true",
86 dealii::Patterns::Bool(),
87 "Output flag for grid_refinement vtk files.");
89 prm.declare_entry(
"output_adjoint_vtk",
"false",
90 dealii::Patterns::Bool(),
91 "output flag for adjoint vtk files.");
93 prm.declare_entry(
"output_solution_error",
"true",
94 dealii::Patterns::Bool(),
95 "ouput the convergence table for the solution error.");
97 prm.declare_entry(
"output_functional_error",
"false",
98 dealii::Patterns::Bool(),
99 "ouput the convergence table for the functional error.");
101 prm.declare_entry(
"output_gnuplot_solution",
"true",
102 dealii::Patterns::Bool(),
103 "Output flag for gnuplot solution error figure.");
105 prm.declare_entry(
"output_gnuplot_functional",
"false",
106 dealii::Patterns::Bool(),
107 "Output flag for gnuplot functional error figure.");
109 prm.declare_entry(
"refresh_gnuplot",
"true",
110 dealii::Patterns::Bool(),
111 "Indicates whetherto output a new gnuplot figure at every iteration." 112 "Requires output_gnuplot == true.");
114 prm.declare_entry(
"output_solution_time",
"false",
115 dealii::Patterns::Bool(),
116 "Output flag for wall clock solution timing.");
118 prm.declare_entry(
"output_adjoint_time",
"false",
119 dealii::Patterns::Bool(),
120 "Output flag for wall clock adjoint timing.");
122 prm.leave_subsection();
127 prm.enter_subsection(
"grid refinement study");
133 prm.enter_subsection(
"grid refinement");
137 prm.leave_subsection();
144 prm.enter_subsection(
"grid refinement [" + dealii::Utilities::int_to_string(i,1) +
"]");
148 prm.leave_subsection();
155 const std::string grid_string = prm.get(
"grid_type");
157 if(grid_string ==
"hypercube") {
grid_type = GridEnum::hypercube;}
158 else if(grid_string ==
"read_grid") {
grid_type = GridEnum::read_grid;
164 grid_size = prm.get_integer(
"grid_size");
184 prm.leave_subsection();
bool output_gnuplot_functional
Flag to enable output of gnuplot graph of functional error convergence.
bool refresh_gnuplot
Flag to enable gnuplot refresh between iteration runs.
unsigned int poly_degree_grid
Initial grid polynomial degree.
GridEnum grid_type
Grid type selection.
bool use_interpolation
Flag to enable interpolation operation.
void parse_parameters(dealii::ParameterHandler &prm)
Parses input file and sets the variables.
static const unsigned int MAX_REFINEMENTS
Maximum number of different refinement procedures.
void parse_parameters(dealii::ParameterHandler &prm)
Parses input file and sets the variables.
void parse_parameters(dealii::ParameterHandler &prm)
Parses input file and sets the variables.
unsigned int num_refinements
Number of different refinement procedures stored, 0 indicates to use the default pathway.
Files for the baseline physics.
bool output_solution_time
Flag to enable output of grid refinement wall-clock solution time.
ManufacturedSolutionParam manufactured_solution_param
Manufactured solution parameterse to be used with grid refinement study.
std::array< GridRefinementParam, MAX_REFINEMENTS > grid_refinement_param_vector
Array of grid refinement parameters to be run as part of grid refinement study.
unsigned int poly_degree_max
Maximimum allocated solution polynomial degree.
bool approximate_functional
Flag to enable approximation of the functional value on a fine grid before refinement run...
static void declare_parameters(dealii::ParameterHandler &prm)
Declares the possible variables and sets the defaults.
std::string input_grid
Input pathway for GridEnum::read_grid type.
bool output_solution_error
Flag to enable output of grid refinement solution error convergence.
bool output_gnuplot_solution
Flag to enable output of gnuplot graph of solution error convergence.
static void declare_parameters(dealii::ParameterHandler &prm)
Declares the possible variables and sets the defaults.
bool output_vtk
Flag to enable output of grid refinement .vtk file.
FunctionalParam functional_param
Functional parameters to be used with grid refinement study.
double functional_value
Specified exact functional value for comparison of error convergence.
bool output_functional_error
Flag to enable output of grid refinement functional error convergence.
unsigned int grid_size
Number of initial elements in each axis for GridEnum::hypercube type.
static void declare_parameters(dealii::ParameterHandler &prm)
Declares the possible variables and sets the defaults.
double grid_left
Lower coordinate bound for GridEnum::hypercube type.
bool output_adjoint_time
Flag to enable output of grid refinement wall-clock adjoint time.
unsigned int poly_degree
Initial solution polynomial degree.
double grid_right
Upper coordinate bound for GridEnum::hypercube type.
static void declare_parameters(dealii::ParameterHandler &prm)
Declares the possible variables and sets the defaults.
GridEnum
Types of grids that can be used for convergence study.
bool output_adjoint_vtk
Flag to enable output of adjoint .vtk file.