Program listing for file kernel/src/modelingTools/BoundaryCondition.hpp#
Return to documentation for this file
1#ifndef BOUNDARYCONDITION_HPP
2#define BOUNDARYCONDITION_HPP
3
4#include "SiconosPointers.hpp"
5
6#include "SiconosFwd.hpp"
7
8#include "SiconosVector.hpp"
9#include "PluggedObject.hpp"
10#include "Tools.hpp"
11
12typedef void (*FPtrPrescribedVelocity)(double, unsigned int, double*);
13
14
15class BoundaryCondition
16{
17public:
18
19
20
21 BoundaryCondition(SP::UnsignedIntVector newVelocityIndices);
22
23
24 BoundaryCondition(SP::UnsignedIntVector newVelocityIndices,
25 SP::SiconosVector newVelocityValues);
26
27
28 virtual ~BoundaryCondition();
29
30
31
32
33 inline SP::UnsignedIntVector velocityIndices()
34 {
35 return _velocityIndices;
36 };
37
38
39 inline SP::SiconosVector prescribedVelocity()
40 {
41 return _prescribedVelocity;
42 };
43
44
45 inline SP::SiconosVector prescribedVelocityOld()
46 {
47 return _prescribedVelocityOld;
48 };
49
50
51 void setComputePrescribedVelocityFunction(const std::string& pluginPath, const std::string& functionName)
52 {
53 _pluginPrescribedVelocity->setComputeFunction(pluginPath, functionName);
54 if (!_prescribedVelocity) _prescribedVelocity.reset(new SiconosVector((unsigned int)_velocityIndices->size()));
55 }
56
57
58 virtual void computePrescribedVelocity(double time);
59
60
61
62 void display();
63
64
65protected:
66
67 ACCEPT_SERIALIZATION(BoundaryCondition);
68
69
70 BoundaryCondition() {};
71
72
73 SP::UnsignedIntVector _velocityIndices;
74
75
76 SP::SiconosVector _prescribedVelocity;
77
78
79 SP::SiconosVector _prescribedVelocityOld;
80
81
82 SP::PluggedObject _pluginPrescribedVelocity;
83};
84
85TYPEDEF_SPTR(BoundaryCondition)
86#endif