56 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_sgs_stats.fld'
94 fname =
'scalar_sgs_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_sgs_stats.csv'
113 fname =
'scalar_sgs_stats.csv'
115 call this%map_1d%init_char(
stats%coef, hom_dir, 1e-7_rp)
119 call this%init_base(fname)
121 this%T_begin = t_begin
128 call this%free_base()
131 call this%map_1d%free()
132 call this%map_2d%free()
139 real(kind=
rp),
intent(in) :: t
143 real(kind=
rp) :: u, v, w, p
144 associate(out_fields => this%stats%stat_fields%items)
145 if (t .ge. this%T_begin)
then
147 do i = 1,
size(out_fields)
148 call device_memcpy(out_fields(i)%ptr%x, out_fields(i)%ptr%x_d,&
150 sync = (i .eq.
size(out_fields)))
153 if (this%output_dim .eq. 1)
then
154 call this%map_1d%average_planes(avg_output_1d, &
155 this%stats%stat_fields)
156 call this%file_%write(avg_output_1d, t)
157 else if (this%output_dim .eq. 2)
then
158 call this%map_2d%average(output_2d, this%stats%stat_fields)
160 do i = 1, this%map_2d%n_2d
171 call this%file_%write(output_2d, t)
173 call this%file_%write(this%stats%stat_fields, t)
175 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_sgs_stats_ouput_t.
subroutine scalar_sgs_stats_output_free(this)
Destructor.
subroutine scalar_sgs_stats_output_sample(this, t)
Sample scalar_sgs_stats at time t.
subroutine scalar_sgs_stats_output_init(this, stats, t_begin, hom_dir, name, path)
Constructor.
Computes the subgrid-scale contributions for the scalar fluxes. We use the Reynolds decomposition for...
Defines a container for all statistics.
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 sgs statistics for scalar computed using the scalar_sgs_stats_t object.