/[MITgcm]/MITgcm/pkg/shelfice/shelfice_init_fixed.F
ViewVC logotype

Contents of /MITgcm/pkg/shelfice/shelfice_init_fixed.F

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


Revision 1.6 - (show annotations) (download)
Tue May 10 07:49:19 2011 UTC (13 years, 1 month ago) by mlosch
Branch: MAIN
CVS Tags: checkpoint62x
Changes since 1.5: +39 -1 lines
add a cost function term that penalizes the deviation of xx_shifwflx
from the first guess (zero) in analogy to other control variables

1 C $Header: /u/gcmpack/MITgcm/pkg/shelfice/shelfice_init_fixed.F,v 1.5 2010/01/12 21:34:09 jmc Exp $
2 C $Name: $
3
4 #include "SHELFICE_OPTIONS.h"
5
6 SUBROUTINE SHELFICE_INIT_FIXED( myThid )
7 C *============================================================*
8 C | SUBROUTINE SHELFICE_INIT_FIXED
9 C | o Routine to initialize SHELFICE parameters and variables.
10 C *============================================================*
11 C | Initialize SHELFICE parameters and variables.
12 C *============================================================*
13 IMPLICIT NONE
14
15 C === Global variables ===
16 #include "SIZE.h"
17 #include "EEPARAMS.h"
18 #include "PARAMS.h"
19 #include "GRID.h"
20 #include "SHELFICE.h"
21 #ifdef ALLOW_COST
22 # include "cost.h"
23 # include "SHELFICE_COST.h"
24 #endif /* ALLOW_COST */
25
26 C === Routine arguments ===
27 C myThid - Number of this instance of SHELFICE_INIT_FIXED
28 INTEGER myThid
29
30 #ifdef ALLOW_SHELFICE
31 C === Local variables ===
32 C I,J,K,bi,bj - Loop counters
33 INTEGER I, J, K, bi, bj
34 #ifdef ALLOW_DIAGNOSTICS
35 INTEGER diagNum
36 INTEGER diagMate
37 CHARACTER*8 diagName
38 CHARACTER*16 diagCode
39 CHARACTER*16 diagUnits
40 CHARACTER*(80) diagTitle
41 #endif /* ALLOW_DIAGNOSTICS */
42 #ifdef ALLOW_COST
43 _RL dummy
44 #endif
45
46 #ifdef ALLOW_MNC
47 C Initialize MNC variable information for SHELFICE
48 IF ( useMNC .AND. (shelfice_tave_mnc.OR.shelfice_dump_mnc)
49 & ) THEN
50 CALL SHELFICE_MNC_INIT( myThid )
51 ENDIF
52 #endif /* ALLOW_MNC */
53
54 C-----------------------------------------------------------------------
55 C-- Initialize SHELFICE variables kTopC
56 C-- kTopC is the same as kSurfC, except for places over land.
57 C-- Over land (completely dry cells), kTop = 0, while kSurfC = Nr+1
58 C-----------------------------------------------------------------------
59
60 DO bj = myByLo(myThid), myByHi(myThid)
61 DO bi = myBxLo(myThid), myBxHi(myThid)
62 DO J = 1-OLy, sNy+OLy
63 DO I = 1-OLx, sNx+OLx
64 kTopC(i,j,bi,bj) = 0
65 DO K = Nr, 1, -1
66 IF ( maskC(I,J,K,bi,bj) .NE. 0. _d 0 )
67 & kTopC(I,J,bi,bj) = K
68 ENDDO
69 ENDDO
70 ENDDO
71 ENDDO
72 ENDDO
73 #ifdef ALLOW_COST
74 #if (defined (ALLOW_SHIFWFLX_COST_CONTRIBUTION) || \
75 defined (ALLOW_SHIFWFLX_CONTROL))
76 IF ( shifwflx_errfile .NE. ' ' ) THEN
77 CALL READ_REC_XY_RL( shifwflx_errfile, wshifwflx, 1, 0, myThid )
78 ENDIF
79
80 DO bj = myByLo(myThid), myByHi(myThid)
81 DO bi = myBxLo(myThid), myBxHi(myThid)
82 DO J = 1-OLy, sNy+OLy
83 DO I = 1-OLx, sNx+OLx
84 c-- Test for missing values.
85 IF (wshifwflx(i,j,bi,bj) .LT. -9900.) THEN
86 wshifwflx(i,j,bi,bj) = 0. _d 0
87 ENDIF
88 c-- use weight as mask
89 wshifwflx(i,j,bi,bj) =
90 & max(wshifwflx(i,j,bi,bj),wshifwflx0)
91 & *maskSHI(I,J,1,bi,bj)
92 IF (wshifwflx(i,j,bi,bj) .NE. 0.) THEN
93 wshifwflx(i,j,bi,bj) =
94 & 1./wshifwflx(i,j,bi,bj)/wshifwflx(i,j,bi,bj)
95 ENDIF
96 ENDDO
97 ENDDO
98 ENDDO
99 ENDDO
100 CALL ACTIVE_WRITE_XY_LOC( 'wshifwflx', wshifwflx,
101 & 1, 0, mythid, dummy)
102 #endif /* ALLOW_SHIFWFLX_COST_CONTRIBUTION or ALLOW_SHIFWFLX_CONTROL */
103 #endif /* ALLOW_COST */
104
105 #ifdef ALLOW_DIAGNOSTICS
106 IF ( useDiagnostics ) THEN
107 diagName = 'SHIfwFlx'
108 diagTitle = 'Ice shelf fresh water flux (positive upward)'
109 diagUnits = 'kg/m^2/s '
110 diagCode = 'SM L1 '
111 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
112 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
113
114 diagName = 'SHIhtFlx'
115 diagTitle = 'Ice shelf heat flux (positive upward)'
116 diagUnits = 'W/m^2 '
117 diagCode = 'SM L1 '
118 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
119 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
120
121 diagName = 'SHIUDrag'
122 diagTitle = 'U momentum tendency from ice shelf drag'
123 diagUnits = 'm/s^2 '
124 diagCode = 'UU L1 '
125 diagMate = diagNum + 2
126 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
127 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
128
129 diagName = 'SHIVDrag'
130 diagTitle = 'V momentum tendency from ice shelf drag'
131 diagUnits = 'm/s^2 '
132 diagCode = 'VV L1 '
133 diagMate = diagNum
134 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
135 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
136
137 diagName = 'SHIForcT'
138 diagTitle = 'Ice shelf forcing for theta, >0 increases theta'
139 diagUnits = 'W/m^2 '
140 diagCode = 'SM L1 '
141 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
142 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
143
144 diagName = 'SHIForcS'
145 diagTitle = 'Ice shelf forcing for salt, >0 increases salt'
146 diagUnits = 'g/m^2/s '
147 diagCode = 'SM L1 '
148 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
149 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
150 ENDIF
151 #endif /* ALLOW_DIAGNOSTICS */
152 #endif /* ALLOW_SHELFICE */
153
154 RETURN
155 END

  ViewVC Help
Powered by ViewVC 1.1.22