/[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.1 - (hide annotations) (download)
Thu Mar 29 15:59:21 2012 UTC (13 years, 3 months ago) by heimbach
Branch: MAIN
Initial check-in of Dan Goldberg's streamice package

1 heimbach 1.1 C $Header: /u/gcmpack/MITgcm/pkg/streamice/streamice_init_varia.F,v 1.6 2011/06/29 16:24:10 dng Exp $
2     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     CALL STREAMICE_ADVECT_THICKNESS ( myThid, deltaT )
137    
138    
139    
140     ! if (time_step_int .gt. 1000) then
141    
142     WRITE(msgBuf,'(A,I10.10,E9.2,A)')
143     & 'streamice solo_time_step: nIter',
144     & myIter, myTime/86400.0/365.0, 'seconds'
145    
146     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
147     & SQUEEZE_RIGHT , 1)
148    
149     CALL STREAMICE_VELMASK_UPD (myThid)
150     CALL STREAMICE_UPD_FFRAC_UNCOUPLED ( myThid )
151     CALL STREAMICE_VEL_SOLVE( myThid )
152     ! endif
153    
154    
155    
156     ! enddo
157    
158    
159     ! modelEnd = myTime.EQ.endTime .OR. myIter.EQ.nEndIter
160    
161     ! #ifdef ALLOW_DIAGNOSTICS
162     !
163     ! ! this stuff was to replace what is in forward_step, but not
164     ! ! forward_step will be called
165     !
166     ! ! IF ( useDiagnostics ) THEN
167     ! ! CALL DIAGNOSTICS_SWITCH_ONOFF( myTime, myiter, myThid )
168     ! ! ! C-- State-variables diagnostics
169     ! ! ! CALL TIMER_START('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
170     ! ! ! CALL DO_STATEVARS_DIAGS( myTime, 0, myIter, myThid )
171     ! ! ! CALL TIMER_STOP ('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
172     ! ! ENDIF
173     !
174     !
175     ! IF ( useDiagnostics ) THEN
176     ! PRINT *, "CALLING FILL DIAGNOSTICS"
177     ! CALL DIAGNOSTICS_FILL(U_streamice,'SI_Uvel ',
178     ! & 0,1,0,1,1,myThid)
179     ! CALL DIAGNOSTICS_FILL(V_streamice,'SI_Vvel ',
180     ! & 0,1,0,1,1,myThid)
181     ! CALL DIAGNOSTICS_FILL(H_streamice,'SI_Thick',
182     ! & 0,1,0,1,1,myThid)
183     ! CALL DIAGNOSTICS_FILL(area_shelf_streamice,'SI_area ',
184     ! & 0,1,0,1,1,myThid)
185     ! CALL DIAGNOSTICS_FILL(float_frac_streamice,'SI_float',
186     ! & 0,1,0,1,1,myThid)
187     !
188     ! ENDIF
189     !
190     ! ! IF ( useDiagnostics ) THEN
191     ! ! CALL TIMER_START('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
192     ! ! CALL DO_STATEVARS_DIAGS( myTime, 2, myIter, myThid )
193     ! ! CALL TIMER_STOP ('DO_STATEVARS_DIAGS [FORWARD_STEP]',myThid)
194     ! ! ENDIF
195     !
196     ! #endif /* ALLOW_DIAGNOSTICS */
197    
198     ! myIter = nIter0 + iLoop
199     ! myTime = startTime + deltaTClock * float(iLoop)
200     !
201     ! CALL TIMER_START('DO_THE_MODEL_IO [FORWARD_STEP]',myThid)
202     ! CALL DO_THE_MODEL_IO( modelEnd, myTime, myIter, myThid )
203     ! CALL TIMER_STOP ('DO_THE_MODEL_IO [FORWARD_STEP]',myThid)
204    
205    
206     #endif
207     RETURN
208     END

  ViewVC Help
Powered by ViewVC 1.1.22