/[MITgcm]/MITgcm_contrib/heimbach/OpenAD/code_ad_moc/openad_checkpointInit.F
ViewVC logotype

Contents of /MITgcm_contrib/heimbach/OpenAD/code_ad_moc/openad_checkpointInit.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (show annotations) (download)
Tue Nov 18 17:33:11 2008 UTC (17 years, 11 months ago) by utke
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +1 -1 lines
FILE REMOVED
no longer needed here

1 C $Header: /u/gcmpack/MITgcm_contrib/heimbach/OpenAD/code_ad_moc/openad_checkpointInit.F,v 1.1 2008/09/15 22:16:01 utke Exp $
2
3 SUBROUTINE openad_checkpointinit(uCheckLev1,
4 + uCheckLev2,
5 + uCheckLev3,
6 + uCheckLev4 )
7
8 IMPLICIT NONE
9
10 #include "SIZE.h"
11 #include "EEPARAMS.h"
12 #include "PARAMS.h"
13
14 integer iloop
15 logical haveRemainder, allStepsCovered
16 integer uCheckLev1, uCheckLev2, uCheckLev3,uCheckLev4
17 integer nCheckLev1, nCheckLev2, nCheckLev3,nCheckLev4
18
19 uCheckLev1=0
20 uCheckLev2=0
21 uCheckLev3=0
22 uCheckLev4=0
23
24 open(2,action='read',file='ncheckLev.conf')
25 read(2,'(I5,/,I5,/I5,/I5)') nCheckLev1, nCheckLev2, nCheckLev3,
26 +nCheckLev4
27 close(2)
28
29 write(*,'(A,I4,A,I4,A,I4,A,I8)')
30 +'JU: the_main_loop checkpoints allowed 1st:' ,nCheckLev1,
31 +', 2nd:', nCheckLev2,
32 +', 3rd:', nCheckLev3,
33 +', 4th:', nCheckLev4
34
35 cju in this current scheme
36 cju there is no point in specifying 1 as the number of checkpoints
37 cju because for now don't avoid the incidental store of
38 cju the same checkpoint across multiple levels.
39 if (nCheckLev4 .eq. 1 ) then
40 uCheckLev4=0
41 write(*,'(A)') 'JU: NOTE: resetting level 4 to 0'
42 else
43 uCheckLev4=nCheckLev4
44 end if
45 if (nCheckLev3 .eq. 1 ) then
46 uCheckLev3=0
47 write(*,'(A)') 'JU: NOTE: resetting level 3 to 0'
48 else
49 uCheckLev3=nCheckLev3
50 end if
51 if (nCheckLev2 .eq. 1 ) then
52 uCheckLev2=0
53 write(*,'(A)') 'JU: NOTE: resetting level 2 to 0'
54 else
55 uCheckLev2=nCheckLev2
56 end if
57 if (nCheckLev1 .eq. 1 ) then
58 uCheckLev1=0
59 write(*,'(A)') 'JU: NOTE: resetting level 1 to 0'
60 else
61 uCheckLev1=nCheckLev1
62 end if
63 cju check sanity
64 if (uCheckLev4 .gt. 0 ) then
65 if ( uCheckLev3*uCheckLev2*uCheckLev1 .eq. 0) then
66 print *, 'JU: ERROR: uCheckLev4 > 0 implies ',
67 +'all lower levels must be nonzero too.'
68 end if
69 end if
70 if (uCheckLev3 .gt. 0 ) then
71 if ( uCheckLev2*uCheckLev1 .eq. 0) then
72 print *, 'JU: ERROR: uCheckLev3 > 0 implies ',
73 +'all lower levels must be nonzero too.'
74 end if
75 end if
76 if (uCheckLev2 .gt. 0 ) then
77 if ( uCheckLev1 .eq. 0) then
78 print *, 'JU: ERROR: uCheckLev2 > 0 implies ',
79 +'all lower levels must be nonzero too.'
80 end if
81 end if
82 if (uCheckLev1 .eq. 0 ) then
83 print *, 'JU: ERROR: uCheckLev1 must be nonzero '
84 end if
85
86 cju uCheckLev1
87 allStepsCovered = .false.
88 if (nTimeSteps .lt. uCheckLev1 ) then
89 uCheckLev1=nTimeSteps
90 allStepsCovered =.true.
91 end if
92
93 cju uCheckLev2
94 if (.NOT. allStepsCovered ) then
95 if (MOD(nTimeSteps,uCheckLev1).gt.0) then
96 if((nTimeSteps/uCheckLev1)+1 .le. uCheckLev2 ) then
97 uCheckLev2=(nTimeSteps/uCheckLev1)+1
98 allStepsCovered =.true.
99 end if
100 else
101 if((nTimeSteps/uCheckLev1) .le. uCheckLev2 ) then
102 uCheckLev2=(nTimeSteps/uCheckLev1)
103 allStepsCovered =.true.
104 end if
105 end if
106 else
107 uCheckLev2 = 0
108 end if
109
110 cju uCheckLev3
111 if (.NOT. allStepsCovered ) then
112 if (MOD(nTimeSteps,uCheckLev1*uCheckLev2).gt.0) then
113 if((nTimeSteps/(uCheckLev1*uCheckLev2))+1
114 + .le. uCheckLev3 ) then
115 uCheckLev3=(nTimeSteps/(uCheckLev1*uCheckLev2))+1
116 allStepsCovered =.true.
117 end if
118 else
119 if((nTimeSteps/(uCheckLev1*uCheckLev2)) .le. uCheckLev3 )then
120 uCheckLev3=(nTimeSteps/(uCheckLev1*uCheckLev2))
121 allStepsCovered =.true.
122 end if
123 end if
124 else
125 uCheckLev3 = 0
126 end if
127
128 cju uCheckLev4
129 if (.NOT. allStepsCovered ) then
130 if (MOD(nTimeSteps,uCheckLev1*uCheckLev2*uCheckLev3)
131 + .gt.0) then
132 if((nTimeSteps/(uCheckLev1*uCheckLev2*uCheckLev3))+1
133 + .le. uCheckLev4 ) then
134 uCheckLev4=
135 + (nTimeSteps/(uCheckLev1*uCheckLev2*uCheckLev3))+1
136 allStepsCovered =.true.
137 end if
138 else
139 if((nTimeSteps/(uCheckLev1*uCheckLev2*uCheckLev3))
140 + .le. uCheckLev4 ) then
141 uCheckLev4=
142 + (nTimeSteps/(uCheckLev1*uCheckLev2*uCheckLev3))
143 allStepsCovered =.true.
144 end if
145 end if
146 else
147 uCheckLev4 = 0
148 end if
149
150 if (.NOT. allStepsCovered) then
151 print *, 'JU: ERROR: not enough checkpoints allowed'
152 end if
153
154 write(*,'(A,I6)') 'JU: timesteps required:',ntimesteps
155 write(*,'(A,I4,A,I4,A,I4,A,I4)')
156 +'JU: the_main_loop checkpoints used 1st:',uCheckLev1,
157 +', 2nd:', uCheckLev2,
158 +', 3rd:', uCheckLev3,
159 +', 4th:', uCheckLev4
160
161 END
162

  ViewVC Help
Powered by ViewVC 1.1.22