57 real(kind=
rp) :: t_begin
76 real(kind=
rp),
intent(in) :: t_begin
77 character(len=*),
intent(in) :: hom_dir
78 character(len=*),
intent(in),
optional :: name
79 character(len=*),
intent(in),
optional :: path
80 character(len=1024) :: fname
82 if (trim(hom_dir) .eq.
'none' .or. &
83 trim(hom_dir) .eq.
'x' .or.&
84 trim(hom_dir) .eq.
'y' .or.&
85 trim(hom_dir) .eq.
'z'&
87 if (
present(name) .and.
present(path))
then
88 fname = trim(path) // trim(name) //
'.fld'
89 else if (
present(name))
then
90 fname = trim(name) //
'.fld'
91 else if (
present(path))
then
92 fname = trim(path) //
'scalar_stats.fld'
94 fname =
'scalar_stats.fld'
99 if (trim(hom_dir) .eq.
'x' .or.&
100 trim(hom_dir) .eq.
'y' .or.&
101 trim(hom_dir) .eq.
'z' )
then
102 call this%map_2d%init_char(
stats%coef, hom_dir, 1e-7_rp)
106 if (
present(name) .and.
present(path))
then
107 fname = trim(path) // trim(name) //
'.csv'
108 else if (
present(name))
then
109 fname = trim(name) //
'.csv'
110 else if (
present(path))
then
111 fname = trim(path) //
'scalar_stats.csv'
113 fname =
'scalar_stats.csv'
115 call this%map_1d%init_char(
stats%coef, hom_dir, 1e-7_rp)
119 call this%init_base(fname)
121 select type (ft => this%file_%file_type)
123 ft%skip_pressure = .false.
124 ft%skip_velocity = .false.
125 ft%skip_temperature = .false.
129 this%T_begin = t_begin
136 call this%free_base()
139 call this%map_1d%free()
140 call this%map_2d%free()
147 real(kind=
rp),
intent(in) :: t
151 real(kind=
rp) :: u, v, w, p
152 associate(out_fields => this%stats%stat_fields%items)
153 if (t .ge. this%T_begin)
then
154 call this%stats%make_strong_grad()
156 do i = 1,
size(out_fields)
157 call device_memcpy(out_fields(i)%ptr%x, out_fields(i)%ptr%x_d,&
159 sync = (i .eq.
size(out_fields)))
162 if (this%output_dim .eq. 1)
then
163 call this%map_1d%average_planes(avg_output_1d, &
164 this%stats%stat_fields)
165 call this%file_%write(avg_output_1d, t)
166 else if (this%output_dim .eq. 2)
then
167 call this%map_2d%average(output_2d, this%stats%stat_fields)
169 do i = 1, this%map_2d%n_2d
180 call this%file_%write(output_2d, t)
182 call this%file_%write(this%stats%stat_fields, t)
184 call this%stats%reset()
Copy data between host and device (or device and device)
Device abstraction, common interface for various accelerators.
integer, parameter, public device_to_host
Simple module to handle fld file series. Provides an interface to the different fields sotred in a fl...
Creates a 1d GLL point map along a specified direction based on the connectivity in the mesh.
Maps a 3D dofmap to a 2D spectral element grid.
integer, parameter neko_bcknd_device
integer, parameter, public rp
Global precision used in computations.
Implements scalar_stats_ouput_t.
subroutine scalar_stats_output_free(this)
Destructor.
subroutine scalar_stats_output_sample(this, t)
Sample scalar_stats at time t.
subroutine scalar_stats_output_init(this, stats, t_begin, hom_dir, name, path)
Constructor.
Computes various statistics for the scalar fields. We use the Reynolds decomposition for a field u = ...
Defines a container for all statistics.
Interface for NEKTON fld files.
Type that encapsulates a mapping from each gll point in the mesh to its corresponding (global) GLL po...
Abstract type defining an output type.
Defines an output for the scalar statistics computed using the scalar_stats_t object.