/[MITgcm]/MITgcm_contrib/dgoldberg/streamice/streamice_solo_timestep.F
ViewVC logotype

Annotation of /MITgcm_contrib/dgoldberg/streamice/streamice_solo_timestep.F

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


Revision 1.2 - (hide annotations) (download)
Thu Jul 19 18:46:56 2012 UTC (13 years ago) by dgoldberg
Branch: MAIN
Changes since 1.1: +8 -4 lines
TAF compatibility

1 dgoldberg 1.2 C $Header: /u/gcmpack/MITgcm_contrib/dgoldberg/streamice/streamice_solo_timestep.F,v 1.1 2012/03/29 15:59:21 heimbach Exp $
2 heimbach 1.1 C $Name: $
3    
4     #include "STREAMICE_OPTIONS.h"
5    
6     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7    
8     CBOP
9     SUBROUTINE STREAMICE_SOLO_TIMESTEP ( myThid, myIter,
10     & iLoop, myTime )
11    
12     C /============================================================\
13     C | SUBROUTINE |
14     C | o |
15     C |============================================================|
16     C | |
17     C \============================================================/
18     IMPLICIT NONE
19    
20     C === Global variables ===
21     #include "SIZE.h"
22     #include "GRID.h"
23     #include "EEPARAMS.h"
24     #include "PARAMS.h"
25     #include "STREAMICE.h"
26     #ifdef ALLOW_AUTODIFF_TAMC
27     # include "tamc.h"
28     # include "STREAMICE_ADV.h"
29     # include "STREAMICE_BDRY.h"
30     # include "STREAMICE_CG.h"
31     #endif
32    
33    
34     INTEGER myThid, myIter, iLoop
35     _RL myTime
36    
37    
38     #ifdef ALLOW_STREAMICE
39    
40     INTEGER i, j, bi, bj, ki, kj
41     ! _RL Iratio, Imin_ratio, time_step_remain, local_u_max
42     ! _RL ratio, min_ratio
43     ! _RL local_v_max, time_step_int, min_time_step
44     CHARACTER*(MAX_LEN_MBUF) msgBuf
45     ! LOGICAL modelEnd
46    
47     #ifdef ALLOW_AUTODIFF_TAMC
48     c**************************************
49     #include "streamice_ad_check_lev1_dir.h"
50     c**************************************
51     #endif
52    
53     ! time_step_remain = deltaT
54     ! min_time_step = 1000.0
55     ! n_interm = 0
56    
57     #ifdef ALLOW_AUTODIFF_TAMC
58    
59     DO bj=myByLo(myThid),myByHi(myThid)
60     DO bi=myBxLo(myThid),myBxHi(myThid)
61     DO j=1-OLy,sNy+OLy
62     DO i=1-OLx,sNx+OLx
63     STREAMICE_ufacemask(i,j,bi,bj) = 0. _d 0
64     STREAMICE_vfacemask(i,j,bi,bj) = 0. _d 0
65     ru_old_si(i,j,bi,bj) = 0. _d 0
66     rv_old_si(i,j,bi,bj) = 0. _d 0
67     zu_old_si(i,j,bi,bj) = 0. _d 0
68     zv_old_si(i,j,bi,bj) = 0. _d 0
69     h_after_uflux_si(i,j,bi,bj) = 0. _d 0
70     ENDDO
71     ENDDO
72     ENDDO
73     ENDDO
74    
75     #endif
76    
77     ! PRINT *, "ICE STREAM TIMESTEP ", iLoop, "; ",
78     ! & Time/86400/365, " years"
79    
80     ! do while (time_step_remain .gt. 0. _d 0)
81     !
82     ! n_interm = n_interm + 1
83     ! Imin_ratio = 1.0e-16
84     !
85     ! DO bj = myByLo(myThid), myByHi(myThid)
86     ! DO bi = myBxLo(myThid), myBxHi(myThid)
87     ! DO j=1,sNy
88     ! DO i=1,sNx
89     !
90     ! local_u_max = 0
91     ! local_v_max = 0
92     !
93     ! if (STREAMICE_hmask (i,j,bi,bj) .eq. 1.0) then
94     ! do ki = 0,1
95     ! do kj = 0,1
96     ! local_u_max =
97     ! & max (local_u_max, abs(U_streamice(i+ki,j+kj,bi,bj)))
98     ! local_v_max =
99     ! & max (local_v_max, abs(V_streamice(i+ki,j+kj,bi,bj)))
100     ! enddo
101     ! enddo
102     !
103     ! Iratio = max (local_u_max/dxF(i,j,bi,bj) ,
104     ! & local_v_max/dyF(i,j,bi,bj))
105     ! Imin_ratio = max (Imin_ratio, Iratio)
106     ! endif
107     !
108     ! enddo
109     ! enddo
110     ! enddo
111     ! enddo
112     !
113     ! CALL GLOBAL_MAX_R8 (Imin_ratio, myThid)
114     ! min_ratio = 1./(Imin_ratio+1.e-12)
115     ! time_step_int =
116     ! & min(streamice_CFL_factor*min_ratio*(365*86400),
117     ! & deltaT)
118     !
119     ! if (time_step_int .lt. min_time_step) then
120     ! WRITE(msgBuf,'(A,A,E9.2)') 'streamice solo_time_step:',
121     ! & ' abnormally small timestep ',
122     ! & streamice_CFL_factor*min_ratio*(365*86400)
123     ! CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
124     ! & SQUEEZE_RIGHT , 1)
125     ! endif
126     !
127     ! if (time_step_int .ge. time_step_remain) then
128     ! time_step_int = time_step_remain
129     ! time_step_remain = 0.0
130     ! else
131     ! time_step_remain = time_step_remain - time_step_int
132     ! endif
133    
134    
135    
136    
137 dgoldberg 1.2
138 heimbach 1.1
139     ! if (time_step_int .gt. 1000) then
140    
141     WRITE(msgBuf,'(A,I10.10,E9.2,A)')
142     & 'streamice solo_time_step: nIter',
143     & myIter, myTime/86400.0/365.0, 'seconds'
144    
145     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
146     & SQUEEZE_RIGHT , 1)
147    
148     CALL STREAMICE_VELMASK_UPD (myThid)
149     CALL STREAMICE_UPD_FFRAC_UNCOUPLED ( myThid )
150     CALL STREAMICE_VEL_SOLVE( myThid )
151     ! endif
152    
153 dgoldberg 1.2
154     CALL STREAMICE_ADVECT_THICKNESS ( myThid, deltaT )
155    
156 heimbach 1.1
157     ! enddo
158    
159 dgoldberg 1.2 ! CALL STREAMICE_VELMASK_UPD (myThid)
160     ! CALL STREAMICE_UPD_FFRAC_UNCOUPLED ( myThid )
161     ! CALL STREAMICE_VEL_SOLVE( myThid )
162 heimbach 1.1
163     ! modelEnd = myTime.EQ.endTime .OR. myIter.EQ.nEndIter
164    
165     ! #ifdef ALLOW_DIAGNOSTICS
166     !
167     ! ! this stuff was to replace what is in forward_step, but not
168     ! ! forward_step will be called
169     !
170     ! ! IF ( useDiagnostics ) THEN
171     ! ! CALL DIAGNOSTICS_SWITCH_ONOFF( myTime, myiter, myThid )
172     ! ! ! C-- State-variables diagnostics
173     ! ! ! CALL TIMER_START('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
174     ! ! ! CALL DO_STATEVARS_DIAGS( myTime, 0, myIter, myThid )
175     ! ! ! CALL TIMER_STOP ('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
176     ! ! ENDIF
177     !
178     !
179     ! IF ( useDiagnostics ) THEN
180     ! PRINT *, "CALLING FILL DIAGNOSTICS"
181     ! CALL DIAGNOSTICS_FILL(U_streamice,'SI_Uvel ',
182     ! & 0,1,0,1,1,myThid)
183     ! CALL DIAGNOSTICS_FILL(V_streamice,'SI_Vvel ',
184     ! & 0,1,0,1,1,myThid)
185     ! CALL DIAGNOSTICS_FILL(H_streamice,'SI_Thick',
186     ! & 0,1,0,1,1,myThid)
187     ! CALL DIAGNOSTICS_FILL(area_shelf_streamice,'SI_area ',
188     ! & 0,1,0,1,1,myThid)
189     ! CALL DIAGNOSTICS_FILL(float_frac_streamice,'SI_float',
190     ! & 0,1,0,1,1,myThid)
191     !
192     ! ENDIF
193     !
194     ! ! IF ( useDiagnostics ) THEN
195     ! ! CALL TIMER_START('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
196     ! ! CALL DO_STATEVARS_DIAGS( myTime, 2, myIter, myThid )
197     ! ! CALL TIMER_STOP ('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
198     ! ! ENDIF
199     !
200     ! #endif /* ALLOW_DIAGNOSTICS */
201    
202     ! myIter = nIter0 + iLoop
203     ! myTime = startTime + deltaTClock * float(iLoop)
204     !
205     ! CALL TIMER_START('DO_THE_MODEL_IO [FORWARD_STEP]',myThid)
206     ! CALL DO_THE_MODEL_IO( modelEnd, myTime, myIter, myThid )
207     ! CALL TIMER_STOP ('DO_THE_MODEL_IO [FORWARD_STEP]',myThid)
208    
209    
210     #endif
211     RETURN
212     END

  ViewVC Help
Powered by ViewVC 1.1.22