MaMiCo 1.2
Loading...
Searching...
No Matches
Scenario.h
1// Copyright (C) 2015 Technische Universitaet Muenchen
2// This file is part of the Mamico project. For conditions of distribution
3// and use, please see the copyright notice in Mamico's main folder, or at
4// www5.in.tum.de/mamico
5#ifndef _MAMICO_COUPLING_SCENARIO_SCENARIO_H_
6#define _MAMICO_COUPLING_SCENARIO_SCENARIO_H_
7
8class Scenario;
9
10#include "coupling/CouplingMDDefinitions.h"
11#include "coupling/solvers/CouetteSolver.h"
12#include "mamico_git_version_info.h"
13#include <iostream>
14#include <string>
15
16#define __MAMICO_STRINGIFY_EXPAND(x) #x
17#define MAMICO_STRINGIFY(x) __MAMICO_STRINGIFY_EXPAND(x)
18
19class Scenario {
20public:
21 Scenario(std::string scenarioname) : _scenarioname(scenarioname) {
22 int rank = 0;
23#if (COUPLING_MD_PARALLEL == COUPLING_MD_YES)
24 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
25#endif
26 _isRootRank = (rank == 0);
27 if (_isRootRank) {
28 std::cout << "Run " << scenarioname << "..." << std::endl;
29 std::cout << "MaMiCo git commit hash = " << MAMICO_STRINGIFY(MAMICO_COMMIT_HASH) << std::endl;
30 }
31 }
32 virtual ~Scenario() {
33 if (_isRootRank) {
34 std::cout << "Shut down " << _scenarioname << std::endl;
35 }
36 }
37
38 virtual void run() = 0;
39 virtual void init() = 0;
40 virtual void runOneCouplingCycle(int cycle) = 0;
41 virtual void equilibrateMicro() = 0;
42
43 virtual coupling::solvers::AbstractCouetteSolver<3>* getSolver() = 0;
44 const coupling::services::ParallelTimeIntegrationService<3>* getTimeIntegrationService() const { return _timeIntegrationService.get(); }
45
46protected:
47 std::unique_ptr<coupling::services::ParallelTimeIntegrationService<3>> _timeIntegrationService;
48
51
52private:
53 const std::string _scenarioname;
54};
55
56#endif // _MAMICO_COUPLING_SCENARIO_SCENARIO_H_
Definition Scenario.h:19
bool _isRootRank
if this is the world global root process
Definition Scenario.h:50
Definition ParallelTimeIntegrationService.h:30
interface for continuum/macro fluid solvers for the Couette scenario
Definition CouetteSolver.h:19