1 |
jmc |
1.9 |
C $Header: /u/gcmpack/MITgcm/pkg/aim_v23/aim_surf_bc.F,v 1.18 2010/10/26 20:59:53 dfer Exp $ |
2 |
jmc |
1.1 |
C $Name: $ |
3 |
|
|
|
4 |
|
|
#include "AIM_OPTIONS.h" |
5 |
|
|
|
6 |
jmc |
1.8 |
CBOP |
7 |
|
|
C !ROUTINE: AIM_SURF_BC |
8 |
|
|
C !INTERFACE: |
9 |
jmc |
1.5 |
SUBROUTINE AIM_SURF_BC( |
10 |
|
|
U tYear, |
11 |
|
|
O aim_sWght0, aim_sWght1, |
12 |
|
|
I bi, bj, myTime, myIter, myThid ) |
13 |
jmc |
1.8 |
|
14 |
|
|
C !DESCRIPTION: \bv |
15 |
jmc |
1.1 |
C *================================================================* |
16 |
|
|
C | S/R AIM_SURF_BC |
17 |
jmc |
1.5 |
C | Set surface Boundary Conditions |
18 |
jmc |
1.1 |
C | for the atmospheric physics package |
19 |
|
|
C *================================================================* |
20 |
|
|
c | was part of S/R FORDATE in Franco Molteni SPEEDY code (ver23). |
21 |
|
|
C | For now, surface BC are loaded from files (S/R AIM_FIELDS_LOAD) |
22 |
|
|
C | and imposed (= surf. forcing). |
23 |
jmc |
1.5 |
C | In the future, will add |
24 |
jmc |
1.1 |
C | a land model and a coupling interface with an ocean GCM |
25 |
|
|
C *================================================================* |
26 |
jmc |
1.8 |
C \ev |
27 |
|
|
|
28 |
|
|
C !USES: |
29 |
jmc |
1.1 |
IMPLICIT NONE |
30 |
|
|
|
31 |
|
|
C -------------- Global variables -------------- |
32 |
|
|
C-- size for MITgcm & Physics package : |
33 |
|
|
#include "AIM_SIZE.h" |
34 |
|
|
|
35 |
|
|
C-- MITgcm |
36 |
|
|
#include "EEPARAMS.h" |
37 |
|
|
#include "PARAMS.h" |
38 |
jmc |
1.9 |
C_EqCh: start |
39 |
|
|
#ifdef ALLOW_EXCH2 |
40 |
|
|
# include "W2_EXCH2_SIZE.h" |
41 |
|
|
#endif /* ALLOW_EXCH2 */ |
42 |
|
|
#include "SET_GRID.h" |
43 |
|
|
C_EqCh: end |
44 |
|
|
#include "GRID.h" |
45 |
jmc |
1.1 |
c #include "DYNVARS.h" |
46 |
|
|
c #include "SURFACE.h" |
47 |
|
|
|
48 |
|
|
C-- Physics package |
49 |
|
|
#include "AIM_PARAMS.h" |
50 |
|
|
#include "AIM_FFIELDS.h" |
51 |
|
|
c #include "AIM_GRID.h" |
52 |
|
|
#include "com_forcon.h" |
53 |
|
|
#include "com_forcing.h" |
54 |
|
|
c #include "com_physvar.h" |
55 |
jmc |
1.8 |
#include "AIM_CO2.h" |
56 |
jmc |
1.1 |
|
57 |
|
|
C-- Coupled to the Ocean : |
58 |
|
|
#ifdef COMPONENT_MODULE |
59 |
|
|
#include "CPL_PARAMS.h" |
60 |
|
|
#include "ATMCPL.h" |
61 |
|
|
#endif |
62 |
|
|
|
63 |
jmc |
1.8 |
C !INPUT/OUTPUT PARAMETERS: |
64 |
jmc |
1.1 |
C == Routine arguments == |
65 |
jmc |
1.5 |
C tYear :: Fraction into year |
66 |
|
|
C aim_sWght0 :: weight for time interpolation of surface BC |
67 |
|
|
C aim_sWght1 :: 0/1 = time period before/after the current time |
68 |
|
|
C bi,bj :: Tile indices |
69 |
|
|
C myTime :: Current time of simulation ( s ) |
70 |
|
|
C myIter :: Current iteration number in simulation |
71 |
|
|
C myThid :: my Thread number Id. |
72 |
|
|
_RL tYear |
73 |
|
|
_RL aim_sWght0, aim_sWght1 |
74 |
|
|
INTEGER bi, bj |
75 |
|
|
_RL myTime |
76 |
|
|
INTEGER myIter, myThid |
77 |
jmc |
1.8 |
CEOP |
78 |
jmc |
1.1 |
|
79 |
|
|
#ifdef ALLOW_AIM |
80 |
jmc |
1.8 |
C !FUNCTIONS: |
81 |
|
|
C !LOCAL VARIABLES: |
82 |
|
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
83 |
|
|
C-- Local Variables originally (Speedy) in common bloc (com_forcing.h): |
84 |
|
|
C-- COMMON /FORDAY/ Daily forcing fields (updated in FORDATE) |
85 |
|
|
C oice1 :: sea ice fraction |
86 |
|
|
C snow1 :: snow depth (mm water) |
87 |
|
|
_RL oice1(NGP) |
88 |
|
|
_RL snow1(NGP) |
89 |
|
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
90 |
jmc |
1.1 |
C == Local variables == |
91 |
jmc |
1.5 |
C i,j,k,I2,k :: Loop counters |
92 |
|
|
INTEGER i,j,I2,k, nm0 |
93 |
|
|
_RL t0prd, tNcyc, tmprd, dTprd |
94 |
jmc |
1.1 |
_RL SDEP1, IDEP2, SDEP2, SWWIL2, RSW, soilw_0, soilw_1 |
95 |
jmc |
1.8 |
_RL RSD, alb_land, oceTfreez, ALBSEA1, ALPHA, CZEN, CZEN2 |
96 |
|
|
_RL RZEN, ZS, ZC, SJ, CJ, TMPA, TMPB, TMPL, hlim |
97 |
jmc |
1.2 |
c _RL DALB, alb_sea |
98 |
jmc |
1.8 |
#ifdef ALLOW_AIM_CO2 |
99 |
|
|
#ifdef ALLOW_DIAGNOSTICS |
100 |
|
|
_RL pCO2scl |
101 |
|
|
#endif |
102 |
|
|
#endif /* ALLOW_AIM_CO2 */ |
103 |
jmc |
1.1 |
|
104 |
|
|
C_EqCh: start |
105 |
|
|
CHARACTER*(MAX_LEN_MBUF) suff |
106 |
|
|
_RL xBump, yBump, dxBump, dyBump |
107 |
jmc |
1.6 |
xBump = xgOrigin + delX(1)*64. |
108 |
|
|
yBump = ygOrigin + delY(1)*11.5 |
109 |
jmc |
1.1 |
dxBump= delX(1)*12. |
110 |
|
|
dyBump= delY(1)*6. |
111 |
|
|
C_EqCh: Fix solar insolation with Sun directly overhead on Equator |
112 |
|
|
tYear = 0.25 _d 0 - 10. _d 0/365. _d 0 |
113 |
|
|
C_EqCh: end |
114 |
|
|
|
115 |
jmc |
1.4 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
116 |
|
|
C- Set Land-sea mask (in [0,1]) from aim_landFr to fMask1: |
117 |
|
|
DO j=1,sNy |
118 |
|
|
DO i=1,sNx |
119 |
|
|
I2 = i+(j-1)*sNx |
120 |
|
|
fMask1(I2,1,myThid) = aim_landFr(i,j,bi,bj) |
121 |
|
|
ENDDO |
122 |
|
|
ENDDO |
123 |
|
|
|
124 |
jmc |
1.1 |
IF (aim_useFMsurfBC) THEN |
125 |
|
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
126 |
|
|
|
127 |
jmc |
1.5 |
C aim_surfForc_TimePeriod :: Length of forcing time period (e.g. 1 month) |
128 |
|
|
C aim_surfForc_NppCycle :: Number of time period per Cycle (e.g. 12) |
129 |
|
|
C aim_surfForc_TransRatio :: |
130 |
|
|
C- define how fast the (linear) transition is from one month to the next |
131 |
|
|
C = 1 -> linear between 2 midle month |
132 |
|
|
C > TimePeriod/deltaT -> jump from one month to the next one |
133 |
|
|
|
134 |
|
|
C-- Calculate weight for linear interpolation between 2 month centers |
135 |
|
|
t0prd = myTime / aim_surfForc_TimePeriod |
136 |
|
|
tNcyc = aim_surfForc_NppCycle |
137 |
|
|
tmprd = t0prd - 0.5 _d 0 + tNcyc |
138 |
|
|
tmprd = MOD(tmprd,tNcyc) |
139 |
|
|
C- indices of previous month (nm0) and next month (nm1): |
140 |
|
|
nm0 = 1 + INT(tmprd) |
141 |
|
|
c nm1 = 1 + MOD(nm0,aim_surfForc_NppCycle) |
142 |
|
|
C- interpolation weight: |
143 |
|
|
dTprd = tmprd - (nm0 - 1) |
144 |
|
|
aim_sWght1 = 0.5 _d 0+(dTprd-0.5 _d 0)*aim_surfForc_TransRatio |
145 |
|
|
aim_sWght1 = MAX( 0. _d 0, MIN(1. _d 0, aim_sWght1) ) |
146 |
|
|
aim_sWght0 = 1. _d 0 - aim_sWght1 |
147 |
|
|
|
148 |
jmc |
1.1 |
C-- Compute surface forcing at present time (linear Interp in time) |
149 |
|
|
C using F.Molteni surface BC form ; fields needed are: |
150 |
jmc |
1.4 |
C 1. Sea Surface temperatures (in situ Temp. [K]) |
151 |
|
|
C 2. Land Surface temperatures (in situ Temp. [K]) |
152 |
|
|
C 3. Soil moisture (between 0-1) |
153 |
|
|
C 4. Snow depth, Sea Ice : used to compute albedo (=> local arrays) |
154 |
|
|
C 5. Albedo (between 0-1) |
155 |
jmc |
1.1 |
|
156 |
jmc |
1.5 |
C- Surface Temperature: |
157 |
jmc |
1.1 |
DO j=1,sNy |
158 |
|
|
DO i=1,sNx |
159 |
|
|
I2 = i+(j-1)*sNx |
160 |
jmc |
1.5 |
sst1(I2,myThid) = aim_sWght0*aim_sst0(i,j,bi,bj) |
161 |
jmc |
1.1 |
& + aim_sWght1*aim_sst1(i,j,bi,bj) |
162 |
|
|
stl1(I2,myThid) = aim_sWght0*aim_lst0(i,j,bi,bj) |
163 |
|
|
& + aim_sWght1*aim_lst1(i,j,bi,bj) |
164 |
|
|
ENDDO |
165 |
|
|
ENDDO |
166 |
|
|
|
167 |
|
|
C- Soil Water availability : (from F.M. INFORC S/R) |
168 |
|
|
SDEP1 = 70. _d 0 |
169 |
|
|
IDEP2 = 3. _d 0 |
170 |
|
|
SDEP2 = IDEP2*SDEP1 |
171 |
|
|
|
172 |
|
|
SWWIL2= SDEP2*SWWIL |
173 |
|
|
RSW = 1. _d 0/(SDEP1*SWCAP+SDEP2*(SWCAP-SWWIL)) |
174 |
jmc |
1.5 |
|
175 |
jmc |
1.1 |
DO j=1,sNy |
176 |
|
|
DO i=1,sNx |
177 |
|
|
I2 = i+(j-1)*sNx |
178 |
jmc |
1.5 |
soilw_0 = ( aim_sw10(i,j,bi,bj) |
179 |
jmc |
1.1 |
& +aim_veget(i,j,bi,bj)* |
180 |
|
|
& MAX(IDEP2*aim_sw20(i,j,bi,bj)-SWWIL2, 0. _d 0) |
181 |
jmc |
1.5 |
& )*RSW |
182 |
|
|
soilw_1 = ( aim_sw11(i,j,bi,bj) |
183 |
jmc |
1.1 |
& +aim_veget(i,j,bi,bj)* |
184 |
|
|
& MAX(IDEP2*aim_sw21(i,j,bi,bj)-SWWIL2, 0. _d 0) |
185 |
jmc |
1.5 |
& )*RSW |
186 |
|
|
soilw1(I2,myThid) = aim_sWght0*soilw_0 |
187 |
jmc |
1.1 |
& + aim_sWght1*soilw_1 |
188 |
|
|
soilw1(I2,myThid) = MIN(1. _d 0, soilw1(I2,myThid) ) |
189 |
|
|
ENDDO |
190 |
|
|
ENDDO |
191 |
|
|
|
192 |
|
|
C- Set snow depth & sea-ice fraction : |
193 |
|
|
DO j=1,sNy |
194 |
|
|
DO i=1,sNx |
195 |
|
|
I2 = i+(j-1)*sNx |
196 |
|
|
snow1(I2) = aim_sWght0*aim_snw0(i,j,bi,bj) |
197 |
jmc |
1.5 |
& + aim_sWght1*aim_snw1(i,j,bi,bj) |
198 |
jmc |
1.1 |
oice1(I2) = aim_sWght0*aim_oic0(i,j,bi,bj) |
199 |
jmc |
1.5 |
& + aim_sWght1*aim_oic1(i,j,bi,bj) |
200 |
jmc |
1.1 |
ENDDO |
201 |
|
|
ENDDO |
202 |
|
|
|
203 |
jmc |
1.2 |
IF (aim_splitSIOsFx) THEN |
204 |
|
|
C- Split Ocean and Sea-Ice surf. temp. ; remove ice-fraction < 1 % |
205 |
jmc |
1.4 |
c oceTfreez = tFreeze - 1.9 _d 0 |
206 |
|
|
oceTfreez = celsius2K - 1.9 _d 0 |
207 |
jmc |
1.2 |
DO J=1,NGP |
208 |
jmc |
1.5 |
sti1(J,myThid) = sst1(J,myThid) |
209 |
jmc |
1.2 |
IF ( oice1(J) .GT. 1. _d -2 ) THEN |
210 |
jmc |
1.4 |
sst1(J,myThid) = MAX(sst1(J,myThid),oceTfreez) |
211 |
jmc |
1.5 |
sti1(J,myThid) = sst1(J,myThid) |
212 |
jmc |
1.2 |
& +(sti1(J,myThid)-sst1(J,myThid))/oice1(J) |
213 |
|
|
ELSE |
214 |
|
|
oice1(J) = 0. _d 0 |
215 |
|
|
ENDIF |
216 |
|
|
ENDDO |
217 |
|
|
ELSE |
218 |
|
|
DO J=1,NGP |
219 |
jmc |
1.5 |
sti1(J,myThid) = sst1(J,myThid) |
220 |
jmc |
1.2 |
ENDDO |
221 |
|
|
ENDIF |
222 |
|
|
|
223 |
jmc |
1.1 |
C- Surface Albedo : (from F.M. FORDATE S/R) |
224 |
jmc |
1.2 |
c_FM DALB=ALBICE-ALBSEA |
225 |
jmc |
1.1 |
RSD=1. _d 0/SDALB |
226 |
jmc |
1.8 |
ALPHA= 2. _d 0*PI*(TYEAR+10. _d 0/365. _d 0) |
227 |
jmc |
1.9 |
#ifdef ALLOW_INSOLATION |
228 |
|
|
ZS = - SIN(OBLIQ * deg2rad) * COS(ALPHA) |
229 |
|
|
ZC = ASIN( ZS ) |
230 |
|
|
ZC = COS(ZC) |
231 |
|
|
#else /* ALLOW_INSOLATION */ |
232 |
jmc |
1.8 |
RZEN = COS(ALPHA) * ( -23.45 _d 0 * deg2rad) |
233 |
|
|
ZC = COS(RZEN) |
234 |
|
|
ZS = SIN(RZEN) |
235 |
jmc |
1.9 |
#endif /* ALLOW_INSOLATION */ |
236 |
jmc |
1.1 |
DO j=1,sNy |
237 |
|
|
DO i=1,sNx |
238 |
|
|
c_FM SNOWC=MIN(1.,RSD*SNOW1(I,J)) |
239 |
|
|
c_FM ALBL=ALB0(I,J)+MAX(ALBSN-ALB0(I,J),0.0)*SNOWC |
240 |
|
|
c_FM ALBS=ALBSEA+DALB*OICE1(I,J) |
241 |
|
|
c_FM ALB1(I,J)=FMASK1(I,J)*ALBL+FMASK0(I,J)*ALBS |
242 |
|
|
I2 = i+(j-1)*sNx |
243 |
|
|
alb_land = aim_albedo(i,j,bi,bj) |
244 |
|
|
& + MAX( 0. _d 0, ALBSN-aim_albedo(i,j,bi,bj) ) |
245 |
|
|
& *MIN( 1. _d 0, RSD*snow1(I2)) |
246 |
jmc |
1.2 |
c alb_sea = ALBSEA + DALB*oice1(I2) |
247 |
jmc |
1.5 |
c alb1(I2,0,myThid) = alb_sea |
248 |
jmc |
1.2 |
c & + (alb_land - alb_sea)*fMask1(I2,1,myThid) |
249 |
jmc |
1.8 |
ALBSEA1 = ALBSEA |
250 |
|
|
IF ( aim_selectOceAlbedo .EQ. 1) THEN |
251 |
|
|
SJ = SIN(yC(i,j,bi,bj) * deg2rad) |
252 |
|
|
CJ = COS(yC(i,j,bi,bj) * deg2rad) |
253 |
|
|
TMPA = SJ*ZS |
254 |
|
|
TMPB = CJ*ZC |
255 |
|
|
TMPL = -TMPA/TMPB |
256 |
|
|
IF (TMPL .GE. 1.0 _d 0) THEN |
257 |
|
|
CZEN = 0.0 _d 0 |
258 |
|
|
ELSEIF (TMPL .LE. -1.0 _d 0) THEN |
259 |
|
|
CZEN = (2.0 _d 0)*TMPA*PI |
260 |
|
|
CZEN2= PI*((2.0 _d 0)*TMPA*TMPA + TMPB*TMPB) |
261 |
|
|
CZEN = CZEN2/CZEN |
262 |
|
|
ELSE |
263 |
|
|
hlim = ACOS(TMPL) |
264 |
|
|
CZEN = 2.0 _d 0*(TMPA*hlim + TMPB*SIN(hlim)) |
265 |
|
|
CZEN2= 2.0 _d 0*TMPA*TMPA*hlim |
266 |
|
|
& + 4.0 _d 0*TMPA*TMPB*SIN(hlim) |
267 |
|
|
& + TMPB*TMPB*( hlim + 0.5 _d 0*SIN(2.0 _d 0*hlim) ) |
268 |
|
|
CZEN = CZEN2/CZEN |
269 |
|
|
ENDIF |
270 |
|
|
ALBSEA1 = ( ( 2.6 _d 0 / (CZEN**(1.7 _d 0) + 0.065 _d 0) ) |
271 |
|
|
& + ( 15. _d 0 * (CZEN-0.1 _d 0) * (CZEN-0.5 _d 0) |
272 |
|
|
& * (CZEN-1.0 _d 0) ) ) / 100.0 _d 0 |
273 |
|
|
ENDIF |
274 |
jmc |
1.2 |
alb1(I2,1,myThid) = alb_land |
275 |
jmc |
1.8 |
C_DE alb1(I2,2,myThid) = ALBSEA |
276 |
|
|
alb1(I2,2,myThid) = 0.5 _d 0 * ALBSEA |
277 |
|
|
& + 0.5 _d 0 * ALBSEA1 |
278 |
jmc |
1.2 |
alb1(I2,3,myThid) = ALBICE |
279 |
jmc |
1.1 |
ENDDO |
280 |
|
|
ENDDO |
281 |
|
|
|
282 |
|
|
C-- else aim_useFMsurfBC |
283 |
|
|
ELSE |
284 |
|
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
285 |
|
|
|
286 |
jmc |
1.5 |
C- safer to initialise output argument aim_sWght0,1 |
287 |
|
|
C even if they are not used when aim_useFMsurfBC=F |
288 |
|
|
aim_sWght1 = 0. _d 0 |
289 |
|
|
aim_sWght0 = 1. _d 0 |
290 |
|
|
|
291 |
jmc |
1.1 |
C- Set surface forcing fields needed by atmos. physics package |
292 |
|
|
C 1. Albedo (between 0-1) |
293 |
|
|
C 2. Sea Surface temperatures (in situ Temp. [K]) |
294 |
|
|
C 3. Land Surface temperatures (in situ Temp. [K]) |
295 |
|
|
C 4. Soil moisture (between 0-1) |
296 |
jmc |
1.5 |
C Snow depth, Sea Ice (<- no need for now) |
297 |
jmc |
1.1 |
|
298 |
|
|
C Set surface albedo data (in [0,1]) from aim_albedo to alb1 : |
299 |
|
|
IF (aim_useMMsurfFc) THEN |
300 |
|
|
DO j=1,sNy |
301 |
|
|
DO i=1,sNx |
302 |
|
|
I2 = i+(j-1)*sNx |
303 |
jmc |
1.2 |
alb1(I2,1,myThid) = aim_albedo(i,j,bi,bj) |
304 |
|
|
alb1(I2,2,myThid) = aim_albedo(i,j,bi,bj) |
305 |
|
|
alb1(I2,3,myThid) = aim_albedo(i,j,bi,bj) |
306 |
jmc |
1.1 |
ENDDO |
307 |
|
|
ENDDO |
308 |
|
|
ELSE |
309 |
|
|
DO j=1,sNy |
310 |
|
|
DO i=1,sNx |
311 |
|
|
I2 = i+(j-1)*sNx |
312 |
jmc |
1.2 |
alb1(I2,1,myThid) = 0. |
313 |
|
|
alb1(I2,2,myThid) = 0. |
314 |
|
|
alb1(I2,3,myThid) = 0. |
315 |
jmc |
1.1 |
ENDDO |
316 |
|
|
ENDDO |
317 |
|
|
ENDIF |
318 |
|
|
C Set surface temperature data from aim_S/LSurfTemp to sst1 & stl1 : |
319 |
|
|
IF (aim_useMMsurfFc) THEN |
320 |
|
|
DO j=1,sNy |
321 |
|
|
DO i=1,sNx |
322 |
|
|
I2 = i+(j-1)*sNx |
323 |
jmc |
1.5 |
sst1(I2,myThid) = aim_sst0(i,j,bi,bj) |
324 |
|
|
stl1(I2,myThid) = aim_sst0(i,j,bi,bj) |
325 |
|
|
sti1(I2,myThid) = aim_sst0(i,j,bi,bj) |
326 |
jmc |
1.1 |
ENDDO |
327 |
|
|
ENDDO |
328 |
|
|
ELSE |
329 |
|
|
DO j=1,sNy |
330 |
|
|
DO i=1,sNx |
331 |
|
|
I2 = i+(j-1)*sNx |
332 |
|
|
sst1(I2,myThid) = 300. |
333 |
|
|
stl1(I2,myThid) = 300. |
334 |
jmc |
1.2 |
sti1(I2,myThid) = 300. |
335 |
jmc |
1.1 |
C_EqCh: start |
336 |
|
|
sst1(I2,myThid) = 280. |
337 |
jmc |
1.2 |
& +20. _d 0 *exp( -((xC(i,j,bi,bj)-xBump)/dxBump)**2 |
338 |
jmc |
1.1 |
& -((yC(i,j,bi,bj)-yBump)/dyBump)**2 ) |
339 |
|
|
stl1(I2,myThid) = sst1(I2,myThid) |
340 |
jmc |
1.2 |
sti1(I2,myThid) = sst1(I2,myThid) |
341 |
jmc |
1.1 |
C_EqCh: end |
342 |
|
|
ENDDO |
343 |
|
|
ENDDO |
344 |
|
|
C_EqCh: start |
345 |
jmc |
1.2 |
IF (myIter.EQ.nIter0) THEN |
346 |
jmc |
1.1 |
WRITE(suff,'(I10.10)') myIter |
347 |
jmc |
1.7 |
CALL AIM_WRITE_PHYS( 'aim_SST.', suff, 1,sst1, |
348 |
|
|
& 1, bi, bj, 1, myIter, myThid ) |
349 |
jmc |
1.1 |
ENDIF |
350 |
|
|
C_EqCh: end |
351 |
|
|
ENDIF |
352 |
|
|
|
353 |
jmc |
1.5 |
C- Set soil water availability (in [0,1]) from aim_sw10 to soilw1 : |
354 |
jmc |
1.1 |
IF (aim_useMMsurfFc) THEN |
355 |
|
|
DO j=1,sNy |
356 |
|
|
DO i=1,sNx |
357 |
|
|
I2 = i+(j-1)*sNx |
358 |
jmc |
1.5 |
soilw1(I2,myThid) = aim_sw10(i,j,bi,bj) |
359 |
jmc |
1.1 |
ENDDO |
360 |
|
|
ENDDO |
361 |
|
|
ELSE |
362 |
|
|
DO j=1,sNy |
363 |
|
|
DO i=1,sNx |
364 |
|
|
I2 = i+(j-1)*sNx |
365 |
|
|
soilw1(I2,myThid) = 0. |
366 |
|
|
ENDDO |
367 |
|
|
ENDDO |
368 |
|
|
ENDIF |
369 |
|
|
|
370 |
jmc |
1.5 |
C- Set Snow depth and Sea Ice |
371 |
jmc |
1.1 |
C (not needed here since albedo is loaded from file) |
372 |
jmc |
1.2 |
DO j=1,sNy |
373 |
|
|
DO i=1,sNx |
374 |
|
|
I2 = i+(j-1)*sNx |
375 |
|
|
oice1(I2) = 0. |
376 |
|
|
snow1(I2) = 0. |
377 |
|
|
ENDDO |
378 |
|
|
ENDDO |
379 |
jmc |
1.1 |
|
380 |
|
|
C-- endif/else aim_useFMsurfBC |
381 |
|
|
ENDIF |
382 |
|
|
|
383 |
|
|
#ifdef COMPONENT_MODULE |
384 |
|
|
IF ( useCoupler ) THEN |
385 |
jmc |
1.5 |
C-- take surface data from the ocean component |
386 |
jmc |
1.4 |
C to replace MxL fields (if use sea-ice) or directly AIM SST |
387 |
|
|
CALL ATM_APPLY_IMPORT( |
388 |
|
|
I aim_landFr, |
389 |
jmc |
1.5 |
U sst1(1,myThid), oice1, |
390 |
|
|
I myTime, myIter, bi, bj, myThid ) |
391 |
jmc |
1.1 |
ENDIF |
392 |
|
|
#endif /* COMPONENT_MODULE */ |
393 |
|
|
|
394 |
jmc |
1.8 |
#ifdef ALLOW_AIM_CO2 |
395 |
|
|
DO j=1,sNy |
396 |
|
|
DO i=1,sNx |
397 |
|
|
I2 = i+(j-1)*sNx |
398 |
|
|
aim_CO2(I2,myThid)= atm_pCO2 |
399 |
|
|
ENDDO |
400 |
|
|
ENDDO |
401 |
|
|
#ifdef ALLOW_DIAGNOSTICS |
402 |
|
|
IF ( useDiagnostics ) THEN |
403 |
|
|
pCO2scl = 1. _d 6 |
404 |
|
|
CALL DIAGNOSTICS_SCALE_FILL( aim_CO2(1,myThid), pCO2scl, 1, |
405 |
|
|
& 'aim_pCO2', 1, 1, 3, bi, bj, myThid ) |
406 |
|
|
ENDIF |
407 |
|
|
#endif /* ALLOW_DIAGNOSTICS */ |
408 |
|
|
#endif /* ALLOW_AIM_CO2 */ |
409 |
|
|
|
410 |
jmc |
1.1 |
#ifdef ALLOW_LAND |
411 |
|
|
IF (useLand) THEN |
412 |
|
|
C- Use land model output instead of prescribed Temp & moisture |
413 |
jmc |
1.5 |
CALL AIM_LAND2AIM( |
414 |
jmc |
1.2 |
I aim_landFr, aim_veget, aim_albedo, snow1, |
415 |
jmc |
1.5 |
U stl1(1,myThid), soilw1(1,myThid), alb1(1,1,myThid), |
416 |
|
|
I myTime, myIter, bi, bj, myThid ) |
417 |
jmc |
1.1 |
ENDIF |
418 |
|
|
#endif /* ALLOW_LAND */ |
419 |
jmc |
1.2 |
|
420 |
jmc |
1.4 |
#ifdef ALLOW_THSICE |
421 |
|
|
IF (useThSIce) THEN |
422 |
|
|
C- Use thermo. sea-ice model output instead of prescribed Temp & albedo |
423 |
jmc |
1.5 |
CALL AIM_SICE2AIM( |
424 |
jmc |
1.4 |
I aim_landFr, |
425 |
jmc |
1.5 |
U sst1(1,myThid), oice1, |
426 |
|
|
O sti1(1,myThid), alb1(1,3,myThid), |
427 |
|
|
I myTime, myIter, bi, bj, myThid ) |
428 |
jmc |
1.4 |
ENDIF |
429 |
|
|
#endif /* ALLOW_THSICE */ |
430 |
|
|
|
431 |
jmc |
1.2 |
C-- set the sea-ice & open ocean fraction : |
432 |
|
|
DO J=1,NGP |
433 |
|
|
fMask1(J,3,myThid) =(1. _d 0 - fMask1(J,1,myThid)) |
434 |
|
|
& *oice1(J) |
435 |
jmc |
1.5 |
fMask1(J,2,myThid) = 1. _d 0 - fMask1(J,1,myThid) |
436 |
jmc |
1.2 |
& - fMask1(J,3,myThid) |
437 |
|
|
ENDDO |
438 |
|
|
|
439 |
|
|
C-- set the mean albedo : |
440 |
|
|
DO J=1,NGP |
441 |
|
|
alb1(J,0,myThid) = fMask1(J,1,myThid)*alb1(J,1,myThid) |
442 |
|
|
& + fMask1(J,2,myThid)*alb1(J,2,myThid) |
443 |
|
|
& + fMask1(J,3,myThid)*alb1(J,3,myThid) |
444 |
|
|
ENDDO |
445 |
|
|
|
446 |
jmc |
1.4 |
C-- initialize surf. temp. change to zero: |
447 |
|
|
DO k=1,3 |
448 |
|
|
DO J=1,NGP |
449 |
|
|
dTsurf(J,k,myThid) = 0. |
450 |
|
|
ENDDO |
451 |
|
|
ENDDO |
452 |
|
|
|
453 |
jmc |
1.2 |
IF (.NOT.aim_splitSIOsFx) THEN |
454 |
|
|
DO J=1,NGP |
455 |
|
|
fMask1(J,3,myThid) = 0. _d 0 |
456 |
jmc |
1.5 |
fMask1(J,2,myThid) = 1. _d 0 - fMask1(J,1,myThid) |
457 |
jmc |
1.2 |
ENDDO |
458 |
|
|
ENDIF |
459 |
jmc |
1.1 |
|
460 |
|
|
#endif /* ALLOW_AIM */ |
461 |
|
|
|
462 |
|
|
RETURN |
463 |
|
|
END |