AMUN: Slightly polish the main program.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This commit is contained in:
parent
7d238b6c1b
commit
0dde0f8122
@ -111,6 +111,8 @@ program amun
|
||||
!
|
||||
real(kind=8), dimension(ntimers) :: tm
|
||||
|
||||
character(len=*), parameter :: loc = 'AMUN::amun()'
|
||||
|
||||
!-------------------------------------------------------------------------------
|
||||
!
|
||||
#ifdef SIGNALS
|
||||
@ -127,7 +129,7 @@ program amun
|
||||
#endif /* __GFORTRAN__ */
|
||||
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Could not initialize the signal handling!"
|
||||
call exit(status)
|
||||
end if
|
||||
@ -145,7 +147,7 @@ program amun
|
||||
!
|
||||
call initialize_mpitools(status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Could not initialize module MPITOOLS!"
|
||||
end if
|
||||
if (check_status(status /= 0)) call exit(status)
|
||||
@ -165,66 +167,59 @@ program amun
|
||||
!
|
||||
call read_parameters(verbose, status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Could not read parameters file!"
|
||||
end if
|
||||
if (check_status(status /= 0)) go to 6000
|
||||
|
||||
! initialize IO early so we can recover a few parameters from
|
||||
! the restart snapshots
|
||||
! initialize a few basic modules: IO, PROBLEM, RNG, WORKSPACE
|
||||
!
|
||||
call initialize_io(verbose, status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Could not initialize module IO!"
|
||||
end if
|
||||
if (check_status(status /= 0)) go to 5000
|
||||
|
||||
! initialize module PROBLEM
|
||||
!
|
||||
call initialize_problem(verbose, status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Could not initialize module PROBLEM!"
|
||||
end if
|
||||
if (check_status(status /= 0)) go to 4000
|
||||
|
||||
! initialize the random number generator
|
||||
!
|
||||
call initialize_random(rngtype, 1, 0, nproc, status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Could not initialize module RANDOM!"
|
||||
end if
|
||||
if (check_status(status /= 0)) go to 3000
|
||||
|
||||
! initialize the workspace
|
||||
!
|
||||
call initialize_workspace(nwork, status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Problem initializing WORKSPACE module!"
|
||||
end if
|
||||
if (check_status(status /= 0)) go to 2000
|
||||
|
||||
! print module information
|
||||
! show some info before the simulation starts
|
||||
!
|
||||
call print_problem_info(verbose)
|
||||
|
||||
! restore the simulation for restarted job, otherwise initiate a new one
|
||||
! initiate or resume the simulation
|
||||
!
|
||||
if (resumed) then
|
||||
|
||||
call read_restart_snapshot(status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Problem reading the restart snapshot!"
|
||||
end if
|
||||
if (check_status(status /= 0)) go to 1000
|
||||
|
||||
call build_leaf_list(status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Problem building the list of leafs!"
|
||||
end if
|
||||
if (check_status(status /= 0)) go to 1000
|
||||
@ -233,12 +228,9 @@ program amun
|
||||
|
||||
else
|
||||
|
||||
! generate the initial mesh, refine that mesh to the desired level according to
|
||||
! the problem setup
|
||||
!
|
||||
call generate_mesh(status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Problem generating the initial mesh!"
|
||||
end if
|
||||
if (check_status(status /= 0)) go to 1000
|
||||
@ -247,14 +239,10 @@ program amun
|
||||
|
||||
call initialize_time_step()
|
||||
|
||||
! store the initial time statistics and the snapshot
|
||||
!
|
||||
call store_integrals()
|
||||
call user_time_statistics(time)
|
||||
call write_snapshot(name)
|
||||
|
||||
! store the initial mesh statistics
|
||||
!
|
||||
call store_mesh_stats(step, time)
|
||||
|
||||
end if
|
||||
@ -302,7 +290,7 @@ program amun
|
||||
|
||||
call advance(status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Advancing to the next step failed!"
|
||||
end if
|
||||
if (check_status(status /= 0)) go to 1000
|
||||
@ -338,7 +326,7 @@ program amun
|
||||
|
||||
call write_restart_snapshot(thrs, name, nrun, status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Could not store the restart snapshot!"
|
||||
end if
|
||||
if (check_status(status /= 0)) go to 1000
|
||||
@ -396,38 +384,43 @@ program amun
|
||||
!
|
||||
call write_restart_snapshot(1.0d+16, name, nrun, status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Could not store the restart snapshot!"
|
||||
end if
|
||||
|
||||
! finalize all modules
|
||||
!
|
||||
1000 continue
|
||||
call start_timer(itm)
|
||||
|
||||
! finalize all modules
|
||||
!
|
||||
call finalize_workspace(status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Problem finalizing WORKSPACE module!"
|
||||
end if
|
||||
2000 continue
|
||||
|
||||
call finalize_random(status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Could not finalize module RANDOM!"
|
||||
end if
|
||||
3000 continue
|
||||
|
||||
call finalize_problem(verbose, status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Could not finalize module PROBLEM!"
|
||||
end if
|
||||
4000 continue
|
||||
|
||||
call finalize_io(status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Problem finalizing IO module!"
|
||||
end if
|
||||
5000 continue
|
||||
|
||||
call finalize_parameters()
|
||||
|
||||
if (initialization_succeeded) then
|
||||
@ -494,11 +487,11 @@ program amun
|
||||
|
||||
end if
|
||||
end if
|
||||
|
||||
6000 continue
|
||||
|
||||
call finalize_mpitools(status)
|
||||
if (status /= 0) then
|
||||
write(error_unit,"('[AMUN::program]: ', a)") &
|
||||
write(error_unit,"('[',a,']: ',a)") trim(loc), &
|
||||
"Problem finalizing MPITOOLS module!"
|
||||
end if
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user