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

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/utilities/averaging/TimeAveraging.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
TimeAveraging.H
Go to the documentation of this file.
1#ifndef TIMEAVERAGING_H
2#define TIMEAVERAGING_H
3
7
8#include "AMReX_Vector.H"
9
10#include <limits>
11#include <memory>
12#include <string>
13#include <map>
14#include "AMReX_REAL.H"
15
16using namespace amrex::literals;
17
18namespace amr_wind {
19
20class CFDSim;
21class SimTime;
22class Field;
23
24namespace averaging {
25
31 : public Factory<
32 FieldTimeAverage,
33 CFDSim&,
34 const std::string&,
35 const std::string&>
36{
37public:
38 static std::string base_identifier() { return "FieldTimeAverage"; }
39
40 ~FieldTimeAverage() override = default;
41
49 virtual void operator()(
50 const SimTime& time,
51 const amrex::Real filter_width,
52 const amrex::Real avg_time_interval,
53 const amrex::Real elapsed_time) = 0;
54
55 virtual const std::string& average_field_name() = 0;
56};
57
60class TimeAveraging : public PostProcessBase::Register<TimeAveraging>
61{
62public:
63 static std::string identifier() { return "TimeAveraging"; }
64
65 TimeAveraging(CFDSim& /*sim*/, std::string /*label*/);
66
67 ~TimeAveraging() override;
68
70 void pre_init_actions() override;
71
72 void initialize() override;
73
74 void post_advance_work() override;
75
76 void output_actions() override {}
77
78 void post_regrid_actions() override {}
79
80 const std::string& add_averaging(
81 const std::string& field_name,
82 const std::string& avg_type = "ReAveraging");
83
84private:
86
87 const std::string m_label;
88
90 amrex::Vector<std::unique_ptr<FieldTimeAverage>> m_averages;
91
93 std::map<std::string, FieldTimeAverage*> m_registered;
94
96 amrex::Real m_start_time{0.0_rt};
97
99 amrex::Real m_stop_time{std::numeric_limits<amrex::Real>::max()};
100
103
105 amrex::Real m_time_interval{-1.};
106
109};
110
111} // namespace averaging
112} // namespace amr_wind
113
114#endif /* TIMEAVERAGING_H */
Definition CFDSim.H:54
Definition Field.H:116
Definition SimTime.H:33
Definition TimeAveraging.H:36
virtual const std::string & average_field_name()=0
static std::string base_identifier()
Definition TimeAveraging.H:38
virtual void operator()(const SimTime &time, const amrex::Real filter_width, const amrex::Real avg_time_interval, const amrex::Real elapsed_time)=0
void initialize() override
Definition TimeAveraging.cpp:64
amrex::Real m_accumulated_avg_time_interval
Accumulated averaging time interval.
Definition TimeAveraging.H:108
const std::string m_label
Definition TimeAveraging.H:87
std::map< std::string, FieldTimeAverage * > m_registered
Fields registered so far to avoid duplication.
Definition TimeAveraging.H:93
const std::string & add_averaging(const std::string &field_name, const std::string &avg_type="ReAveraging")
Definition TimeAveraging.cpp:66
void output_actions() override
Definition TimeAveraging.H:76
TimeAveraging(CFDSim &, std::string)
Definition TimeAveraging.cpp:12
void post_regrid_actions() override
Definition TimeAveraging.H:78
amrex::Real m_start_time
Time to start averaging the fields.
Definition TimeAveraging.H:96
CFDSim & m_sim
Definition TimeAveraging.H:85
amrex::Real m_stop_time
Time to stop averaging the fields.
Definition TimeAveraging.H:99
amrex::Real m_filter
Time averaging window (in seconds)
Definition TimeAveraging.H:102
static std::string identifier()
Definition TimeAveraging.H:63
amrex::Real m_time_interval
Time averaging time interval (in seconds)
Definition TimeAveraging.H:105
amrex::Vector< std::unique_ptr< FieldTimeAverage > > m_averages
Vector containing all registered field averagers.
Definition TimeAveraging.H:90
void pre_init_actions() override
Perform actions before mesh is created.
Definition TimeAveraging.cpp:18
void post_advance_work() override
Definition TimeAveraging.cpp:83
Definition ReAveraging.cpp:10
static constexpr amrex::Real LARGE_NUM
A large positive number.
Definition constants.H:29
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10