File indexing completed on 2023-10-13 05:10:22 UTC
view on githubraw file Latest commit edcd27be on 2023-10-12 20:00:12 UTC
6d54cf9ca1 Ed H*0001 #include "EXF_OPTIONS.h"
3a255f48df Gael*0002 #ifdef ALLOW_CTRL
0003 # include "CTRL_OPTIONS.h"
0004 #endif
0005 #ifdef ALLOW_ECCO
0006 # include "ECCO_OPTIONS.h"
0007 #endif
9c41af81f6 Timo*0008 #ifdef ALLOW_AUTODIFF
0009 # include "AUTODIFF_OPTIONS.h"
0010 #endif
7f861c1808 Patr*0011
24da7525ba Jean*0012 SUBROUTINE EXF_GETFFIELDS( myTime, myIter, myThid )
7f861c1808 Patr*0013
24da7525ba Jean*0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
7f861c1808 Patr*0026
24da7525ba Jean*0027 IMPLICIT NONE
7f861c1808 Patr*0028
24da7525ba Jean*0029
7f861c1808 Patr*0030
0031 #include "EEPARAMS.h"
0032 #include "SIZE.h"
0033 #include "PARAMS.h"
0034 #include "DYNVARS.h"
0035 #include "GRID.h"
0036
082e18c36c Jean*0037 #include "EXF_PARAM.h"
0038 #include "EXF_CONSTANTS.h"
30fcb891cf Jean*0039 #include "EXF_INTERP_SIZE.h"
0040 #include "EXF_INTERP_PARAM.h"
0041 #include "EXF_FIELDS.h"
7f861c1808 Patr*0042
1a70de03d3 Gael*0043 #ifdef ALLOW_CTRL
0044 # include "CTRL_SIZE.h"
4d72283393 Mart*0045 # include "CTRL.h"
edcd27be69 Mart*0046 # include "CTRL_DUMMY.h"
1a70de03d3 Gael*0047 # ifdef ALLOW_GENTIM2D_CONTROL
0048 # include "CTRL_GENARR.h"
0aa9d3ca04 Gael*0049 # endif
7109a141b2 Patr*0050 #endif
9c41af81f6 Timo*0051 #ifdef ALLOW_AUTODIFF_TAMC
0052 # include "tamc.h"
0053 #endif
7109a141b2 Patr*0054
24da7525ba Jean*0055
0056 _RL myTime
0057 INTEGER myIter
0058 INTEGER myThid
8ac0e9b3ce Dimi*0059
24da7525ba Jean*0060
0061 INTEGER i, j, bi, bj
d7c5a72ada Gael*0062 #ifdef ALLOW_ROTATE_UV_CONTROLS
8a0f942cd7 Jean*0063 _RL tmpUE(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0064 _RL tmpVN(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0065 _RL tmpUX(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0066 _RL tmpVY(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
d7c5a72ada Gael*0067 #endif
5815be8c7f Gael*0068 #if (defined (ALLOW_CTRL) && \
0069 defined (ALLOW_GENTIM2D_CONTROL))
0070 INTEGER iarr
0071 #endif
d7c5a72ada Gael*0072
24da7525ba Jean*0073
7f861c1808 Patr*0074
24da7525ba Jean*0075
7f861c1808 Patr*0076
8a0f942cd7 Jean*0077
358649780a Gael*0078 IF ( .NOT.useAtmWind ) THEN
c994dbe735 Jean*0079 CALL EXF_SET_UV(
8a0f942cd7 Jean*0080 I 'ustress', ustressfile, ustressmask,
d078fa0cf5 Jean*0081 I ustressStartTime, ustressperiod, ustressRepCycle,
4aa4270510 Jean*0082 I exf_inscal_ustress,
0083 I ustress_exfremo_intercept, ustress_exfremo_slope,
8a0f942cd7 Jean*0084 U ustress, ustress0, ustress1,
0085 I 'vstress', vstressfile, vstressmask,
d078fa0cf5 Jean*0086 I vstressStartTime, vstressperiod, vstressRepCycle,
4aa4270510 Jean*0087 I exf_inscal_vstress,
0088 I vstress_exfremo_intercept, vstress_exfremo_slope,
8a0f942cd7 Jean*0089 U vstress, vstress0, vstress1,
4aa4270510 Jean*0090 #ifdef USE_EXF_INTERPOLATION
0091 I ustress_lon0, ustress_lon_inc, ustress_lat0, ustress_lat_inc,
0092 I ustress_nlon, ustress_nlat, ustress_interpMethod,
0093 I vstress_lon0, vstress_lon_inc, vstress_lat0, vstress_lat_inc,
0094 I vstress_nlon, vstress_nlat, vstress_interpMethod,
9fcf422891 Jean*0095 I uvInterp_stress,
9918f74dda Dimi*0096 #endif /* USE_EXF_INTERPOLATION */
24da7525ba Jean*0097 I myTime, myIter, myThid )
358649780a Gael*0098 ELSE
24da7525ba Jean*0099 DO bj = myByLo(myThid),myByHi(myThid)
edf9251fd4 Jean*0100 DO bi = myBxLo(myThid),myBxHi(myThid)
24da7525ba Jean*0101 DO j=1-OLy,sNy+OLy
0102 DO i=1-OLx,sNx+OLx
358649780a Gael*0103 ustress(i,j,bi,bj) = 0. _d 0
0104 vstress(i,j,bi,bj) = 0. _d 0
24da7525ba Jean*0105 ENDDO
0106 ENDDO
0107 ENDDO
0108 ENDDO
358649780a Gael*0109 ENDIF
7f861c1808 Patr*0110
8a0f942cd7 Jean*0111
0112 CALL EXF_SET_FLD(
0113 I 'wspeed', wspeedfile, wspeedmask,
d078fa0cf5 Jean*0114 I wspeedStartTime, wspeedperiod, wspeedRepCycle,
8a0f942cd7 Jean*0115 I exf_inscal_wspeed,
0116 I wspeed_exfremo_intercept, wspeed_exfremo_slope,
0117 U wspeed, wspeed0, wspeed1,
3752238fd8 Patr*0118 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0119 I wspeed_lon0, wspeed_lon_inc,
0120 I wspeed_lat0, wspeed_lat_inc,
0121 I wspeed_nlon, wspeed_nlat, xC, yC, wspeed_interpMethod,
3752238fd8 Patr*0122 #endif
8a0f942cd7 Jean*0123 I myTime, myIter, myThid )
3752238fd8 Patr*0124
8a0f942cd7 Jean*0125
358649780a Gael*0126 IF ( useAtmWind ) THEN
c994dbe735 Jean*0127 CALL EXF_SET_UV(
8a0f942cd7 Jean*0128 I 'uwind', uwindfile, uwindmask,
d078fa0cf5 Jean*0129 I uwindStartTime, uwindperiod, uwindRepCycle,
9fcf422891 Jean*0130 I exf_inscal_uwind,
0131 I uwind_exfremo_intercept, uwind_exfremo_slope,
8a0f942cd7 Jean*0132 U uwind, uwind0, uwind1,
0133 I 'vwind', vwindfile, vwindmask,
d078fa0cf5 Jean*0134 I vwindStartTime, vwindperiod, vwindRepCycle,
9fcf422891 Jean*0135 I exf_inscal_vwind,
0136 I vwind_exfremo_intercept, vwind_exfremo_slope,
8a0f942cd7 Jean*0137 U vwind, vwind0, vwind1,
4aa4270510 Jean*0138 #ifdef USE_EXF_INTERPOLATION
9fcf422891 Jean*0139 I uwind_lon0, uwind_lon_inc, uwind_lat0, uwind_lat_inc,
0140 I uwind_nlon, uwind_nlat, uwind_interpMethod,
0141 I vwind_lon0, vwind_lon_inc, vwind_lat0, vwind_lat_inc,
0142 I vwind_nlon, vwind_nlat, vwind_interpMethod, uvInterp_wind,
8ac0e9b3ce Dimi*0143 #endif /* USE_EXF_INTERPOLATION */
24da7525ba Jean*0144 I myTime, myIter, myThid )
7f861c1808 Patr*0145
358649780a Gael*0146 ELSE
24da7525ba Jean*0147 DO bj = myByLo(myThid),myByHi(myThid)
edf9251fd4 Jean*0148 DO bi = myBxLo(myThid),myBxHi(myThid)
24da7525ba Jean*0149 DO j=1-OLy,sNy+OLy
0150 DO i=1-OLx,sNx+OLx
358649780a Gael*0151 uwind(i,j,bi,bj) = 0. _d 0
0152 vwind(i,j,bi,bj) = 0. _d 0
24da7525ba Jean*0153 ENDDO
0154 ENDDO
0155 ENDDO
0156 ENDDO
358649780a Gael*0157 ENDIF
7f861c1808 Patr*0158
8a0f942cd7 Jean*0159
0160 CALL EXF_SET_FLD(
0161 I 'hflux', hfluxfile, hfluxmask,
d078fa0cf5 Jean*0162 I hfluxStartTime, hfluxperiod, hfluxRepCycle,
8a0f942cd7 Jean*0163 I exf_inscal_hflux,
0164 I hflux_exfremo_intercept, hflux_exfremo_slope,
0165 U hflux, hflux0, hflux1,
981f32514d Dimi*0166 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0167 I hflux_lon0, hflux_lon_inc, hflux_lat0, hflux_lat_inc,
0168 I hflux_nlon, hflux_nlat, xC, yC, hflux_interpMethod,
9918f74dda Dimi*0169 #endif
8a0f942cd7 Jean*0170 I myTime, myIter, myThid )
0171
0172
0173 CALL EXF_SET_FLD(
0174 I 'sflux', sfluxfile, sfluxmask,
d078fa0cf5 Jean*0175 I sfluxStartTime, sfluxperiod, sfluxRepCycle,
8a0f942cd7 Jean*0176 I exf_inscal_sflux,
0177 I sflux_exfremo_intercept, sflux_exfremo_slope,
0178 U sflux, sflux0, sflux1,
9918f74dda Dimi*0179 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0180 I sflux_lon0, sflux_lon_inc, sflux_lat0, sflux_lat_inc,
0181 I sflux_nlon, sflux_nlat, xC, yC, sflux_interpMethod,
9918f74dda Dimi*0182 #endif
8a0f942cd7 Jean*0183 I myTime, myIter, myThid )
7f861c1808 Patr*0184
6060ec2938 Dimi*0185 #ifdef ALLOW_ATM_TEMP
7f861c1808 Patr*0186
8a0f942cd7 Jean*0187
0188 CALL EXF_SET_FLD(
0189 I 'atemp', atempfile, atempmask,
d078fa0cf5 Jean*0190 I atempStartTime, atempperiod, atempRepCycle,
8a0f942cd7 Jean*0191 I exf_inscal_atemp,
0192 I atemp_exfremo_intercept, atemp_exfremo_slope,
0193 U atemp, atemp0, atemp1,
981f32514d Dimi*0194 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0195 I atemp_lon0, atemp_lon_inc, atemp_lat0, atemp_lat_inc,
0196 I atemp_nlon, atemp_nlat, xC, yC, atemp_interpMethod,
981f32514d Dimi*0197 #endif
8a0f942cd7 Jean*0198 I myTime, myIter, myThid )
24da7525ba Jean*0199 DO bj = myByLo(myThid),myByHi(myThid)
edf9251fd4 Jean*0200 DO bi = myBxLo(myThid),myBxHi(myThid)
24da7525ba Jean*0201 DO j = 1,sNy
0202 DO i = 1,sNx
4bf6063982 Patr*0203 atemp(i,j,bi,bj) = atemp(i,j,bi,bj) + exf_offset_atemp
24da7525ba Jean*0204 ENDDO
0205 ENDDO
0206 ENDDO
0207 ENDDO
7f861c1808 Patr*0208
8a0f942cd7 Jean*0209
0210 CALL EXF_SET_FLD(
0211 I 'aqh', aqhfile, aqhmask,
d078fa0cf5 Jean*0212 I aqhStartTime, aqhperiod, aqhRepCycle,
8a0f942cd7 Jean*0213 I exf_inscal_aqh,
0214 I aqh_exfremo_intercept, aqh_exfremo_slope,
0215 U aqh, aqh0, aqh1,
981f32514d Dimi*0216 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0217 I aqh_lon0, aqh_lon_inc, aqh_lat0, aqh_lat_inc,
0218 I aqh_nlon, aqh_nlat, xC, yC, aqh_interpMethod,
981f32514d Dimi*0219 #endif
8a0f942cd7 Jean*0220 I myTime, myIter, myThid )
7f861c1808 Patr*0221
c994dbe735 Jean*0222 # ifdef ALLOW_READ_TURBFLUXES
0223
8a0f942cd7 Jean*0224
0225 CALL EXF_SET_FLD(
0226 I 'hs', hs_file, hs_mask,
d078fa0cf5 Jean*0227 I hs_StartTime, hs_period, hs_RepCycle,
8a0f942cd7 Jean*0228 I exf_inscal_hs,
0229 I hs_exfremo_intercept, hs_exfremo_slope,
0230 U hs, hs0, hs1,
c994dbe735 Jean*0231 # ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0232 I hs_lon0, hs_lon_inc, hs_lat0, hs_lat_inc,
0233 I hs_nlon, hs_nlat, xC, yC, hs_interpMethod,
c994dbe735 Jean*0234 # endif
8a0f942cd7 Jean*0235 I myTime, myIter, myThid )
0236
0237
0238 CALL EXF_SET_FLD(
0239 I 'hl', hl_file, hl_mask,
d078fa0cf5 Jean*0240 I hl_StartTime, hl_period, hl_RepCycle,
8a0f942cd7 Jean*0241 I exf_inscal_hl,
0242 I hl_exfremo_intercept, hl_exfremo_slope,
0243 U hl, hl0, hl1,
c994dbe735 Jean*0244 # ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0245 I hl_lon0, hl_lon_inc, hl_lat0, hl_lat_inc,
0246 I hl_nlon, hl_nlat, xC, yC, hl_interpMethod,
c994dbe735 Jean*0247 # endif
8a0f942cd7 Jean*0248 I myTime, myIter, myThid )
c994dbe735 Jean*0249
0250 # endif /* ALLOW_READ_TURBFLUXES */
0251
8a0f942cd7 Jean*0252
0253 CALL EXF_SET_FLD(
0254 I 'lwflux', lwfluxfile, lwfluxmask,
d078fa0cf5 Jean*0255 I lwfluxStartTime, lwfluxperiod, lwfluxRepCycle,
8a0f942cd7 Jean*0256 I exf_inscal_lwflux,
0257 I lwflux_exfremo_intercept, lwflux_exfremo_slope,
0258 U lwflux, lwflux0, lwflux1,
981f32514d Dimi*0259 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0260 I lwflux_lon0, lwflux_lon_inc, lwflux_lat0, lwflux_lat_inc,
0261 I lwflux_nlon, lwflux_nlat, xC, yC, lwflux_interpMethod,
981f32514d Dimi*0262 #endif
8a0f942cd7 Jean*0263 I myTime, myIter, myThid )
87681ef93a Patr*0264
26f6b8243e Jean*0265 #ifdef EXF_READ_EVAP
8a0f942cd7 Jean*0266
0267 CALL EXF_SET_FLD(
0268 I 'evap', evapfile, evapmask,
d078fa0cf5 Jean*0269 I evapStartTime, evapperiod, evapRepCycle,
8a0f942cd7 Jean*0270 I exf_inscal_evap,
0271 I evap_exfremo_intercept, evap_exfremo_slope,
0272 U evap, evap0, evap1,
26f6b8243e Jean*0273 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0274 I evap_lon0, evap_lon_inc, evap_lat0, evap_lat_inc,
0275 I evap_nlon, evap_nlat, xC, yC, evap_interpMethod,
26f6b8243e Jean*0276 #endif
8a0f942cd7 Jean*0277 I myTime, myIter, myThid )
26f6b8243e Jean*0278 #endif /* EXF_READ_EVAP */
0279
8a0f942cd7 Jean*0280
0281 CALL EXF_SET_FLD(
0282 I 'precip', precipfile, precipmask,
d078fa0cf5 Jean*0283 I precipStartTime, precipperiod, precipRepCycle,
8a0f942cd7 Jean*0284 I exf_inscal_precip,
0285 I precip_exfremo_intercept, precip_exfremo_slope,
0286 U precip, precip0, precip1,
981f32514d Dimi*0287 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0288 I precip_lon0, precip_lon_inc, precip_lat0, precip_lat_inc,
0289 I precip_nlon, precip_nlat, xC, yC, precip_interpMethod,
981f32514d Dimi*0290 #endif
8a0f942cd7 Jean*0291 I myTime, myIter, myThid )
0292
0293
0294 CALL EXF_SET_FLD(
0295 I 'snowprecip', snowprecipfile, snowprecipmask,
d078fa0cf5 Jean*0296 I snowprecipStartTime, snowprecipperiod, snowprecipRepCycle,
8a0f942cd7 Jean*0297 I exf_inscal_snowprecip,
0298 I snowprecip_exfremo_intercept, snowprecip_exfremo_slope,
0299 U snowprecip, snowprecip0, snowprecip1,
3752238fd8 Patr*0300 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0301 I snowprecip_lon0, snowprecip_lon_inc,
0302 I snowprecip_lat0, snowprecip_lat_inc,
0303 I snowprecip_nlon, snowprecip_nlat, xC, yC,
0304 I snowprecip_interpMethod,
3752238fd8 Patr*0305 #endif
8a0f942cd7 Jean*0306 I myTime, myIter, myThid )
24da7525ba Jean*0307
9c41af81f6 Timo*0308 #ifdef ALLOW_AUTODIFF_TAMC
0309 # ifdef ALLOW_ATM_TEMP
0310
0311
0312 # endif
0313 #endif
12e7259f06 Dimi*0314 IF ( snowPrecipFile .NE. ' ' ) THEN
24da7525ba Jean*0315 DO bj = myByLo(myThid),myByHi(myThid)
edf9251fd4 Jean*0316 DO bi = myBxLo(myThid),myBxHi(myThid)
24da7525ba Jean*0317 DO j = 1,sNy
0318 DO i = 1,sNx
12e7259f06 Dimi*0319 precip(i,j,bi,bj) =
8a0f942cd7 Jean*0320 & MAX( precip(i,j,bi,bj), snowPrecip(i,j,bi,bj) )
24da7525ba Jean*0321 ENDDO
0322 ENDDO
0323 ENDDO
0324 ENDDO
12e7259f06 Dimi*0325 ENDIF
3752238fd8 Patr*0326
9918f74dda Dimi*0327 #endif /* ALLOW_ATM_TEMP */
7f861c1808 Patr*0328
6060ec2938 Dimi*0329 #if defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING)
8a0f942cd7 Jean*0330
0331 CALL EXF_SET_FLD(
0332 I 'swflux', swfluxfile, swfluxmask,
d078fa0cf5 Jean*0333 I swfluxStartTime, swfluxperiod, swfluxRepCycle,
8a0f942cd7 Jean*0334 I exf_inscal_swflux,
0335 I swflux_exfremo_intercept, swflux_exfremo_slope,
0336 U swflux, swflux0, swflux1,
981f32514d Dimi*0337 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0338 I swflux_lon0, swflux_lon_inc, swflux_lat0, swflux_lat_inc,
0339 I swflux_nlon, swflux_nlat, xC, yC, swflux_interpMethod,
981f32514d Dimi*0340 #endif
8a0f942cd7 Jean*0341 I myTime, myIter, myThid )
87681ef93a Patr*0342 #endif
7f861c1808 Patr*0343
6060ec2938 Dimi*0344 #ifdef ALLOW_DOWNWARD_RADIATION
0345
8a0f942cd7 Jean*0346
0347 CALL EXF_SET_FLD(
0348 I 'swdown', swdownfile, swdownmask,
d078fa0cf5 Jean*0349 I swdownStartTime, swdownperiod, swdownRepCycle,
8a0f942cd7 Jean*0350 I exf_inscal_swdown,
0351 I swdown_exfremo_intercept, swdown_exfremo_slope,
0352 U swdown, swdown0, swdown1,
981f32514d Dimi*0353 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0354 I swdown_lon0, swdown_lon_inc, swdown_lat0, swdown_lat_inc,
0355 I swdown_nlon, swdown_nlat, xC, yC, swdown_interpMethod,
981f32514d Dimi*0356 #endif
8a0f942cd7 Jean*0357 I myTime, myIter, myThid )
0358
0359
0360 CALL EXF_SET_FLD(
0361 I 'lwdown', lwdownfile, lwdownmask,
d078fa0cf5 Jean*0362 I lwdownStartTime, lwdownperiod, lwdownRepCycle,
8a0f942cd7 Jean*0363 I exf_inscal_lwdown,
0364 I lwdown_exfremo_intercept, lwdown_exfremo_slope,
0365 U lwdown, lwdown0, lwdown1,
981f32514d Dimi*0366 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0367 I lwdown_lon0, lwdown_lon_inc, lwdown_lat0, lwdown_lat_inc,
0368 I lwdown_nlon, lwdown_nlat, xC, yC, lwdown_interpMethod,
981f32514d Dimi*0369 #endif
8a0f942cd7 Jean*0370 I myTime, myIter, myThid )
6060ec2938 Dimi*0371
c994dbe735 Jean*0372 #endif /* ALLOW_DOWNWARD_RADIATION */
6060ec2938 Dimi*0373
bf75ed79ba Patr*0374 #ifdef ATMOSPHERIC_LOADING
8a0f942cd7 Jean*0375
0376 CALL EXF_SET_FLD(
0377 I 'apressure', apressurefile, apressuremask,
d078fa0cf5 Jean*0378 I apressureStartTime, apressureperiod, apressureRepCycle,
8a0f942cd7 Jean*0379 I exf_inscal_apressure,
0380 I apressure_exfremo_intercept, apressure_exfremo_slope,
0381 U apressure, apressure0, apressure1,
981f32514d Dimi*0382 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0383 I apressure_lon0, apressure_lon_inc,
0384 I apressure_lat0, apressure_lat_inc,
0385 I apressure_nlon,apressure_nlat,xC,yC, apressure_interpMethod,
981f32514d Dimi*0386 #endif
8a0f942cd7 Jean*0387 I myTime, myIter, myThid )
190e1777cb Dimi*0388 #endif
0389
497d85062c Jean*0390 #ifdef EXF_ALLOW_TIDES
0391
0392 CALL EXF_SET_FLD(
0393 I 'tidePot', tidePotFile, tidePotMask,
0394 I tidePotStartTime, tidePotPeriod, tidePotRepCycle,
0395 I exf_inscal_tidePot,
0396 I tidePot_exfremo_intercept, tidePot_exfremo_slope,
0397 U tidePot, tidePot0, tidePot1,
0398 #ifdef USE_EXF_INTERPOLATION
0399 I tidePot_lon0, tidePot_lon_inc,
0400 I tidePot_lat0, tidePot_lat_inc,
0401 I tidePot_nlon, tidePot_nlat, xC, yC, tidePot_interpMethod,
0402 #endif
0403 I myTime, myIter, myThid )
0404 #endif /* EXF_ALLOW_TIDES */
0405
24da7525ba Jean*0406 #ifdef EXF_SEAICE_FRACTION
8a0f942cd7 Jean*0407
0408 CALL EXF_SET_FLD(
0409 I 'areamask', areamaskfile, areamaskmask,
d078fa0cf5 Jean*0410 I areamaskStartTime, areamaskperiod, areamaskRepCycle,
8a0f942cd7 Jean*0411 I exf_inscal_areamask,
0412 I areamask_exfremo_intercept, areamask_exfremo_slope,
0413 U areamask, areamask0, areamask1,
8f277f2728 Gael*0414 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0415 I areamask_lon0, areamask_lon_inc,
0416 I areamask_lat0, areamask_lat_inc,
0417 I areamask_nlon, areamask_nlat, xC, yC, areamask_interpMethod,
8f277f2728 Gael*0418 #endif
8a0f942cd7 Jean*0419 I myTime, myIter, myThid )
8f277f2728 Gael*0420 #endif
0421
a0e99e946e Jean*0422 #ifdef ALLOW_RUNOFF
8a0f942cd7 Jean*0423
0424 CALL EXF_SET_FLD(
0425 I 'runoff', runofffile, runoffmask,
d078fa0cf5 Jean*0426 I runoffStartTime, runoffperiod, runoffRepCycle,
8a0f942cd7 Jean*0427 I exf_inscal_runoff,
0428 I runoff_exfremo_intercept, runoff_exfremo_slope,
0429 U runoff, runoff0, runoff1,
58d34f56b6 Dimi*0430 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0431 I runoff_lon0, runoff_lon_inc, runoff_lat0, runoff_lat_inc,
0432 I runoff_nlon, runoff_nlat, xC, yC, runoff_interpMethod,
58d34f56b6 Dimi*0433 #endif
8a0f942cd7 Jean*0434 I myTime, myIter, myThid )
4aa4270510 Jean*0435 #endif /* ALLOW_RUNOFF */
58d34f56b6 Dimi*0436
e603dbf008 Dimi*0437 #ifdef ALLOW_RUNOFTEMP
8a0f942cd7 Jean*0438
0439 CALL EXF_SET_FLD(
0440 I 'runoftemp', runoftempfile, runoffmask,
d078fa0cf5 Jean*0441 I runoffStartTime, runoffperiod, runoffRepCycle,
8a0f942cd7 Jean*0442 I exf_inscal_runoftemp,
0443 I runoftemp_exfremo_intercept, runoftemp_exfremo_slope,
0444 U runoftemp, runoftemp0, runoftemp1,
e603dbf008 Dimi*0445 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0446 I runoff_lon0, runoff_lon_inc, runoff_lat0, runoff_lat_inc,
0447 I runoff_nlon, runoff_nlat, xC, yC, runoff_interpMethod,
e603dbf008 Dimi*0448 #endif
8a0f942cd7 Jean*0449 I myTime, myIter, myThid )
e603dbf008 Dimi*0450 #endif /* ALLOW_RUNOFTEMP */
0451
a66aad0124 Gael*0452 #ifdef ALLOW_SALTFLX
8a0f942cd7 Jean*0453
0454 CALL EXF_SET_FLD(
0455 I 'saltflx', saltflxfile, saltflxmask,
d078fa0cf5 Jean*0456 I saltflxStartTime, saltflxperiod, saltflxRepCycle,
8a0f942cd7 Jean*0457 I exf_inscal_saltflx,
0458 I saltflx_exfremo_intercept, saltflx_exfremo_slope,
0459 U saltflx, saltflx0, saltflx1,
a66aad0124 Gael*0460 #ifdef USE_EXF_INTERPOLATION
8a0f942cd7 Jean*0461 I saltflx_lon0, saltflx_lon_inc,
0462 I saltflx_lat0, saltflx_lat_inc,
0463 I saltflx_nlon, saltflx_nlat, xC, yC, saltflx_interpMethod,
a66aad0124 Gael*0464 #endif
8a0f942cd7 Jean*0465 I myTime, myIter, myThid )
a66aad0124 Gael*0466 #endif
0467
bd42b44f7b Gael*0468 #ifdef ALLOW_ROTATE_UV_CONTROLS
c994dbe735 Jean*0469 IF ( useCTRL ) THEN
bd42b44f7b Gael*0470 DO bj = myByLo(myThid),myByHi(myThid)
edf9251fd4 Jean*0471 DO bi = myBxLo(myThid),myBxHi(myThid)
bd42b44f7b Gael*0472 DO j = 1-OLy,sNy+OLy
0473 DO i = 1-OLx,sNx+OLx
0474 tmpUE(i,j,bi,bj) = 0. _d 0
0475 tmpVN(i,j,bi,bj) = 0. _d 0
0476 tmpUX(i,j,bi,bj) = 0. _d 0
0477 tmpVY(i,j,bi,bj) = 0. _d 0
0478 ENDDO
0479 ENDDO
0480 ENDDO
0481 ENDDO
c994dbe735 Jean*0482 ENDIF
bd42b44f7b Gael*0483 #endif
0484
b533b6175f Gael*0485 #if (defined (ALLOW_CTRL) && defined (ALLOW_GENTIM2D_CONTROL))
cf705a6c8e Mart*0486 IF ( useCTRL ) THEN
c994dbe735 Jean*0487 DO bj = myByLo(myThid),myByHi(myThid)
edf9251fd4 Jean*0488 DO bi = myBxLo(myThid),myBxHi(myThid)
5815be8c7f Gael*0489 DO j = 1,sNy
0490 DO i = 1,sNx
c994dbe735 Jean*0491 DO iarr = 1, maxCtrlTim2D
b939965590 Gael*0492 #ifdef ALLOW_ATM_TEMP
c994dbe735 Jean*0493 IF (xx_gentim2d_file(iarr)(1:8).EQ.'xx_atemp')
5815be8c7f Gael*0494 & atemp(i,j,bi,bj)=atemp(i,j,bi,bj)+
0495 & xx_gentim2d(i,j,bi,bj,iarr)
c994dbe735 Jean*0496 IF (xx_gentim2d_file(iarr)(1:6).EQ.'xx_aqh')
5815be8c7f Gael*0497 & aqh(i,j,bi,bj)=aqh(i,j,bi,bj)+
0498 & xx_gentim2d(i,j,bi,bj,iarr)
c994dbe735 Jean*0499 IF (xx_gentim2d_file(iarr)(1:9).EQ.'xx_precip')
b939965590 Gael*0500 & precip(i,j,bi,bj)=precip(i,j,bi,bj)+
0501 & xx_gentim2d(i,j,bi,bj,iarr)
11c3150c71 Mart*0502 IF (xx_gentim2d_file(iarr)(1:13).EQ.'xx_snowprecip')
0503 & snowprecip(i,j,bi,bj)=snowprecip(i,j,bi,bj)+
0504 & xx_gentim2d(i,j,bi,bj,iarr)
c994dbe735 Jean*0505 IF (xx_gentim2d_file(iarr)(1:9).EQ.'xx_lwflux')
2ee8c2c785 Gael*0506 & lwflux(i,j,bi,bj)=lwflux(i,j,bi,bj)+
0507 & xx_gentim2d(i,j,bi,bj,iarr)
0508 #endif
0509 #if defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING)
c994dbe735 Jean*0510 IF (xx_gentim2d_file(iarr)(1:9).EQ.'xx_swflux')
2ee8c2c785 Gael*0511 & swflux(i,j,bi,bj)=swflux(i,j,bi,bj)+
0512 & xx_gentim2d(i,j,bi,bj,iarr)
b939965590 Gael*0513 #endif
0514 #ifdef ALLOW_DOWNWARD_RADIATION
c994dbe735 Jean*0515 IF (xx_gentim2d_file(iarr)(1:9).EQ.'xx_swdown')
5815be8c7f Gael*0516 & swdown(i,j,bi,bj)=swdown(i,j,bi,bj)+
0517 & xx_gentim2d(i,j,bi,bj,iarr)
c994dbe735 Jean*0518 IF (xx_gentim2d_file(iarr)(1:9).EQ.'xx_lwdown')
5815be8c7f Gael*0519 & lwdown(i,j,bi,bj)=lwdown(i,j,bi,bj)+
0520 & xx_gentim2d(i,j,bi,bj,iarr)
b939965590 Gael*0521 #endif
2ee8c2c785 Gael*0522 #ifdef ALLOW_RUNOFF
c994dbe735 Jean*0523 IF (xx_gentim2d_file(iarr)(1:9).EQ.'xx_runoff')
5d131af478 An T*0524 & runoff(i,j,bi,bj)=runoff(i,j,bi,bj)+
0525 & xx_gentim2d(i,j,bi,bj,iarr)
2ee8c2c785 Gael*0526 #endif
0527 #ifdef EXF_READ_EVAP
c994dbe735 Jean*0528 IF (xx_gentim2d_file(iarr)(1:7).EQ.'xx_evap')
2ee8c2c785 Gael*0529 & evap(i,j,bi,bj)=evap(i,j,bi,bj)+
0530 & xx_gentim2d(i,j,bi,bj,iarr)
0531 #endif
0532 #ifdef ATMOSPHERIC_LOADING
c994dbe735 Jean*0533 IF (xx_gentim2d_file(iarr)(1:12).EQ.'xx_apressure')
2ee8c2c785 Gael*0534 & apressure(i,j,bi,bj)=apressure(i,j,bi,bj)+
0535 & xx_gentim2d(i,j,bi,bj,iarr)
0536 #endif
0537 #ifdef EXF_SEAICE_FRACTION
c994dbe735 Jean*0538 IF (xx_gentim2d_file(iarr)(1:11).EQ.'xx_areamask')
2ee8c2c785 Gael*0539 & areamask(i,j,bi,bj)=areamask(i,j,bi,bj)+
0540 & xx_gentim2d(i,j,bi,bj,iarr)
0541 #endif
bd42b44f7b Gael*0542 #ifndef ALLOW_ROTATE_UV_CONTROLS
c994dbe735 Jean*0543 IF (xx_gentim2d_file(iarr)(1:8).EQ.'xx_uwind')
bd42b44f7b Gael*0544 & uwind(i,j,bi,bj)=uwind(i,j,bi,bj)+
0545 & xx_gentim2d(i,j,bi,bj,iarr)
c994dbe735 Jean*0546 IF (xx_gentim2d_file(iarr)(1:8).EQ.'xx_vwind')
bd42b44f7b Gael*0547 & vwind(i,j,bi,bj)=vwind(i,j,bi,bj)+
0548 & xx_gentim2d(i,j,bi,bj,iarr)
0549 #else
c994dbe735 Jean*0550 IF (xx_gentim2d_file(iarr)(1:8).EQ.'xx_uwind')
c4ea186aec Gael*0551 & tmpUE(i,j,bi,bj)=tmpUE(i,j,bi,bj)+
bd42b44f7b Gael*0552 & xx_gentim2d(i,j,bi,bj,iarr)
c994dbe735 Jean*0553 IF (xx_gentim2d_file(iarr)(1:8).EQ.'xx_vwind')
c4ea186aec Gael*0554 & tmpVN(i,j,bi,bj)=tmpVN(i,j,bi,bj)+
bd42b44f7b Gael*0555 & xx_gentim2d(i,j,bi,bj,iarr)
0556 #endif
c994dbe735 Jean*0557 ENDDO
5815be8c7f Gael*0558 ENDDO
0559 ENDDO
0560 ENDDO
c994dbe735 Jean*0561 ENDDO
bd42b44f7b Gael*0562 #ifdef ALLOW_ROTATE_UV_CONTROLS
c994dbe735 Jean*0563 CALL ROTATE_UV2EN_RL(tmpUX,tmpVY,tmpUE,tmpVN,
0564 & .FALSE.,.FALSE.,.TRUE.,1,myThid)
bd42b44f7b Gael*0565
0566 DO bj = myByLo(myThid),myByHi(myThid)
edf9251fd4 Jean*0567 DO bi = myBxLo(myThid),myBxHi(myThid)
bd42b44f7b Gael*0568 DO j = 1,sNy
0569 DO i = 1,sNx
0570 uwind(i,j,bi,bj)=uwind(i,j,bi,bj)+tmpUX(i,j,bi,bj)
0571 vwind(i,j,bi,bj)=vwind(i,j,bi,bj)+tmpVY(i,j,bi,bj)
0572 ENDDO
0573 ENDDO
0574 ENDDO
0575 ENDDO
0576 #endif /* ALLOW_ROTATE_UV_CONTROLS */
0577
cf705a6c8e Mart*0578 ENDIF
5815be8c7f Gael*0579 #endif
0580
4aa4270510 Jean*0581 RETURN
0582 END