/[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.49 - (hide annotations) (download)
Fri May 16 01:53:27 2008 UTC (16 years ago) by jmc
Branch: MAIN
CVS Tags: checkpoint60, checkpoint61, checkpoint59r, checkpoint61f, checkpoint61n, checkpoint61e, checkpoint61g, checkpoint61d, checkpoint61b, checkpoint61c, checkpoint61a, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61p
Changes since 1.48: +26 -5 lines
move from external_forcing_surf.F to ini_forcing.F
the p-coord. hack consisting in using pLoad to set phi0surf

1 jmc 1.49 C $Header: /u/gcmpack/MITgcm/model/src/ini_forcing.F,v 1.48 2007/11/28 00:18:17 dimitri 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 jmc 1.49 #include "SURFACE.h"
27 cnh 1.1 #include "FFIELDS.h"
28    
29 cnh 1.22 C !INPUT/OUTPUT PARAMETERS:
30 cnh 1.1 C == Routine arguments ==
31     C myThid - Number of this instance of INI_FORCING
32     INTEGER myThid
33    
34 cnh 1.22 C !LOCAL VARIABLES:
35 cnh 1.1 C == Local variables ==
36     C bi,bj - Loop counters
37 jmc 1.42 C i, j
38 cnh 1.1 INTEGER bi, bj
39 jmc 1.42 INTEGER i, j
40 cnh 1.22 CEOP
41 cnh 1.1
42 jmc 1.42 C- Initialise all arrays in common blocks
43 adcroft 1.10 DO bj = myByLo(myThid), myByHi(myThid)
44     DO bi = myBxLo(myThid), myBxHi(myThid)
45     DO j=1-OLy,sNy+OLy
46     DO i=1-OLx,sNx+OLx
47 heimbach 1.18 fu (i,j,bi,bj) = 0. _d 0
48     fv (i,j,bi,bj) = 0. _d 0
49     Qnet (i,j,bi,bj) = 0. _d 0
50     EmPmR (i,j,bi,bj) = 0. _d 0
51 jmc 1.27 saltFlux (i,j,bi,bj) = 0. _d 0
52 heimbach 1.18 SST (i,j,bi,bj) = 0. _d 0
53     SSS (i,j,bi,bj) = 0. _d 0
54     Qsw (i,j,bi,bj) = 0. _d 0
55 jmc 1.44 pLoad (i,j,bi,bj) = 0. _d 0
56 jmc 1.33 sIceLoad (i,j,bi,bj) = 0. _d 0
57 jmc 1.49 surfaceForcingU (i,j,bi,bj) = 0. _d 0
58     surfaceForcingV (i,j,bi,bj) = 0. _d 0
59     surfaceForcingT (i,j,bi,bj) = 0. _d 0
60     surfaceForcingS (i,j,bi,bj) = 0. _d 0
61 jmc 1.35 surfaceForcingTice(i,j,bi,bj) = 0. _d 0
62 jmc 1.44 #ifndef EXCLUDE_FFIELDS_LOAD
63 heimbach 1.24 taux0 (i,j,bi,bj) = 0. _d 0
64     taux1 (i,j,bi,bj) = 0. _d 0
65     tauy0 (i,j,bi,bj) = 0. _d 0
66     tauy1 (i,j,bi,bj) = 0. _d 0
67     Qnet0 (i,j,bi,bj) = 0. _d 0
68     Qnet1 (i,j,bi,bj) = 0. _d 0
69     EmPmR0 (i,j,bi,bj) = 0. _d 0
70     EmPmR1 (i,j,bi,bj) = 0. _d 0
71 jmc 1.37 saltFlux0 (i,j,bi,bj) = 0. _d 0
72     saltFlux1 (i,j,bi,bj) = 0. _d 0
73 heimbach 1.24 SST0 (i,j,bi,bj) = 0. _d 0
74     SST1 (i,j,bi,bj) = 0. _d 0
75     SSS0 (i,j,bi,bj) = 0. _d 0
76     SSS1 (i,j,bi,bj) = 0. _d 0
77 jmc 1.42 #ifdef SHORTWAVE_HEATING
78 heimbach 1.24 Qsw0 (i,j,bi,bj) = 0. _d 0
79     Qsw1 (i,j,bi,bj) = 0. _d 0
80     #endif
81     #ifdef ATMOSPHERIC_LOADING
82 jmc 1.44 pLoad0 (i,j,bi,bj) = 0. _d 0
83     pLoad1 (i,j,bi,bj) = 0. _d 0
84 heimbach 1.24 #endif
85 jmc 1.44 #endif /* EXCLUDE_FFIELDS_LOAD */
86 adcroft 1.10 ENDDO
87     ENDDO
88     ENDDO
89     ENDDO
90 jmc 1.42
91 heimbach 1.38 DO bj = myByLo(myThid), myByHi(myThid)
92     DO bi = myBxLo(myThid), myBxHi(myThid)
93 jmc 1.42 DO j=1-Oly,sNy+Oly
94     DO i=1-Olx,sNx+Olx
95     IF ( doThetaClimRelax .AND.
96     & ABS(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN
97     lambdaThetaClimRelax(i,j,bi,bj) = 1. _d 0/tauThetaClimRelax
98 heimbach 1.38 ELSE
99 jmc 1.42 lambdaThetaClimRelax(i,j,bi,bj) = 0. _d 0
100 heimbach 1.38 ENDIF
101     IF ( doSaltClimRelax .AND.
102 jmc 1.42 & ABS(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN
103     lambdaSaltClimRelax(i,j,bi,bj) = 1. _d 0/tauSaltClimRelax
104 heimbach 1.38 ELSE
105 jmc 1.42 lambdaSaltClimRelax(i,j,bi,bj) = 0. _d 0
106 heimbach 1.38 ENDIF
107     ENDDO
108     ENDDO
109     ENDDO
110     ENDDO
111 jmc 1.42
112     C- every-one waits before master thread loads from file
113 cnh 1.39 _BARRIER
114 jmc 1.42
115 adcroft 1.16 IF ( zonalWindFile .NE. ' ' ) THEN
116     CALL READ_FLD_XY_RS( zonalWindFile, ' ', fu, 0, myThid )
117     ENDIF
118     IF ( meridWindFile .NE. ' ' ) THEN
119     CALL READ_FLD_XY_RS( meridWindFile, ' ', fv, 0, myThid )
120     ENDIF
121     IF ( surfQFile .NE. ' ' ) THEN
122     CALL READ_FLD_XY_RS( surfQFile, ' ', Qnet, 0, myThid )
123 jmc 1.34 ELSEIF ( surfQnetFile .NE. ' ' ) THEN
124     CALL READ_FLD_XY_RS( surfQnetFile, ' ', Qnet, 0, myThid )
125 adcroft 1.16 ENDIF
126     IF ( EmPmRfile .NE. ' ' ) THEN
127     CALL READ_FLD_XY_RS( EmPmRfile, ' ', EmPmR, 0, myThid )
128 jmc 1.47 c IF ( convertEmP2rUnit.EQ.mass2rUnit ) THEN
129 jmc 1.46 C- EmPmR is now (after c59h) expressed in kg/m2/s (fresh water mass flux)
130     _BARRIER
131     DO bj = myByLo(myThid), myByHi(myThid)
132     DO bi = myBxLo(myThid), myBxHi(myThid)
133     DO j=1-Oly,sNy+Oly
134     DO i=1-Olx,sNx+Olx
135     EmPmR(i,j,bi,bj) = EmPmR(i,j,bi,bj)*rhoConstFresh
136     ENDDO
137     ENDDO
138     ENDDO
139     ENDDO
140 jmc 1.47 c ENDIF
141 adcroft 1.16 ENDIF
142 jmc 1.37 IF ( saltFluxFile .NE. ' ' ) THEN
143     CALL READ_FLD_XY_RS( saltFluxFile, ' ', saltFlux, 0, myThid )
144     ENDIF
145 adcroft 1.16 IF ( thetaClimFile .NE. ' ' ) THEN
146     CALL READ_FLD_XY_RS( thetaClimFile, ' ', SST, 0, myThid )
147     ENDIF
148     IF ( saltClimFile .NE. ' ' ) THEN
149     CALL READ_FLD_XY_RS( saltClimFile, ' ', SSS, 0, myThid )
150     ENDIF
151 heimbach 1.38 IF ( lambdaThetaFile .NE. ' ' ) THEN
152 jmc 1.42 CALL READ_FLD_XY_RS( lambdaThetaFile, ' ',
153 heimbach 1.38 & lambdaThetaClimRelax, 0, myThid )
154     ENDIF
155     IF ( lambdaSaltFile .NE. ' ' ) THEN
156 jmc 1.42 CALL READ_FLD_XY_RS( lambdaSaltFile, ' ',
157 heimbach 1.38 & lambdaSaltClimRelax, 0, myThid )
158     ENDIF
159 heimbach 1.18 #ifdef SHORTWAVE_HEATING
160     IF ( surfQswFile .NE. ' ' ) THEN
161     CALL READ_FLD_XY_RS( surfQswFile, ' ', Qsw, 0, myThid )
162 jmc 1.34 IF ( surfQFile .NE. ' ' ) THEN
163     C- Qnet is now (after c54) the net Heat Flux (including SW)
164 jmc 1.42 _BARRIER
165     DO bj = myByLo(myThid), myByHi(myThid)
166     DO bi = myBxLo(myThid), myBxHi(myThid)
167 jmc 1.36 DO j=1-OLy,sNy+OLy
168     DO i=1-OLx,sNx+OLx
169 jmc 1.34 Qnet(i,j,bi,bj) = Qnet(i,j,bi,bj) + Qsw(i,j,bi,bj)
170 jmc 1.36 ENDDO
171 jmc 1.34 ENDDO
172     ENDDO
173 jmc 1.36 ENDDO
174 jmc 1.34 ENDIF
175 heimbach 1.18 ENDIF
176     #endif
177 mlosch 1.23 #ifdef ATMOSPHERIC_LOADING
178     IF ( pLoadFile .NE. ' ' ) THEN
179 jmc 1.44 CALL READ_FLD_XY_RS( pLoadFile, ' ', pLoad, 0, myThid )
180 mlosch 1.23 ENDIF
181     #endif
182 heimbach 1.40
183 jmc 1.43 CALL EXCH_UV_XY_RS( fu,fv, .TRUE., myThid )
184     CALL EXCH_XY_RS( Qnet , myThid )
185     CALL EXCH_XY_RS( EmPmR, myThid )
186     CALL EXCH_XY_RS( saltFlux, myThid )
187     CALL EXCH_XY_RS( SST , myThid )
188     CALL EXCH_XY_RS( SSS , myThid )
189     CALL EXCH_XY_RS( lambdaThetaClimRelax, myThid )
190     CALL EXCH_XY_RS( lambdaSaltClimRelax , myThid )
191 mlosch 1.23 #ifdef SHORTWAVE_HEATING
192 jmc 1.43 CALL EXCH_XY_RS(Qsw , myThid )
193 mlosch 1.23 #endif
194     #ifdef ATMOSPHERIC_LOADING
195 jmc 1.44 CALL EXCH_XY_RS(pLoad , myThid )
196     C CALL PLOT_FIELD_XYRS( pLoad, 'S/R INI_FORCING pLoad',1,myThid)
197 mlosch 1.23 #endif
198 adcroft 1.15 C CALL PLOT_FIELD_XYRS( fu, 'S/R INI_FORCING FU',1,myThid)
199     C CALL PLOT_FIELD_XYRS( fv, 'S/R INI_FORCING FV',1,myThid)
200 cnh 1.1
201 jmc 1.49 #ifdef ATMOSPHERIC_LOADING
202     IF ( pLoadFile .NE. ' ' .AND. usingPCoords ) THEN
203     C-- This is a hack used to read phi0surf from a file (pLoadFile)
204     C instead of computing it from bathymetry & density ref. profile.
205     C- Ocean: The true atmospheric P-loading is not yet implemented for P-coord
206     C (requires time varying dP(Nr) like dP(k-bottom) with NonLin FS).
207     C- Atmos: sometime usefull to overwrite phi0surf with fixed-in-time field
208     C read from file (and anyway, pressure loading is meaningless here)
209     DO bj = myByLo(myThid), myByHi(myThid)
210     DO bi = myBxLo(myThid), myBxHi(myThid)
211     DO j=1-OLy,sNy+OLy
212     DO i=1-OLx,sNx+OLx
213     phi0surf(i,j,bi,bj) = pLoad(i,j,bi,bj)
214     ENDDO
215     ENDDO
216     ENDDO
217     ENDDO
218     ENDIF
219     #endif /* ATMOSPHERIC_LOADING */
220    
221 cnh 1.1 RETURN
222     END

  ViewVC Help
Powered by ViewVC 1.1.22