Simulation.h 3.28 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
/**
 * @file    Simulation.h
 * @date Created on: Dec 15, 2010
 * Copyright (C) <2009-2011>
 *
 * @section LICENSE
 * 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
27 28 29 30 31 32 33 34 35 36 37 38 39 40
 */

#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"
41
#include "routing/DummyRouter.h"
42
#include "routing/GraphRouter.h"
43
#include "routing/NavMesh.h"
44
#include "routing/MeshRouter.h"
45
#include "routing/RoutingEngine.h"
46
#include "routing/SafestPathRouter.h"
Ulrich Kemloh's avatar
Ulrich Kemloh committed
47
#include "pedestrian/PedDistributor.h"
48
#include "events/EventManager.h" //neuer Header fuer die Events
49
#include "routing/CognitiveMapRouter.h"
Ulrich Kemloh's avatar
Ulrich Kemloh committed
50 51 52 53

extern OutputHandler* Log;

class Simulation {
Mohcine Chraibi's avatar
Mohcine Chraibi committed
54 55 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
 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
129

Ulrich Kemloh's avatar
Ulrich Kemloh committed
130 131 132
};

#endif /*SIMULATION_H_*/