22#ifndef INCLUDE_EXADG_INCOMPRESSIBLE_NAVIER_STOKES_SOLVER_PRECURSOR_H_
23#define INCLUDE_EXADG_INCOMPRESSIBLE_NAVIER_STOKES_SOLVER_PRECURSOR_H_
26#include <deal.II/base/parameter_handler.h>
29#include <exadg/utilities/enum_patterns.h>
32#include <exadg/incompressible_navier_stokes/precursor/driver.h>
35#include <exadg/utilities/general_parameters.h>
38#include <exadg/incompressible_navier_stokes/precursor/user_interface/declare_get_application.h>
43create_input_file(std::string
const & input_file)
45 dealii::ParameterHandler prm;
48 general.add_parameters(prm);
52 unsigned int const Dim = 2;
53 typedef double Number;
54 IncNS::Precursor::get_application<Dim, Number>(input_file, MPI_COMM_WORLD)->add_parameters(prm);
56 prm.print_parameters(input_file,
57 dealii::ParameterHandler::Short |
58 dealii::ParameterHandler::KeepDeclarationOrder);
61template<
int dim,
typename Number>
63run(std::string
const & input_file, MPI_Comm
const & mpi_comm,
bool const is_test)
68 std::shared_ptr<IncNS::Precursor::ApplicationBase<dim, Number>> application =
69 IncNS::Precursor::get_application<dim, Number>(input_file, mpi_comm);
71 std::shared_ptr<IncNS::Precursor::Driver<dim, Number>> driver =
72 std::make_shared<IncNS::Precursor::Driver<dim, Number>>(mpi_comm, application, is_test);
79 driver->print_performance_results(timer.wall_time());
84main(
int argc,
char ** argv)
86 dealii::Utilities::MPI::MPI_InitFinalize mpi(argc, argv, 1);
88 MPI_Comm mpi_comm(MPI_COMM_WORLD);
90 std::string input_file;
94 if(dealii::Utilities::MPI::this_mpi_process(mpi_comm) == 0)
97 std::cout <<
"To run the program, use: ./solver_precursor input_file" << std::endl
98 <<
"To setup the input file, use: ./solver_precursor input_file --help" << std::endl;
106 input_file = std::string(argv[1]);
108 if(argc == 3 and std::string(argv[2]) ==
"--help")
110 if(dealii::Utilities::MPI::this_mpi_process(mpi_comm) == 0)
111 ExaDG::create_input_file(input_file);
120 if(general.dim == 2 and general.precision ==
"float")
122 ExaDG::run<2, float>(input_file, mpi_comm, general.is_test);
124 else if(general.dim == 2 and general.precision ==
"double")
126 ExaDG::run<2, double>(input_file, mpi_comm, general.is_test);
128 else if(general.dim == 3 and general.precision ==
"float")
130 ExaDG::run<3, float>(input_file, mpi_comm, general.is_test);
132 else if(general.dim == 3 and general.precision ==
"double")
134 ExaDG::run<3, double>(input_file, mpi_comm, general.is_test);
139 dealii::ExcMessage(
"Only dim = 2|3 and precision = float|double implemented."));
Definition general_parameters.h:32