/home/runner/work/kynema-sgf/kynema-sgf/src/utilities/FieldPlaneAveragingFine.H Source File

Kynema-SGF API: /home/runner/work/kynema-sgf/kynema-sgf/src/utilities/FieldPlaneAveragingFine.H Source File
Kynema-SGF 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 "src/CFDSim.H"
6#include "src/core/Field.H"
7#include "src/core/SimTime.H"
8
18
19namespace kynema_sgf {
20
28
29template <typename FType>
31{
32public:
41 const FType& field_in,
42 const kynema_sgf::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 kynema_sgf
182
183#endif /* FieldPlaneAveragingFine_H */
Definition CFDSim.H:55
Definition FieldPlaneAveragingFine.H:31
int m_precision
Definition FieldPlaneAveragingFine.H:119
amrex::Real line_average_cell(int ind, int comp) const
Definition FieldPlaneAveragingFine.cpp:165
int m_last_updated_index
Definition FieldPlaneAveragingFine.H:120
amrex::Vector< amrex::Real > m_line_average
Definition FieldPlaneAveragingFine.H:105
virtual void operator()()
Definition FieldPlaneAveragingFine.cpp:176
amrex::Real m_xhi
Definition FieldPlaneAveragingFine.H:115
int axis() const
Definition FieldPlaneAveragingFine.H:77
void compute_averages(const IndexSelector &idxOp)
Definition FieldPlaneAveragingFine.cpp:206
const int m_axis
Definition FieldPlaneAveragingFine.H:125
const bool m_comp_deriv
Definition FieldPlaneAveragingFine.H:126
amrex::Real m_xlo
Definition FieldPlaneAveragingFine.H:114
int m_ncomp
Definition FieldPlaneAveragingFine.H:102
const amrex::Vector< amrex::Real > & line_deriv() const
Definition FieldPlaneAveragingFine.H:89
amrex::Real line_derivative_interpolated(amrex::Real x, int comp) const
Definition FieldPlaneAveragingFine.cpp:436
int ncomp() const
Definition FieldPlaneAveragingFine.H:78
void convert_x_to_ind(amrex::Real x, int &ind, amrex::Real &c) const
Definition FieldPlaneAveragingFine.cpp:63
amrex::Vector< amrex::Real > m_line_xcentroid
Definition FieldPlaneAveragingFine.H:110
amrex::Real xlo() const
Definition FieldPlaneAveragingFine.H:75
void line_average(int comp, amrex::Vector< amrex::Real > &l_vec)
Definition FieldPlaneAveragingFine.cpp:151
virtual ~FPlaneAveragingFine()=default
amrex::Vector< amrex::Real > m_line_deriv
Definition FieldPlaneAveragingFine.H:108
void compute_line_derivatives()
Definition FieldPlaneAveragingFine.cpp:394
const SimTime & m_time
Definition FieldPlaneAveragingFine.H:124
int m_ncell_line
Definition FieldPlaneAveragingFine.H:117
FPlaneAveragingFine(const FType &field_in, const kynema_sgf::SimTime &time, int axis_in, bool compute_deriv=false)
Definition FieldPlaneAveragingFine.cpp:13
void set_precision(int p)
Definition FieldPlaneAveragingFine.H:72
amrex::Real m_dx
Definition FieldPlaneAveragingFine.H:113
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 line_average_interpolated(amrex::Real x, int comp) const
Definition FieldPlaneAveragingFine.cpp:135
amrex::Real line_derivative_of_average_cell(int ind, int comp) const
Definition FieldPlaneAveragingFine.cpp:406
amrex::Real dx() const
Definition FieldPlaneAveragingFine.H:74
const amrex::Vector< amrex::Real > & line_average() const
Definition FieldPlaneAveragingFine.H:85
void output_line_average_ascii(int step, amrex::Real time)
Definition FieldPlaneAveragingFine.cpp:127
int ncell_line() const
Definition FieldPlaneAveragingFine.H:79
int last_updated_index() const
Definition FieldPlaneAveragingFine.H:80
const FType & field() const
Definition FieldPlaneAveragingFine.H:99
const amrex::Vector< amrex::Real > & line_centroids() const
Definition FieldPlaneAveragingFine.H:94
Definition SimTime.H:33
amrex::Vector< amrex::Real > m_line_Su_average
Definition FieldPlaneAveragingFine.H:157
~VelPlaneAveragingFine() override=default
amrex::Vector< amrex::Real > m_line_hvelmag_average
Definition FieldPlaneAveragingFine.H:154
amrex::Vector< amrex::Real > m_line_Sv_average
Definition FieldPlaneAveragingFine.H:161
VelPlaneAveragingFine(CFDSim &sim, int axis_in)
Definition FieldPlaneAveragingFine.cpp:455
void operator()() override
Definition FieldPlaneAveragingFine.cpp:465
void compute_hvelmag_averages(const IndexSelector &idxOp)
Definition FieldPlaneAveragingFine.cpp:494
amrex::Real line_sv_average_interpolated(amrex::Real x) const
Definition FieldPlaneAveragingFine.cpp:684
amrex::Real line_hvelmag_average_interpolated(amrex::Real x) const
Definition FieldPlaneAveragingFine.cpp:662
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< Field > FieldPlaneAveragingFine
Definition FieldPlaneAveragingFine.H:137
FPlaneAveragingFine< ScratchField > ScratchFieldPlaneAveragingFine
Definition FieldPlaneAveragingFine.H:138