libMesh
femparameters.h
Go to the documentation of this file.
1 
2 #ifndef FEMPARAMETERS_H
3 #define FEMPARAMETERS_H
4 
5 #include "libmesh/libmesh_common.h"
6 #include "libmesh/dof_map.h"
7 #include "libmesh/enum_norm_type.h"
8 #include "libmesh/function_base.h"
9 #include "libmesh/getpot.h"
10 #include "libmesh/id_types.h"
11 #include "libmesh/parallel_object.h"
12 #include "libmesh/periodic_boundaries.h"
13 #include "libmesh/periodic_boundary.h"
14 
15 #include <limits>
16 #include <map>
17 #include <string>
18 #include <vector>
19 
20 
21 
23 {
24 public:
25  FEMParameters(const libMesh::Parallel::Communicator & comm_in);
26 
28 
29  void read(GetPot & input,
30  const std::vector<std::string> * other_variable_names = nullptr);
31 
32  // Parameters applicable to entire EquationSystems:
33 
34  unsigned int initial_timestep, n_timesteps;
35  bool transient;
36  unsigned int deltat_reductions;
37  std::string timesolver_core;
41  std::vector<libMesh::FEMNormType> timesolver_norm;
42 
43  // Mesh generation
44 
45  unsigned int dimension;
46  std::string domaintype, domainfile, elementtype;
50  unsigned int coarsegridx, coarsegridy, coarsegridz;
51  unsigned int coarserefinements, extrarefinements;
52  std::string mesh_redistribute_func;
53 
54  // Mesh partitioning
55  std::string mesh_partitioner_type;
56 
57  // Mesh refinement
58 
59  unsigned int nelem_target;
62  unsigned int max_adaptivesteps;
63  unsigned int initial_adaptivesteps;
64 
65  // Output
66 
67  unsigned int write_interval;
74 
75  // Types of Systems to create
76 
77  std::vector<std::string> system_types;
78 
79  // Parameters applicable to each system:
80 
81  // Boundary and initial conditions
82 
83 #ifdef LIBMESH_ENABLE_PERIODIC
84  std::vector<libMesh::PeriodicBoundary> periodic_boundaries;
85 #endif
86 
87  std::map<libMesh::subdomain_id_type, libMesh::FunctionBase<libMesh::Number> *>
89  std::map<libMesh::boundary_id_type, libMesh::FunctionBase<libMesh::Number> *>
92  std::map<libMesh::boundary_id_type, std::vector<unsigned int>>
95  std::map<int, std::map<libMesh::subdomain_id_type,
98  std::map<int, std::map<libMesh::boundary_id_type,
101 
102  // Execution type
103 
105 
106  // Approximation type
107 
108  std::vector<std::string> fe_family;
109  std::vector<unsigned int> fe_order;
111 
112  // Assembly options
113 
114  bool analytic_jacobians;
117 
124 
125  // Solver options
126 
127  bool use_petsc_snes;
136 
137  // Initialization
138 
139  unsigned int initial_sobolev_order;
140  unsigned int initial_extra_quadrature;
141 
142  // Error indicators
143 
144  bool refine_uniformly;
145  std::string indicator_type;
146  bool patch_reuse;
147  unsigned int sobolev_order;
148 
149  // System-specific parameters file
150 
151  std::string system_config_file;
152 };
153 
154 #endif // FEMPARAMETERS_H
FEMParameters::reuse_preconditioner
bool reuse_preconditioner
Definition: femparameters.h:128
FEMParameters::use_petsc_snes
bool use_petsc_snes
Definition: femparameters.h:127
FEMParameters::print_jacobians
bool print_jacobians
Definition: femparameters.h:118
FEMParameters::timesolver_norm
std::vector< libMesh::FEMNormType > timesolver_norm
Definition: femparameters.h:41
FEMParameters::dirichlet_conditions
std::map< libMesh::boundary_id_type, libMesh::FunctionBase< libMesh::Number > * > dirichlet_conditions
Definition: femparameters.h:90
libMesh::subdomain_id_type
TestClass subdomain_id_type
Based on the 4-byte comment warning above, this probably doesn't work with exodusII at all....
Definition: id_types.h:43
libMesh::FunctionBase
Base class for functors that can be evaluated at a point and (optionally) time.
Definition: dirichlet_boundaries.h:44
FEMParameters::domain_edge_length
libMesh::Real domain_edge_length
Definition: femparameters.h:49
FEMParameters::n_timesteps
unsigned int n_timesteps
Definition: femparameters.h:34
FEMParameters::domain_xmin
libMesh::Real domain_xmin
Definition: femparameters.h:48
FEMParameters::system_config_file
std::string system_config_file
Definition: femparameters.h:151
FEMParameters::coarsen_fraction
libMesh::Real coarsen_fraction
Definition: femparameters.h:61
FEMParameters::steadystate_tolerance
libMesh::Real steadystate_tolerance
Definition: femparameters.h:38
FEMParameters::domain_ymin
libMesh::Real domain_ymin
Definition: femparameters.h:48
FEMParameters::max_nonlinear_iterations
unsigned int max_nonlinear_iterations
Definition: femparameters.h:131
FEMParameters::output_xda
bool output_xda
Definition: femparameters.h:68
FEMParameters::print_residuals
bool print_residuals
Definition: femparameters.h:118
FEMParameters::end_time
libMesh::Real end_time
Definition: femparameters.h:38
FEMParameters::print_solution_norms
bool print_solution_norms
Definition: femparameters.h:118
FEMParameters::print_residual_norms
bool print_residual_norms
Definition: femparameters.h:118
FEMParameters::initial_adaptivesteps
unsigned int initial_adaptivesteps
Definition: femparameters.h:63
FEMParameters::timesolver_maxgrowth
libMesh::Real timesolver_maxgrowth
Definition: femparameters.h:38
FEMParameters::dimension
unsigned int dimension
Definition: femparameters.h:45
FEMParameters::coarserefinements
unsigned int coarserefinements
Definition: femparameters.h:51
FEMParameters::timesolver_tolerance
libMesh::Real timesolver_tolerance
Definition: femparameters.h:38
FEMParameters::mesh_partitioner_type
std::string mesh_partitioner_type
Definition: femparameters.h:55
FEMParameters::sobolev_order
unsigned int sobolev_order
Definition: femparameters.h:147
FEMParameters::output_gmv
bool output_gmv
Definition: femparameters.h:68
FEMParameters::refine_fraction
libMesh::Real refine_fraction
Definition: femparameters.h:61
FEMParameters::elementorder
libMesh::Real elementorder
Definition: femparameters.h:47
FEMParameters::run_postprocess
bool run_postprocess
Definition: femparameters.h:104
FEMParameters::output_exodus
bool output_exodus
Definition: femparameters.h:68
FEMParameters::initial_linear_tolerance
double initial_linear_tolerance
Definition: femparameters.h:134
FEMParameters::fe_order
std::vector< unsigned int > fe_order
Definition: femparameters.h:109
libMesh::boundary_id_type
int8_t boundary_id_type
Definition: id_types.h:51
FEMParameters::timesolver_core
std::string timesolver_core
Definition: femparameters.h:37
FEMParameters::solver_quiet
bool solver_quiet
Definition: femparameters.h:128
FEMParameters::write_gmv_error
bool write_gmv_error
Definition: femparameters.h:68
FEMParameters::require_residual_reduction
bool require_residual_reduction
Definition: femparameters.h:128
FEMParameters::coarsen_threshold
libMesh::Real coarsen_threshold
Definition: femparameters.h:61
FEMParameters::run_simulation
bool run_simulation
Definition: femparameters.h:104
FEMParameters::max_linear_iterations
unsigned int max_linear_iterations
Definition: femparameters.h:131
FEMParameters::domain_zmin
libMesh::Real domain_zmin
Definition: femparameters.h:48
FEMParameters::neumann_conditions
std::map< libMesh::boundary_id_type, libMesh::FunctionBase< libMesh::Number > * > neumann_conditions
Definition: femparameters.h:90
FEMParameters::indicator_type
std::string indicator_type
Definition: femparameters.h:145
FEMParameters::refine_uniformly
bool refine_uniformly
Definition: femparameters.h:144
FEMParameters::periodic_boundaries
std::vector< libMesh::PeriodicBoundary > periodic_boundaries
Definition: femparameters.h:84
FEMParameters::print_solutions
bool print_solutions
Definition: femparameters.h:118
FEMParameters::fe_family
std::vector< std::string > fe_family
Definition: femparameters.h:108
FEMParameters::solver_verbose
bool solver_verbose
Definition: femparameters.h:128
FEMParameters::domainfile
std::string domainfile
Definition: femparameters.h:46
FEMParameters::max_adaptivesteps
unsigned int max_adaptivesteps
Definition: femparameters.h:62
FEMParameters::output_bz2
bool output_bz2
Definition: femparameters.h:68
FEMParameters::extrarefinements
unsigned int extrarefinements
Definition: femparameters.h:51
FEMParameters::initial_extra_quadrature
unsigned int initial_extra_quadrature
Definition: femparameters.h:140
FEMParameters::mesh_redistribute_func
std::string mesh_redistribute_func
Definition: femparameters.h:52
FEMParameters::output_xdr
bool output_xdr
Definition: femparameters.h:68
FEMParameters::print_element_jacobians
bool print_element_jacobians
Definition: femparameters.h:118
FEMParameters::coarsegridy
unsigned int coarsegridy
Definition: femparameters.h:50
FEMParameters::absolute_residual_tolerance
libMesh::Real absolute_residual_tolerance
Definition: femparameters.h:132
FEMParameters::output_nemesis
bool output_nemesis
Definition: femparameters.h:68
FEMParameters::relative_residual_tolerance
libMesh::Real relative_residual_tolerance
Definition: femparameters.h:132
FEMParameters::write_exodus_error
bool write_exodus_error
Definition: femparameters.h:68
FEMParameters::relative_step_tolerance
libMesh::Real relative_step_tolerance
Definition: femparameters.h:132
FEMParameters::minimum_linear_tolerance
double minimum_linear_tolerance
Definition: femparameters.h:134
FEMParameters::other_interior_functions
std::map< int, std::map< libMesh::subdomain_id_type, libMesh::FunctionBase< libMesh::Number > * > > other_interior_functions
Definition: femparameters.h:97
FEMParameters::print_element_solutions
bool print_element_solutions
Definition: femparameters.h:118
FEMParameters::domain_edge_height
libMesh::Real domain_edge_height
Definition: femparameters.h:49
FEMParameters::write_interval
unsigned int write_interval
Definition: femparameters.h:67
FEMParameters::other_boundary_functions
std::map< int, std::map< libMesh::boundary_id_type, libMesh::FunctionBase< libMesh::Number > * > > other_boundary_functions
Definition: femparameters.h:100
FEMParameters::timesolver_theta
libMesh::Real timesolver_theta
Definition: femparameters.h:38
FEMParameters::global_tolerance
libMesh::Real global_tolerance
Definition: femparameters.h:60
FEMParameters::elementtype
std::string elementtype
Definition: femparameters.h:46
FEMParameters::min_step_length
libMesh::Real min_step_length
Definition: femparameters.h:130
FEMParameters::read
void read(GetPot &input, const std::vector< std::string > *other_variable_names=nullptr)
Definition: femparameters.C:154
FEMParameters::extra_quadrature_order
int extra_quadrature_order
Definition: femparameters.h:110
FEMParameters::patch_reuse
bool patch_reuse
Definition: femparameters.h:146
FEMParameters::coarsegridz
unsigned int coarsegridz
Definition: femparameters.h:50
FEMParameters::~FEMParameters
~FEMParameters()
Definition: femparameters.C:101
FEMParameters::deltat
libMesh::Real deltat
Definition: femparameters.h:38
FEMParameters::initial_conditions
std::map< libMesh::subdomain_id_type, libMesh::FunctionBase< libMesh::Number > * > initial_conditions
Definition: femparameters.h:88
FEMParameters::numerical_jacobian_h
libMesh::Real numerical_jacobian_h
Definition: femparameters.h:116
FEMParameters::initial_sobolev_order
unsigned int initial_sobolev_order
Definition: femparameters.h:139
FEMParameters::domaintype
std::string domaintype
Definition: femparameters.h:46
FEMParameters::analytic_jacobians
bool analytic_jacobians
Definition: femparameters.h:114
FEMParameters::coarsegridx
unsigned int coarsegridx
Definition: femparameters.h:50
FEMParameters::verify_analytic_jacobians
libMesh::Real verify_analytic_jacobians
Definition: femparameters.h:115
FEMParameters::print_jacobian_norms
bool print_jacobian_norms
Definition: femparameters.h:118
FEMParameters::system_types
std::vector< std::string > system_types
Definition: femparameters.h:77
FEMParameters::FEMParameters
FEMParameters(const libMesh::Parallel::Communicator &comm_in)
FEMParameters::domain_edge_width
libMesh::Real domain_edge_width
Definition: femparameters.h:49
FEMParameters::write_tecplot_error
bool write_tecplot_error
Definition: femparameters.h:68
FEMParameters
Definition: femparameters.h:22
libMesh::Real
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Definition: libmesh_common.h:121
FEMParameters::neumann_condition_variables
std::map< libMesh::boundary_id_type, std::vector< unsigned int > > neumann_condition_variables
Definition: femparameters.h:93
libMesh::ParallelObject
An object whose state is distributed along a set of processors.
Definition: parallel_object.h:55
FEMParameters::deltat_reductions
unsigned int deltat_reductions
Definition: femparameters.h:36
FEMParameters::nelem_target
unsigned int nelem_target
Definition: femparameters.h:59
FEMParameters::linear_tolerance_multiplier
double linear_tolerance_multiplier
Definition: femparameters.h:134
FEMParameters::dirichlet_condition_variables
std::map< libMesh::boundary_id_type, std::vector< unsigned int > > dirichlet_condition_variables
Definition: femparameters.h:93
FEMParameters::output_tecplot
bool output_tecplot
Definition: femparameters.h:68
FEMParameters::output_gz
bool output_gz
Definition: femparameters.h:68
FEMParameters::timesolver_upper_tolerance
libMesh::Real timesolver_upper_tolerance
Definition: femparameters.h:38
FEMParameters::print_element_residuals
bool print_element_residuals
Definition: femparameters.h:118
FEMParameters::time_solver_quiet
bool time_solver_quiet
Definition: femparameters.h:128
int
void ErrorVector unsigned int
Definition: adjoints_ex3.C:360
FEMParameters::initial_timestep
unsigned int initial_timestep
Definition: femparameters.h:34