37 use json_module,
only : json_file
67 real(kind=
rp) :: start_time
73 procedure, pass(this) :: init_from_attributes => &
92 type(json_file),
intent(inout) :: json
93 class(
case_t),
intent(inout),
target :: case
94 character(len=:),
allocatable :: filename
95 character(len=:),
allocatable :: precision
96 character(len=20),
allocatable :: fields(:)
97 character(len=:),
allocatable :: hom_dir
98 character(len=:),
allocatable :: stat_set
99 real(kind=
rp) :: start_time
100 type(
field_t),
pointer :: u, v, w, p
101 type(
coef_t),
pointer :: coef
103 call this%init_base(json,
case)
115 coef =>
case%fluid%c_Xh
117 start_time, hom_dir, stat_set)
130 start_time, hom_dir, stat_set)
132 character(len=*),
intent(in) :: hom_dir
133 character(len=*),
intent(in) :: stat_set
134 real(kind=
rp),
intent(in) :: start_time
135 type(
field_t),
intent(inout) :: u, v, w, p
136 type(
coef_t),
intent(in) :: coef
137 character(len=LOG_SIZE) :: log_buf
139 call neko_log%section(
'Fluid stats')
140 write(log_buf,
'(A,E15.7)')
'Start time: ', start_time
142 write(log_buf,
'(A,A)')
'Set of statistics: ', trim(stat_set)
144 write(log_buf,
'(A,A)')
'Averaging in direction: ', trim(hom_dir)
148 call this%stats%init(coef, u, v, w, p, stat_set)
150 this%start_time = start_time
151 this%time = start_time
153 call this%stats_output%init(this%stats, this%start_time, &
154 hom_dir = hom_dir, path = this%case%output_directory)
156 call this%case%output_controller%add(this%stats_output, &
157 this%output_controller%control_value, &
158 this%output_controller%control_mode)
167 call this%free_base()
168 call this%stats%free()
173 real(kind=
rp),
intent(in) :: t
174 if (t .gt. this%time) this%time = t
182 real(kind=
rp),
intent(in) :: t
183 integer,
intent(in) :: tstep
184 real(kind=
rp) :: delta_t
185 real(kind=
rp) :: sample_start_time, sample_time
186 character(len=LOG_SIZE) :: log_buf
189 if (t .ge. this%start_time)
then
190 delta_t = t - this%time
194 sample_start_time = mpi_wtime()
196 call this%stats%update(delta_t)
200 sample_time = mpi_wtime() - sample_start_time
202 call neko_log%section(
'Fluid stats')
203 write(log_buf,
'(A,E15.7)')
'Sampling at time:', t
205 write(log_buf,
'(A33,E15.7)')
'Simulationtime since last sample:', &
208 write(log_buf,
'(A,E15.7)')
'Sampling time (s):', sample_time
Retrieves a parameter by name or assigns a provided default value. In the latter case also adds the m...
Retrieves a parameter by name or throws an error.
Defines a simulation case.
type(mpi_comm) neko_comm
MPI communicator.
Defines a registry for storing solution fields.
type(field_registry_t), target, public neko_field_registry
Global field registry.
Implements fluid_stats_ouput_t.
Implements the fluid_stats_simcomp_t type.
subroutine fluid_stats_simcomp_compute(this, t, tstep)
fluid_stats, called depending on compute_control and compute_value
subroutine fluid_stats_simcomp_free(this)
Destructor.
subroutine fluid_stats_simcomp_init_from_json(this, json, case)
Constructor from json.
subroutine fluid_stats_simcomp_init_from_attributes(this, u, v, w, p, coef, start_time, hom_dir, stat_set)
Actual constructor.
subroutine fluid_stats_simcomp_restart(this, t)
Computes various statistics for the fluid fields. We use the Reynolds decomposition for a field u = ...
Utilities for retrieving parameters from the case files.
type(log_t), public neko_log
Global log stream.
integer, parameter, public log_size
integer, parameter, public dp
integer, parameter, public sp
integer, parameter, public rp
Global precision used in computations.
Simulation components are objects that encapsulate functionality that can be fit to a particular comp...
Defines a container for all statistics.
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
Defines an output for the fluid statistics computed using the fluid_stats_t object.
A simulation component that computes the velocity and pressure statistics up to 4th order....
Base abstract class for simulation components.