9 #ifndef EquationSystem_h 10 #define EquationSystem_h 27 class AlgorithmDriver;
28 class AuxFunctionAlgorithm;
31 class SolverAlgorithmDriver;
32 class InitialCondition;
33 class EquationSystems;
35 class PostProcessingData;
52 const std::string name =
"no_name",
53 const std::string eqnTypeName =
"no_eqn_type_name");
56 void set_nodal_gradient(
57 const std::string &dofName);
59 virtual void initial_work();
65 stk::mesh::Part *part) {}
68 stk::mesh::Part *part) {}
71 stk::mesh::Part *part,
72 const stk::topology &theTopo) {}
118 virtual void pre_iter_work();
138 virtual void post_iter_work();
147 virtual void assemble_and_solve(
148 stk::mesh::FieldBase *deltaSolution);
151 stk::mesh::Part *part) {}
153 virtual void pre_timestep_work();
156 virtual void dump_eq_time();
157 virtual double provide_scaled_norm();
158 virtual double provide_norm();
159 virtual double provide_norm_increment();
160 virtual bool system_is_converged();
163 stk::mesh::Part *part,
164 const stk::topology &theTopo,
168 stk::mesh::Part *part,
169 const stk::topology &theTopo,
173 stk::mesh::Part *part,
174 const stk::topology &theTopo,
178 stk::mesh::Part *part,
179 const stk::topology &theTopo,
183 stk::mesh::Part *partMaster,
184 stk::mesh::Part *partSlave,
185 const stk::topology &theTopoMaster,
186 const stk::topology &theTopoSlave,
190 stk::mesh::Part *part,
191 const stk::topology &theTopo) {}
195 virtual void create_constraint_algorithm(
196 stk::mesh::FieldBase *theField);
203 stk::mesh::Part *part,
204 const std::map<std::string, std::string> &theNames,
205 const std::map<std::string, std::vector<double> > &theParams) {}
208 virtual void evaluate_properties();
211 PecletFunction * create_peclet_function(
const std::string dofName);
217 get_required(node,
"convergence_tolerance", convergenceTolerance_);
223 void report_invalid_supp_alg_names();
224 void report_built_supp_alg_names();
225 bool supp_alg_is_requested(std::string name);
226 bool supp_alg_is_requested(std::vector<std::string>);
228 bool nodal_src_is_requested();
255 void update_iteration_statistics(
258 bool bc_data_specified(
259 const UserData&, std::string &name);
263 const UserData&, std::string &name);
266 get_bc_function_name(
267 const UserData&, std::string &name);
270 get_bc_function_params(
271 const UserData&, std::string &name);
273 std::vector<std::string>
274 get_bc_function_string_params(
275 const UserData&, std::string &name);
Definition: SolverAlgorithmDriver.h:23
std::vector< Part * > PartVector
Definition: Algorithm.h:16
bool firstTimeStepSolve_
Definition: EquationSystem.h:252
Definition: Simulation.h:28
double timerPrecond_
Definition: EquationSystem.h:246
virtual void register_element_fields(stk::mesh::Part *part, const stk::topology &theTopo)
Definition: EquationSystem.h:70
double timerInit_
Definition: EquationSystem.h:245
Definition: ABLForcingAlgorithm.C:26
virtual void initialize()
Definition: EquationSystem.h:77
virtual void register_periodic_bc(stk::mesh::Part *partMaster, stk::mesh::Part *partSlave, const stk::topology &theTopoMaster, const stk::topology &theTopoSlave, const PeriodicBoundaryConditionData &periodicBCData)
Definition: EquationSystem.h:182
double avgLinearIterations_
Definition: EquationSystem.h:247
virtual void register_overset_bc()
Definition: EquationSystem.h:193
bool edgeNodalGradient_
Definition: EquationSystem.h:253
size_t num_graph_entries_
Definition: EquationSystem.h:285
UserDataType
Definition: Enums.h:94
virtual void provide_output()
Definition: EquationSystem.h:152
virtual void predict_state()
Definition: EquationSystem.h:149
std::vector< Algorithm * > bcDataMapAlg_
Definition: EquationSystem.h:280
EquationSystems & equationSystems_
Definition: EquationSystem.h:230
bool reportLinearIterations_
Definition: EquationSystem.h:251
double convergenceTolerance_
Definition: EquationSystem.h:236
double timerMisc_
Definition: EquationSystem.h:244
Definition: Algorithm.h:14
virtual void register_surface_pp_algorithm(const PostProcessingData &theData, stk::mesh::PartVector &partVector)
Definition: EquationSystem.h:198
virtual void register_inflow_bc(stk::mesh::Part *part, const stk::topology &theTopo, const InflowBoundaryConditionData &inflowBCData)
Definition: EquationSystem.h:167
LinearSystem * linsys_
Definition: EquationSystem.h:283
virtual void populate_derived_quantities()
Definition: EquationSystem.h:61
int maxIterations_
Definition: EquationSystem.h:235
A collection of Equations to be solved on a Realm.
Definition: EquationSystems.h:56
double timerSolve_
Definition: EquationSystem.h:243
Definition: NaluParsing.h:325
std::vector< Algorithm * > propertyAlg_
Definition: EquationSystem.h:288
virtual void register_wall_bc(stk::mesh::Part *part, const stk::topology &theTopo, const WallBoundaryConditionData &wallBCData)
Definition: EquationSystem.h:162
std::vector< AlgorithmDriver * > postIterAlgDriver_
List of tasks to be performed after each solve_and_update of this equation system.
Definition: EquationSystem.h:294
Definition: NaluParsing.h:305
SolverAlgorithmDriver * solverAlgDriver_
Definition: EquationSystem.h:239
void get_required(const YAML::Node &node, const std::string &key, T &result)
this version requires the
Definition: NaluParsing.h:396
Base class representation of a PDE.
Definition: EquationSystem.h:46
double timerAssemble_
Definition: EquationSystem.h:241
virtual void solve_and_update()
Assemble the LHS and RHS and perform linear solve for prescribed number of iterations.
Definition: EquationSystem.h:98
virtual void register_open_bc(stk::mesh::Part *part, const stk::topology &theTopo, const OpenBoundaryConditionData &openBCData)
Definition: EquationSystem.h:172
virtual void register_symmetry_bc(stk::mesh::Part *part, const stk::topology &theTopo, const SymmetryBoundaryConditionData &symmetryBCData)
Definition: EquationSystem.h:177
std::vector< AuxFunctionAlgorithm * > bcDataAlg_
Definition: EquationSystem.h:279
virtual void register_initial_condition_fcn(stk::mesh::Part *part, const std::map< std::string, std::string > &theNames, const std::map< std::string, std::vector< double > > &theParams)
Definition: EquationSystem.h:202
Realm & realm_
Definition: EquationSystem.h:231
double timerLoadComplete_
Definition: EquationSystem.h:242
virtual void post_adapt_work()
Definition: EquationSystem.h:155
std::vector< Algorithm * > copyStateAlg_
Definition: EquationSystem.h:281
Definition: NaluParsing.h:330
const std::string eqnTypeName_
Definition: EquationSystem.h:234
virtual void register_interior_algorithm(stk::mesh::Part *part)
Definition: EquationSystem.h:150
Definition: NaluParsing.h:310
std::string userSuppliedName_
Definition: EquationSystem.h:233
Definition: NaluParsing.h:315
int nonLinearIterationCount_
Definition: EquationSystem.h:250
virtual void reinitialize_linear_system()
Definition: EquationSystem.h:154
virtual void register_nodal_fields(stk::mesh::Part *part)
Definition: EquationSystem.h:64
virtual void load(const YAML::Node &node)
Definition: EquationSystem.h:213
double minLinearIterations_
Definition: EquationSystem.h:249
Definition: PostProcessingData.h:18
Tpetra::Map< LocalOrdinal, GlobalOrdinal >::node_type Node
Definition: LinearSolver.h:32
virtual void register_edge_fields(stk::mesh::Part *part)
Definition: EquationSystem.h:67
virtual void post_converged_work()
Definition: EquationSystem.h:277
Definition: NaluParsing.h:136
Definition: PecletFunction.h:15
std::vector< AlgorithmDriver * > preIterAlgDriver_
List of tasks to be performed before each solve_and_update of this equation system.
Definition: EquationSystem.h:291
virtual void register_non_conformal_bc(stk::mesh::Part *part, const stk::topology &theTopo)
Definition: EquationSystem.h:189
virtual void post_iter_work_dep()
Deprecated post iteration work logic.
Definition: EquationSystem.h:146
Definition: LinearSystem.h:40
double maxLinearIterations_
Definition: EquationSystem.h:248
std::string name_
Definition: EquationSystem.h:232