88
99#include < Eigen/Dense>
1010
11+ // // RADU - why is this not in some namespace?
12+ // // - should these classes be DLL-exported (e.g., to allow AddWave(NoWave))?
13+ // // if not, why is this a public headers?
14+
1115enum class WaveMode {
1216 noWaveCIC = 0 ,
1317 regular = 1 ,
@@ -18,29 +22,38 @@ class WaveBase {
1822 public:
1923 virtual ~WaveBase () = default ;
2024
21- virtual void Initialize () = 0;
22- virtual Eigen::VectorXd GetForceAtTime (double t) = 0;
23- virtual WaveMode GetWaveMode () = 0;
24- virtual double GetElevation (const Eigen::Vector3d& position, double time) = 0;
25- virtual Eigen::Vector3d GetVelocity (const Eigen::Vector3d& position, double time) = 0;
26- virtual Eigen::Vector3d GetAcceleration (const Eigen::Vector3d& position, double time) = 0;
25+ virtual void Initialize () = 0;
26+ virtual Eigen::VectorXd GetForceAtTime (double t) = 0;
27+ virtual WaveMode GetWaveMode () = 0;
28+ virtual double GetElevation (const Eigen::Vector3d& position, double time) = 0;
29+ virtual Eigen::Vector3d GetVelocity (const Eigen::Vector3d& position, double time, double elevation) = 0;
30+ virtual Eigen::Vector3d GetAcceleration (const Eigen::Vector3d& position, double time, double elevation) = 0;
31+
32+ Eigen::Vector3d GetVelocity (const Eigen::Vector3d& position, double time);
33+ Eigen::Vector3d GetAcceleration (const Eigen::Vector3d& position, double time);
2734
28- double mwl_ = 0.0 ;
29- double g_ = 9.81 ;
30- double water_depth_ = 0.0 ;
35+ double mwl_ = 0.0 ;
36+ double g_ = 9.81 ;
37+ double water_depth_ = 0.0 ;
38+ bool wave_stretching_ = true ;
39+ };
40+
41+ struct NoWaveParams {
42+ unsigned int num_bodies_;
3143};
3244
3345class NoWave : public WaveBase {
3446 public:
3547 NoWave ();
3648 explicit NoWave (unsigned int num_b);
49+ explicit NoWave (const NoWaveParams& params);
3750
3851 void Initialize () override {}
3952 Eigen::VectorXd GetForceAtTime (double t) override ;
4053 WaveMode GetWaveMode () override { return mode_; }
4154 double GetElevation (const Eigen::Vector3d&, double ) override { return 0.0 ; }
42- Eigen::Vector3d GetVelocity (const Eigen::Vector3d&, double ) override { return Eigen::Vector3d (0.0 , 0.0 , 0.0 ); }
43- Eigen::Vector3d GetAcceleration (const Eigen::Vector3d&, double ) override { return Eigen::Vector3d (0.0 , 0.0 , 0.0 ); }
55+ Eigen::Vector3d GetVelocity (const Eigen::Vector3d&, double , double ) override { return Eigen::Vector3d (0.0 , 0.0 , 0.0 ); }
56+ Eigen::Vector3d GetAcceleration (const Eigen::Vector3d&, double , double ) override { return Eigen::Vector3d (0.0 , 0.0 , 0.0 ); }
4457
4558 private:
4659 unsigned int num_bodies_;
0 commit comments