/[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.43 - (show annotations) (download)
Sun Apr 1 19:08:38 2007 UTC (17 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint59, checkpoint58y_post, checkpoint58x_post
Changes since 1.42: +11 -12 lines
fix wind-stress (fu,fv) exchange call (uses C-grid vector exch).

1 C $Header: /u/gcmpack/MITgcm/model/src/ini_forcing.F,v 1.42 2006/10/26 00:32:07 jmc 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 SST (i,j,bi,bj) = 0. _d 0
52 SSS (i,j,bi,bj) = 0. _d 0
53 Qsw (i,j,bi,bj) = 0. _d 0
54 #ifdef ATMOSPHERIC_LOADING
55 pload (i,j,bi,bj) = 0. _d 0
56 sIceLoad (i,j,bi,bj) = 0. _d 0
57 #endif
58 surfaceForcingU(i,j,bi,bj) = 0. _d 0
59 surfaceForcingV(i,j,bi,bj) = 0. _d 0
60 surfaceForcingT(i,j,bi,bj) = 0. _d 0
61 surfaceForcingS(i,j,bi,bj) = 0. _d 0
62 surfaceForcingTice(i,j,bi,bj) = 0. _d 0
63 #ifndef ALLOW_EXF
64 taux0 (i,j,bi,bj) = 0. _d 0
65 taux1 (i,j,bi,bj) = 0. _d 0
66 tauy0 (i,j,bi,bj) = 0. _d 0
67 tauy1 (i,j,bi,bj) = 0. _d 0
68 Qnet0 (i,j,bi,bj) = 0. _d 0
69 Qnet1 (i,j,bi,bj) = 0. _d 0
70 EmPmR0 (i,j,bi,bj) = 0. _d 0
71 EmPmR1 (i,j,bi,bj) = 0. _d 0
72 saltFlux0 (i,j,bi,bj) = 0. _d 0
73 saltFlux1 (i,j,bi,bj) = 0. _d 0
74 SST0 (i,j,bi,bj) = 0. _d 0
75 SST1 (i,j,bi,bj) = 0. _d 0
76 SSS0 (i,j,bi,bj) = 0. _d 0
77 SSS1 (i,j,bi,bj) = 0. _d 0
78 #ifdef SHORTWAVE_HEATING
79 Qsw0 (i,j,bi,bj) = 0. _d 0
80 Qsw1 (i,j,bi,bj) = 0. _d 0
81 #endif
82 #ifdef ATMOSPHERIC_LOADING
83 pload0 (i,j,bi,bj) = 0. _d 0
84 pload1 (i,j,bi,bj) = 0. _d 0
85 #endif
86 #endif
87 ENDDO
88 ENDDO
89 ENDDO
90 ENDDO
91
92 DO bj = myByLo(myThid), myByHi(myThid)
93 DO bi = myBxLo(myThid), myBxHi(myThid)
94 DO j=1-Oly,sNy+Oly
95 DO i=1-Olx,sNx+Olx
96 IF ( doThetaClimRelax .AND.
97 & ABS(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN
98 lambdaThetaClimRelax(i,j,bi,bj) = 1. _d 0/tauThetaClimRelax
99 ELSE
100 lambdaThetaClimRelax(i,j,bi,bj) = 0. _d 0
101 ENDIF
102 IF ( doSaltClimRelax .AND.
103 & ABS(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN
104 lambdaSaltClimRelax(i,j,bi,bj) = 1. _d 0/tauSaltClimRelax
105 ELSE
106 lambdaSaltClimRelax(i,j,bi,bj) = 0. _d 0
107 ENDIF
108 ENDDO
109 ENDDO
110 ENDDO
111 ENDDO
112
113 C- every-one waits before master thread loads from file
114 _BARRIER
115
116 IF ( zonalWindFile .NE. ' ' ) THEN
117 CALL READ_FLD_XY_RS( zonalWindFile, ' ', fu, 0, myThid )
118 ENDIF
119 IF ( meridWindFile .NE. ' ' ) THEN
120 CALL READ_FLD_XY_RS( meridWindFile, ' ', fv, 0, myThid )
121 ENDIF
122 IF ( surfQFile .NE. ' ' ) THEN
123 CALL READ_FLD_XY_RS( surfQFile, ' ', Qnet, 0, myThid )
124 ELSEIF ( surfQnetFile .NE. ' ' ) THEN
125 CALL READ_FLD_XY_RS( surfQnetFile, ' ', Qnet, 0, myThid )
126 ENDIF
127 IF ( EmPmRfile .NE. ' ' ) THEN
128 CALL READ_FLD_XY_RS( EmPmRfile, ' ', EmPmR, 0, myThid )
129 ENDIF
130 IF ( saltFluxFile .NE. ' ' ) THEN
131 CALL READ_FLD_XY_RS( saltFluxFile, ' ', saltFlux, 0, myThid )
132 ENDIF
133 IF ( thetaClimFile .NE. ' ' ) THEN
134 CALL READ_FLD_XY_RS( thetaClimFile, ' ', SST, 0, myThid )
135 ENDIF
136 IF ( saltClimFile .NE. ' ' ) THEN
137 CALL READ_FLD_XY_RS( saltClimFile, ' ', SSS, 0, myThid )
138 ENDIF
139 IF ( lambdaThetaFile .NE. ' ' ) THEN
140 CALL READ_FLD_XY_RS( lambdaThetaFile, ' ',
141 & lambdaThetaClimRelax, 0, myThid )
142 ENDIF
143 IF ( lambdaSaltFile .NE. ' ' ) THEN
144 CALL READ_FLD_XY_RS( lambdaSaltFile, ' ',
145 & lambdaSaltClimRelax, 0, myThid )
146 ENDIF
147 #ifdef SHORTWAVE_HEATING
148 IF ( surfQswFile .NE. ' ' ) THEN
149 CALL READ_FLD_XY_RS( surfQswFile, ' ', Qsw, 0, myThid )
150 IF ( surfQFile .NE. ' ' ) THEN
151 C- Qnet is now (after c54) the net Heat Flux (including SW)
152 _BARRIER
153 DO bj = myByLo(myThid), myByHi(myThid)
154 DO bi = myBxLo(myThid), myBxHi(myThid)
155 DO j=1-OLy,sNy+OLy
156 DO i=1-OLx,sNx+OLx
157 Qnet(i,j,bi,bj) = Qnet(i,j,bi,bj) + Qsw(i,j,bi,bj)
158 ENDDO
159 ENDDO
160 ENDDO
161 ENDDO
162 ENDIF
163 ENDIF
164 #endif
165 #ifdef ATMOSPHERIC_LOADING
166 IF ( pLoadFile .NE. ' ' ) THEN
167 CALL READ_FLD_XY_RS( pLoadFile, ' ', pload, 0, myThid )
168 ENDIF
169 #endif
170
171 CALL EXCH_UV_XY_RS( fu,fv, .TRUE., myThid )
172 CALL EXCH_XY_RS( Qnet , myThid )
173 CALL EXCH_XY_RS( EmPmR, myThid )
174 CALL EXCH_XY_RS( saltFlux, myThid )
175 CALL EXCH_XY_RS( SST , myThid )
176 CALL EXCH_XY_RS( SSS , myThid )
177 CALL EXCH_XY_RS( lambdaThetaClimRelax, myThid )
178 CALL EXCH_XY_RS( lambdaSaltClimRelax , myThid )
179 #ifdef SHORTWAVE_HEATING
180 CALL EXCH_XY_RS(Qsw , myThid )
181 #endif
182 #ifdef ATMOSPHERIC_LOADING
183 CALL EXCH_XY_RS(pload , myThid )
184 C CALL PLOT_FIELD_XYRS( pload, 'S/R INI_FORCING pload',1,myThid)
185 #endif
186 C CALL PLOT_FIELD_XYRS( fu, 'S/R INI_FORCING FU',1,myThid)
187 C CALL PLOT_FIELD_XYRS( fv, 'S/R INI_FORCING FV',1,myThid)
188
189 RETURN
190 END

  ViewVC Help
Powered by ViewVC 1.1.22