Simulation.h 3.44 KB
Newer Older
1
/**
2 3 4
 * \file    Simulation.h
 * \date    Dec 15, 2010
 * \version MAJOR.MINOR
5
 *
6 7 8
 * Copyright (C) <2009-2014>
 *
 * \section LICENSE
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
 * This file is part of JuPedSim.
 *
 * JuPedSim is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * any later version.
 *
 * JuPedSim is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with JuPedSim. If not, see <http://www.gnu.org/licenses/>.
 *
 * \section description
 * The Simulation class represents a simulation of pedestrians
 * based on a certain model in a specific scenario. A simulation is defined by
 * various parameters and functions.
 *
Ulrich Kemloh's avatar
Ulrich Kemloh committed
29 30 31 32 33 34 35 36 37 38 39 40 41 42
 */

#ifndef SIMULATION_H_
#define SIMULATION_H_

#include "general/ArgumentParser.h"
#include "geometry/Building.h"
#include "IO/OutputHandler.h"
#include "IO/IODispatcher.h"
#include "math/ForceModel.h"
#include "math/ODESolver.h"
#include "routing/GlobalRouter.h"
#include "routing/QuickestPathRouter.h"
#include "routing/DirectionStrategy.h"
43
#include "routing/DummyRouter.h"
44
#include "routing/GraphRouter.h"
45
#include "routing/NavMesh.h"
46
#include "routing/MeshRouter.h"
47
#include "routing/RoutingEngine.h"
48
#include "routing/SafestPathRouter.h"
Ulrich Kemloh's avatar
Ulrich Kemloh committed
49
#include "pedestrian/PedDistributor.h"
50
#include "events/EventManager.h"
51
#include "routing/CognitiveMapRouter.h"
Ulrich Kemloh's avatar
Ulrich Kemloh committed
52 53 54 55

extern OutputHandler* Log;

class Simulation {
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
private:
     ///Number of pedestrians in the simulation
     int _nPeds;
     ///Maximum simulation time
     double _tmax;
     /// time step
     double _deltaT;
     /// frame rate for the trajectories
     double _fps;
     ///seed using for the random number generator
     unsigned int _seed;
     /// building object
     Building* _building;
     ///initial distribution of the pedestrians
     PedDistributor* _distribution;
     /// door crossing strategy for the pedestrians
     DirectionStrategy* _direction;
     /// Force model to use
     ForceModel* _model;
     /// differential equation solver
     ODESolver* _solver;
     /// writing the trajectories to file
     IODispatcher* _iod;
     ///new: EventManager
     EventManager* _em;
     /// argument parser
     ArgumentParser* _argsParser;


public:
     Simulation();
     virtual ~Simulation();

     /**
      * Initialize the number of agents in the simulation
      */
     void SetPedsNumber(int i);

     /**
      * Initialize the number of agents in the simulation
      */
     int GetPedsNumber() const;

     /**
      * Returns the number of agents when running on a distributed system (MPI)
      * NOT IMPLEMENTED
      */
     int GetNPedsGlobal() const;

     /**
      * @return the building object containing all geometry elements
      */
     Building* GetBuilding() const;

     /**
      * Read parameters from the argument parser class.
      */
     void InitArgs(ArgumentParser *args);

     /**
      *
      * @return the total simulated/evacuation time
      */
     int RunSimulation();

     /**
      * Update the pedestrians states: positions, velocity, route
      */
     void Update();


     /**
      * print some statistics about the simulation
      */
     void PrintStatistics();
Ulrich Kemloh's avatar
Ulrich Kemloh committed
131 132 133
};

#endif /*SIMULATION_H_*/