mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-08-16 14:38:29 +02:00
86 lines
2.2 KiB
Fortran
86 lines
2.2 KiB
Fortran
|
BEGIN_PROVIDER [ double precision, output_wall_time_0 ]
|
||
|
&BEGIN_PROVIDER [ double precision, output_cpu_time_0 ]
|
||
|
implicit none
|
||
|
BEGIN_DOC
|
||
|
! Initial CPU and wall times when printing in the output files
|
||
|
END_DOC
|
||
|
call cpu_time(output_wall_time_0)
|
||
|
call wall_time(output_wall_time_0)
|
||
|
END_PROVIDER
|
||
|
|
||
|
|
||
|
subroutine write_time(iunit)
|
||
|
implicit none
|
||
|
BEGIN_DOC
|
||
|
! Write a time stamp in the output for chronological reconstruction
|
||
|
END_DOC
|
||
|
integer, intent(in) :: iunit
|
||
|
double precision :: wt, ct
|
||
|
if (.not.mpi_master) then
|
||
|
return
|
||
|
endif
|
||
|
write(6,*)
|
||
|
call print_memory_usage()
|
||
|
call cpu_time(ct)
|
||
|
call wall_time(wt)
|
||
|
write(6,'(A,F14.6,A,F14.6,A)') &
|
||
|
'.. >>>>> [ WALL TIME: ', wt-output_wall_time_0, &
|
||
|
' s ] [ CPU TIME: ', ct-output_cpu_time_0, ' s ] <<<<< ..'
|
||
|
write(6,*)
|
||
|
end
|
||
|
|
||
|
subroutine write_double(iunit,value,label)
|
||
|
implicit none
|
||
|
BEGIN_DOC
|
||
|
! Write a double precision value in output
|
||
|
END_DOC
|
||
|
if (.not.mpi_master) then
|
||
|
return
|
||
|
endif
|
||
|
integer, intent(in) :: iunit
|
||
|
double precision :: value
|
||
|
character*(*) :: label
|
||
|
character*(64), parameter :: f = '(A50,G24.16)'
|
||
|
character*(50) :: newlabel
|
||
|
write(newlabel,'(A,A)') '* ',trim(label)
|
||
|
write(6,f) newlabel, value
|
||
|
end
|
||
|
|
||
|
|
||
|
subroutine write_int(iunit,value,label)
|
||
|
implicit none
|
||
|
BEGIN_DOC
|
||
|
! Write an integer value in output
|
||
|
END_DOC
|
||
|
if (.not.mpi_master) then
|
||
|
return
|
||
|
endif
|
||
|
integer, intent(in) :: iunit
|
||
|
integer :: value
|
||
|
character*(*) :: label
|
||
|
character*(64), parameter :: f = '(A50,I16)'
|
||
|
character*(50) :: newlabel
|
||
|
write(newlabel,'(A,A)') '* ',trim(label)
|
||
|
write(6,f) newlabel, value
|
||
|
end
|
||
|
|
||
|
|
||
|
subroutine write_bool(iunit,value,label)
|
||
|
implicit none
|
||
|
BEGIN_DOC
|
||
|
! Write an logical value in output
|
||
|
END_DOC
|
||
|
if (.not.mpi_master) then
|
||
|
return
|
||
|
endif
|
||
|
integer, intent(in) :: iunit
|
||
|
logical :: value
|
||
|
character*(*) :: label
|
||
|
character*(64), parameter :: f = '(A50,L1)'
|
||
|
character*(50) :: newlabel
|
||
|
write(newlabel,'(A,A)') '* ',trim(label)
|
||
|
write(6,f) newlabel, value
|
||
|
end
|
||
|
|
||
|
|