Skip to content
Snippets Groups Projects
Commit 8236765d authored by Antoine Cyril David Hoffmann's avatar Antoine Cyril David Hoffmann
Browse files

Add a intern wallclock runtime end condition to avoid enforced slurm end

parent 8dd2f318
No related branches found
No related tags found
No related merge requests found
...@@ -8,6 +8,7 @@ fprintf(fid,[' nrun = ', num2str(BASIC.nrun),'\n']); ...@@ -8,6 +8,7 @@ fprintf(fid,[' nrun = ', num2str(BASIC.nrun),'\n']);
fprintf(fid,[' dt = ', num2str(BASIC.dt),'\n']); fprintf(fid,[' dt = ', num2str(BASIC.dt),'\n']);
fprintf(fid,[' tmax = ', num2str(BASIC.tmax),'\n']); fprintf(fid,[' tmax = ', num2str(BASIC.tmax),'\n']);
fprintf(fid,[' RESTART = ', num2str(BASIC.RESTART),'\n']); fprintf(fid,[' RESTART = ', num2str(BASIC.RESTART),'\n']);
fprintf(fid,[' maxruntime = ', num2str(BASIC.maxruntime),'\n']);
fprintf(fid,'/\n'); fprintf(fid,'/\n');
fprintf(fid,'&GRID\n'); fprintf(fid,'&GRID\n');
...@@ -20,7 +21,6 @@ fprintf(fid,[' Lr = ', num2str(GRID.Lr),'\n']); ...@@ -20,7 +21,6 @@ fprintf(fid,[' Lr = ', num2str(GRID.Lr),'\n']);
fprintf(fid,[' Nz = ', num2str(GRID.Nz),'\n']); fprintf(fid,[' Nz = ', num2str(GRID.Nz),'\n']);
fprintf(fid,[' Lz = ', num2str(GRID.Lz),'\n']); fprintf(fid,[' Lz = ', num2str(GRID.Lz),'\n']);
fprintf(fid,[' kpar = ', num2str(GRID.kpar),'\n']); fprintf(fid,[' kpar = ', num2str(GRID.kpar),'\n']);
fprintf(fid,[' CANCEL_ODD_P = ', num2str(GRID.CANCEL_ODD_P),'\n']);
fprintf(fid,'/\n'); fprintf(fid,'/\n');
fprintf(fid,'&OUTPUT_PAR\n'); fprintf(fid,'&OUTPUT_PAR\n');
...@@ -56,8 +56,6 @@ fprintf(fid,[' eta_n = ', num2str(MODEL.eta_n),'\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_T = ', num2str(MODEL.eta_T),'\n']);
fprintf(fid,[' eta_B = ', num2str(MODEL.eta_B),'\n']); fprintf(fid,[' eta_B = ', num2str(MODEL.eta_B),'\n']);
fprintf(fid,[' lambdaD = ', num2str(MODEL.lambdaD),'\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,'/\n');
fprintf(fid,'&INITIAL_CON\n'); fprintf(fid,'&INITIAL_CON\n');
......
...@@ -35,6 +35,7 @@ MODULE basic ...@@ -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) :: 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) :: 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) :: 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 INTERFACE allocate_array
MODULE PROCEDURE allocate_array_dp1,allocate_array_dp2,allocate_array_dp3,allocate_array_dp4 MODULE PROCEDURE allocate_array_dp1,allocate_array_dp2,allocate_array_dp3,allocate_array_dp4
...@@ -52,7 +53,7 @@ CONTAINS ...@@ -52,7 +53,7 @@ CONTAINS
use prec_const use prec_const
IMPLICIT NONE IMPLICIT NONE
NAMELIST /BASIC/ nrun, dt, tmax, RESTART NAMELIST /BASIC/ nrun, dt, tmax, RESTART, maxruntime
READ(lu_in,basic) READ(lu_in,basic)
......
...@@ -48,7 +48,7 @@ SUBROUTINE control ...@@ -48,7 +48,7 @@ SUBROUTINE control
!________________________________________________________________________________ !________________________________________________________________________________
! 2. Main loop ! 2. Main loop
DO DO
CALL cpu_time(t0_step) ! Measuring time CALL cpu_time(t0_step) ! Measuring time
step = step + 1 step = step + 1
cstep = cstep + 1 cstep = cstep + 1
...@@ -64,8 +64,8 @@ CALL cpu_time(t0_step) ! Measuring time ...@@ -64,8 +64,8 @@ CALL cpu_time(t0_step) ! Measuring time
CALL diagnose(step) CALL diagnose(step)
CALL cpu_time(t1_diag); tc_diag = tc_diag + (t1_diag - t0_diag) 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) CALL cpu_time(t1_step); tc_step = tc_step + (t1_step - t0_step)
END DO END DO
IF (my_id .EQ. 1) WRITE(*,'(a/)') '...time integration done' IF (my_id .EQ. 1) WRITE(*,'(a/)') '...time integration done'
!________________________________________________________________________________ !________________________________________________________________________________
......
...@@ -32,4 +32,15 @@ SUBROUTINE tesend ...@@ -32,4 +32,15 @@ SUBROUTINE tesend
END IF 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 END SUBROUTINE tesend
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment