Computer Assisted Medical Intervention Tool Kit  version 5.2
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-2024 Univ. Grenoble Alpes, CNRS, Grenoble INP - UGA, TIMC, 38000 Grenoble, France
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:
166  TargetList targetList;
168  std::vector <ValueEvent*> eventList;
169 
171  void deleteEventList();
172 
173 protected:
176  std::string typeString;
177 };
178 
179 #endif //LOAD_H
Class that defines the direction of the Load with x, y and z.
Definition: Direction.h:39
Class that describes a load to be used in the simulation.
Definition: Load.h:53
static Load * LoadFactory(std::string type)
static method to create a new load using a specific type (return nullptr if type is unknown)
Definition: Load.cpp:39
Unit getUnit() const
get the unit
Definition: Load.cpp:272
void setAllEvents(std::vector< ValueEvent * > &)
set all value events
Definition: Load.cpp:86
unsigned int numberOfValueEvents() const
get the nr of value event
Definition: Load.cpp:266
TargetList getTargetList() const
get the complete list
Definition: Load.cpp:214
std::string typeString
Definition: Load.h:176
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:184
double getValue(const double d=0.0)
The current value at date d (default: d = 0.0).
Definition: Load.cpp:112
ValueEvent * getValueEvent(const unsigned int i) const
Get a the ValueEvent.
Definition: Load.cpp:256
void xmlPrint(std::ostream &) const
Print to an ostream.
Definition: Load.cpp:290
void setUnit(const Unit u)
set the unit
Definition: Load.cpp:277
void setDirection(const double x, const double y, const double z)
Set the direction using 3 coordinates.
Definition: Load.cpp:246
bool isActive(const double t)
return true if the load is active at time t
Definition: Load.cpp:95
void addTarget(std::string currentData)
add a lots of new targets using a description string (...)
Definition: Load.cpp:209
Direction dir
Definition: Load.h:174
unsigned int numberOfTargets() const
get the number of target
Definition: Load.cpp:224
void setTargetList(const TargetList &)
set the complete list
Definition: Load.cpp:219
Unit unit
Definition: Load.h:175
Direction getDirection() const
get direction object (a copy)
Definition: Load.cpp:241
friend std::ostream & operator<<(std::ostream &, Load)
print to an output stream in XML format.
Definition: Load.cpp:327
int getTarget(const unsigned int target) const
Get a target by index.
Definition: Load.cpp:229
Load()
Constructor.
Definition: Load.cpp:67
void addValueEvent(const double v, const double d)
set the valueEvent.
Definition: Load.cpp:198
virtual ~Load()
destructor is deleting all the value events (BEWARE!!!)
Definition: Load.cpp:71
std::string getType() const
get the type string, has to be impleted in subclasses
Definition: Load.cpp:283
virtual void ansysPrint(std::ostream &) const
Print the load in ansys format (BEWARE: not everything is implemented)
Definition: Load.cpp:321
Manage a list of targets, can be created/modified using either an integer, a name,...
Definition: TargetList.h:45
Class that defines the unit of the Load.
Definition: Unit.h:46
A valueEvent of a load is composed of a value and a date.
Definition: ValueEvent.h:41