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

Annotation of /MITgcm_contrib/heimbach/OpenAD/code_regress/openad_checkpointInit.F

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


Revision 1.1 - (hide annotations) (download)
Tue Nov 20 15:20:58 2007 UTC (17 years, 8 months ago) by utke
Branch: MAIN
adding regression test code

1 utke 1.1 C $Header: /u/gcmpack/MITgcm_contrib/heimbach/OpenAD/code_heat_transport/openad_checkpointInit.F,v 1.1 2007/06/08 22:05:21 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