52 real(kind=
rp) :: t_begin
53 real(kind=
rp) :: t_diff
54 integer :: samp_interval
65 subroutine stats_init(this, T_begin, samp_interval, size)
66 class(
stats_t),
intent(inout) :: this
67 real(kind=
rp),
intent(in) :: t_begin
68 integer,
intent(in) :: samp_interval
69 integer,
intent(inout),
optional ::size
74 if (
present(size))
then
80 allocate(this%quant_list(n))
83 this%quant_list(i)%quantp => null()
88 this%T_begin = t_begin
89 this%samp_interval = samp_interval
96 class(
stats_t),
intent(inout) :: this
98 if (
allocated(this%quant_list))
then
99 deallocate(this%quant_list)
108 class(
stats_t),
intent(inout) :: this
110 type(
quantp_t),
allocatable :: tmp(:)
112 if (this%n .ge. this%size)
then
113 allocate(tmp(this%size * 2))
114 tmp(1:this%size) = this%quant_list
115 call move_alloc(tmp, this%quant_list)
116 this%size = this%size * 2
120 this%quant_list(this%n)%quantp => quant
125 class(
stats_t),
intent(inout) :: this
126 real(kind=
rp),
intent(in) :: t
127 real(kind=
rp),
intent(in) :: dt
128 integer,
intent(in) :: tstep
130 character(len=LOG_SIZE) :: log_buf
131 real(kind=
rp) :: sample_start_time, sample_end_time
132 real(kind=
dp) :: sample_time
134 if (t .ge. this%T_begin .and. this%n .gt. 0)
then
135 this%t_diff = this%t_diff + dt
139 if (mod(tstep,this%samp_interval) .eq. 0)
then
142 sample_start_time = mpi_wtime()
144 call this%quant_list(i)%quantp%update(this%t_diff)
148 sample_end_time = mpi_wtime()
149 sample_time = sample_end_time - sample_start_time
150 write(log_buf,
'(A17,1x,F10.6,A,F9.6)')
'Sampling at time:', t, &
151 ' Sampling time (s): ', sample_time
type(mpi_comm) neko_comm
MPI communicator.
type(log_t), public neko_log
Global log stream.
integer, parameter, public log_size
integer, parameter, public dp
integer, parameter, public rp
Global precision used in computations.
Defines a statistical quantity.
Defines a container for all statistics.
subroutine stats_init(this, T_begin, samp_interval, size)
Initialize statistics, computed after T_begin.
subroutine stats_eval(this, t, dt, tstep)
Evaluated all statistical quantities.
subroutine stats_free(this)
Deallocate.
subroutine stats_add(this, quant)
Add a statistic quantitiy quant to the backend.
Pointer to an arbitrary quantitiy.
Abstract type defining a statistical quantity.