Merge branch 'master' into binaries
This commit is contained in:
commit
1c8341ac53
@ -43,7 +43,7 @@ program amun
|
|||||||
use random , only : initialize_random, finalize_random
|
use random , only : initialize_random, finalize_random
|
||||||
use system , only : initialize_system, finalize_system
|
use system , only : initialize_system, finalize_system
|
||||||
use system , only : print_system_info, prepare_system, evolve_system
|
use system , only : print_system_info, prepare_system, evolve_system
|
||||||
use system , only : quit, nsteps, rngtype, nwork
|
use system , only : quit, nsteps, nwork
|
||||||
use timers , only : initialize_timers, finalize_timers
|
use timers , only : initialize_timers, finalize_timers
|
||||||
use timers , only : start_timer, stop_timer, set_timer, get_timer
|
use timers , only : start_timer, stop_timer, set_timer, get_timer
|
||||||
use timers , only : get_timer_total, timer_enabled, timer_description
|
use timers , only : get_timer_total, timer_enabled, timer_description
|
||||||
@ -138,21 +138,21 @@ program amun
|
|||||||
call print_message(loc, "Could not read parameters!")
|
call print_message(loc, "Could not read parameters!")
|
||||||
if (check_status(status /= 0)) go to 6000
|
if (check_status(status /= 0)) go to 6000
|
||||||
|
|
||||||
! initialize a few basic modules: IO, SYSTEM, RRANDOM, and WORKSPACE
|
! initialize a few basic modules: IO, RANDOM, SYSTEM, and WORKSPACE
|
||||||
!
|
!
|
||||||
call initialize_io(verbose, status)
|
call initialize_io(verbose, status)
|
||||||
if (status /= 0) &
|
if (status /= 0) &
|
||||||
call print_message(loc, "Could not initialize module IO!")
|
call print_message(loc, "Could not initialize module IO!")
|
||||||
if (check_status(status /= 0)) go to 5000
|
if (check_status(status /= 0)) go to 5000
|
||||||
|
|
||||||
|
call initialize_random("same", 1, 0, nproc, status)
|
||||||
|
if (status /= 0) &
|
||||||
|
call print_message(loc, "Could not initialize module RANDOM!")
|
||||||
|
if (check_status(status /= 0)) go to 4000
|
||||||
|
|
||||||
call initialize_system(verbose, status)
|
call initialize_system(verbose, status)
|
||||||
if (status /= 0) &
|
if (status /= 0) &
|
||||||
call print_message(loc, "Could not initialize module SYSTEM!")
|
call print_message(loc, "Could not initialize module SYSTEM!")
|
||||||
if (check_status(status /= 0)) go to 4000
|
|
||||||
|
|
||||||
call initialize_random(rngtype, 1, 0, nproc, status)
|
|
||||||
if (status /= 0) &
|
|
||||||
call print_message(loc, "Could not initialize module RANDOM!")
|
|
||||||
if (check_status(status /= 0)) go to 3000
|
if (check_status(status /= 0)) go to 3000
|
||||||
|
|
||||||
call initialize_workspace(nwork, status)
|
call initialize_workspace(nwork, status)
|
||||||
@ -196,14 +196,14 @@ program amun
|
|||||||
call print_message(loc, "Could not finalize module WORKSPACE!")
|
call print_message(loc, "Could not finalize module WORKSPACE!")
|
||||||
2000 continue
|
2000 continue
|
||||||
|
|
||||||
call finalize_random(status)
|
|
||||||
if (status /= 0) &
|
|
||||||
call print_message(loc, "Could not finalize module RANDOM!")
|
|
||||||
3000 continue
|
|
||||||
|
|
||||||
call finalize_system(verbose, status)
|
call finalize_system(verbose, status)
|
||||||
if (status /= 0) &
|
if (status /= 0) &
|
||||||
call print_message(loc, "Could not finalize module SYSTEM!")
|
call print_message(loc, "Could not finalize module SYSTEM!")
|
||||||
|
3000 continue
|
||||||
|
|
||||||
|
call finalize_random(status)
|
||||||
|
if (status /= 0) &
|
||||||
|
call print_message(loc, "Could not finalize module RANDOM!")
|
||||||
4000 continue
|
4000 continue
|
||||||
|
|
||||||
call finalize_io(status)
|
call finalize_io(status)
|
||||||
|
@ -53,14 +53,10 @@ module random
|
|||||||
!
|
!
|
||||||
real(kind=8), parameter :: i64tor8 = 2.0d+00**(-53)
|
real(kind=8), parameter :: i64tor8 = 2.0d+00**(-53)
|
||||||
|
|
||||||
! by default everything is private
|
|
||||||
!
|
|
||||||
private
|
private
|
||||||
|
|
||||||
! declare public subroutines
|
|
||||||
!
|
|
||||||
public :: initialize_random, finalize_random
|
public :: initialize_random, finalize_random
|
||||||
public :: nseeds, set_seeds, get_seeds, gentype
|
public :: nseeds, reset_seeds, set_seeds, get_seeds, gentype
|
||||||
public :: randuni, randsym, randnorz
|
public :: randuni, randsym, randnorz
|
||||||
|
|
||||||
contains
|
contains
|
||||||
@ -175,6 +171,60 @@ module random
|
|||||||
!
|
!
|
||||||
!===============================================================================
|
!===============================================================================
|
||||||
!
|
!
|
||||||
|
! subroutine RESET_SEEDS:
|
||||||
|
! ----------------------
|
||||||
|
!
|
||||||
|
! Subroutine resets the seeds, according to the generator type.
|
||||||
|
!
|
||||||
|
! Arguments:
|
||||||
|
!
|
||||||
|
! rngtype - the generator type ('same' or 'random');
|
||||||
|
!
|
||||||
|
!===============================================================================
|
||||||
|
!
|
||||||
|
subroutine reset_seeds(rngtype)
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
character(len=*), intent(in) :: rngtype
|
||||||
|
|
||||||
|
integer :: i
|
||||||
|
|
||||||
|
integer(kind=8), dimension(4) :: s
|
||||||
|
|
||||||
|
!-------------------------------------------------------------------------------
|
||||||
|
!
|
||||||
|
select case(trim(rngtype))
|
||||||
|
case('random')
|
||||||
|
state = 1234567890
|
||||||
|
s(1) = splitmix64()
|
||||||
|
s(2) = splitmix64()
|
||||||
|
s(3) = splitmix64()
|
||||||
|
s(4) = splitmix64()
|
||||||
|
do i = 1, nseeds * np
|
||||||
|
call jump(s(:))
|
||||||
|
end do
|
||||||
|
seeds(:,0) = s(:)
|
||||||
|
do i = 1, lseed
|
||||||
|
call jump(s(:))
|
||||||
|
seeds(:,i) = s(:)
|
||||||
|
end do
|
||||||
|
gentype = 'random'
|
||||||
|
case default
|
||||||
|
state = 1234567890
|
||||||
|
seeds(1,:) = splitmix64()
|
||||||
|
seeds(2,:) = splitmix64()
|
||||||
|
seeds(3,:) = splitmix64()
|
||||||
|
seeds(4,:) = splitmix64()
|
||||||
|
gentype = 'same'
|
||||||
|
end select
|
||||||
|
|
||||||
|
!-------------------------------------------------------------------------------
|
||||||
|
!
|
||||||
|
end subroutine reset_seeds
|
||||||
|
!
|
||||||
|
!===============================================================================
|
||||||
|
!
|
||||||
! subroutine SET_SEEDS:
|
! subroutine SET_SEEDS:
|
||||||
! --------------------
|
! --------------------
|
||||||
!
|
!
|
||||||
|
@ -115,6 +115,7 @@ module system
|
|||||||
use mesh , only : initialize_mesh
|
use mesh , only : initialize_mesh
|
||||||
use mpitools , only : check_status
|
use mpitools , only : check_status
|
||||||
use problems , only : initialize_problems
|
use problems , only : initialize_problems
|
||||||
|
use random , only : reset_seeds
|
||||||
use statistics , only : initialize_statistics
|
use statistics , only : initialize_statistics
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
@ -133,6 +134,8 @@ module system
|
|||||||
call print_message(loc, "Could not restore the system parameters!")
|
call print_message(loc, "Could not restore the system parameters!")
|
||||||
if (check_status(status /= 0)) return
|
if (check_status(status /= 0)) return
|
||||||
|
|
||||||
|
call reset_seeds(rngtype)
|
||||||
|
|
||||||
call initialize_equations(eqsys, eos, verbose, status)
|
call initialize_equations(eqsys, eos, verbose, status)
|
||||||
if (status /=0) &
|
if (status /=0) &
|
||||||
call print_message(loc, "Could not initialize module EQUATIONS!")
|
call print_message(loc, "Could not initialize module EQUATIONS!")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user