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

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

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


Revision 1.6 - (hide 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 mlosch 1.6 C $Header: /u/gcmpack/MITgcm/pkg/shelfice/shelfice_init_fixed.F,v 1.5 2010/01/12 21:34:09 jmc Exp $
2 mlosch 1.1 C $Name: $
3    
4     #include "SHELFICE_OPTIONS.h"
5    
6     SUBROUTINE SHELFICE_INIT_FIXED( myThid )
7 jmc 1.4 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 mlosch 1.1 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 mlosch 1.6 #ifdef ALLOW_COST
22     # include "cost.h"
23     # include "SHELFICE_COST.h"
24     #endif /* ALLOW_COST */
25 mlosch 1.1
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 jmc 1.5 INTEGER diagMate
37 mlosch 1.1 CHARACTER*8 diagName
38     CHARACTER*16 diagCode
39     CHARACTER*16 diagUnits
40     CHARACTER*(80) diagTitle
41     #endif /* ALLOW_DIAGNOSTICS */
42 mlosch 1.6 #ifdef ALLOW_COST
43     _RL dummy
44     #endif
45 mlosch 1.1
46 jmc 1.4 #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 mlosch 1.1 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 mlosch 1.6 #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 mlosch 1.1
105     #ifdef ALLOW_DIAGNOSTICS
106     IF ( useDiagnostics ) THEN
107     diagName = 'SHIfwFlx'
108 mlosch 1.2 diagTitle = 'Ice shelf fresh water flux (positive upward)'
109 mlosch 1.1 diagUnits = 'kg/m^2/s '
110 jmc 1.5 diagCode = 'SM L1 '
111     CALL DIAGNOSTICS_ADDTOLIST( diagNum,
112     I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
113 mlosch 1.1
114     diagName = 'SHIhtFlx'
115 mlosch 1.2 diagTitle = 'Ice shelf heat flux (positive upward)'
116 mlosch 1.1 diagUnits = 'W/m^2 '
117 jmc 1.5 diagCode = 'SM L1 '
118     CALL DIAGNOSTICS_ADDTOLIST( diagNum,
119     I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
120 mlosch 1.1
121 mlosch 1.2 diagName = 'SHIUDrag'
122     diagTitle = 'U momentum tendency from ice shelf drag'
123 mlosch 1.1 diagUnits = 'm/s^2 '
124 jmc 1.5 diagCode = 'UU L1 '
125     diagMate = diagNum + 2
126     CALL DIAGNOSTICS_ADDTOLIST( diagNum,
127     I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
128 mlosch 1.1
129 mlosch 1.2 diagName = 'SHIVDrag'
130     diagTitle = 'V momentum tendency from ice shelf drag'
131 mlosch 1.1 diagUnits = 'm/s^2 '
132 jmc 1.5 diagCode = 'VV L1 '
133     diagMate = diagNum
134     CALL DIAGNOSTICS_ADDTOLIST( diagNum,
135     I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
136 dimitri 1.3
137     diagName = 'SHIForcT'
138     diagTitle = 'Ice shelf forcing for theta, >0 increases theta'
139     diagUnits = 'W/m^2 '
140 jmc 1.5 diagCode = 'SM L1 '
141     CALL DIAGNOSTICS_ADDTOLIST( diagNum,
142     I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
143 dimitri 1.3
144     diagName = 'SHIForcS'
145     diagTitle = 'Ice shelf forcing for salt, >0 increases salt'
146     diagUnits = 'g/m^2/s '
147 jmc 1.5 diagCode = 'SM L1 '
148     CALL DIAGNOSTICS_ADDTOLIST( diagNum,
149     I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
150 mlosch 1.1 ENDIF
151     #endif /* ALLOW_DIAGNOSTICS */
152     #endif /* ALLOW_SHELFICE */
153    
154     RETURN
155     END

  ViewVC Help
Powered by ViewVC 1.1.22