** Warning **
Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle dbname=MITgcm at /usr/local/share/lxr/lib/LXR/Common.pm line 1224.
Last-Modified: Wed, 18 Nov 2025 06:09:00 GMT
Content-Type: text/html; charset=utf-8
MITgcm/MITgcm/pkg/openad/openad_checkpointInit.F
File indexing completed on 2018-03-02 18:42:52 UTC
view on github raw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
681c968868 Jean* 0001 SUBROUTINE openad_checkpointinit (uCheckLev1 ,
0002 + uCheckLev2 ,
5dddee4ea2 Jean* 0003 + uCheckLev3 ,
0004 + uCheckLev4 )
0005
0006 IMPLICIT NONE
0007
0008 #include "SIZE.h "
0009 #include "EEPARAMS.h "
0010 #include "PARAMS.h "
0011
0012 integer iloop
0013 logical haveRemainder , allStepsCovered
0014 integer uCheckLev1 , uCheckLev2 , uCheckLev3 ,uCheckLev4
0015 integer nCheckLev1 , nCheckLev2 , nCheckLev3 ,nCheckLev4
0016
0017 uCheckLev1 =0
0018 uCheckLev2 =0
0019 uCheckLev3 =0
0020 uCheckLev4 =0
0021
0022 open (2,action ='read' ,file='ncheckLev.conf' )
681c968868 Jean* 0023 read (2,'(I5,/,I5,/I5,/I5)' ) nCheckLev1 , nCheckLev2 , nCheckLev3 ,
5dddee4ea2 Jean* 0024 +nCheckLev4
0025 close (2)
0026
681c968868 Jean* 0027 write (standardmessageunit ,'(A,I4,A,I4,A,I4,A,I8)' )
549e1e124a Jean* 0028 +'OAD: the_main_loop checkpoints allowed 1st:' ,nCheckLev1 ,
5dddee4ea2 Jean* 0029 +', 2nd:' , nCheckLev2 ,
0030 +', 3rd:' , nCheckLev3 ,
0031 +', 4th:' , nCheckLev4
0032
681c968868 Jean* 0033
5dddee4ea2 Jean* 0034
681c968868 Jean* 0035
0036
0037 if (nCheckLev4 .eq. 1 ) then
5dddee4ea2 Jean* 0038 uCheckLev4 =0
681c968868 Jean* 0039 write (standardmessageunit ,'(A)' )
549e1e124a Jean* 0040 +'OAD: NOTE: resetting level 4 to 0'
5dddee4ea2 Jean* 0041 else
0042 uCheckLev4 =nCheckLev4
0043 end if
681c968868 Jean* 0044 if (nCheckLev3 .eq. 1 ) then
5dddee4ea2 Jean* 0045 uCheckLev3 =0
681c968868 Jean* 0046 write (standardmessageunit ,'(A)' )
549e1e124a Jean* 0047 +'OAD: NOTE: resetting level 3 to 0'
5dddee4ea2 Jean* 0048 else
0049 uCheckLev3 =nCheckLev3
0050 end if
681c968868 Jean* 0051 if (nCheckLev2 .eq. 1 ) then
5dddee4ea2 Jean* 0052 uCheckLev2 =0
681c968868 Jean* 0053 write (standardmessageunit ,'(A)' )
549e1e124a Jean* 0054 +'OAD: NOTE: resetting level 2 to 0'
5dddee4ea2 Jean* 0055 else
0056 uCheckLev2 =nCheckLev2
0057 end if
681c968868 Jean* 0058 if (nCheckLev1 .eq. 1 ) then
5dddee4ea2 Jean* 0059 uCheckLev1 =0
681c968868 Jean* 0060 write (standardmessageunit ,'(A)' )
549e1e124a Jean* 0061 +'OAD: NOTE: resetting level 1 to 0'
5dddee4ea2 Jean* 0062 else
0063 uCheckLev1 =nCheckLev1
0064 end if
0065
681c968868 Jean* 0066 if (uCheckLev4 .gt. 0 ) then
0067 if ( uCheckLev3 *uCheckLev2 *uCheckLev1 .eq. 0) then
0068 write (errormessageunit ,'(A)' )
549e1e124a Jean* 0069 +'OAD: ERROR: uCheckLev4 > 0 implies ' ,
5dddee4ea2 Jean* 0070 +'all lower levels must be nonzero too.'
0071 end if
0072 end if
681c968868 Jean* 0073 if (uCheckLev3 .gt. 0 ) then
0074 if ( uCheckLev2 *uCheckLev1 .eq. 0) then
0075 write (errormessageunit ,'(A)' )
549e1e124a Jean* 0076 +'OAD: ERROR: uCheckLev3 > 0 implies ' ,
5dddee4ea2 Jean* 0077 +'all lower levels must be nonzero too.'
0078 end if
0079 end if
681c968868 Jean* 0080 if (uCheckLev2 .gt. 0 ) then
0081 if ( uCheckLev1 .eq. 0) then
0082 write (errormessageunit ,'(A)' )
549e1e124a Jean* 0083 +'OAD: ERROR: uCheckLev2 > 0 implies ' ,
5dddee4ea2 Jean* 0084 +'all lower levels must be nonzero too.'
0085 end if
0086 end if
681c968868 Jean* 0087 if (uCheckLev1 .eq. 0 ) then
0088 write (errormessageunit ,'(A)' )
549e1e124a Jean* 0089 +'OAD: ERROR: uCheckLev1 must be nonzero '
5dddee4ea2 Jean* 0090 end if
681c968868 Jean* 0091
5dddee4ea2 Jean* 0092
0093 allStepsCovered = .false.
681c968868 Jean* 0094 if (nTimeSteps .lt. uCheckLev1 ) then
5dddee4ea2 Jean* 0095 uCheckLev1 =nTimeSteps
0096 allStepsCovered =.true.
0097 end if
0098
0099
681c968868 Jean* 0100 if (.NOT. allStepsCovered ) then
0101 if (MOD(nTimeSteps ,uCheckLev1 ).gt. 0) then
0102 if ((nTimeSteps /uCheckLev1 )+1 .le. uCheckLev2 ) then
5dddee4ea2 Jean* 0103 uCheckLev2 =(nTimeSteps /uCheckLev1 )+1
0104 allStepsCovered =.true.
0105 end if
0106 else
681c968868 Jean* 0107 if ((nTimeSteps /uCheckLev1 ) .le. uCheckLev2 ) then
5dddee4ea2 Jean* 0108 uCheckLev2 =(nTimeSteps /uCheckLev1 )
0109 allStepsCovered =.true.
0110 end if
0111 end if
0112 else
681c968868 Jean* 0113 uCheckLev2 = 0
5dddee4ea2 Jean* 0114 end if
0115
0116
681c968868 Jean* 0117 if (.NOT. allStepsCovered ) then
0118 if (MOD(nTimeSteps ,uCheckLev1 *uCheckLev2 ).gt. 0) then
0119 if ((nTimeSteps /(uCheckLev1 *uCheckLev2 ))+1
0120 + .le. uCheckLev3 ) then
5dddee4ea2 Jean* 0121 uCheckLev3 =(nTimeSteps /(uCheckLev1 *uCheckLev2 ))+1
0122 allStepsCovered =.true.
0123 end if
0124 else
0125 if ((nTimeSteps /(uCheckLev1 *uCheckLev2 )) .le. uCheckLev3 )then
0126 uCheckLev3 =(nTimeSteps /(uCheckLev1 *uCheckLev2 ))
0127 allStepsCovered =.true.
0128 end if
0129 end if
0130 else
681c968868 Jean* 0131 uCheckLev3 = 0
5dddee4ea2 Jean* 0132 end if
0133
0134
681c968868 Jean* 0135 if (.NOT. allStepsCovered ) then
5dddee4ea2 Jean* 0136 if (MOD(nTimeSteps ,uCheckLev1 *uCheckLev2 *uCheckLev3 )
681c968868 Jean* 0137 + .gt. 0) then
0138 if ((nTimeSteps /(uCheckLev1 *uCheckLev2 *uCheckLev3 ))+1
0139 + .le. uCheckLev4 ) then
5dddee4ea2 Jean* 0140 uCheckLev4 =
0141 + (nTimeSteps /(uCheckLev1 *uCheckLev2 *uCheckLev3 ))+1
0142 allStepsCovered =.true.
0143 end if
0144 else
681c968868 Jean* 0145 if ((nTimeSteps /(uCheckLev1 *uCheckLev2 *uCheckLev3 ))
0146 + .le. uCheckLev4 ) then
5dddee4ea2 Jean* 0147 uCheckLev4 =
0148 + (nTimeSteps /(uCheckLev1 *uCheckLev2 *uCheckLev3 ))
0149 allStepsCovered =.true.
0150 end if
0151 end if
0152 else
681c968868 Jean* 0153 uCheckLev4 = 0
5dddee4ea2 Jean* 0154 end if
0155
681c968868 Jean* 0156 if (.NOT. allStepsCovered ) then
0157 write (errormessageunit ,'(A)' )
549e1e124a Jean* 0158 +'OAD: ERROR: not enough checkpoints allowed'
5dddee4ea2 Jean* 0159 end if
0160
681c968868 Jean* 0161 write (standardmessageunit ,'(A,I6)' )
549e1e124a Jean* 0162 +'OAD: timesteps required:' ,ntimesteps
681c968868 Jean* 0163 write (standardmessageunit ,'(4(A,I4))' )
549e1e124a Jean* 0164 +'OAD: the_main_loop checkpoints used 1st:' ,uCheckLev1 ,
5dddee4ea2 Jean* 0165 +', 2nd:' , uCheckLev2 ,
0166 +', 3rd:' , uCheckLev3 ,
0167 +', 4th:' , uCheckLev4
0168
0169 END
0170