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.