7 pt_snow, pt_ice, pt_mnw, pt_wml, pt_bot, pt_b1, pct, &
8 ph_snow, ph_ice, ph_ml, ph_b1, pt_sfc)
51 xc_small, ngraddepth_lta, xcentrgraddepth_lta, &
52 xauxt_snow, xauxt_ice, xauxt_mnw, xauxt_wml, xauxt_bot, &
53 xauxt_b1, xauxct, xauxh_snow, xauxh_ice, xauxh_ml, &
58 USE yomhook
,ONLY : lhook, dr_hook
59 USE parkind1
,ONLY : jprb
66 INTEGER,
INTENT(IN) :: kday, &
68 REAL,
INTENT(IN) :: plon, plat
70 REAL,
INTENT(IN) :: pdepth
71 REAL,
INTENT(OUT) :: pt_snow, &
90 REAL,
DIMENSION(1,1) :: zwt_snow, zwt_ice, zwt_mnw, zwt_wml, zwt_bot, zwt_b1, zwct, &
91 zwh_snow, zwh_ice, zwh_ml, zwh_b1, zwt_sfc
92 REAL :: zft_snow, zft_ice, zft_mnw, zft_wml, zft_bot, zft_b1, zfct, &
93 zfh_snow, zfh_ice, zfh_ml, zfh_b1, zft_sfc
94 REAL,
DIMENSION(NGRADDEPTH_LTA) :: zdistd
95 REAL :: zwlon, zwlat, zwdepth
99 INTEGER :: id_lakelta, id_month, &
100 id_dec, id_lon, id_lat, id_depth, &
101 id_t_snow, id_t_ice, id_t_mnw, id_t_wml, id_t_bot, id_t_b1, id_ct, &
102 id_h_snow, id_h_ice, id_h_ml, id_h_b1, id_t_sfc
103 INTEGER :: idec, imonth
104 INTEGER :: ilon, ilat
106 INTEGER,
DIMENSION(1) :: iloc_depth
108 INTEGER :: imonthn, idecn, ilonn, ilatn, idepthn
109 INTEGER,
DIMENSION(5) :: nindex
110 REAL(KIND=JPRB) :: zhook_handle
113 IF (lhook) CALL dr_hook(
'START_LAKE_OF',0,zhook_handle)
117 IF(kday.LE.0 .OR. kday.GT.31) CALL
abor1_sfx(
"START_LAKE_OF: WRONG DAY NUMBER (!!!!)")
118 IF(kmonth.LE.0 .OR. kmonth.GT.12) CALL
abor1_sfx(
"START_LAKE_OF: WRONG MONTH NUMBER (!!!!)")
119 IF(plon.LT.-180. .OR. plon.GT.180.) CALL
abor1_sfx(
"START_LAKE_OF: WRONG LONGITUDE (!!!!)")
120 IF(plat.LT.-90. .OR. plat.GT.90.) CALL
abor1_sfx(
"START_LAKE_OF: WRONG LATITUDE (!!!!)")
138 zwlat = max(plat,xfirstlat)
140 ilon = nint(zwlon) + nlong/2 + 1
141 ilat = nint(zwlat) - xfirstlat + 1
145 IF (pdepth.LT.xc_small) &
146 CALL
abor1_sfx(
"START_LAKE_OF: YOUR LAKE DEPTH IS TOO SMALL TO ACTIVATE CLI_LAKE IN SOME POINTS")
150 zwdepth = min(pdepth,50.)
151 zdistd = abs(xcentrgraddepth_lta(:) - zwdepth)
152 iloc_depth = minloc(zdistd)
153 idepth = iloc_depth(1)
157 iret = nf_open(trim(adjustl(clakelta)),nf_nowrite,id_lakelta)
158 IF (iret.NE.0) CALL
abor1_sfx(
"START_LAKE_OF: WRONG OR NO LAKE DATA FILE")
162 iret = nf_inq_dimid(id_lakelta,
"NMonth", id_month)
163 iret = nf_inq_dimlen(id_lakelta, id_month, imonthn)
164 IF (imonthn.NE.12) CALL
abor1_sfx(
"START_LAKE_OF: NUMBER OF MONTHS IN THE LAKE FILE IS NOT 12????")
166 iret = nf_inq_dimid(id_lakelta,
"NDec", id_dec)
167 iret = nf_inq_dimlen(id_lakelta, id_dec, idecn)
168 IF (idecn.NE.3) CALL
abor1_sfx(
"START_LAKE_OF: NUMBER OF DECADES IN MONTH IN THE LAKE FILE IS NOT 3????")
170 iret = nf_inq_dimid(id_lakelta,
"NLon", id_lon)
171 iret = nf_inq_dimlen(id_lakelta, id_lon, ilonn)
172 IF (ilonn.NE.nlong) CALL
abor1_sfx(
"START_LAKE_OF: WRONG NUMBER OF POINTS IN LONGITUDE IN THE LAKE FILE!")
174 iret = nf_inq_dimid(id_lakelta,
"NLat", id_lat)
175 iret = nf_inq_dimlen(id_lakelta, id_lat, ilatn)
176 IF (ilatn.NE.nlatg) CALL
abor1_sfx(
"START_LAKE_OF: WRONG NUMBER OF POINTS IN LONGITUDE IN THE LAKE FILE!")
178 iret = nf_inq_dimid(id_lakelta,
"NDepth", id_depth)
179 iret = nf_inq_dimlen(id_lakelta, id_depth, idepthn)
180 IF (idepthn.NE.ngraddepth_lta) CALL
abor1_sfx(
"START_LAKE_OF: WRONG NUMBER OF GRADATIONS IN DEPTH IN THE LAKE FILE!")
182 iret = nf_inq_varid(id_lakelta,
"T_snow", id_t_snow)
183 iret = nf_inq_varid(id_lakelta,
"T_ice", id_t_ice)
184 iret = nf_inq_varid(id_lakelta,
"T_mnw", id_t_mnw)
185 iret = nf_inq_varid(id_lakelta,
"T_wML", id_t_wml)
186 iret = nf_inq_varid(id_lakelta,
"T_bot", id_t_bot)
187 iret = nf_inq_varid(id_lakelta,
"T_B1", id_t_b1)
188 iret = nf_inq_varid(id_lakelta,
"C_T", id_ct)
189 iret = nf_inq_varid(id_lakelta,
"h_snow", id_h_snow)
190 iret = nf_inq_varid(id_lakelta,
"h_ice", id_h_ice)
191 iret = nf_inq_varid(id_lakelta,
"h_ML", id_h_ml)
192 iret = nf_inq_varid(id_lakelta,
"H_B1", id_h_b1)
193 iret = nf_inq_varid(id_lakelta,
"T_sfc", id_t_sfc)
203 iret = nf_get_att_double(id_lakelta, id_t_snow,
'_FillValue',zft_snow)
204 iret = nf_get_att_double(id_lakelta, id_t_ice,
'_FillValue',zft_ice)
205 iret = nf_get_att_double(id_lakelta, id_t_mnw,
'_FillValue',zft_mnw)
206 iret = nf_get_att_double(id_lakelta, id_t_wml,
'_FillValue',zft_wml)
207 iret = nf_get_att_double(id_lakelta, id_t_bot,
'_FillValue',zft_bot)
208 iret = nf_get_att_double(id_lakelta, id_t_b1,
'_FillValue',zft_b1)
209 iret = nf_get_att_double(id_lakelta, id_ct,
'_FillValue',zfct)
210 iret = nf_get_att_double(id_lakelta, id_h_snow,
'_FillValue',zfh_snow)
211 iret = nf_get_att_double(id_lakelta, id_h_ice,
'_FillValue',zfh_ice)
212 iret = nf_get_att_double(id_lakelta, id_h_ml,
'_FillValue',zfh_ml)
213 iret = nf_get_att_double(id_lakelta, id_h_b1,
'_FillValue',zfh_b1)
214 iret = nf_get_att_double(id_lakelta, id_t_snow,
'_FillValue',zft_sfc)
216 iret = nf_get_var1_double(id_lakelta, id_t_snow, nindex, zwt_snow)
217 iret = nf_get_var1_double(id_lakelta, id_t_ice, nindex, zwt_ice)
218 iret = nf_get_var1_double(id_lakelta, id_t_mnw, nindex, zwt_mnw)
219 iret = nf_get_var1_double(id_lakelta, id_t_wml, nindex, zwt_wml)
220 iret = nf_get_var1_double(id_lakelta, id_t_bot, nindex, zwt_bot)
221 iret = nf_get_var1_double(id_lakelta, id_t_b1, nindex, zwt_b1)
222 iret = nf_get_var1_double(id_lakelta, id_ct, nindex, zwct)
223 iret = nf_get_var1_double(id_lakelta, id_h_snow, nindex, zwh_snow)
224 iret = nf_get_var1_double(id_lakelta, id_h_ice, nindex, zwh_ice)
225 iret = nf_get_var1_double(id_lakelta, id_h_ml, nindex, zwh_ml)
226 iret = nf_get_var1_double(id_lakelta, id_h_b1, nindex, zwh_b1)
227 iret = nf_get_var1_double(id_lakelta, id_t_sfc, nindex, zwt_sfc)
231 iret = nf_close(id_lakelta)
236 lexist=(zwt_snow(1,1).NE.zft_snow .AND. zwt_ice(1,1).NE.zft_ice .AND. zwt_mnw(1,1).NE.zft_mnw .AND. &
237 zwt_wml(1,1).NE.zft_wml .AND. zwt_bot(1,1).NE.zft_bot .AND. zwt_b1(1,1).NE.zft_b1 .AND. &
238 zwct(1,1).NE.zfct .AND. zwh_snow(1,1).NE.zfh_snow .AND. zwh_ice(1,1).NE.zfh_ice .AND. &
239 zwh_ml(1,1).NE.zfh_ml .AND. zwh_b1(1,1).NE.zfh_b1 .AND. zwt_sfc(1,1).NE.zft_sfc)
243 xauxt_snow = zwt_snow(1,1)
244 xauxt_ice = zwt_ice(1,1)
245 xauxt_mnw = zwt_mnw(1,1)
246 xauxt_wml = zwt_wml(1,1)
247 xauxt_bot = zwt_bot(1,1)
248 xauxt_b1 = zwt_b1(1,1)
250 xauxh_snow = zwh_snow(1,1)
251 xauxh_ice = zwh_ice(1,1)
252 xauxh_ml = zwh_ml(1,1)
253 xauxh_b1 = zwh_b1(1,1)
254 xauxt_sfc = zwt_sfc(1,1)
271 IF (lhook) CALL dr_hook(
'START_LAKE_OF',1,zhook_handle)
subroutine start_lake_of(KDAY, KMONTH, PLON, PLAT, PDEPTH, PT_SNOW, PT_ICE, PT_MNW, PT_WML, PT_BOT, PT_B1, PCT, PH_SNOW, PH_ICE, PH_ML, PH_B1, PT_SFC)
subroutine abor1_sfx(YTEXT)