From 8236765d977c388b5f6fc16dd166cb330516131e Mon Sep 17 00:00:00 2001 From: Antoine Cyril David Hoffmann <ahoffman@spcpc606.epfl.ch> Date: Tue, 15 Dec 2020 14:25:25 +0100 Subject: [PATCH] Add a intern wallclock runtime end condition to avoid enforced slurm end --- matlab/write_fort90.m | 4 +--- src/basic_mod.F90 | 3 ++- src/control.F90 | 4 ++-- src/tesend.F90 | 11 +++++++++++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/matlab/write_fort90.m b/matlab/write_fort90.m index f6d04f34..9986b020 100644 --- a/matlab/write_fort90.m +++ b/matlab/write_fort90.m @@ -8,6 +8,7 @@ fprintf(fid,[' nrun = ', num2str(BASIC.nrun),'\n']); fprintf(fid,[' dt = ', num2str(BASIC.dt),'\n']); fprintf(fid,[' tmax = ', num2str(BASIC.tmax),'\n']); fprintf(fid,[' RESTART = ', num2str(BASIC.RESTART),'\n']); +fprintf(fid,[' maxruntime = ', num2str(BASIC.maxruntime),'\n']); fprintf(fid,'/\n'); fprintf(fid,'&GRID\n'); @@ -20,7 +21,6 @@ fprintf(fid,[' Lr = ', num2str(GRID.Lr),'\n']); fprintf(fid,[' Nz = ', num2str(GRID.Nz),'\n']); fprintf(fid,[' Lz = ', num2str(GRID.Lz),'\n']); fprintf(fid,[' kpar = ', num2str(GRID.kpar),'\n']); -fprintf(fid,[' CANCEL_ODD_P = ', num2str(GRID.CANCEL_ODD_P),'\n']); fprintf(fid,'/\n'); fprintf(fid,'&OUTPUT_PAR\n'); @@ -56,8 +56,6 @@ fprintf(fid,[' eta_n = ', num2str(MODEL.eta_n),'\n']); fprintf(fid,[' eta_T = ', num2str(MODEL.eta_T),'\n']); fprintf(fid,[' eta_B = ', num2str(MODEL.eta_B),'\n']); fprintf(fid,[' lambdaD = ', num2str(MODEL.lambdaD),'\n']); -fprintf(fid,[' kr0KH = ', num2str(MODEL.kr0KH),'\n']); -fprintf(fid,[' A0KH = ', num2str(MODEL.A0KH),'\n']); fprintf(fid,'/\n'); fprintf(fid,'&INITIAL_CON\n'); diff --git a/src/basic_mod.F90 b/src/basic_mod.F90 index 494679bd..6cf33393 100644 --- a/src/basic_mod.F90 +++ b/src/basic_mod.F90 @@ -35,6 +35,7 @@ MODULE basic real(dp) :: t0_rhs, t0_adv_field, t0_poisson, t0_Sapj, t0_diag, t0_checkfield, t0_step real(dp) :: t1_rhs, t1_adv_field, t1_poisson, t1_Sapj, t1_diag, t1_checkfield, t1_step real(dp) :: tc_rhs, tc_adv_field, tc_poisson, tc_Sapj, tc_diag, tc_checkfield, tc_step + real(dp):: maxruntime = 1e9 ! Maximum simulation CPU time INTERFACE allocate_array MODULE PROCEDURE allocate_array_dp1,allocate_array_dp2,allocate_array_dp3,allocate_array_dp4 @@ -52,7 +53,7 @@ CONTAINS use prec_const IMPLICIT NONE - NAMELIST /BASIC/ nrun, dt, tmax, RESTART + NAMELIST /BASIC/ nrun, dt, tmax, RESTART, maxruntime READ(lu_in,basic) diff --git a/src/control.F90 b/src/control.F90 index 4522733f..394fe61e 100644 --- a/src/control.F90 +++ b/src/control.F90 @@ -48,7 +48,7 @@ SUBROUTINE control !________________________________________________________________________________ ! 2. Main loop DO -CALL cpu_time(t0_step) ! Measuring time + CALL cpu_time(t0_step) ! Measuring time step = step + 1 cstep = cstep + 1 @@ -64,8 +64,8 @@ CALL cpu_time(t0_step) ! Measuring time CALL diagnose(step) CALL cpu_time(t1_diag); tc_diag = tc_diag + (t1_diag - t0_diag) - CALL cpu_time(t1_step); tc_step = tc_step + (t1_step - t0_step) + END DO IF (my_id .EQ. 1) WRITE(*,'(a/)') '...time integration done' !________________________________________________________________________________ diff --git a/src/tesend.F90 b/src/tesend.F90 index 5d77e444..91d438ca 100644 --- a/src/tesend.F90 +++ b/src/tesend.F90 @@ -32,4 +32,15 @@ SUBROUTINE tesend END IF ! ! + + !________________________________________________________________________________ + ! 4. Test on rune time + CALL cpu_time(finish) + nlend = (finish-start) .GT. maxruntime + IF ( nlend ) THEN + IF (my_id .EQ. 0) WRITE(*,'(/a)') 'Max run time reached' + RETURN + END IF + ! + ! END SUBROUTINE tesend -- GitLab