Computer Assited Medical Intervention Tool Kit  version 4.1
Load.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * $CAMITK_LICENCE_BEGIN$
3  *
4  * CamiTK - Computer Assisted Medical Intervention ToolKit
5  * (c) 2001-2018 Univ. Grenoble Alpes, CNRS, TIMC-IMAG UMR 5525 (GMCAO)
6  *
7  * Visit http://camitk.imag.fr for more information
8  *
9  * This file is part of CamiTK.
10  *
11  * CamiTK is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * CamiTK is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License version 3 for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * version 3 along with CamiTK. If not, see <http://www.gnu.org/licenses/>.
22  *
23  * $CAMITK_LICENCE_END$
24  ****************************************************************************/
25 
26 #ifndef LOAD_H
27 #define LOAD_H
28 
29 #include "Direction.h"
30 #include "ValueEvent.h"
31 #include "TargetList.h"
32 #include "Unit.h"
33 
34 #include <algorithm>
35 
53 class Load {
54 
55 public:
57  Load();
58 
60  virtual ~Load();
61 
63  bool isActive(const double t);
64 
94  double getValue(const double d = 0.0);
95 
100  void addEvent(ValueEvent* ve);
105  void addValueEvent(const double v, const double d);
106 
108  ValueEvent* getValueEvent(const unsigned int i) const;
110  unsigned int numberOfValueEvents() const;
112  void setAllEvents(std::vector<ValueEvent*>&);
113 
115  std::string getType() const;
116 
118  void addTarget(std::string currentData);
120  void addTarget(unsigned int target);
122  unsigned int numberOfTargets() const;
127  int getTarget(const unsigned int target) const;
129  TargetList getTargetList() const;
131  void setTargetList(const TargetList&);
132 
134  void setDirection(const double x, const double y, const double z);
135 
137  void setDirection(const Direction&);
138 
140  void getDirection(double& x, double& y, double& z) const;
141 
143  Direction getDirection() const;
144 
146  Unit getUnit() const;
148  void setUnit(const Unit u);
149 
153  friend std::ostream& operator << (std::ostream&, Load);
154 
156  virtual void ansysPrint(std::ostream&) const;
157 
159  void xmlPrint(std::ostream&) const;
160 
162  static Load* LoadFactory(std::string type);
163 
164 private:
168  std::vector <ValueEvent*> eventList;
169 
171  void deleteEventList();
172 
173 protected:
176  std::string typeString;
177 };
178 
179 #endif //LOAD_H
std::string getType() const
get the type string, has to be impleted in subclasses
Definition: Load.cpp:284
void addTarget(std::string currentData)
add a lots of new targets using a description string (...)
Definition: Load.cpp:210
bool isActive(const double t)
return true if the load is active at time t
Definition: Load.cpp:96
virtual void ansysPrint(std::ostream &) const
Print the load in ansys format (BEWARE: not everything is implemented)
Definition: Load.cpp:322
static Load * LoadFactory(std::string type)
static methode to create a new load using a specific type (return NULL if type is unknown) ...
Definition: Load.cpp:39
void addValueEvent(const double v, const double d)
set the valueEvent.
Definition: Load.cpp:199
ValueEvent * getValueEvent(const unsigned int i) const
Get a the ValueEvent.
Definition: Load.cpp:257
unsigned int numberOfValueEvents() const
get the nr of value event
Definition: Load.cpp:267
void setUnit(const Unit u)
set the unit
Definition: Load.cpp:278
friend std::ostream & operator<<(std::ostream &, Load)
print to an output stream in XML format.
Definition: Load.cpp:328
void xmlPrint(std::ostream &) const
Print to an ostream.
Definition: Load.cpp:291
int getTarget(const unsigned int target) const
Get a target by index.
Definition: Load.cpp:230
void setDirection(const double x, const double y, const double z)
Set the direction using 3 coordinates.
Definition: Load.cpp:247
std::string typeString
Definition: Load.h:176
void setAllEvents(std::vector< ValueEvent *> &)
set all value events
Definition: Load.cpp:87
Load()
Constructor.
Definition: Load.cpp:67
Unit getUnit() const
get the unit
Definition: Load.cpp:273
Class that defines the direction of the Load with x, y and z.
Definition: Direction.h:39
TargetList targetList
the list of targets
Definition: Load.h:166
unsigned int numberOfTargets() const
get the number of target
Definition: Load.cpp:225
TargetList getTargetList() const
get the complete list
Definition: Load.cpp:215
void setTargetList(const TargetList &)
set the complete list
Definition: Load.cpp:220
Direction dir
Definition: Load.h:174
std::vector< ValueEvent * > eventList
the list of different events
Definition: Load.h:168
double getValue(const double d=0.0)
The current value at date d (default: d = 0.0).
Definition: Load.cpp:113
Manage a list of targets, can be created/modified using either an integer, a name, a list of integers given in a string (e.g.
Definition: TargetList.h:45
void addEvent(ValueEvent *ve)
Insert an event from the particular load the load is set to value v when time is equal to t...
Definition: Load.cpp:185
Direction getDirection() const
get direction object (a copy)
Definition: Load.cpp:242
Class that describes a load to be used in the simulation.
Definition: Load.h:53
virtual ~Load()
destructor is deleting all the value events (BEWARE!!!)
Definition: Load.cpp:72
Class that defines the unit of the Load.
Definition: Unit.h:46
Unit unit
Definition: Load.h:175
void deleteEventList()
delete all the list
Definition: Load.cpp:78
A valueEvent of a load is composed of a value and a date.
Definition: ValueEvent.h:41