Alsvinn  0.5.3
The fast FVM simulator with UQ support
SimulatorSetup.hpp
Go to the documentation of this file.
1 /* Copyright (c) 2018 ETH Zurich, Kjetil Olsen Lye
2  * This program is free software: you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation, either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program. If not, see <http://www.gnu.org/licenses/>.
14  */
15 
16 #pragma once
17 #include <iostream>
19 #include <memory>
20 #include <boost/property_tree/ptree.hpp>
24 #ifdef ALSVINN_USE_MPI
25  #include <mpi.h>
27 #endif
28 
29 namespace alsfvm {
30 namespace config {
31 
33 public:
34  typedef boost::property_tree::ptree ptree;
35  std::pair<alsfvm::shared_ptr<simulator::Simulator>,
36  alsfvm::shared_ptr<init::InitialData> >
37  readSetupFromFile(const std::string& filename);
38 
39 
40  void setWriterFactory(std::shared_ptr<io::WriterFactory> writerFactory);
41 
42 #ifdef ALSVINN_USE_MPI
43 
45  void enableMPI(MPI_Comm communicator, int multiX, int multiY, int multiZ);
46 
48  void enableMPI(mpi::ConfigurationPtr configuration, int multiX, int multiY,
49  int multiZ);
50 #endif
51 protected:
52 
53  alsfvm::shared_ptr<init::InitialData> createInitialData(
54  const ptree& configuration);
55  alsfvm::shared_ptr<grid::Grid> createGrid(const ptree& configuration);
56  real readEndTime(const ptree& configuration);
57  std::string readEquation(const ptree& configuration);
58  std::string readReconstruciton(const ptree& configuration);
59  real readCFLNumber(const ptree& configuration);
60  std::string readIntegrator(const ptree& configuration);
61 
62  alsfvm::shared_ptr<io::Writer> createWriter(const ptree& configuration);
63  std::string readPlatform(const ptree& configuration);
64  std::string readBoundary(const ptree& configuration);
65  init::Parameters readParameters(const ptree& configuration);
66  alsfvm::shared_ptr<diffusion::DiffusionOperator> createDiffusion(
67  const ptree& configuration,
68  const grid::Grid& grid,
70  alsfvm::shared_ptr<DeviceConfiguration> deviceConfiguration,
71  alsfvm::shared_ptr<memory::MemoryFactory>& memoryFactory,
72  volume::VolumeFactory& volumeFactory);
73 
74  std::string readName(const ptree& configuration);
75  std::vector<io::WriterPointer> createFunctionals(const ptree& configuration,
76  volume::VolumeFactory& volumeFactory);
77  void readEquationParameters(const ptree& configuration,
79 
80  std::string readFlux(const ptree& configuration);
81 
82  std::shared_ptr<io::WriterFactory> writerFactory{new io::WriterFactory};
83  std::string basePath;
84 
85 
86 #ifdef ALSVINN_USE_MPI
87  mpi::domain::DomainInformationPtr decomposeGrid(const
88  alsfvm::shared_ptr<grid::Grid>& grid);
89  bool useMPI{false};
90  mpi::ConfigurationPtr mpiConfiguration;
91  int multiX;
92  int multiY;
93  int multiZ;
94 #endif
95 
100  void loadFiles(
101  boost::property_tree::ptree& configuration);
102 };
103 } // namespace alsfvm
104 } // namespace config
alsfvm::shared_ptr< io::Writer > createWriter(const ptree &configuration)
Definition: SimulatorSetup.cpp:356
alsfvm::shared_ptr< memory::MemoryFactory > memoryFactory
Definition: VolumeFactory.cpp:86
alsfvm::shared_ptr< DeviceConfiguration > & deviceConfiguration
Definition: NumericalFluxFactory.cpp:103
Definition: Grid.hpp:27
alsfvm::shared_ptr< init::InitialData > createInitialData(const ptree &configuration)
Definition: SimulatorSetup.cpp:338
simulator::SimulatorParameters & parameters
Definition: CellComputerFactory.cpp:60
std::string basePath
Definition: SimulatorSetup.hpp:83
const alsfvm::shared_ptr< simulator::SimulatorParameters > & simulatorParameters
Definition: NumericalFluxFactory.cpp:102
Definition: VolumeFactory.hpp:29
std::string readBoundary(const ptree &configuration)
Definition: SimulatorSetup.cpp:426
real readCFLNumber(const ptree &configuration)
Definition: SimulatorSetup.cpp:305
void setWriterFactory(std::shared_ptr< io::WriterFactory > writerFactory)
Definition: SimulatorSetup.cpp:233
std::string readEquation(const ptree &configuration)
Definition: SimulatorSetup.cpp:293
alsfvm::shared_ptr< DomainInformation > DomainInformationPtr
Definition: DomainInformation.hpp:41
double real
Definition: types.hpp:65
Definition: Parameters.hpp:27
std::string readReconstruciton(const ptree &configuration)
Definition: SimulatorSetup.cpp:298
alsfvm::shared_ptr< Configuration > ConfigurationPtr
Definition: Configuration.hpp:53
void loadFiles(boost::property_tree::ptree &configuration)
Definition: SimulatorSetup.cpp:660
const grid::Grid & grid
Definition: NumericalFluxFactory.cpp:104
std::string readPlatform(const ptree &configuration)
Definition: SimulatorSetup.cpp:421
Definition: WriterFactory.hpp:27
init::Parameters readParameters(const ptree &configuration)
Definition: SimulatorSetup.cpp:431
std::string readName(const ptree &configuration)
Definition: SimulatorSetup.cpp:540
alsfvm::shared_ptr< diffusion::DiffusionOperator > createDiffusion(const ptree &configuration, const grid::Grid &grid, const simulator::SimulatorParameters &simulatorParameters, alsfvm::shared_ptr< DeviceConfiguration > deviceConfiguration, alsfvm::shared_ptr< memory::MemoryFactory > &memoryFactory, volume::VolumeFactory &volumeFactory)
Definition: SimulatorSetup.cpp:509
std::string readFlux(const ptree &configuration)
Definition: SimulatorSetup.cpp:641
Definition: SimulatorSetup.hpp:32
Various utility functions to implement the tecno flux.
Definition: types.hpp:30
std::shared_ptr< io::WriterFactory > writerFactory
Definition: SimulatorSetup.hpp:82
std::vector< io::WriterPointer > createFunctionals(const ptree &configuration, volume::VolumeFactory &volumeFactory)
Definition: SimulatorSetup.cpp:545
alsfvm::shared_ptr< grid::Grid > createGrid(const ptree &configuration)
Definition: SimulatorSetup.cpp:260
void readEquationParameters(const ptree &configuration, simulator::SimulatorParameters &parameters)
Definition: SimulatorSetup.cpp:483
Definition: SimulatorParameters.hpp:22
real readEndTime(const ptree &configuration)
Definition: SimulatorSetup.cpp:289
boost::property_tree::ptree ptree
Definition: SimulatorSetup.hpp:34
std::pair< alsfvm::shared_ptr< simulator::Simulator >, alsfvm::shared_ptr< init::InitialData > > readSetupFromFile(const std::string &filename)
Definition: SimulatorSetup.cpp:103
std::string readIntegrator(const ptree &configuration)
Definition: SimulatorSetup.cpp:321