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

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/utilities/FieldPlaneAveragingFine.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
FieldPlaneAveragingFine.H
Go to the documentation of this file.
1#ifndef FIELDPLANEAVERAGINGFINE_H
2#define FIELDPLANEAVERAGINGFINE_H
3
5#include "amr-wind/CFDSim.H"
8
18
19namespace amr_wind {
20
28
29template <typename FType>
31{
32public:
41 const FType& field_in,
42 const amr_wind::SimTime& time,
43 int axis_in,
44 bool compute_deriv = false);
45
46 virtual ~FPlaneAveragingFine() = default;
47
48 virtual void operator()();
49
50 void convert_x_to_ind(amrex::Real x, int& ind, amrex::Real& c) const;
51
53 [[nodiscard]] amrex::Real
54 line_average_interpolated(amrex::Real x, int comp) const;
56 [[nodiscard]] amrex::Real line_average_cell(int ind, int comp) const;
57
60 [[nodiscard]] amrex::Real
61 line_derivative_interpolated(amrex::Real x, int comp) const;
64 [[nodiscard]] amrex::Real
65 line_derivative_of_average_cell(int ind, int comp) const;
66
68 const std::string& filename, int step, amrex::Real time);
69 void output_line_average_ascii(int step, amrex::Real time);
70
72 void set_precision(int p) { m_precision = p; };
73
74 [[nodiscard]] amrex::Real dx() const { return m_dx; };
75 [[nodiscard]] amrex::Real xlo() const { return m_xlo; };
76
77 [[nodiscard]] int axis() const { return m_axis; };
78 [[nodiscard]] int ncomp() const { return m_ncomp; };
79 [[nodiscard]] int ncell_line() const { return m_ncell_line; };
80 [[nodiscard]] int last_updated_index() const
81 {
83 };
84
85 [[nodiscard]] const amrex::Vector<amrex::Real>& line_average() const
86 {
87 return m_line_average;
88 };
89 [[nodiscard]] const amrex::Vector<amrex::Real>& line_deriv() const
90 {
91 return m_line_deriv;
92 };
93 void line_average(int comp, amrex::Vector<amrex::Real>& l_vec);
94 [[nodiscard]] const amrex::Vector<amrex::Real>& line_centroids() const
95 {
96 return m_line_xcentroid;
97 };
98
99 [[nodiscard]] const FType& field() const { return m_field; };
100
101protected:
103
104 amrex::Vector<amrex::Real>
108 amrex::Vector<amrex::Real> m_line_deriv;
109
110 amrex::Vector<amrex::Real> m_line_xcentroid;
112
113 amrex::Real m_dx;
114 amrex::Real m_xlo;
115 amrex::Real m_xhi;
116
118
119 int m_precision = 6;
122
123 const FType& m_field;
125 const int m_axis;
126 const bool m_comp_deriv;
127
128public: // public for GPU
130 template <typename IndexSelector>
131 void compute_averages(const IndexSelector& idxOp);
132
135};
136
139
144{
145public:
146 VelPlaneAveragingFine(CFDSim& sim, int axis_in);
147
148 ~VelPlaneAveragingFine() override = default;
149
150 void operator()() override;
151
152private:
153 amrex::Vector<amrex::Real>
156 amrex::Vector<amrex::Real>
159
160 amrex::Vector<amrex::Real>
163
164public: // public for GPU
166 template <typename IndexSelector>
167 void compute_hvelmag_averages(const IndexSelector& idxOp);
168
171 [[nodiscard]] amrex::Real
172 line_hvelmag_average_interpolated(amrex::Real x) const;
175 [[nodiscard]] amrex::Real line_su_average_interpolated(amrex::Real x) const;
178 [[nodiscard]] amrex::Real line_sv_average_interpolated(amrex::Real x) const;
179};
180
181} // namespace amr_wind
182
183#endif /* FieldPlaneAveragingFine_H */
Definition CFDSim.H:54
Definition FieldPlaneAveragingFine.H:31
amrex::Vector< amrex::Real > m_line_deriv
Definition FieldPlaneAveragingFine.H:108
void compute_line_derivatives()
Definition FieldPlaneAveragingFine.cpp:394
amrex::Real xlo() const
Definition FieldPlaneAveragingFine.H:75
int m_last_updated_index
Definition FieldPlaneAveragingFine.H:120
amrex::Real line_derivative_interpolated(amrex::Real x, int comp) const
Definition FieldPlaneAveragingFine.cpp:436
int ncomp() const
Definition FieldPlaneAveragingFine.H:78
amrex::Vector< amrex::Real > m_line_xcentroid
Definition FieldPlaneAveragingFine.H:110
amrex::Real line_derivative_of_average_cell(int ind, int comp) const
Definition FieldPlaneAveragingFine.cpp:406
int m_precision
Definition FieldPlaneAveragingFine.H:119
int m_ncomp
Definition FieldPlaneAveragingFine.H:102
const int m_axis
Definition FieldPlaneAveragingFine.H:125
const amrex::Vector< amrex::Real > & line_average() const
Definition FieldPlaneAveragingFine.H:85
amrex::Real line_average_interpolated(amrex::Real x, int comp) const
Definition FieldPlaneAveragingFine.cpp:135
amrex::Real m_xhi
Definition FieldPlaneAveragingFine.H:115
int axis() const
Definition FieldPlaneAveragingFine.H:77
amrex::Real line_average_cell(int ind, int comp) const
Definition FieldPlaneAveragingFine.cpp:165
amrex::Real m_xlo
Definition FieldPlaneAveragingFine.H:114
void output_line_average_ascii(int step, amrex::Real time)
Definition FieldPlaneAveragingFine.cpp:127
void convert_x_to_ind(amrex::Real x, int &ind, amrex::Real &c) const
Definition FieldPlaneAveragingFine.cpp:63
const amrex::Vector< amrex::Real > & line_deriv() const
Definition FieldPlaneAveragingFine.H:89
const FType & field() const
Definition FieldPlaneAveragingFine.H:99
void set_precision(int p)
Definition FieldPlaneAveragingFine.H:72
const SimTime & m_time
Definition FieldPlaneAveragingFine.H:124
const amrex::Vector< amrex::Real > & line_centroids() const
Definition FieldPlaneAveragingFine.H:94
virtual ~FPlaneAveragingFine()=default
amrex::Vector< amrex::Real > m_line_average
Definition FieldPlaneAveragingFine.H:105
const bool m_comp_deriv
Definition FieldPlaneAveragingFine.H:126
virtual void operator()()
Definition FieldPlaneAveragingFine.cpp:176
void compute_averages(const IndexSelector &idxOp)
Definition FieldPlaneAveragingFine.cpp:206
int last_updated_index() const
Definition FieldPlaneAveragingFine.H:80
const Field & m_field
Definition FieldPlaneAveragingFine.H:123
void output_line_average_ascii(const std::string &filename, int step, amrex::Real time)
Definition FieldPlaneAveragingFine.cpp:84
amrex::Real m_dx
Definition FieldPlaneAveragingFine.H:113
FPlaneAveragingFine(const FType &field_in, const amr_wind::SimTime &time, int axis_in, bool compute_deriv=false)
Definition FieldPlaneAveragingFine.cpp:13
amrex::Real dx() const
Definition FieldPlaneAveragingFine.H:74
int ncell_line() const
Definition FieldPlaneAveragingFine.H:79
void line_average(int comp, amrex::Vector< amrex::Real > &l_vec)
Definition FieldPlaneAveragingFine.cpp:151
int m_ncell_line
Definition FieldPlaneAveragingFine.H:117
Definition SimTime.H:33
amrex::Vector< amrex::Real > m_line_Sv_average
Definition FieldPlaneAveragingFine.H:161
amrex::Vector< amrex::Real > m_line_Su_average
Definition FieldPlaneAveragingFine.H:157
amrex::Real line_hvelmag_average_interpolated(amrex::Real x) const
Definition FieldPlaneAveragingFine.cpp:662
amrex::Vector< amrex::Real > m_line_hvelmag_average
Definition FieldPlaneAveragingFine.H:154
amrex::Real line_sv_average_interpolated(amrex::Real x) const
Definition FieldPlaneAveragingFine.cpp:684
void compute_hvelmag_averages(const IndexSelector &idxOp)
Definition FieldPlaneAveragingFine.cpp:494
VelPlaneAveragingFine(CFDSim &sim, int axis_in)
Definition FieldPlaneAveragingFine.cpp:455
void operator()() override
Definition FieldPlaneAveragingFine.cpp:465
~VelPlaneAveragingFine() override=default
amrex::Real line_su_average_interpolated(amrex::Real x) const
Definition FieldPlaneAveragingFine.cpp:673
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10
FPlaneAveragingFine< ScratchField > ScratchFieldPlaneAveragingFine
Definition FieldPlaneAveragingFine.H:138
FPlaneAveragingFine< Field > FieldPlaneAveragingFine
Definition FieldPlaneAveragingFine.H:137