FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
SeafloorForces.h
1#pragma once
2#include "SeafloorForcesInterface.h"
3
4#include <fhsim_environment/seabed/SeabedContact.h>
5
6#include <marenv/seafloor/BathymetryField.h>
7#include <memory>
8namespace environment
9{
10
17class SeafloorForces : public SeafloorForcesInterface
18{
19public:
24 explicit SeafloorForces(std::shared_ptr<marenv::seafloor::BathymetryField> bathymetrybroker);
26 seabed::ContactLoad<double> Sphere(const seabed::Sphere& sphere, const double pos[3], const double vel[3]) override;
28 seabed::NodePairLoad<double> CableElement(double diameter, const double posA[3], const double posB[3], const double velA[3], const double velB[3]) override;
30 seabed::ContactLoad<double> RigidCylinder(const seabed::Cylinder& cylinder, const seabed::RigidMotion<double>& motion) override;
32 seabed::ContactLoad<double> Plate(const seabed::Polygon& polygon, const seabed::RigidMotion<double>& motion) override;
34 seabed::ContactLoad<double> TrawlDoor(const seabed::TrawlDoorShape& door, const seabed::RigidMotion<double>& motion) override;
36 seabed::ContactLoad<double> AnchorShank(const seabed::AnchorShank& shank, const seabed::RigidMotion<double>& motion) override;
37
38private:
44 template<class Law>
45 auto Evaluate(const double pos[3], const Law& law);
46
47 seabed::SeabedModel m_model;
48
49 std::shared_ptr<marenv::seafloor::BathymetryField> m_bathymetry;
50};
51
52} // namespace environment
Definition SeafloorForces.h:18
seabed::ContactLoad< double > Plate(const seabed::Polygon &polygon, const seabed::RigidMotion< double > &motion) override
SeafloorForces(std::shared_ptr< marenv::seafloor::BathymetryField > bathymetrybroker)
seabed::ContactLoad< double > RigidCylinder(const seabed::Cylinder &cylinder, const seabed::RigidMotion< double > &motion) override
seabed::NodePairLoad< double > CableElement(double diameter, const double posA[3], const double posB[3], const double velA[3], const double velB[3]) override
seabed::ContactLoad< double > TrawlDoor(const seabed::TrawlDoorShape &door, const seabed::RigidMotion< double > &motion) override
seabed::ContactLoad< double > AnchorShank(const seabed::AnchorShank &shank, const seabed::RigidMotion< double > &motion) override
seabed::ContactLoad< double > Sphere(const seabed::Sphere &sphere, const double pos[3], const double vel[3]) override