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

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

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


Revision 1.47 - (hide annotations) (download)
Mon Oct 15 15:28:24 2007 UTC (16 years, 7 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint59i, checkpoint59j
Changes since 1.46: +3 -3 lines
finishing EmPmR unit changes: replace convertEmP2rUnit by mass2rUnit

1 jmc 1.47 C $Header: /u/gcmpack/MITgcm/model/src/ini_forcing.F,v 1.46 2007/10/01 13:28:59 jmc Exp $
2 cnh 1.22 C $Name: $
3 cnh 1.1
4 edhill 1.26 #include "PACKAGES_CONFIG.h"
5 cnh 1.12 #include "CPP_OPTIONS.h"
6 cnh 1.1
7 cnh 1.22 CBOP
8     C !ROUTINE: INI_FORCING
9     C !INTERFACE:
10 cnh 1.1 SUBROUTINE INI_FORCING( myThid )
11 cnh 1.22
12     C !DESCRIPTION: \bv
13     C *==========================================================*
14 jmc 1.42 C | SUBROUTINE INI_FORCING
15     C | o Set model initial forcing fields.
16 cnh 1.22 C *==========================================================*
17     C \ev
18    
19     C !USES:
20 adcroft 1.14 IMPLICIT NONE
21 cnh 1.1 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 cnh 1.22 C !INPUT/OUTPUT PARAMETERS:
29 cnh 1.1 C == Routine arguments ==
30     C myThid - Number of this instance of INI_FORCING
31     INTEGER myThid
32    
33 cnh 1.22 C !LOCAL VARIABLES:
34 cnh 1.1 C == Local variables ==
35     C bi,bj - Loop counters
36 jmc 1.42 C i, j
37 cnh 1.1 INTEGER bi, bj
38 jmc 1.42 INTEGER i, j
39 cnh 1.22 CEOP
40 cnh 1.1
41 jmc 1.42 C- Initialise all arrays in common blocks
42 adcroft 1.10 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 heimbach 1.18 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 jmc 1.27 saltFlux (i,j,bi,bj) = 0. _d 0
51 dimitri 1.45 #ifdef ALLOW_SALT_PLUME
52     saltPlumeFlux (i,j,bi,bj) = 0. _d 0
53     #endif /* ALLOW_SALT_PLUME */
54 heimbach 1.18 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 jmc 1.44 pLoad (i,j,bi,bj) = 0. _d 0
58 jmc 1.33 sIceLoad (i,j,bi,bj) = 0. _d 0
59 jmc 1.35 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 jmc 1.44 #ifndef EXCLUDE_FFIELDS_LOAD
65 heimbach 1.24 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 jmc 1.37 saltFlux0 (i,j,bi,bj) = 0. _d 0
74     saltFlux1 (i,j,bi,bj) = 0. _d 0
75 heimbach 1.24 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 jmc 1.42 #ifdef SHORTWAVE_HEATING
80 heimbach 1.24 Qsw0 (i,j,bi,bj) = 0. _d 0
81     Qsw1 (i,j,bi,bj) = 0. _d 0
82     #endif
83     #ifdef ATMOSPHERIC_LOADING
84 jmc 1.44 pLoad0 (i,j,bi,bj) = 0. _d 0
85     pLoad1 (i,j,bi,bj) = 0. _d 0
86 heimbach 1.24 #endif
87 jmc 1.44 #endif /* EXCLUDE_FFIELDS_LOAD */
88 adcroft 1.10 ENDDO
89     ENDDO
90     ENDDO
91     ENDDO
92 jmc 1.42
93 heimbach 1.38 DO bj = myByLo(myThid), myByHi(myThid)
94     DO bi = myBxLo(myThid), myBxHi(myThid)
95 jmc 1.42 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 heimbach 1.38 ELSE
101 jmc 1.42 lambdaThetaClimRelax(i,j,bi,bj) = 0. _d 0
102 heimbach 1.38 ENDIF
103     IF ( doSaltClimRelax .AND.
104 jmc 1.42 & ABS(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN
105     lambdaSaltClimRelax(i,j,bi,bj) = 1. _d 0/tauSaltClimRelax
106 heimbach 1.38 ELSE
107 jmc 1.42 lambdaSaltClimRelax(i,j,bi,bj) = 0. _d 0
108 heimbach 1.38 ENDIF
109     ENDDO
110     ENDDO
111     ENDDO
112     ENDDO
113 jmc 1.42
114     C- every-one waits before master thread loads from file
115 cnh 1.39 _BARRIER
116 jmc 1.42
117 adcroft 1.16 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 jmc 1.34 ELSEIF ( surfQnetFile .NE. ' ' ) THEN
126     CALL READ_FLD_XY_RS( surfQnetFile, ' ', Qnet, 0, myThid )
127 adcroft 1.16 ENDIF
128     IF ( EmPmRfile .NE. ' ' ) THEN
129     CALL READ_FLD_XY_RS( EmPmRfile, ' ', EmPmR, 0, myThid )
130 jmc 1.47 c IF ( convertEmP2rUnit.EQ.mass2rUnit ) THEN
131 jmc 1.46 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 jmc 1.47 c ENDIF
143 adcroft 1.16 ENDIF
144 jmc 1.37 IF ( saltFluxFile .NE. ' ' ) THEN
145     CALL READ_FLD_XY_RS( saltFluxFile, ' ', saltFlux, 0, myThid )
146     ENDIF
147 adcroft 1.16 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 heimbach 1.38 IF ( lambdaThetaFile .NE. ' ' ) THEN
154 jmc 1.42 CALL READ_FLD_XY_RS( lambdaThetaFile, ' ',
155 heimbach 1.38 & lambdaThetaClimRelax, 0, myThid )
156     ENDIF
157     IF ( lambdaSaltFile .NE. ' ' ) THEN
158 jmc 1.42 CALL READ_FLD_XY_RS( lambdaSaltFile, ' ',
159 heimbach 1.38 & lambdaSaltClimRelax, 0, myThid )
160     ENDIF
161 heimbach 1.18 #ifdef SHORTWAVE_HEATING
162     IF ( surfQswFile .NE. ' ' ) THEN
163     CALL READ_FLD_XY_RS( surfQswFile, ' ', Qsw, 0, myThid )
164 jmc 1.34 IF ( surfQFile .NE. ' ' ) THEN
165     C- Qnet is now (after c54) the net Heat Flux (including SW)
166 jmc 1.42 _BARRIER
167     DO bj = myByLo(myThid), myByHi(myThid)
168     DO bi = myBxLo(myThid), myBxHi(myThid)
169 jmc 1.36 DO j=1-OLy,sNy+OLy
170     DO i=1-OLx,sNx+OLx
171 jmc 1.34 Qnet(i,j,bi,bj) = Qnet(i,j,bi,bj) + Qsw(i,j,bi,bj)
172 jmc 1.36 ENDDO
173 jmc 1.34 ENDDO
174     ENDDO
175 jmc 1.36 ENDDO
176 jmc 1.34 ENDIF
177 heimbach 1.18 ENDIF
178     #endif
179 mlosch 1.23 #ifdef ATMOSPHERIC_LOADING
180     IF ( pLoadFile .NE. ' ' ) THEN
181 jmc 1.44 CALL READ_FLD_XY_RS( pLoadFile, ' ', pLoad, 0, myThid )
182 mlosch 1.23 ENDIF
183     #endif
184 heimbach 1.40
185 jmc 1.43 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 dimitri 1.45 #ifdef ALLOW_SALT_PLUME
190     CALL EXCH_XY_RS( saltPlumeFlux, myThid )
191     #endif /* ALLOW_SALT_PLUME */
192 jmc 1.43 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 mlosch 1.23 #ifdef SHORTWAVE_HEATING
197 jmc 1.43 CALL EXCH_XY_RS(Qsw , myThid )
198 mlosch 1.23 #endif
199     #ifdef ATMOSPHERIC_LOADING
200 jmc 1.44 CALL EXCH_XY_RS(pLoad , myThid )
201     C CALL PLOT_FIELD_XYRS( pLoad, 'S/R INI_FORCING pLoad',1,myThid)
202 mlosch 1.23 #endif
203 adcroft 1.15 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 cnh 1.1
206     RETURN
207     END

  ViewVC Help
Powered by ViewVC 1.1.22