FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Environment.h
1#pragma once
2
3#include "util/EnvironmentConfig.h"
4#include "fhsim_environment/AggregationField.h"
5#include "fhsim_environment/EnvironmentProvider.h"
6#include "seafloorForces/SeafloorForces.h"
7#include "visual/OceanSides.h"
8#include <string>
9#include <memory>
10#include <vector>
11
12#include <fhsim/simobject/SimObject.h>
13#include <marenv/seafloor/BathymetryWavesSpec.h>
14#ifdef FH_VISUALIZATION
15# include "visual/OceanSurfaceProjected.h"
16# include "visual/SeafloorMesh.h"
17# include "visual/SeafloorProjected.h"
18# include "visual/VisualSettings.h"
19
20#endif
30{
31
337class Environment : public SimObject
338{
339public:
345 Environment(std::string simObjectName, ISimObjectCreator* creator);
346
349
356 void OdeFcn(const double dT, const double* const adX, double* const adXDot) const override;
357
363 void PreOdeFcn(double T, const double* X) override;
364
365#ifdef FH_VISUALIZATION
373 void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
374
382 void RenderUpdate(const double T, const double* const X);
383#endif
384
385protected:
386#ifdef FH_VISUALIZATION
387 std::shared_ptr<visual::OceanSurfaceProjected> m_surface;
388 std::shared_ptr<visual::SeafloorProjected> m_seafloor;
389 std::shared_ptr<visual::SeafloorMesh> m_seafloorMesh;
390 std::shared_ptr<visual::OceanSides> m_oceanSides;
391 std::shared_ptr<visual::VisualSettings> m_visual;
392#endif
393private:
394 environment::EnvironmentProvider m_environment;
395 std::shared_ptr<environment::SeafloorForces> m_seafloorForces;
396 std::vector<std::shared_ptr<environment::field::AggregationField>> m_aggregationFields;
397};
398} // namespace environmentmodels
Definition Environment.h:338
Environment(std::string simObjectName, ISimObjectCreator *creator)
void PreOdeFcn(double T, const double *X) override
void OdeFcn(const double dT, const double *const adX, double *const adXDot) const override
Environment SimObjects.
Definition Environment.h:30