Program listing for file kernel/src/modelingTools/BoundaryCondition.hpp

Program listing for file kernel/src/modelingTools/BoundaryCondition.hpp#

 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