forked from altMITgcm/MITgcm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
streamice_solo_timestep.F
138 lines (104 loc) · 3.72 KB
/
streamice_solo_timestep.F
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
C $Header: /u/gcmpack/MITgcm/pkg/streamice/Attic/streamice_solo_timestep.F,v 1.3 2014/06/04 13:03:11 dgoldberg Exp $
C $Name: $
#include "STREAMICE_OPTIONS.h"
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
CBOP
SUBROUTINE STREAMICE_SOLO_TIMESTEP ( myThid, myIter,
& iLoop, myTime )
C /============================================================\
C | SUBROUTINE |
C | o |
C |============================================================|
C | |
C \============================================================/
IMPLICIT NONE
C === Global variables ===
#include "SIZE.h"
#include "GRID.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "STREAMICE.h"
#ifdef ALLOW_AUTODIFF_TAMC
# include "tamc.h"
# include "STREAMICE_ADV.h"
# include "STREAMICE_BDRY.h"
# include "STREAMICE_CG.h"
#endif
INTEGER myThid, myIter, iLoop
_RL myTime
#ifdef ALLOW_STREAMICE
INTEGER i, j, bi, bj, ki, kj
! _RL Iratio, Imin_ratio, time_step_remain, local_u_max
! _RL ratio, min_ratio
! _RL local_v_max, time_step_int, min_time_step
CHARACTER*(MAX_LEN_MBUF) msgBuf
! LOGICAL modelEnd
#ifdef ALLOW_AUTODIFF_TAMC
c**************************************
#include "streamice_ad_check_lev1_dir.h"
c**************************************
#endif
! time_step_remain = deltaT
! min_time_step = 1000.0
! n_interm = 0
#ifdef ALLOW_AUTODIFF_TAMC
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
STREAMICE_ufacemask(i,j,bi,bj) = 0. _d 0
STREAMICE_vfacemask(i,j,bi,bj) = 0. _d 0
ru_old_si(i,j,bi,bj) = 0. _d 0
rv_old_si(i,j,bi,bj) = 0. _d 0
zu_old_si(i,j,bi,bj) = 0. _d 0
zv_old_si(i,j,bi,bj) = 0. _d 0
! h_after_uflux_si(i,j,bi,bj) = 0. _d 0
#ifdef STREAMICE_HYBRID_STRESS
streamice_taubx (i,j,bi,bj) = 0. _d 0
streamice_tauby (i,j,bi,bj) = 0. _d 0
#endif
ENDDO
ENDDO
ENDDO
ENDDO
#endif
WRITE(msgBuf,'(A,I10.10,E9.2,A)')
& 'streamice solo_time_step: nIter',
& myIter, myTime/86400.0/365.0, 'seconds'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
CALL STREAMICE_DUMP( mytime, myiter, myThid )
! NEW DIRECTIVES - DNG
!#ifdef ALLOW_AUTODIFF_TAMC
!CADJ STORE float_frac_streamice = comlev1, key = ikey_dynamics,
!CADJ & kind = isbyte
!CADJ STORE surf_el_streamice = comlev1, key = ikey_dynamics,
!CADJ & kind = isbyte
!CADJ STORE base_el_streamice = comlev1, key = ikey_dynamics,
!CADJ & kind = isbyte
!#endif
! NEW DIRECTIVES - DNG
!#ifdef ALLOW_GENTIM2D_CONTROL
! CALL CTRL_MAP_GENTIM2D (myTime, myIter, myThid)
!#endif
if (myIter.eq.0) then
CALL STREAMICE_UPD_FFRAC_UNCOUPLED ( myThid )
CALL WRITE_FLD_XY_RL
& ("surf_el_init","",surf_el_streamice,0,myThid)
endif
CALL STREAMICE_VELMASK_UPD (myThid)
#ifdef ALLOW_STREAMICE_FLUX_CONTROL
CALL STREAMICE_APPLY_FLUX_CTRL ( myTime, myIter, myThid )
#endif
#ifdef ALLOW_STREAMICE_TIMEDEP_FORCING
CALL STREAMICE_FIELDS_LOAD( myTime, myIter, myThid )
#endif
CALL STREAMICE_VEL_SOLVE( myThid )
if(.not.STREAMICE_diagnostic_only) THEN
CALL STREAMICE_ADVECT_THICKNESS ( myThid, myIter, deltaT )
endif
! CALL AT END INSTEAD OF BEGINNING - DNG
CALL STREAMICE_UPD_FFRAC_UNCOUPLED ( myThid )
#endif
RETURN
END