/[MITgcm]/MITgcm/model/src/ini_forcing.F
ViewVC logotype

Contents of /MITgcm/model/src/ini_forcing.F

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


Revision 1.46 - (show annotations) (download)
Mon Oct 1 13:28:59 2007 UTC (16 years, 8 months ago) by jmc
Branch: MAIN
Changes since 1.45: +14 -1 lines
Change EmPmR units: from m/s to kg/m2/s

1 C $Header: /u/gcmpack/MITgcm/model/src/ini_forcing.F,v 1.45 2007/09/22 03:11:03 dimitri Exp $
2 C $Name: $
3
4 #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6
7 CBOP
8 C !ROUTINE: INI_FORCING
9 C !INTERFACE:
10 SUBROUTINE INI_FORCING( myThid )
11
12 C !DESCRIPTION: \bv
13 C *==========================================================*
14 C | SUBROUTINE INI_FORCING
15 C | o Set model initial forcing fields.
16 C *==========================================================*
17 C \ev
18
19 C !USES:
20 IMPLICIT NONE
21 C === Global variables ===
22 #include "SIZE.h"
23 #include "EEPARAMS.h"
24 #include "PARAMS.h"
25 #include "GRID.h"
26 #include "FFIELDS.h"
27
28 C !INPUT/OUTPUT PARAMETERS:
29 C == Routine arguments ==
30 C myThid - Number of this instance of INI_FORCING
31 INTEGER myThid
32
33 C !LOCAL VARIABLES:
34 C == Local variables ==
35 C bi,bj - Loop counters
36 C i, j
37 INTEGER bi, bj
38 INTEGER i, j
39 CEOP
40
41 C- Initialise all arrays in common blocks
42 DO bj = myByLo(myThid), myByHi(myThid)
43 DO bi = myBxLo(myThid), myBxHi(myThid)
44 DO j=1-OLy,sNy+OLy
45 DO i=1-OLx,sNx+OLx
46 fu (i,j,bi,bj) = 0. _d 0
47 fv (i,j,bi,bj) = 0. _d 0
48 Qnet (i,j,bi,bj) = 0. _d 0
49 EmPmR (i,j,bi,bj) = 0. _d 0
50 saltFlux (i,j,bi,bj) = 0. _d 0
51 #ifdef ALLOW_SALT_PLUME
52 saltPlumeFlux (i,j,bi,bj) = 0. _d 0
53 #endif /* ALLOW_SALT_PLUME */
54 SST (i,j,bi,bj) = 0. _d 0
55 SSS (i,j,bi,bj) = 0. _d 0
56 Qsw (i,j,bi,bj) = 0. _d 0
57 pLoad (i,j,bi,bj) = 0. _d 0
58 sIceLoad (i,j,bi,bj) = 0. _d 0
59 surfaceForcingU(i,j,bi,bj) = 0. _d 0
60 surfaceForcingV(i,j,bi,bj) = 0. _d 0
61 surfaceForcingT(i,j,bi,bj) = 0. _d 0
62 surfaceForcingS(i,j,bi,bj) = 0. _d 0
63 surfaceForcingTice(i,j,bi,bj) = 0. _d 0
64 #ifndef EXCLUDE_FFIELDS_LOAD
65 taux0 (i,j,bi,bj) = 0. _d 0
66 taux1 (i,j,bi,bj) = 0. _d 0
67 tauy0 (i,j,bi,bj) = 0. _d 0
68 tauy1 (i,j,bi,bj) = 0. _d 0
69 Qnet0 (i,j,bi,bj) = 0. _d 0
70 Qnet1 (i,j,bi,bj) = 0. _d 0
71 EmPmR0 (i,j,bi,bj) = 0. _d 0
72 EmPmR1 (i,j,bi,bj) = 0. _d 0
73 saltFlux0 (i,j,bi,bj) = 0. _d 0
74 saltFlux1 (i,j,bi,bj) = 0. _d 0
75 SST0 (i,j,bi,bj) = 0. _d 0
76 SST1 (i,j,bi,bj) = 0. _d 0
77 SSS0 (i,j,bi,bj) = 0. _d 0
78 SSS1 (i,j,bi,bj) = 0. _d 0
79 #ifdef SHORTWAVE_HEATING
80 Qsw0 (i,j,bi,bj) = 0. _d 0
81 Qsw1 (i,j,bi,bj) = 0. _d 0
82 #endif
83 #ifdef ATMOSPHERIC_LOADING
84 pLoad0 (i,j,bi,bj) = 0. _d 0
85 pLoad1 (i,j,bi,bj) = 0. _d 0
86 #endif
87 #endif /* EXCLUDE_FFIELDS_LOAD */
88 ENDDO
89 ENDDO
90 ENDDO
91 ENDDO
92
93 DO bj = myByLo(myThid), myByHi(myThid)
94 DO bi = myBxLo(myThid), myBxHi(myThid)
95 DO j=1-Oly,sNy+Oly
96 DO i=1-Olx,sNx+Olx
97 IF ( doThetaClimRelax .AND.
98 & ABS(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN
99 lambdaThetaClimRelax(i,j,bi,bj) = 1. _d 0/tauThetaClimRelax
100 ELSE
101 lambdaThetaClimRelax(i,j,bi,bj) = 0. _d 0
102 ENDIF
103 IF ( doSaltClimRelax .AND.
104 & ABS(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN
105 lambdaSaltClimRelax(i,j,bi,bj) = 1. _d 0/tauSaltClimRelax
106 ELSE
107 lambdaSaltClimRelax(i,j,bi,bj) = 0. _d 0
108 ENDIF
109 ENDDO
110 ENDDO
111 ENDDO
112 ENDDO
113
114 C- every-one waits before master thread loads from file
115 _BARRIER
116
117 IF ( zonalWindFile .NE. ' ' ) THEN
118 CALL READ_FLD_XY_RS( zonalWindFile, ' ', fu, 0, myThid )
119 ENDIF
120 IF ( meridWindFile .NE. ' ' ) THEN
121 CALL READ_FLD_XY_RS( meridWindFile, ' ', fv, 0, myThid )
122 ENDIF
123 IF ( surfQFile .NE. ' ' ) THEN
124 CALL READ_FLD_XY_RS( surfQFile, ' ', Qnet, 0, myThid )
125 ELSEIF ( surfQnetFile .NE. ' ' ) THEN
126 CALL READ_FLD_XY_RS( surfQnetFile, ' ', Qnet, 0, myThid )
127 ENDIF
128 IF ( EmPmRfile .NE. ' ' ) THEN
129 CALL READ_FLD_XY_RS( EmPmRfile, ' ', EmPmR, 0, myThid )
130 IF ( convertEmP2rUnit.EQ.mass2rUnit ) THEN
131 C- EmPmR is now (after c59h) expressed in kg/m2/s (fresh water mass flux)
132 _BARRIER
133 DO bj = myByLo(myThid), myByHi(myThid)
134 DO bi = myBxLo(myThid), myBxHi(myThid)
135 DO j=1-Oly,sNy+Oly
136 DO i=1-Olx,sNx+Olx
137 EmPmR(i,j,bi,bj) = EmPmR(i,j,bi,bj)*rhoConstFresh
138 ENDDO
139 ENDDO
140 ENDDO
141 ENDDO
142 ENDIF
143 ENDIF
144 IF ( saltFluxFile .NE. ' ' ) THEN
145 CALL READ_FLD_XY_RS( saltFluxFile, ' ', saltFlux, 0, myThid )
146 ENDIF
147 IF ( thetaClimFile .NE. ' ' ) THEN
148 CALL READ_FLD_XY_RS( thetaClimFile, ' ', SST, 0, myThid )
149 ENDIF
150 IF ( saltClimFile .NE. ' ' ) THEN
151 CALL READ_FLD_XY_RS( saltClimFile, ' ', SSS, 0, myThid )
152 ENDIF
153 IF ( lambdaThetaFile .NE. ' ' ) THEN
154 CALL READ_FLD_XY_RS( lambdaThetaFile, ' ',
155 & lambdaThetaClimRelax, 0, myThid )
156 ENDIF
157 IF ( lambdaSaltFile .NE. ' ' ) THEN
158 CALL READ_FLD_XY_RS( lambdaSaltFile, ' ',
159 & lambdaSaltClimRelax, 0, myThid )
160 ENDIF
161 #ifdef SHORTWAVE_HEATING
162 IF ( surfQswFile .NE. ' ' ) THEN
163 CALL READ_FLD_XY_RS( surfQswFile, ' ', Qsw, 0, myThid )
164 IF ( surfQFile .NE. ' ' ) THEN
165 C- Qnet is now (after c54) the net Heat Flux (including SW)
166 _BARRIER
167 DO bj = myByLo(myThid), myByHi(myThid)
168 DO bi = myBxLo(myThid), myBxHi(myThid)
169 DO j=1-OLy,sNy+OLy
170 DO i=1-OLx,sNx+OLx
171 Qnet(i,j,bi,bj) = Qnet(i,j,bi,bj) + Qsw(i,j,bi,bj)
172 ENDDO
173 ENDDO
174 ENDDO
175 ENDDO
176 ENDIF
177 ENDIF
178 #endif
179 #ifdef ATMOSPHERIC_LOADING
180 IF ( pLoadFile .NE. ' ' ) THEN
181 CALL READ_FLD_XY_RS( pLoadFile, ' ', pLoad, 0, myThid )
182 ENDIF
183 #endif
184
185 CALL EXCH_UV_XY_RS( fu,fv, .TRUE., myThid )
186 CALL EXCH_XY_RS( Qnet , myThid )
187 CALL EXCH_XY_RS( EmPmR, myThid )
188 CALL EXCH_XY_RS( saltFlux, myThid )
189 #ifdef ALLOW_SALT_PLUME
190 CALL EXCH_XY_RS( saltPlumeFlux, myThid )
191 #endif /* ALLOW_SALT_PLUME */
192 CALL EXCH_XY_RS( SST , myThid )
193 CALL EXCH_XY_RS( SSS , myThid )
194 CALL EXCH_XY_RS( lambdaThetaClimRelax, myThid )
195 CALL EXCH_XY_RS( lambdaSaltClimRelax , myThid )
196 #ifdef SHORTWAVE_HEATING
197 CALL EXCH_XY_RS(Qsw , myThid )
198 #endif
199 #ifdef ATMOSPHERIC_LOADING
200 CALL EXCH_XY_RS(pLoad , myThid )
201 C CALL PLOT_FIELD_XYRS( pLoad, 'S/R INI_FORCING pLoad',1,myThid)
202 #endif
203 C CALL PLOT_FIELD_XYRS( fu, 'S/R INI_FORCING FU',1,myThid)
204 C CALL PLOT_FIELD_XYRS( fv, 'S/R INI_FORCING FV',1,myThid)
205
206 RETURN
207 END

  ViewVC Help
Powered by ViewVC 1.1.22