FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
NetCdfSeafloorBathymetry.h
1#pragma once
2
3#include "util/NetCDFParser.h"
4
5#include <marenv/seafloor/BathymetryField.h>
6#include <cstdint>
7#include <memory>
8#include <string>
9#include <vector>
10
11namespace environmentmodels
12{
13
22{
23public:
28 explicit NetCdfSeafloorBathymetry(const std::string& filename);
29
39 [[nodiscard]] std::unique_ptr<NetCdfSeafloorBathymetry> MakeVisualTerrain(std::uint32_t seed) const;
40
49 [[nodiscard]] marenv::Status GetDepth(const double pos[2], double& depthOut) override;
50
60 [[nodiscard]] marenv::Status ComputeSurfaceUnitNormal(const double pos[2], double unitNormalOut[3]) override;
61
68 [[nodiscard]] marenv::Status GetSoilState(const double pos[3], marenv::seafloor::SoilState& soilOut) override;
69
74 const netcdf_sinmod::Grid& GetGrid() const { return m_grid; }
75
80 const double* GetDepthMap() const { return m_depthMap.data(); }
81
86 double GetLengthX() const { return m_length_x; }
87
92 double GetLengthY() const { return m_length_y; }
93
94private:
100 NetCdfSeafloorBathymetry(const netcdf_sinmod::Grid& grid, std::vector<double> depthMap);
101
107 double GetDepthInternal(const double pos[2]) const;
108
115 double DepthSlope(const double pos[2], int axis) const;
116
117 netcdf_sinmod::Grid m_grid {};
118 std::vector<double> m_depthMap;
119 double m_length_x = 0.0;
120 double m_length_y = 0.0;
121};
122
123} // namespace environmentmodels
Definition NetCdfSeafloorBathymetry.h:22
marenv::Status GetSoilState(const double pos[3], marenv::seafloor::SoilState &soilOut) override
const netcdf_sinmod::Grid & GetGrid() const
Definition NetCdfSeafloorBathymetry.h:74
const double * GetDepthMap() const
Definition NetCdfSeafloorBathymetry.h:80
std::unique_ptr< NetCdfSeafloorBathymetry > MakeVisualTerrain(std::uint32_t seed) const
marenv::Status ComputeSurfaceUnitNormal(const double pos[2], double unitNormalOut[3]) override
NetCdfSeafloorBathymetry(const std::string &filename)
double GetLengthX() const
Definition NetCdfSeafloorBathymetry.h:86
marenv::Status GetDepth(const double pos[2], double &depthOut) override
double GetLengthY() const
Definition NetCdfSeafloorBathymetry.h:92
Definition BathymetryField.h:25
Status
Definition marenv.h:40
Environment SimObjects.
Definition Environment.h:25
Definition SoilState.h:14
Grid dimensions structure.
Definition NetCDFParser.h:23