| 1 | C $Header: /u/gcmpack/MITgcm/pkg/exf/exf_getffields.F,v 1.42 2009/02/16 09:10:18 mlosch Exp $ | 
| 2 | C $Name:  $ | 
| 3 |  | 
| 4 | #include "EXF_OPTIONS.h" | 
| 5 |  | 
| 6 | subroutine exf_getffields( mytime, myiter, mythid ) | 
| 7 |  | 
| 8 | c     ================================================================== | 
| 9 | c     SUBROUTINE exf_getffields | 
| 10 | c     ================================================================== | 
| 11 | c | 
| 12 | c     o Read-in atmospheric state and/or surface fluxes from files. | 
| 13 | c | 
| 14 | c       heimbach@mit.edu, 23-May-2003 totally re-structured | 
| 15 | c       5-Aug-2003: added USE_EXF_INTERPOLATION for arbitrary input grid | 
| 16 | c | 
| 17 | c     ================================================================== | 
| 18 | c     SUBROUTINE exf_getffields | 
| 19 | c     ================================================================== | 
| 20 |  | 
| 21 | implicit none | 
| 22 |  | 
| 23 | c     == global variables == | 
| 24 |  | 
| 25 | #include "EEPARAMS.h" | 
| 26 | #include "SIZE.h" | 
| 27 | #include "PARAMS.h" | 
| 28 | #include "DYNVARS.h" | 
| 29 | #include "GRID.h" | 
| 30 |  | 
| 31 | #include "EXF_PARAM.h" | 
| 32 | #include "EXF_FIELDS.h" | 
| 33 | #include "EXF_CONSTANTS.h" | 
| 34 |  | 
| 35 | #ifdef ALLOW_AUTODIFF | 
| 36 | # include "ctrl.h" | 
| 37 | # include "ctrl_dummy.h" | 
| 38 | #endif | 
| 39 |  | 
| 40 | c     == routine arguments == | 
| 41 |  | 
| 42 | integer mythid | 
| 43 | integer myiter | 
| 44 | _RL     mytime | 
| 45 |  | 
| 46 | c     == local variables == | 
| 47 |  | 
| 48 | integer i, j, bi, bj, interp_method | 
| 49 | parameter(interp_method=2) | 
| 50 | CMM      parameter(interp_method=1) | 
| 51 |  | 
| 52 | c     == end of interface == | 
| 53 |  | 
| 54 | c--   read forcing fields from files and temporal interpolation | 
| 55 |  | 
| 56 | c     Zonal and meridional wind stress. | 
| 57 | #ifdef USE_EXF_INTERPOLATION | 
| 58 | call exf_set_uv( | 
| 59 | &     ustressfile, ustressstartdate, ustressperiod, | 
| 60 | &     exf_inscal_ustress, ustress, ustress0, ustress1, ustressmask, | 
| 61 | &     ustress_lon0, ustress_lon_inc, ustress_lat0, ustress_lat_inc, | 
| 62 | &     ustress_nlon, ustress_nlat, | 
| 63 | &     ustress_exfremo_intercept, ustress_exfremo_slope, | 
| 64 | &     vstressfile, vstressstartdate, vstressperiod, | 
| 65 | &     exf_inscal_vstress, vstress, vstress0, vstress1, vstressmask, | 
| 66 | &     vstress_lon0, vstress_lon_inc, vstress_lat0, vstress_lat_inc, | 
| 67 | &     vstress_nlon, vstress_nlat, | 
| 68 | &     vstress_exfremo_intercept, vstress_exfremo_slope, | 
| 69 | &     mytime, myiter, mythid ) | 
| 70 | #else /* ifndef USE_EXF_INTERPOLATION */ | 
| 71 | call exf_set_gen( | 
| 72 | &     ustressfile, ustressstartdate, ustressperiod, | 
| 73 | &     exf_inscal_ustress, | 
| 74 | &     ustress_exfremo_intercept, ustress_exfremo_slope, | 
| 75 | &     ustress, ustress0, ustress1, ustressmask, | 
| 76 | &     mytime, myiter, mythid ) | 
| 77 | call exf_set_gen( | 
| 78 | &     vstressfile, vstressstartdate, vstressperiod, | 
| 79 | &     exf_inscal_vstress, | 
| 80 | &     vstress_exfremo_intercept, vstress_exfremo_slope, | 
| 81 | &     vstress, vstress0, vstress1, vstressmask, | 
| 82 | &     mytime, myiter, mythid ) | 
| 83 | #endif /* USE_EXF_INTERPOLATION */ | 
| 84 |  | 
| 85 | c--   wind speed | 
| 86 | call exf_set_gen( | 
| 87 | &     wspeedfile, wspeedstartdate, wspeedperiod, | 
| 88 | &     exf_inscal_wspeed, | 
| 89 | &     wspeed_exfremo_intercept, wspeed_exfremo_slope, | 
| 90 | &     wspeed, wspeed0, wspeed1, wspeedmask, | 
| 91 | #ifdef USE_EXF_INTERPOLATION | 
| 92 | &     wspeed_lon0, wspeed_lon_inc, | 
| 93 | &     wspeed_lat0, wspeed_lat_inc, | 
| 94 | &     wspeed_nlon, wspeed_nlat, xC, yC, interp_method, | 
| 95 | #endif | 
| 96 | &     mytime, myiter, mythid ) | 
| 97 |  | 
| 98 | #ifdef ALLOW_ATM_WIND | 
| 99 |  | 
| 100 | c     Zonal and meridional wind. | 
| 101 | #ifdef USE_EXF_INTERPOLATION | 
| 102 | call exf_set_uv( | 
| 103 | &     uwindfile, uwindstartdate, uwindperiod, | 
| 104 | &     exf_inscal_uwind, uwind, uwind0, uwind1, uwindmask, | 
| 105 | &     uwind_lon0, uwind_lon_inc, uwind_lat0, uwind_lat_inc, | 
| 106 | &     uwind_nlon, uwind_nlat, | 
| 107 | &     uwind_exfremo_intercept, uwind_exfremo_slope, | 
| 108 | &     vwindfile, vwindstartdate, vwindperiod, | 
| 109 | &     exf_inscal_vwind, vwind, vwind0, vwind1, vwindmask, | 
| 110 | &     vwind_lon0, vwind_lon_inc, vwind_lat0, vwind_lat_inc, | 
| 111 | &     vwind_nlon, vwind_nlat, | 
| 112 | &     vwind_exfremo_intercept, vwind_exfremo_slope, | 
| 113 | &     mytime, myiter, mythid ) | 
| 114 | #else /* ifndef USE_EXF_INTERPOLATION */ | 
| 115 | call exf_set_gen( | 
| 116 | &     uwindfile, uwindstartdate, uwindperiod, | 
| 117 | &     exf_inscal_uwind, | 
| 118 | &     uwind_exfremo_intercept, uwind_exfremo_slope, | 
| 119 | &     uwind, uwind0, uwind1, uwindmask, | 
| 120 | &     mytime, myiter, mythid ) | 
| 121 | call exf_set_gen( | 
| 122 | &     vwindfile, vwindstartdate, vwindperiod, | 
| 123 | &     exf_inscal_vwind, | 
| 124 | &     vwind_exfremo_intercept, vwind_exfremo_slope, | 
| 125 | &     vwind, vwind0, vwind1, vwindmask, | 
| 126 | &     mytime, myiter, mythid ) | 
| 127 | #endif /* USE_EXF_INTERPOLATION */ | 
| 128 |  | 
| 129 | if (useRelativeWind) then | 
| 130 | C     Subtract UVEL and VVEL from UWIND and VWIND. | 
| 131 | do bj = mybylo(mythid),mybyhi(mythid) | 
| 132 | do bi = mybxlo(mythid),mybxhi(mythid) | 
| 133 | do j = 1,sny | 
| 134 | do i = 1,snx | 
| 135 | uwind(i,j,bi,bj) = uwind(i,j,bi,bj) - 0.5 _d 0 * | 
| 136 | &          (uVel(i,j,1,bi,bj)+uVel(i+1,j,1,bi,bj)) | 
| 137 | vwind(i,j,bi,bj) = vwind(i,j,bi,bj) - 0.5 _d 0 * | 
| 138 | &          (vVel(i,j,1,bi,bj)+vVel(i,j+1,1,bi,bj)) | 
| 139 | enddo | 
| 140 | enddo | 
| 141 | enddo | 
| 142 | enddo | 
| 143 | endif | 
| 144 |  | 
| 145 | #endif /* ALLOW_ATM_WIND */ | 
| 146 |  | 
| 147 | c     Atmospheric heat flux. | 
| 148 | call exf_set_gen  ( | 
| 149 | &     hfluxfile, hfluxstartdate, hfluxperiod, | 
| 150 | &     exf_inscal_hflux, | 
| 151 | &     hflux_exfremo_intercept, hflux_exfremo_slope, | 
| 152 | &     hflux, hflux0, hflux1, hfluxmask, | 
| 153 | #ifdef USE_EXF_INTERPOLATION | 
| 154 | &     hflux_lon0, hflux_lon_inc, hflux_lat0, hflux_lat_inc, | 
| 155 | &     hflux_nlon, hflux_nlat, xC, yC, interp_method, | 
| 156 | #endif | 
| 157 | &     mytime, myiter, mythid ) | 
| 158 |  | 
| 159 | c     Salt flux. | 
| 160 | call exf_set_gen  ( | 
| 161 | &     sfluxfile, sfluxstartdate, sfluxperiod, | 
| 162 | &     exf_inscal_sflux, | 
| 163 | &     sflux_exfremo_intercept, sflux_exfremo_slope, | 
| 164 | &     sflux, sflux0, sflux1, sfluxmask, | 
| 165 | #ifdef USE_EXF_INTERPOLATION | 
| 166 | &     sflux_lon0, sflux_lon_inc, sflux_lat0, sflux_lat_inc, | 
| 167 | &     sflux_nlon, sflux_nlat, xC, yC, interp_method, | 
| 168 | #endif | 
| 169 | &     mytime, myiter, mythid ) | 
| 170 |  | 
| 171 | #ifdef ALLOW_ATM_TEMP | 
| 172 |  | 
| 173 | c     Atmospheric temperature. | 
| 174 | call exf_set_gen( | 
| 175 | &     atempfile, atempstartdate, atempperiod, | 
| 176 | &     exf_inscal_atemp, | 
| 177 | &     atemp_exfremo_intercept, atemp_exfremo_slope, | 
| 178 | &     atemp, atemp0, atemp1, atempmask, | 
| 179 | #ifdef USE_EXF_INTERPOLATION | 
| 180 | &     atemp_lon0, atemp_lon_inc, atemp_lat0, atemp_lat_inc, | 
| 181 | &     atemp_nlon, atemp_nlat, xC, yC, interp_method, | 
| 182 | #endif | 
| 183 | &     mytime, myiter, mythid ) | 
| 184 | do bj = mybylo(mythid),mybyhi(mythid) | 
| 185 | do bi = mybxlo(mythid),mybxhi(mythid) | 
| 186 | do j = 1,sny | 
| 187 | do i = 1,snx | 
| 188 | atemp(i,j,bi,bj) = atemp(i,j,bi,bj) + exf_offset_atemp | 
| 189 | enddo | 
| 190 | enddo | 
| 191 | enddo | 
| 192 | enddo | 
| 193 |  | 
| 194 | c     Atmospheric humidity. | 
| 195 | call exf_set_gen( | 
| 196 | &     aqhfile, aqhstartdate, aqhperiod, | 
| 197 | &     exf_inscal_aqh, | 
| 198 | &     aqh_exfremo_intercept, aqh_exfremo_slope, | 
| 199 | &     aqh, aqh0, aqh1, aqhmask, | 
| 200 | #ifdef USE_EXF_INTERPOLATION | 
| 201 | &     aqh_lon0, aqh_lon_inc, aqh_lat0, aqh_lat_inc, | 
| 202 | &     aqh_nlon, aqh_nlat, xC, yC, interp_method, | 
| 203 | #endif | 
| 204 | &     mytime, myiter, mythid ) | 
| 205 |  | 
| 206 | c     Net long wave radiative flux. | 
| 207 | call exf_set_gen( | 
| 208 | &     lwfluxfile, lwfluxstartdate, lwfluxperiod, | 
| 209 | &     exf_inscal_lwflux, | 
| 210 | &     lwflux_exfremo_intercept, lwflux_exfremo_slope, | 
| 211 | &     lwflux, lwflux0, lwflux1, lwfluxmask, | 
| 212 | #ifdef USE_EXF_INTERPOLATION | 
| 213 | &     lwflux_lon0, lwflux_lon_inc, lwflux_lat0, lwflux_lat_inc, | 
| 214 | &     lwflux_nlon, lwflux_nlat, xC, yC, interp_method, | 
| 215 | #endif | 
| 216 | &     mytime, myiter, mythid ) | 
| 217 |  | 
| 218 | c     Precipitation. | 
| 219 | call exf_set_gen( | 
| 220 | &     precipfile, precipstartdate, precipperiod, | 
| 221 | &     exf_inscal_precip, | 
| 222 | &     precip_exfremo_intercept, precip_exfremo_slope, | 
| 223 | &     precip, precip0, precip1, precipmask, | 
| 224 | #ifdef USE_EXF_INTERPOLATION | 
| 225 | &     precip_lon0, precip_lon_inc, precip_lat0, precip_lat_inc, | 
| 226 | &     precip_nlon, precip_nlat, xC, yC, interp_method, | 
| 227 | #endif | 
| 228 | &     mytime, myiter, mythid ) | 
| 229 |  | 
| 230 | c     Snow. | 
| 231 | call exf_set_gen( | 
| 232 | &     snowprecipfile, snowprecipstartdate, snowprecipperiod, | 
| 233 | &     exf_inscal_snowprecip, | 
| 234 | &     snowprecip_exfremo_intercept, snowprecip_exfremo_slope, | 
| 235 | &     snowprecip, snowprecip0, snowprecip1, snowprecipmask, | 
| 236 | #ifdef USE_EXF_INTERPOLATION | 
| 237 | &     snowprecip_lon0, snowprecip_lon_inc, | 
| 238 | &     snowprecip_lat0, snowprecip_lat_inc, | 
| 239 | &     snowprecip_nlon, snowprecip_nlat, xC, yC, interp_method, | 
| 240 | #endif | 
| 241 | &     mytime, myiter, mythid ) | 
| 242 |  | 
| 243 | #endif /* ALLOW_ATM_TEMP */ | 
| 244 |  | 
| 245 | #if defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING) | 
| 246 | c     Net short wave radiative flux. | 
| 247 | call exf_set_gen  ( | 
| 248 | &     swfluxfile, swfluxstartdate, swfluxperiod, | 
| 249 | &     exf_inscal_swflux, | 
| 250 | &     swflux_exfremo_intercept, swflux_exfremo_slope, | 
| 251 | &     swflux, swflux0, swflux1, swfluxmask, | 
| 252 | #ifdef USE_EXF_INTERPOLATION | 
| 253 | &     swflux_lon0, swflux_lon_inc, swflux_lat0, swflux_lat_inc, | 
| 254 | &     swflux_nlon, swflux_nlat, xC, yC, interp_method, | 
| 255 | #endif | 
| 256 | &     mytime, myiter, mythid ) | 
| 257 | #endif | 
| 258 |  | 
| 259 | #ifdef EXF_READ_EVAP | 
| 260 | c     Evaporation | 
| 261 | call exf_set_gen  ( | 
| 262 | &     evapfile, evapstartdate, evapperiod, | 
| 263 | &     exf_inscal_evap, | 
| 264 | &     evap_exfremo_intercept, evap_exfremo_slope, | 
| 265 | &     evap, evap0, evap1, evapmask, | 
| 266 | #ifdef USE_EXF_INTERPOLATION | 
| 267 | &     evap_lon0, evap_lon_inc, evap_lat0, evap_lat_inc, | 
| 268 | &     evap_nlon, evap_nlat, xC, yC, interp_method, | 
| 269 | #endif | 
| 270 | &     mytime, myiter, mythid ) | 
| 271 | #endif | 
| 272 |  | 
| 273 | #ifdef ALLOW_DOWNWARD_RADIATION | 
| 274 |  | 
| 275 | c     Downward shortwave radiation. | 
| 276 | call exf_set_gen  ( | 
| 277 | &     swdownfile, swdownstartdate, swdownperiod, | 
| 278 | &     exf_inscal_swdown, | 
| 279 | &     swdown_exfremo_intercept, swdown_exfremo_slope, | 
| 280 | &     swdown, swdown0, swdown1, swdownmask, | 
| 281 | #ifdef USE_EXF_INTERPOLATION | 
| 282 | &     swdown_lon0, swdown_lon_inc, swdown_lat0, swdown_lat_inc, | 
| 283 | &     swdown_nlon, swdown_nlat, xC, yC, interp_method, | 
| 284 | #endif | 
| 285 | &     mytime, myiter, mythid ) | 
| 286 |  | 
| 287 | c     Downward longwave radiation. | 
| 288 | call exf_set_gen  ( | 
| 289 | &     lwdownfile, lwdownstartdate, lwdownperiod, | 
| 290 | &     exf_inscal_lwdown, | 
| 291 | &     lwdown_exfremo_intercept, lwdown_exfremo_slope, | 
| 292 | &     lwdown, lwdown0, lwdown1, lwdownmask, | 
| 293 | #ifdef USE_EXF_INTERPOLATION | 
| 294 | &     lwdown_lon0, lwdown_lon_inc, lwdown_lat0, lwdown_lat_inc, | 
| 295 | &     lwdown_nlon, lwdown_nlat, xC, yC, interp_method, | 
| 296 | #endif | 
| 297 | &     mytime, myiter, mythid ) | 
| 298 |  | 
| 299 | #endif | 
| 300 |  | 
| 301 | #ifdef ATMOSPHERIC_LOADING | 
| 302 | c     Atmos. pressure forcing | 
| 303 | call exf_set_gen  ( | 
| 304 | &     apressurefile, apressurestartdate, apressureperiod, | 
| 305 | &     exf_inscal_apressure, | 
| 306 | &     apressure_exfremo_intercept, apressure_exfremo_slope, | 
| 307 | &     apressure, apressure0, apressure1, apressuremask, | 
| 308 | #ifdef USE_EXF_INTERPOLATION | 
| 309 | &     apressure_lon0, apressure_lon_inc, apressure_lat0, | 
| 310 | &     apressure_lat_inc, apressure_nlon, apressure_nlat, xC, yC, | 
| 311 | &     interp_method, | 
| 312 | #endif | 
| 313 | &     mytime, myiter, mythid ) | 
| 314 | #endif | 
| 315 |  | 
| 316 | #ifdef ALLOW_ICE_AREAMASK | 
| 317 | c     fractional ice-covered area MASK | 
| 318 | call exf_set_gen  ( | 
| 319 | &     areamaskfile, areamaskstartdate, areamaskperiod, | 
| 320 | &     exf_inscal_areamask, | 
| 321 | &     areamask_exfremo_intercept, areamask_exfremo_slope, | 
| 322 | &     areamask, areamask0, areamask1, areamaskmask, | 
| 323 | #ifdef USE_EXF_INTERPOLATION | 
| 324 | &     areamask_lon0, areamask_lon_inc, areamask_lat0, | 
| 325 | &     areamask_lat_inc, areamask_nlon, areamask_nlat, xC, yC, | 
| 326 | &     interp_method, | 
| 327 | #endif | 
| 328 | &     mytime, myiter, mythid ) | 
| 329 | #endif | 
| 330 |  | 
| 331 | #ifdef ALLOW_RUNOFF | 
| 332 | c     Runoff | 
| 333 | #ifdef USE_NO_INTERP_RUNOFF | 
| 334 | call exf_set_runoff  ( | 
| 335 | &     runofffile, runoffstartdate, runoffperiod, | 
| 336 | &     exf_inscal_runoff, | 
| 337 | &     runoff_exfremo_intercept, runoff_exfremo_slope, | 
| 338 | &     runoff, runoff0, runoff1, runoffmask, | 
| 339 | &     mytime, myiter, mythid ) | 
| 340 | #else /* ndef USE_NO_INTERP_RUNOFF */ | 
| 341 | call exf_set_gen  ( | 
| 342 | &     runofffile, runoffstartdate, runoffperiod, | 
| 343 | &     exf_inscal_runoff, | 
| 344 | &     runoff_exfremo_intercept, runoff_exfremo_slope, | 
| 345 | &     runoff, runoff0, runoff1, runoffmask, | 
| 346 | #ifdef USE_EXF_INTERPOLATION | 
| 347 | &     runoff_lon0, runoff_lon_inc, runoff_lat0, | 
| 348 | &     runoff_lat_inc, runoff_nlon, runoff_nlat, xC, yC, | 
| 349 | &     interp_method, | 
| 350 | #endif | 
| 351 | &     mytime, myiter, mythid ) | 
| 352 | #endif /* def USE_NO_INTERP_RUNOFF */ | 
| 353 | #endif | 
| 354 |  | 
| 355 | c-- Control variables for atmos. state | 
| 356 |  | 
| 357 | #ifdef ALLOW_ATEMP_CONTROL | 
| 358 | call ctrl_get_gen ( | 
| 359 | &     xx_atemp_file, xx_atempstartdate, xx_atempperiod, | 
| 360 | &     maskc, atemp, xx_atemp0, xx_atemp1, xx_atemp_dummy, | 
| 361 | &     xx_atemp_remo_intercept, xx_atemp_remo_slope, | 
| 362 | &     mytime, myiter, mythid ) | 
| 363 | #endif | 
| 364 |  | 
| 365 | #ifdef ALLOW_AQH_CONTROL | 
| 366 | call ctrl_get_gen ( | 
| 367 | &     xx_aqh_file, xx_aqhstartdate, xx_aqhperiod, | 
| 368 | &     maskc, aqh, xx_aqh0, xx_aqh1, xx_aqh_dummy, | 
| 369 | &     xx_aqh_remo_intercept, xx_aqh_remo_slope, | 
| 370 | &     mytime, myiter, mythid ) | 
| 371 | #endif | 
| 372 |  | 
| 373 | #ifdef ALLOW_PRECIP_CONTROL | 
| 374 | call ctrl_get_gen ( | 
| 375 | &     xx_precip_file, xx_precipstartdate, xx_precipperiod, | 
| 376 | &     maskc, precip, xx_precip0, xx_precip1, xx_precip_dummy, | 
| 377 | &     xx_precip_remo_intercept, xx_precip_remo_slope, | 
| 378 | &     mytime, myiter, mythid ) | 
| 379 | #endif | 
| 380 |  | 
| 381 | #ifdef ALLOW_SWFLUX_CONTROL | 
| 382 | call ctrl_get_gen ( | 
| 383 | &     xx_swflux_file, xx_swfluxstartdate, xx_swfluxperiod, | 
| 384 | &     maskc, swflux, xx_swflux0, xx_swflux1, xx_swflux_dummy, | 
| 385 | &     xx_swflux_remo_intercept, xx_swflux_remo_slope, | 
| 386 | &     mytime, myiter, mythid ) | 
| 387 | #endif | 
| 388 |  | 
| 389 | #ifdef ALLOW_SWDOWN_CONTROL | 
| 390 | call ctrl_get_gen ( | 
| 391 | &     xx_swdown_file, xx_swdownstartdate, xx_swdownperiod, | 
| 392 | &     maskc, swdown, xx_swdown0, xx_swdown1, xx_swdown_dummy, | 
| 393 | &     xx_swdown_remo_intercept, xx_swdown_remo_slope, | 
| 394 | &     mytime, myiter, mythid ) | 
| 395 | #endif | 
| 396 |  | 
| 397 | #ifdef ALLOW_LWFLUX_CONTROL | 
| 398 | call ctrl_get_gen ( | 
| 399 | &     xx_lwflux_file, xx_lwfluxstartdate, xx_lwfluxperiod, | 
| 400 | &     maskc, lwflux, xx_lwflux0, xx_lwflux1, xx_lwflux_dummy, | 
| 401 | &     xx_lwflux_remo_intercept, xx_lwflux_remo_slope, | 
| 402 | &     mytime, myiter, mythid ) | 
| 403 | #endif | 
| 404 |  | 
| 405 | #ifdef ALLOW_LWDOWN_CONTROL | 
| 406 | call ctrl_get_gen ( | 
| 407 | &     xx_lwdown_file, xx_lwdownstartdate, xx_lwdownperiod, | 
| 408 | &     maskc, lwdown, xx_lwdown0, xx_lwdown1, xx_lwdown_dummy, | 
| 409 | &     xx_lwdown_remo_intercept, xx_lwdown_remo_slope, | 
| 410 | &     mytime, myiter, mythid ) | 
| 411 | #endif | 
| 412 |  | 
| 413 | #ifdef ALLOW_EVAP_CONTROL | 
| 414 | call ctrl_get_gen ( | 
| 415 | &     xx_evap_file, xx_evapstartdate, xx_evapperiod, | 
| 416 | &     maskc, evap, xx_evap0, xx_evap1, xx_evap_dummy, | 
| 417 | &     xx_evap_remo_intercept, xx_evap_remo_slope, | 
| 418 | &     mytime, myiter, mythid ) | 
| 419 | #endif | 
| 420 |  | 
| 421 | #ifdef ALLOW_SNOWPRECIP_CONTROL | 
| 422 | call ctrl_get_gen ( | 
| 423 | &     xx_snowprecip_file, xx_snowprecipstartdate, | 
| 424 | &     xx_snowprecipperiod, | 
| 425 | &     maskc, snowprecip, xx_snowprecip0, xx_snowprecip1, | 
| 426 | &     xx_snowprecip_dummy, | 
| 427 | &     xx_snowprecip_remo_intercept, xx_snowprecip_remo_slope, | 
| 428 | &     mytime, myiter, mythid ) | 
| 429 | #endif | 
| 430 |  | 
| 431 | #ifdef ALLOW_APRESSURE_CONTROL | 
| 432 | call ctrl_get_gen ( | 
| 433 | &     xx_apressure_file, xx_apressurestartdate, | 
| 434 | &     xx_apressureperiod, | 
| 435 | &     maskc, apressure, xx_apressure0, xx_apressure1, | 
| 436 | &     xx_apressure_dummy, | 
| 437 | &     xx_apressure_remo_intercept, xx_apressure_remo_slope, | 
| 438 | &     mytime, myiter, mythid ) | 
| 439 | #endif | 
| 440 |  | 
| 441 | #ifdef ALLOW_UWIND_CONTROL | 
| 442 | call ctrl_get_gen ( | 
| 443 | &     xx_uwind_file, xx_uwindstartdate, xx_uwindperiod, | 
| 444 | &     maskc, uwind, xx_uwind0, xx_uwind1, xx_uwind_dummy, | 
| 445 | &     xx_uwind_remo_intercept, xx_uwind_remo_slope, | 
| 446 | &     mytime, myiter, mythid ) | 
| 447 | #endif /* ALLOW_UWIND_CONTROL */ | 
| 448 |  | 
| 449 | #ifdef ALLOW_VWIND_CONTROL | 
| 450 | call ctrl_get_gen ( | 
| 451 | &     xx_vwind_file, xx_vwindstartdate, xx_vwindperiod, | 
| 452 | &     maskc, vwind, xx_vwind0, xx_vwind1, xx_vwind_dummy, | 
| 453 | &     xx_vwind_remo_intercept, xx_vwind_remo_slope, | 
| 454 | &     mytime, myiter, mythid ) | 
| 455 | #endif /* ALLOW_VWIND_CONTROL */ | 
| 456 |  | 
| 457 | cdm transferred from exf_init_runoff.F | 
| 458 | cdm functionality needs to be checked before turning on | 
| 459 | cdm #ifdef ALLOW_RUNOFF_CONTROL | 
| 460 | cdm       call ctrl_get_gen ( | 
| 461 | cdm      &     xx_runoff_file, xx_runoffstartdate, xx_runoffperiod, | 
| 462 | cdm      &     maskc, runoff, xx_runoff0, xx_runoff1, xx_runoff_dummy, | 
| 463 | cdm      &     xx_runoff_remo_intercept, xx_runoff_remo_slope, | 
| 464 | cdm      &     0., 0., mythid ) | 
| 465 | cdm #endif | 
| 466 |  | 
| 467 | end |