/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
15namespace amr_wind {
16
17class CFDSim;
18class SimTime;
19class Field;
20
21namespace averaging {
22
28 : public Factory<
29 FieldTimeAverage,
30 CFDSim&,
31 const std::string&,
32 const std::string&>
33{
34public:
35 static std::string base_identifier() { return "FieldTimeAverage"; }
36
37 ~FieldTimeAverage() override = default;
38
46 virtual void operator()(
47 const SimTime& time,
48 const amrex::Real filter_width,
49 const amrex::Real avg_time_interval,
50 const amrex::Real elapsed_time) = 0;
51
52 virtual const std::string& average_field_name() = 0;
53};
54
57class TimeAveraging : public PostProcessBase::Register<TimeAveraging>
58{
59public:
60 static std::string identifier() { return "TimeAveraging"; }
61
62 TimeAveraging(CFDSim& /*sim*/, std::string /*label*/);
63
64 ~TimeAveraging() override;
65
67 void pre_init_actions() override;
68
69 void initialize() override;
70
71 void post_advance_work() override;
72
73 void output_actions() override {}
74
75 void post_regrid_actions() override {}
76
77 const std::string& add_averaging(
78 const std::string& field_name,
79 const std::string& avg_type = "ReAveraging");
80
81private:
83
84 const std::string m_label;
85
87 amrex::Vector<std::unique_ptr<FieldTimeAverage>> m_averages;
88
90 std::map<std::string, FieldTimeAverage*> m_registered;
91
93 amrex::Real m_start_time{0.0};
94
96 amrex::Real m_stop_time{std::numeric_limits<amrex::Real>::max()};
97
100
102 amrex::Real m_time_interval{-1.};
103
106};
107
108} // namespace averaging
109} // namespace amr_wind
110
111#endif /* TIMEAVERAGING_H */
Definition CFDSim.H:54
Definition Field.H:116
Definition SimTime.H:30
Definition TimeAveraging.H:33
virtual const std::string & average_field_name()=0
static std::string base_identifier()
Definition TimeAveraging.H:35
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:105
const std::string m_label
Definition TimeAveraging.H:84
std::map< std::string, FieldTimeAverage * > m_registered
Fields registered so far to avoid duplication.
Definition TimeAveraging.H:90
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:73
TimeAveraging(CFDSim &, std::string)
Definition TimeAveraging.cpp:12
void post_regrid_actions() override
Definition TimeAveraging.H:75
amrex::Real m_start_time
Time to start averaging the fields.
Definition TimeAveraging.H:93
CFDSim & m_sim
Definition TimeAveraging.H:82
amrex::Real m_stop_time
Time to stop averaging the fields.
Definition TimeAveraging.H:96
amrex::Real m_filter
Time averaging window (in seconds)
Definition TimeAveraging.H:99
static std::string identifier()
Definition TimeAveraging.H:60
amrex::Real m_time_interval
Time averaging time interval (in seconds)
Definition TimeAveraging.H:102
amrex::Vector< std::unique_ptr< FieldTimeAverage > > m_averages
Vector containing all registered field averagers.
Definition TimeAveraging.H:87
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:7
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:7