40 use mpi_f08,
only : mpi_comm
41 use,
intrinsic :: iso_c_binding
58 integer,
allocatable :: lglel(:)
81 type(
coef_t),
intent(inout) :: coef
82 integer :: nelb, nelv, nelgv, npts, gdim
86 npts = coef%Xh%lx*coef%Xh%ly*coef%Xh%lz
87 nelgv = coef%msh%glb_nelv
88 nelb = coef%msh%offset_el
92 call fortran_adios2_initialize(npts, nelv, nelb, nelgv, gdim,
neko_comm)
94 call neko_warning(
'Is not being built with ADIOS2 support.')
95 call neko_warning(
'Not able to use stream/compression functionality')
107 call fortran_adios2_finalize()
109 call neko_warning(
'Is not being built with ADIOS2 support.')
110 call neko_warning(
'Not able to use stream/compression functionality')
119 real(kind=
rp),
dimension(:,:,:,:),
intent(inout) :: fld
122 call fortran_adios2_stream(fld)
124 call neko_warning(
'Is not being built with ADIOS2 support.')
125 call neko_warning(
'Not able to use stream/compression functionality')
134 real(kind=
rp),
dimension(:,:,:,:),
intent(inout) :: fld
137 call fortran_adios2_recieve(fld)
139 call neko_warning(
'Is not being built with ADIOS2 support.')
140 call neko_warning(
'Not able to use stream/compression functionality')
157 subroutine fortran_adios2_initialize(npts, nelv, nelb, nelgv, gdim, comm)
158 use,
intrinsic :: iso_c_binding
160 integer,
intent(in) :: npts, nelv, nelb, nelgv, gdim
161 type(mpi_comm) :: comm
169 subroutine c_adios2_initialize(npts, nelv, nelb, nelgv, gdim, &
170 comm)
bind(C,name="adios2_initialize_")
171 use,
intrinsic :: iso_c_binding
174 integer(kind=C_INT) :: npts
175 integer(kind=C_INT) :: nelv
176 integer(kind=C_INT) :: nelb
177 integer(kind=C_INT) :: nelgv
178 integer(kind=C_INT) :: gdim
180 end subroutine c_adios2_initialize
183 call c_adios2_initialize(npts, nelv, nelb, nelgv, gdim,
comm)
184 end subroutine fortran_adios2_initialize
188 subroutine fortran_adios2_finalize()
189 use,
intrinsic :: iso_c_binding
194 subroutine c_adios2_finalize()
bind(C,name="adios2_finalize_")
195 use,
intrinsic :: iso_c_binding
197 end subroutine c_adios2_finalize
200 call c_adios2_finalize()
201 end subroutine fortran_adios2_finalize
208 subroutine fortran_adios2_stream(fld)
209 use,
intrinsic :: iso_c_binding
211 real(kind=
rp),
dimension(:,:,:,:),
intent(inout) :: fld
215 subroutine c_adios2_stream(fld) &
216 bind(C,name="adios2_stream_")
217 use,
intrinsic :: iso_c_binding
220 real(kind=
c_rp),
intent(INOUT) :: fld(*)
221 end subroutine c_adios2_stream
224 call c_adios2_stream(fld)
225 end subroutine fortran_adios2_stream
232 subroutine fortran_adios2_recieve(fld)
233 use,
intrinsic :: iso_c_binding
235 real(kind=
rp),
dimension(:,:,:,:),
intent(inout) :: fld
239 subroutine c_adios2_recieve(fld) &
240 bind(C,name="adios2_recieve_")
241 use,
intrinsic :: iso_c_binding
244 real(kind=
c_rp),
intent(INOUT) :: fld(*)
245 end subroutine c_adios2_recieve
248 call c_adios2_recieve(fld)
249 end subroutine fortran_adios2_recieve
type(mpi_comm), public neko_comm
MPI communicator.
Implements type data_streamer_t.
subroutine data_streamer_recieve(this, fld)
reciever
subroutine data_streamer_init(this, coef)
Constructor Wraps the adios2 set-up.
subroutine data_streamer_stream(this, fld)
streamer
subroutine data_streamer_free(this)
Destructor wraps the adios2 finalize routine. Closes insitu writer.
integer, parameter, public c_rp
integer, parameter, public rp
Global precision used in computations.
subroutine, public neko_warning(warning_msg)
Reports a warning to standard output.
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
Provides access to data streaming by interfacing with c++ ADIOS2 subroutines.