FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Bump.h
1#pragma once
2
12#include "HashGrid.h"
13
14#include <array>
15
16namespace environment::field::aggregation
17{
18
20constexpr int kBumpExponent = 2;
21
23constexpr int kPolarRadial3D = 3;
25constexpr int kPolarRadial2D = 4;
27constexpr int kPolarAngularInside = 16;
29constexpr int kPolarAngularOutside = 12;
31constexpr int kRectGaussPoints = 6;
32
34struct Bump
35{
36 double cx = 0.0;
37 double cy = 0.0;
38 double cz = 0.0;
39 double a = 1.0;
40 double b = 1.0;
41 double c = 1.0;
42 double cosPhi = 1.0;
43 double sinPhi = 0.0;
44 double amp = 0.0;
45};
46
48constexpr double kMassFactor = 32.0 * 3.14159265358979323846 / 105.0;
49
51[[nodiscard]] double AmplitudeForMass(double biomass, double a, double b, double c);
52
54[[nodiscard]] double Mass(const Bump& bump);
55
57[[nodiscard]] Box SupportBox(const Bump& bump);
58
60[[nodiscard]] double Value(const Bump& bump, double x, double y, double z);
61
63[[nodiscard]] double Projection(const Bump& bump, double x, double y);
64
66[[nodiscard]] double SliceMass(const Bump& bump, double z);
67
73[[nodiscard]] double DiskIntegral(const Bump& bump, double x, double y, double z, double radius);
74
80[[nodiscard]] double CircleIntegral(const Bump& bump, double x, double y, double radius);
81
87[[nodiscard]] double RectIntegral(const Bump& bump, double xMin, double xMax, double yMin, double yMax);
88
89} // namespace environment::field::aggregation
An axis-aligned box, NED [m]. Closed: a box that only touches another one overlaps it.
Definition HashGrid.h:21
One bump with its precomputed constants, in double.
Definition Bump.h:35
double cz
Centre, depth [m].
Definition Bump.h:38
double a
Semi-axis along the rotated x axis [m].
Definition Bump.h:39
double c
Semi-axis along z [m].
Definition Bump.h:41
double sinPhi
sin of the horizontal rotation.
Definition Bump.h:43
double cx
Centre, north [m].
Definition Bump.h:36
double cosPhi
cos of the horizontal rotation.
Definition Bump.h:42
double amp
Peak value A [kg/m^3], A = 105 M / (32 pi a b c).
Definition Bump.h:44
double b
Semi-axis along the rotated y axis [m].
Definition Bump.h:40
double cy
Centre, east [m].
Definition Bump.h:37