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:
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;
38  std::string solution_history_type;
42  std::vector<libMesh::FEMNormType> timesolver_norm;
43 
44  // Mesh generation
45 
46  unsigned int dimension;
47  std::string domaintype, domainfile, elementtype;
51  unsigned int coarsegridx, coarsegridy, coarsegridz;
52  unsigned int coarserefinements, extrarefinements;
53  std::string mesh_redistribute_func;
54 
55  // Mesh partitioning
56  std::string mesh_partitioner_type;
57 
58  // Mesh refinement
59 
60  unsigned int nelem_target;
63  unsigned int max_adaptivesteps;
64  unsigned int initial_adaptivesteps;
65 
66  // Output
67 
68  unsigned int write_interval;
75 
76  // Types of Systems to create
77 
78  std::vector<std::string> system_types;
79 
80  // Parameters applicable to each system:
81 
82  // Boundary and initial conditions
83 
84 #ifdef LIBMESH_ENABLE_PERIODIC
85  std::vector<libMesh::PeriodicBoundary> periodic_boundaries;
86 #endif
87 
88  std::map<libMesh::subdomain_id_type, libMesh::FunctionBase<libMesh::Number> *>
90  std::map<libMesh::boundary_id_type, libMesh::FunctionBase<libMesh::Number> *>
93  std::map<libMesh::boundary_id_type, std::vector<unsigned int>>
96  std::map<int, std::map<libMesh::subdomain_id_type,
99  std::map<int, std::map<libMesh::boundary_id_type,
102 
103  // Execution type
104 
106 
107  // Approximation type
108 
109  std::vector<std::string> fe_family;
110  std::vector<unsigned int> fe_order;
112 
113  // Assembly options
114 
115  bool analytic_jacobians;
118 
125 
126  // Solver options
127 
128  bool constrain_in_solver;
129  bool use_petsc_snes;
138 
139  // Initialization
140 
141  unsigned int initial_sobolev_order;
142  unsigned int initial_extra_quadrature;
143 
144  // Error indicators
145 
146  bool refine_uniformly;
147  std::string indicator_type;
148  bool patch_reuse;
149  unsigned int sobolev_order;
150 
151  // System-specific parameters file
152 
153  std::string system_config_file;
154 };
155 
156 #endif // FEMPARAMETERS_H
unsigned int nelem_target
Definition: femparameters.h:60
libMesh::Real timesolver_upper_tolerance
Definition: femparameters.h:39
libMesh::Real domain_ymin
Definition: femparameters.h:49
bool print_solution_norms
libMesh::Real deltat
Definition: femparameters.h:39
unsigned int initial_timestep
Definition: femparameters.h:34
bool print_element_residuals
unsigned int dimension
Definition: femparameters.h:46
unsigned int coarserefinements
Definition: femparameters.h:52
std::string solution_history_type
Definition: femparameters.h:38
bool reuse_preconditioner
libMesh::Real timesolver_tolerance
Definition: femparameters.h:39
std::string domaintype
Definition: femparameters.h:47
libMesh::Real elementorder
Definition: femparameters.h:48
bool analytic_jacobians
std::string mesh_partitioner_type
Definition: femparameters.h:56
TestClass subdomain_id_type
Based on the 4-byte comment warning above, this probably doesn&#39;t work with exodusII at all...
Definition: id_types.h:43
libMesh::Real domain_edge_length
Definition: femparameters.h:50
std::string timesolver_core
Definition: femparameters.h:37
std::string system_config_file
bool require_residual_reduction
unsigned int coarsegridy
Definition: femparameters.h:51
libMesh::Real domain_zmin
Definition: femparameters.h:49
bool print_residual_norms
libMesh::Real timesolver_maxgrowth
Definition: femparameters.h:39
std::map< libMesh::boundary_id_type, libMesh::FunctionBase< libMesh::Number > * > neumann_conditions
Definition: femparameters.h:91
libMesh::Real relative_step_tolerance
std::string indicator_type
libMesh::Real refine_fraction
Definition: femparameters.h:62
libMesh::Real domain_edge_height
Definition: femparameters.h:50
unsigned int initial_extra_quadrature
std::vector< unsigned int > fe_order
std::string mesh_redistribute_func
Definition: femparameters.h:53
libMesh::Real coarsen_threshold
Definition: femparameters.h:62
bool write_gmv_error
Definition: femparameters.h:69
libMesh::Real end_time
Definition: femparameters.h:39
unsigned int max_linear_iterations
int8_t boundary_id_type
Definition: id_types.h:51
bool constrain_in_solver
double minimum_linear_tolerance
std::map< int, std::map< libMesh::subdomain_id_type, libMesh::FunctionBase< libMesh::Number > * > > other_interior_functions
Definition: femparameters.h:98
std::map< libMesh::subdomain_id_type, libMesh::FunctionBase< libMesh::Number > * > initial_conditions
Definition: femparameters.h:89
std::string domainfile
Definition: femparameters.h:47
std::vector< libMesh::PeriodicBoundary > periodic_boundaries
Definition: femparameters.h:85
std::vector< std::string > fe_family
std::map< int, std::map< libMesh::boundary_id_type, libMesh::FunctionBase< libMesh::Number > * > > other_boundary_functions
unsigned int coarsegridx
Definition: femparameters.h:51
libMesh::Real verify_analytic_jacobians
unsigned int write_interval
Definition: femparameters.h:68
unsigned int max_adaptivesteps
Definition: femparameters.h:63
double initial_linear_tolerance
std::map< libMesh::boundary_id_type, std::vector< unsigned int > > neumann_condition_variables
Definition: femparameters.h:94
int extra_quadrature_order
libMesh::Real global_tolerance
Definition: femparameters.h:61
std::string elementtype
Definition: femparameters.h:47
void read(GetPot &input, const std::vector< std::string > *other_variable_names=nullptr)
libMesh::Real absolute_residual_tolerance
An object whose state is distributed along a set of processors.
bool write_exodus_error
Definition: femparameters.h:69
libMesh::Real relative_residual_tolerance
bool print_element_solutions
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
bool print_jacobian_norms
unsigned int extrarefinements
Definition: femparameters.h:52
libMesh::Real min_step_length
unsigned int n_timesteps
Definition: femparameters.h:34
libMesh::Real timesolver_theta
Definition: femparameters.h:39
unsigned int coarsegridz
Definition: femparameters.h:51
bool print_element_jacobians
unsigned int max_nonlinear_iterations
double linear_tolerance_multiplier
std::map< libMesh::boundary_id_type, std::vector< unsigned int > > dirichlet_condition_variables
Definition: femparameters.h:94
unsigned int initial_adaptivesteps
Definition: femparameters.h:64
bool time_solver_quiet
unsigned int initial_sobolev_order
Base class for functors that can be evaluated at a point and (optionally) time.
libMesh::Real numerical_jacobian_h
std::map< libMesh::boundary_id_type, libMesh::FunctionBase< libMesh::Number > * > dirichlet_conditions
Definition: femparameters.h:91
std::vector< libMesh::FEMNormType > timesolver_norm
Definition: femparameters.h:42
unsigned int sobolev_order
std::vector< std::string > system_types
Definition: femparameters.h:78
void ErrorVector unsigned int
Definition: adjoints_ex3.C:360
FEMParameters(const libMesh::Parallel::Communicator &comm_in)
bool write_tecplot_error
Definition: femparameters.h:69
libMesh::Real domain_edge_width
Definition: femparameters.h:50
libMesh::Real coarsen_fraction
Definition: femparameters.h:62
libMesh::Real steadystate_tolerance
Definition: femparameters.h:39
libMesh::Real domain_xmin
Definition: femparameters.h:49
unsigned int deltat_reductions
Definition: femparameters.h:36