/home/runner/work/amr-wind/amr-wind/amr-wind/utilities/sampling/FreeSurfaceSampler.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/utilities/sampling/FreeSurfaceSampler.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
FreeSurfaceSampler.H
Go to the documentation of this file.
1#ifndef FREESURFACESAMPLER_H
2#define FREESURFACESAMPLER_H
3
4#include "amr-wind/CFDSim.H"
6
7namespace amr_wind::sampling {
8
9class FreeSurfaceSampler : public SamplerBase::Register<FreeSurfaceSampler>
10{
11public:
12 static std::string identifier() { return "FreeSurfaceSampler"; }
13
14 FreeSurfaceSampler(CFDSim& /*sim*/);
15
17
20 void initialize(const std::string& key) override;
21
23 void check_bounds() override;
24
26 void sampling_locations(SampleLocType& /*sample_locs*/) const override;
27
31 SampleLocType& /*sample_locs*/,
32 const amrex::Box& /*box*/) const override;
33
34 void output_locations(SampleLocType& sample_locs) const override
35 {
36 sampling_locations(sample_locs);
37 }
38
40 bool update_sampling_locations() override;
41
43 void post_regrid_actions() override;
44
45 void
46 define_netcdf_metadata(const ncutils::NCGroup& /*unused*/) const override;
47 void
48 populate_netcdf_metadata(const ncutils::NCGroup& /*unused*/) const override;
50 const ncutils::NCGroup& /*unused*/, size_t /*unused*/) const override;
51
53 [[nodiscard]] std::string label() const override { return m_label; }
54 std::string& label() override { return m_label; }
55
57 [[nodiscard]] std::string sampletype() const override
58 {
59 return identifier();
60 }
61
63 [[nodiscard]] int id() const override { return m_id; }
64 int& id() override { return m_id; }
65
68 [[nodiscard]] int num_gridpoints() const { return m_npts; }
70 [[nodiscard]] int num_instances() const { return m_ninst; }
72 [[nodiscard]] long num_points() const override
73 {
74 return static_cast<long>(m_npts) * m_ninst;
75 }
76 [[nodiscard]] long num_output_points() const override
77 {
78 return static_cast<long>(m_npts) * m_ninst;
79 }
80
81 [[nodiscard]] amrex::Vector<amrex::Array<amrex::Real, 2>>
83 {
84 return m_grid_locs;
85 }
86
87 [[nodiscard]] amrex::Vector<amrex::Real> heights() const { return m_out; }
88
89private:
91
93 const Field& m_vof;
94
96 amrex::Vector<int> m_npts_dir;
97 int m_npts{0};
100 int m_ninst{1};
101
106 int m_gc0 = 0;
107 int m_gc1 = 1;
108
110 amrex::Vector<amrex::Real> m_start, m_end;
112 amrex::Vector<amrex::Array<amrex::Real, 2>> m_grid_locs;
114 amrex::Vector<amrex::Real> m_out;
115
117 bool m_use_linear{false};
119 amrex::Real m_lx_linear{0.};
120
122 int m_ncomp{1};
124 int m_ncmax{8};
125
126 std::string m_label;
127 int m_id{-1};
128};
129
130} // namespace amr_wind::sampling
131
132#endif /* FREESURFACESAMPLER_H */
Definition CFDSim.H:54
Definition Field.H:112
int m_gc0
Grid coordinates, determined as a function of m_coorddir.
Definition FreeSurfaceSampler.H:106
amrex::Vector< int > m_npts_dir
Number or points on 2D grid in each direction.
Definition FreeSurfaceSampler.H:96
amrex::Vector< amrex::Array< amrex::Real, 2 > > grid_locations() const
Locations.
Definition FreeSurfaceSampler.H:82
amrex::Vector< amrex::Real > m_out
Output coordinate.
Definition FreeSurfaceSampler.H:114
void initialize(const std::string &key) override
Read user inputs and create mesh-based information for locating interface.
Definition FreeSurfaceSampler.cpp:20
static std::string identifier()
Definition FreeSurfaceSampler.H:12
amrex::Vector< amrex::Array< amrex::Real, 2 > > m_grid_locs
Locations of points in 2D grid.
Definition FreeSurfaceSampler.H:112
int m_npts
Definition FreeSurfaceSampler.H:97
CFDSim & m_sim
Definition FreeSurfaceSampler.H:90
std::string label() const override
Name of this sampling object.
Definition FreeSurfaceSampler.H:53
std::string m_label
Definition FreeSurfaceSampler.H:126
int m_gc1
Definition FreeSurfaceSampler.H:107
int m_coorddir
Coordinate direction to search along, default is z (this also determines the meaning of start and end...
Definition FreeSurfaceSampler.H:104
void output_locations(SampleLocType &sample_locs) const override
Definition FreeSurfaceSampler.H:34
FreeSurfaceSampler(CFDSim &)
Definition FreeSurfaceSampler.cpp:14
long num_points() const override
Number of points, total.
Definition FreeSurfaceSampler.H:72
int m_id
Definition FreeSurfaceSampler.H:127
std::string sampletype() const override
Type of this sampling object.
Definition FreeSurfaceSampler.H:57
void output_netcdf_data(const ncutils::NCGroup &, size_t) const override
Definition FreeSurfaceSampler.cpp:894
int num_gridpoints() const
Output functions for private variables Number of 2D grid points.
Definition FreeSurfaceSampler.H:68
amrex::Vector< amrex::Real > m_end
Definition FreeSurfaceSampler.H:110
amrex::Real m_lx_linear
Parameter for optional linear interpolation.
Definition FreeSurfaceSampler.H:119
amrex::Vector< amrex::Real > heights() const
Outputs (heights)
Definition FreeSurfaceSampler.H:87
long num_output_points() const override
Definition FreeSurfaceSampler.H:76
void check_bounds() override
Check and fix the bounds of the sampler so the probes are in the domain.
Definition FreeSurfaceSampler.cpp:346
bool m_use_linear
Flag to use linear interpolation for surface finding in part of domain.
Definition FreeSurfaceSampler.H:117
void sampling_locations(SampleLocType &) const override
Populate and return a vector of probe locations to be sampled.
Definition FreeSurfaceSampler.cpp:379
int num_instances() const
Number of instances.
Definition FreeSurfaceSampler.H:70
std::string & label() override
Definition FreeSurfaceSampler.H:54
bool update_sampling_locations() override
Find heights associated with 2D sample locations.
Definition FreeSurfaceSampler.cpp:415
int m_ncomp
Max number of sample points found in a single cell.
Definition FreeSurfaceSampler.H:122
const Field & m_vof
reference to VOF
Definition FreeSurfaceSampler.H:93
void define_netcdf_metadata(const ncutils::NCGroup &) const override
Definition FreeSurfaceSampler.cpp:878
int m_ninst
Number of instances (possible sampling points per location, like in the case of a breaking wave)
Definition FreeSurfaceSampler.H:100
int & id() override
Definition FreeSurfaceSampler.H:64
int m_ncmax
Max number of sample points allowed in a single cell.
Definition FreeSurfaceSampler.H:124
void post_regrid_actions() override
Redo some of the initialization work when the grid changes.
Definition FreeSurfaceSampler.cpp:732
amrex::Vector< amrex::Real > m_start
Parameters to set up plane.
Definition FreeSurfaceSampler.H:110
int id() const override
Unique identifier for this set of probe locations.
Definition FreeSurfaceSampler.H:63
void populate_netcdf_metadata(const ncutils::NCGroup &) const override
Definition FreeSurfaceSampler.cpp:891
Representation of a NetCDF group.
Definition nc_interface.H:162
Definition DTUSpinnerSampler.cpp:19
Definition SamplerBase.H:19