Computer Assisted Medical Intervention Tool Kit  version 5.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-2023 Univ. Grenoble Alpes, CNRS, Grenoble INP, 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
53class Load {
54
55public:
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;
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
164private:
166 TargetList targetList;
168 std::vector <ValueEvent*> eventList;
169
171 void deleteEventList();
172
173protected:
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
friend std::ostream & operator<<(std::ostream &, Load)
print to an output stream in XML format.
Definition: Load.cpp:327
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
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