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

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/utilities/FieldPlaneAveraging.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
FieldPlaneAveraging.H
Go to the documentation of this file.
1#ifndef FIELDPLANEAVERAGING_H
2#define FIELDPLANEAVERAGING_H
3
5#include "amr-wind/CFDSim.H"
8
18
19namespace amr_wind {
20
28template <typename FType>
30{
31public:
40 const FType& field_in,
41 const amr_wind::SimTime& time,
42 int axis_in,
43 bool compute_deriv = false);
44
45 virtual ~FPlaneAveraging() = default;
46
47 virtual void operator()();
48
50 [[nodiscard]] amrex::Real
51 line_average_interpolated(amrex::Real x, int comp) const;
53 [[nodiscard]] amrex::Real line_average_cell(int ind, int comp) const;
54
57 [[nodiscard]] amrex::Real
58 line_derivative_interpolated(amrex::Real x, int comp) const;
61 [[nodiscard]] amrex::Real
62 line_derivative_of_average_cell(int ind, int comp) const;
63
65 const std::string& filename, int step, amrex::Real time);
66 void output_line_average_ascii(int step, amrex::Real time);
67
69 void set_precision(int p) { m_precision = p; };
70
71 [[nodiscard]] amrex::Real dx() const { return m_dx; };
72 [[nodiscard]] amrex::Real xlo() const { return m_xlo; };
73
74 [[nodiscard]] int axis() const { return m_axis; };
75 [[nodiscard]] int level() const { return m_level; };
76 [[nodiscard]] int ncomp() const { return m_ncomp; };
77 [[nodiscard]] int ncell_plane() const { return m_ncell_plane; };
78 [[nodiscard]] int ncell_line() const { return m_ncell_line; };
79 [[nodiscard]] int last_updated_index() const
80 {
82 };
83
84 [[nodiscard]] const amrex::Vector<amrex::Real>& line_average() const
85 {
86 return m_line_average;
87 };
88 [[nodiscard]] const amrex::Vector<amrex::Real>& line_deriv() const
89 {
90 return m_line_deriv;
91 };
92 void line_average(int comp, amrex::Vector<amrex::Real>& l_vec);
93 [[nodiscard]] const amrex::Vector<amrex::Real>& line_centroids() const
94 {
95 return m_line_xcentroid;
96 };
97
98 [[nodiscard]] const FType& field() const { return m_field; };
99
100protected:
102
103 amrex::Vector<amrex::Real>
107 amrex::Vector<amrex::Real> m_line_deriv;
108
109 amrex::Vector<amrex::Real> m_line_xcentroid;
111
112 amrex::Real m_dx;
113 amrex::Real m_xlo;
114
117
118 int m_precision = 4;
119 const int m_level =
120 0;
123
124 const FType& m_field;
126 const int m_axis;
127 const bool m_comp_deriv;
128
129public: // public for GPU
131 template <typename IndexSelector>
132 void
133 compute_averages(const IndexSelector& idxOp, const amrex::MultiFab& mfab);
134
137};
138
141
146{
147public:
148 VelPlaneAveraging(CFDSim& sim, int axis_in);
149
150 ~VelPlaneAveraging() override = default;
151
152 void operator()() override;
153
154private:
155 amrex::Vector<amrex::Real>
159 amrex::Vector<amrex::Real> m_line_hvelmag_deriv;
160
161public: // public for GPU
163 template <typename IndexSelector>
165 const IndexSelector& idx_op,
166 int h1_idx,
167 int h2_idx,
168 const amrex::MultiFab& mfab);
169
171 const amrex::Vector<amrex::Real>& line_hvelmag_average()
172 {
174 };
175
178 [[nodiscard]] amrex::Real
179 line_hvelmag_average_interpolated(amrex::Real x) const;
182 [[nodiscard]] amrex::Real line_hvelmag_average_cell(int ind) const;
183
188 [[nodiscard]] amrex::Real
192 [[nodiscard]] amrex::Real
194
196 const std::string& filename, int step, amrex::Real time);
197 void output_line_average_ascii(int step, amrex::Real time);
198};
199
200} // namespace amr_wind
201
202#endif /* FieldPlaneAveraging_H */
Definition CFDSim.H:54
Definition FieldPlaneAveraging.H:30
amrex::Real xlo() const
Definition FieldPlaneAveraging.H:72
int m_ncomp
Definition FieldPlaneAveraging.H:101
virtual void operator()()
Definition FieldPlaneAveraging.cpp:230
amrex::Real line_derivative_of_average_cell(int ind, int comp) const
Definition FieldPlaneAveraging.cpp:174
amrex::Real line_average_cell(int ind, int comp) const
Definition FieldPlaneAveraging.cpp:150
void compute_line_derivatives()
Definition FieldPlaneAveraging.cpp:161
int ncell_line() const
Definition FieldPlaneAveraging.H:78
void output_line_average_ascii(int step, amrex::Real time)
Definition FieldPlaneAveraging.cpp:100
amrex::Real dx() const
Definition FieldPlaneAveraging.H:71
int m_last_updated_index
Definition FieldPlaneAveraging.H:121
amrex::Real m_xlo
Definition FieldPlaneAveraging.H:113
amrex::Vector< amrex::Real > m_line_deriv
Definition FieldPlaneAveraging.H:107
amrex::Real line_average_interpolated(amrex::Real x, int comp) const
Definition FieldPlaneAveraging.cpp:109
const amrex::Vector< amrex::Real > & line_average() const
Definition FieldPlaneAveraging.H:84
const Field & m_field
Definition FieldPlaneAveraging.H:124
const amrex::Vector< amrex::Real > & line_centroids() const
Definition FieldPlaneAveraging.H:93
int m_ncell_line
Definition FieldPlaneAveraging.H:116
int ncell_plane() const
Definition FieldPlaneAveraging.H:77
int m_precision
Definition FieldPlaneAveraging.H:118
int ncomp() const
Definition FieldPlaneAveraging.H:76
const FType & field() const
Definition FieldPlaneAveraging.H:98
virtual ~FPlaneAveraging()=default
amrex::Vector< amrex::Real > m_line_xcentroid
Definition FieldPlaneAveraging.H:109
const bool m_comp_deriv
Definition FieldPlaneAveraging.H:127
int last_updated_index() const
Definition FieldPlaneAveraging.H:79
void line_average(int comp, amrex::Vector< amrex::Real > &l_vec)
Definition FieldPlaneAveraging.cpp:137
int m_ncell_plane
Definition FieldPlaneAveraging.H:115
const int m_axis
Definition FieldPlaneAveraging.H:126
amrex::Real line_derivative_interpolated(amrex::Real x, int comp) const
Definition FieldPlaneAveraging.cpp:202
amrex::Real m_dx
Definition FieldPlaneAveraging.H:112
void compute_averages(const IndexSelector &idxOp, const amrex::MultiFab &mfab)
Definition FieldPlaneAveraging.cpp:260
int axis() const
Definition FieldPlaneAveraging.H:74
amrex::Vector< amrex::Real > m_line_average
Definition FieldPlaneAveraging.H:104
const SimTime & m_time
Definition FieldPlaneAveraging.H:125
const amrex::Vector< amrex::Real > & line_deriv() const
Definition FieldPlaneAveraging.H:88
const int m_level
Definition FieldPlaneAveraging.H:119
void output_line_average_ascii(const std::string &filename, int step, amrex::Real time)
Definition FieldPlaneAveraging.cpp:57
int level() const
Definition FieldPlaneAveraging.H:75
void set_precision(int p)
Definition FieldPlaneAveraging.H:69
FPlaneAveraging(const FType &field_in, const amr_wind::SimTime &time, int axis_in, bool compute_deriv=false)
Definition FieldPlaneAveraging.cpp:11
Definition SimTime.H:33
amrex::Vector< amrex::Real > m_line_hvelmag_average
Definition FieldPlaneAveraging.H:156
VelPlaneAveraging(CFDSim &sim, int axis_in)
Definition FieldPlaneAveraging.cpp:325
void output_line_average_ascii(const std::string &filename, int step, amrex::Real time)
Definition FieldPlaneAveraging.cpp:496
amrex::Vector< amrex::Real > m_line_hvelmag_deriv
line storage for the derivative of average horizontal velocity magnitude
Definition FieldPlaneAveraging.H:159
amrex::Real line_hvelmag_average_cell(int ind) const
Definition FieldPlaneAveraging.cpp:487
void compute_hvelmag_averages(const IndexSelector &idx_op, int h1_idx, int h2_idx, const amrex::MultiFab &mfab)
Definition FieldPlaneAveraging.cpp:366
void operator()() override
Definition FieldPlaneAveraging.cpp:336
const amrex::Vector< amrex::Real > & line_hvelmag_average()
Definition FieldPlaneAveraging.H:171
void compute_line_hvelmag_derivatives()
Definition FieldPlaneAveraging.cpp:427
~VelPlaneAveraging() override=default
amrex::Real line_hvelmag_derivative_interpolated(amrex::Real x) const
amrex::Real line_hvelmag_derivative_of_average_cell(int ind) const
Definition FieldPlaneAveraging.cpp:436
amrex::Real line_hvelmag_average_interpolated(amrex::Real x) const
Definition FieldPlaneAveraging.cpp:462
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10
FPlaneAveraging< Field > FieldPlaneAveraging
Definition FieldPlaneAveraging.H:139
FPlaneAveraging< ScratchField > ScratchFieldPlaneAveraging
Definition FieldPlaneAveraging.H:140