File indexing completed on 2022-06-17 05:09:18 UTC
view on githubraw file Latest commit cc60455f on 2022-06-16 14:55:16 UTC
6d54cf9ca1 Ed H*0001 #include "EXF_OPTIONS.h"
7f861c1808 Patr*0002
bf658500ad Jean*0003
0004
0005
c1a736f29e Jean*0006
bf658500ad Jean*0007
0008
0009
ae89e2cad6 Jean*0010
0011
0012
7f861c1808 Patr*0013
d8ff7f7b41 Jean*0014 SUBROUTINE EXF_SUMMARY( myThid )
7f861c1808 Patr*0015
ae89e2cad6 Jean*0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
7f861c1808 Patr*0039
ae89e2cad6 Jean*0040
0041 IMPLICIT NONE
0042
0043
7f861c1808 Patr*0044 #include "EEPARAMS.h"
0045 #include "SIZE.h"
082e18c36c Jean*0046 #include "EXF_PARAM.h"
30fcb891cf Jean*0047 #include "EXF_CONSTANTS.h"
0048 #include "EXF_INTERP_SIZE.h"
0049 #include "EXF_INTERP_PARAM.h"
7f861c1808 Patr*0050
ae89e2cad6 Jean*0051
0052
0053 INTEGER myThid
7f861c1808 Patr*0054
ae89e2cad6 Jean*0055
cbf501ab81 Jean*0056 #ifdef ALLOW_RUNOFTEMP
ae89e2cad6 Jean*0057 INTEGER ILNBLNK
0058 EXTERNAL ILNBLNK
cbf501ab81 Jean*0059 INTEGER iL
0060 #endif
7f861c1808 Patr*0061
ae89e2cad6 Jean*0062
c1a736f29e Jean*0063 LOGICAL prtBlkLn, addBlkLn
ae89e2cad6 Jean*0064 CHARACTER*1 blkLin
0065 CHARACTER*(MAX_LEN_MBUF) msgBuf
0066
7f861c1808 Patr*0067
d8ff7f7b41 Jean*0068 _BEGIN_MASTER( myThid )
0069
ae89e2cad6 Jean*0070 blkLin = ' '
0071 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
26d3c6fc59 Jean*0072 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0073 WRITE(msgBuf,'(A)')
7f861c1808 Patr*0074 &'// ======================================================='
ae89e2cad6 Jean*0075 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0076 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0077 WRITE(msgBuf,'(A)')
bf658500ad Jean*0078 &'// External forcing (EXF) configuration >>> START <<<'
ae89e2cad6 Jean*0079 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0080 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0081 WRITE(msgBuf,'(A)')
7f861c1808 Patr*0082 &'// ======================================================='
ae89e2cad6 Jean*0083 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0084 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0085 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
26d3c6fc59 Jean*0086 & SQUEEZE_RIGHT, myThid )
d8ff7f7b41 Jean*0087
0088
0089 WRITE(msgBuf,'(A)') ' EXF general parameters:'
0090 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0091 & SQUEEZE_RIGHT , myThid )
0092 WRITE(msgBuf,'(A)') ' '
0093 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0094 & SQUEEZE_RIGHT , myThid )
0095 CALL WRITE_0D_I( exf_iprec, INDEX_NONE, 'exf_iprec =',
0096 & ' /* exf file precision */')
0097 CALL WRITE_0D_L( useExfYearlyFields, INDEX_NONE,
0098 & 'useExfYearlyFields =',
0099 & ' /* add extension _YEAR to input file names */')
0100 CALL WRITE_0D_L( twoDigitYear, INDEX_NONE, 'twoDigitYear =',
0101 & ' /* use 2-digit year extension */')
0102 CALL WRITE_0D_L( useExfCheckRange, INDEX_NONE,
83b72232fc Jean*0103 & 'useExfCheckRange =', ' /* check for fields range */')
f593ce37b5 Jean*0104 #ifdef USE_EXF_INTERPOLATION
0105 CALL WRITE_0D_L( exf_output_interp, INDEX_NONE,
0106 & 'exf_output_interp =',
0107 & ' /* output directly interpolation result */')
0108 #endif
1ccd5d14b8 Jean*0109 CALL WRITE_0D_L( diags_opOceWeighted, INDEX_NONE,
0110 & 'diags_opOceWeighted =',
0111 & ' /* weight flux diags by open-ocean fraction */')
9f46642c85 Jean*0112 CALL WRITE_0D_I( exf_debugLev, INDEX_NONE, 'exf_debugLev =',
0113 & ' /* select EXF-debug printing level */')
0114 CALL WRITE_0D_RL( exf_monFreq, INDEX_NONE, 'exf_monFreq =',
d8ff7f7b41 Jean*0115 & ' /* EXF monitor frequency [ s ] */')
afd492c074 Mart*0116 CALL WRITE_0D_I( exf_adjMonSelect, INDEX_NONE,
0117 & 'exf_adjMonSelect =',
0118 & ' /* select group of exf AD-variables to monitor */')
4da4b49499 Jean*0119 CALL WRITE_0D_RL( repeatPeriod, INDEX_NONE, 'repeatPeriod =',
d8ff7f7b41 Jean*0120 & ' /* period for cycling forcing dataset [ s ] */')
4da4b49499 Jean*0121 CALL WRITE_0D_RL( climtempfreeze, INDEX_NONE,'climTempFreeze=',
d8ff7f7b41 Jean*0122 & ' /* Minimum climatological temperature [deg.C] */')
4da4b49499 Jean*0123 CALL WRITE_0D_RL( windStressMax, INDEX_NONE,'windStressMax =',
d8ff7f7b41 Jean*0124 & ' /* Maximum absolute windstress [ Pa ] */')
9c3e24f78c Jean*0125 CALL WRITE_0D_L( stressIsOnCgrid,INDEX_NONE,'stressIsOnCgrid =',
0126 & ' /* set u,v_stress on Arakawa C-grid */')
b605ec230f Gael*0127 CALL WRITE_0D_L( rotateStressOnAgrid,INDEX_NONE,
0128 & 'rotateStressOnAgrid =',
0129 & ' /* rotate u,v_stress on Arakawa A-grid */')
4da4b49499 Jean*0130 CALL WRITE_0D_RL( cen2kel, INDEX_NONE, 'cen2kel =',
d7b4f7c409 Jean*0131 & ' /* conversion of deg. Centigrade to Kelvin [K] */')
4da4b49499 Jean*0132 CALL WRITE_0D_RL( gravity_mks, INDEX_NONE, 'gravity_mks=',
d7b4f7c409 Jean*0133 & ' /* gravitational acceleration [m/s^2] */')
4da4b49499 Jean*0134 CALL WRITE_0D_RL( atmrho, INDEX_NONE, 'atmrho =',
d8ff7f7b41 Jean*0135 & ' /* mean atmospheric density [kg/m^3] */')
4da4b49499 Jean*0136 CALL WRITE_0D_RL( atmcp, INDEX_NONE, 'atmcp =',
d8ff7f7b41 Jean*0137 & ' /* mean atmospheric specific heat [J/kg/K] */')
4da4b49499 Jean*0138 CALL WRITE_0D_RL( flamb, INDEX_NONE, 'flamb =',
d8ff7f7b41 Jean*0139 & ' /* latent heat of evaporation [J/kg] */')
4da4b49499 Jean*0140 CALL WRITE_0D_RL( flami, INDEX_NONE, 'flami =',
d8ff7f7b41 Jean*0141 & ' /* latent heat of pure-ice melting [J/kg] */')
4da4b49499 Jean*0142 CALL WRITE_0D_RL( cvapor_fac, INDEX_NONE, 'cvapor_fac =',
d8ff7f7b41 Jean*0143 & ' /* const. for Saturation calculation [?] */')
4da4b49499 Jean*0144 CALL WRITE_0D_RL( cvapor_exp, INDEX_NONE, 'cvapor_exp =',
d8ff7f7b41 Jean*0145 & ' /* const. for Saturation calculation [?] */')
4da4b49499 Jean*0146 CALL WRITE_0D_RL( cvapor_fac_ice, INDEX_NONE, 'cvapor_fac_ice=',
d8ff7f7b41 Jean*0147 & ' /* const. for Saturation calculation [?] */')
4da4b49499 Jean*0148 CALL WRITE_0D_RL( cvapor_exp_ice, INDEX_NONE, 'cvapor_exp_ice=',
d8ff7f7b41 Jean*0149 & ' /* const. for Saturation calculation [?] */')
4da4b49499 Jean*0150 CALL WRITE_0D_RL( humid_fac, INDEX_NONE, 'humid_fac =',
d8ff7f7b41 Jean*0151 & ' /* humidity coef. in virtual temp. [(kg/kg)^-1] */')
4da4b49499 Jean*0152 CALL WRITE_0D_RL( gamma_blk, INDEX_NONE, 'gamma_blk =',
d8ff7f7b41 Jean*0153 & ' /* adiabatic lapse rate [?] */')
4da4b49499 Jean*0154 CALL WRITE_0D_RL( saltsat, INDEX_NONE, 'saltsat =',
d8ff7f7b41 Jean*0155 & ' /* reduction of Qsat over salty water [-] */')
ec1f56ea0e Jean*0156 CALL WRITE_0D_L( noNegativeEvap,INDEX_NONE,'noNegativeEvap =',
0157 & ' /* prevent negative Evaporation */')
4da4b49499 Jean*0158 CALL WRITE_0D_RL( sstExtrapol, INDEX_NONE, 'sstExtrapol =',
ec1f56ea0e Jean*0159 & ' /* extrapolation coeff from lev. 1 & 2 to surf [-] */')
4da4b49499 Jean*0160 CALL WRITE_0D_RL( cdrag_1, INDEX_NONE, 'cDrag_1 =',
cc60455fbb Mart*0161 & ' /* coef used in drag calculation [m/s] */')
4da4b49499 Jean*0162 CALL WRITE_0D_RL( cdrag_2, INDEX_NONE, 'cDrag_2 =',
cc60455fbb Mart*0163 & ' /* coef used in drag calculation [-] */')
4da4b49499 Jean*0164 CALL WRITE_0D_RL( cdrag_3, INDEX_NONE, 'cDrag_3 =',
cc60455fbb Mart*0165 & ' /* coef used in drag calculation [s/m] */')
0166 CALL WRITE_0D_RL( cdrag_8, INDEX_NONE, 'cDrag_8 =',
0167 & ' /* coef used in drag calculation [(s/m)^6] */')
0168 CALL WRITE_0D_RL( cdragMax, INDEX_NONE, 'cDragMax =',
0169 & ' /* maximum drag (Large and Yeager, 2009) [-] */')
0170 CALL WRITE_0D_RL( umax, INDEX_NONE, 'umax =',
0171 & ' /* at maximum wind (Large and Yeager, 2009) [m/s] */')
4da4b49499 Jean*0172 CALL WRITE_0D_RL( cstanton_1, INDEX_NONE, 'cStanton_1 =',
cc60455fbb Mart*0173 & ' /* coef used in Stanton number calculation [-] */')
4da4b49499 Jean*0174 CALL WRITE_0D_RL( cstanton_2, INDEX_NONE, 'cStanton_2 =',
cc60455fbb Mart*0175 & ' /* coef used in Stanton number calculation [-] */')
4da4b49499 Jean*0176 CALL WRITE_0D_RL( cdalton, INDEX_NONE, 'cDalton =',
cc60455fbb Mart*0177 & ' /* Dalton number [-] */')
4da4b49499 Jean*0178 CALL WRITE_0D_RL( exf_scal_BulkCdn, INDEX_NONE,
d8ff7f7b41 Jean*0179 & 'exf_scal_BulkCdn=',
0180 & ' /* Drag coefficient scaling factor [-] */')
4da4b49499 Jean*0181 CALL WRITE_0D_RL( zolmin, INDEX_NONE, 'zolmin =',
d8ff7f7b41 Jean*0182 & ' /* minimum stability parameter [?] */')
4da4b49499 Jean*0183 CALL WRITE_0D_RL( psim_fac, INDEX_NONE, 'psim_fac =',
d7b4f7c409 Jean*0184 & ' /* coef used in turbulent fluxes calculation [-] */')
4da4b49499 Jean*0185 CALL WRITE_0D_RL( zref, INDEX_NONE, 'zref =',
d8ff7f7b41 Jean*0186 & ' /* reference height [ m ] */')
4da4b49499 Jean*0187 CALL WRITE_0D_RL( hu, INDEX_NONE, 'hu =',
d8ff7f7b41 Jean*0188 & ' /* height of mean wind [ m ] */')
4da4b49499 Jean*0189 CALL WRITE_0D_RL( ht, INDEX_NONE, 'ht =',
d8ff7f7b41 Jean*0190 & ' /* height of mean temperature [ m ] */')
4da4b49499 Jean*0191 CALL WRITE_0D_RL( hq, INDEX_NONE, 'hq =',
d8ff7f7b41 Jean*0192 & ' /* height of mean spec.humidity [ m ] */')
4da4b49499 Jean*0193 CALL WRITE_0D_RL( umin, INDEX_NONE, 'uMin =',
d8ff7f7b41 Jean*0194 & ' /* minimum wind speed [m/s] */')
d7b4f7c409 Jean*0195 CALL WRITE_0D_L( useStabilityFct_overIce, INDEX_NONE,
0196 & 'useStabilityFct_overIce=',
0197 & ' /* transfert Coeffs over sea-ice depend on stability */')
4da4b49499 Jean*0198 CALL WRITE_0D_RL( exf_iceCd, INDEX_NONE, 'exf_iceCd =',
d7b4f7c409 Jean*0199 & ' /* drag coefficient over sea-ice (fixed) [-] */')
4da4b49499 Jean*0200 CALL WRITE_0D_RL( exf_iceCe, INDEX_NONE, 'exf_iceCe =',
d7b4f7c409 Jean*0201 & ' /* transfert coeff. over sea-ice, for Evap (fixed) [-] */')
4da4b49499 Jean*0202 CALL WRITE_0D_RL( exf_iceCh, INDEX_NONE, 'exf_iceCh =',
d7b4f7c409 Jean*0203 & ' /* transfert coeff. over sea-ice, Sens.Heat.(fixed)[-] */')
4da4b49499 Jean*0204 CALL WRITE_0D_RL( exf_albedo, INDEX_NONE, 'exf_albedo =',
d7b4f7c409 Jean*0205 & ' /* Sea-water albedo [-] */')
d106b5e2d8 Gael*0206 CALL WRITE_0D_L( useExfZenAlbedo, INDEX_NONE, 'useExfZenAlbedo =',
83b72232fc Jean*0207 & ' /* Sea-water albedo varies with zenith angle */')
f71b2ceff6 Gael*0208 CALL WRITE_0D_I( select_ZenAlbedo,INDEX_NONE,'select_ZenAlbedo =',
0209 & ' /* Sea-water albedo computation method */')
d106b5e2d8 Gael*0210 CALL WRITE_0D_L( useExfZenIncoming, INDEX_NONE,
83b72232fc Jean*0211 & 'useExfZenIncoming =',' /* compute incoming solar radiation */')
4da4b49499 Jean*0212 CALL WRITE_0D_RL( ocean_emissivity, INDEX_NONE,
d7b4f7c409 Jean*0213 & 'ocean_emissivity =',
0214 & ' /* longwave ocean-surface emissivity [-] */')
4da4b49499 Jean*0215 CALL WRITE_0D_RL( ice_emissivity, INDEX_NONE,'ice_emissivity =',
d7b4f7c409 Jean*0216 & ' /* longwave seaice emissivity [-] */')
4da4b49499 Jean*0217 CALL WRITE_0D_RL(snow_emissivity, INDEX_NONE,'snow_emissivity =',
d7b4f7c409 Jean*0218 & ' /* longwave snow emissivity [-] */')
ae89e2cad6 Jean*0219 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
d8ff7f7b41 Jean*0220 & SQUEEZE_RIGHT , myThid )
0221
0222
0223
0224 WRITE(msgBuf,'(A)') ' EXF main CPP flags:'
0225 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0226 & SQUEEZE_RIGHT , myThid )
ae89e2cad6 Jean*0227 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
d8ff7f7b41 Jean*0228 & SQUEEZE_RIGHT , myThid )
7f861c1808 Patr*0229
bf658500ad Jean*0230 #ifdef USE_EXF_INTERPOLATION
0231 WRITE(msgBuf,'(A)')
0232 &'// USE_EXF_INTERPOLATION: defined'
0233 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0234 & SQUEEZE_RIGHT , myThid)
0235 #else
0236 WRITE(msgBuf,'(A)')
0237 &'// USE_EXF_INTERPOLATION: NOT defined'
0238 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0239 & SQUEEZE_RIGHT , myThid)
0240 #endif
0241
7f861c1808 Patr*0242 #ifdef ALLOW_ATM_TEMP
ae89e2cad6 Jean*0243 WRITE(msgBuf,'(A)')
cee16b76ae Dimi*0244 &'// ALLOW_ATM_TEMP: defined'
ae89e2cad6 Jean*0245 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0246 & SQUEEZE_RIGHT, myThid )
7f861c1808 Patr*0247 #else
ae89e2cad6 Jean*0248 WRITE(msgBuf,'(A)')
cee16b76ae Dimi*0249 &'// ALLOW_ATM_TEMP: NOT defined'
ae89e2cad6 Jean*0250 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0251 & SQUEEZE_RIGHT, myThid )
7f861c1808 Patr*0252 #endif
6060ec2938 Dimi*0253
358649780a Gael*0254 IF ( useAtmWind ) THEN
ae89e2cad6 Jean*0255 WRITE(msgBuf,'(A)')
358649780a Gael*0256 &'// ALLOW_ATM_WIND (useAtmWind): defined'
ae89e2cad6 Jean*0257 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0258 & SQUEEZE_RIGHT, myThid )
358649780a Gael*0259 ELSE
ae89e2cad6 Jean*0260 WRITE(msgBuf,'(A)')
358649780a Gael*0261 &'// ALLOW_ATM_WIND (useAtmWind): NOT defined'
ae89e2cad6 Jean*0262 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0263 & SQUEEZE_RIGHT, myThid )
358649780a Gael*0264 ENDIF
6060ec2938 Dimi*0265
0266 #ifdef ALLOW_DOWNWARD_RADIATION
ae89e2cad6 Jean*0267 WRITE(msgBuf,'(A)')
6060ec2938 Dimi*0268 &'// ALLOW_DOWNWARD_RADIATION: defined'
ae89e2cad6 Jean*0269 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0270 & SQUEEZE_RIGHT, myThid )
7f861c1808 Patr*0271 #else
ae89e2cad6 Jean*0272 WRITE(msgBuf,'(A)')
190e1777cb Dimi*0273 &'// ALLOW_DOWNWARD_RADIATION: NOT defined'
ae89e2cad6 Jean*0274 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0275 & SQUEEZE_RIGHT, myThid )
7f861c1808 Patr*0276 #endif
0277
6060ec2938 Dimi*0278 #ifdef ALLOW_BULKFORMULAE
ae89e2cad6 Jean*0279 WRITE(msgBuf,'(A)')
6060ec2938 Dimi*0280 &'// ALLOW_BULKFORMULAE: defined'
ae89e2cad6 Jean*0281 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0282 & SQUEEZE_RIGHT, myThid )
7f861c1808 Patr*0283 #else
ae89e2cad6 Jean*0284 WRITE(msgBuf,'(A)')
6060ec2938 Dimi*0285 &'// ALLOW_BULKFORMULAE: NOT defined'
ae89e2cad6 Jean*0286 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0287 & SQUEEZE_RIGHT, myThid )
7f861c1808 Patr*0288 #endif
0289
d8ff7f7b41 Jean*0290
0291
0292
0293
ae89e2cad6 Jean*0294 prtBlkLn = .FALSE.
c1a736f29e Jean*0295 addBlkLn = .TRUE.
cee16b76ae Dimi*0296
d8ff7f7b41 Jean*0297
ae89e2cad6 Jean*0298 IF ( .NOT.useAtmWind .AND. ustressfile.NE.' ' ) THEN
c1a736f29e Jean*0299 CALL EXF_FLD_SUMMARY( 'Zonal wind stress forcing',
0300 I ustressfile, ustressRepCycle, ustressperiod,
0301 I ustressStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0302 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0303 CALL EXF_PRINT_INTERP( 'ustress',
0304 & ustress_lon0, ustress_lon_inc, ustress_lat0, ustress_lat_inc,
0305 & ustress_nlon, ustress_nlat, ustress_interpMethod, myThid )
bf658500ad Jean*0306 #endif
ae89e2cad6 Jean*0307 prtBlkLn = .TRUE.
0308 ENDIF
a8fd6c497b Patr*0309
d8ff7f7b41 Jean*0310
ae89e2cad6 Jean*0311 IF ( .NOT.useAtmWind .AND. vstressfile.NE.' ' ) THEN
c1a736f29e Jean*0312 CALL EXF_FLD_SUMMARY( 'Meridional wind stress forcing',
0313 I vstressfile, vstressRepCycle, vstressperiod,
0314 I vstressStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0315 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0316 CALL EXF_PRINT_INTERP( 'vstress',
0317 & vstress_lon0, vstress_lon_inc, vstress_lat0, vstress_lat_inc,
0318 & vstress_nlon, vstress_nlat, vstress_interpMethod, myThid )
0319 WRITE(msgBuf,'(2A,L5)') ' Interp. U & V comp. together:',
0320 & ' uvInterp_stress =', uvInterp_stress
0321 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0322 & SQUEEZE_RIGHT, myThid )
bf658500ad Jean*0323 #endif
ae89e2cad6 Jean*0324 prtBlkLn = .TRUE.
358649780a Gael*0325 ENDIF
7f861c1808 Patr*0326
d8ff7f7b41 Jean*0327
ae89e2cad6 Jean*0328 IF ( hfluxfile.NE.' ' ) THEN
c1a736f29e Jean*0329 CALL EXF_FLD_SUMMARY( 'Heat flux forcing',
0330 I hfluxfile, hfluxRepCycle, hfluxperiod,
0331 I hfluxStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0332 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0333 CALL EXF_PRINT_INTERP( 'hflux',
0334 & hflux_lon0, hflux_lon_inc, hflux_lat0, hflux_lat_inc,
0335 & hflux_nlon, hflux_nlat, hflux_interpMethod, myThid )
bf658500ad Jean*0336 #endif
ae89e2cad6 Jean*0337 prtBlkLn = .TRUE.
0338 ENDIF
7f861c1808 Patr*0339
d4d6d56dc6 Jean*0340
ae89e2cad6 Jean*0341 IF ( sfluxfile.NE.' ' ) THEN
c1a736f29e Jean*0342 CALL EXF_FLD_SUMMARY( 'Fresh-Water flux forcing',
0343 I sfluxfile, sfluxRepCycle, sfluxperiod,
0344 I sfluxStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0345 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0346 CALL EXF_PRINT_INTERP( 'sflux',
0347 & sflux_lon0, sflux_lon_inc, sflux_lat0, sflux_lat_inc,
0348 & sflux_nlon, sflux_nlat, sflux_interpMethod, myThid )
bf658500ad Jean*0349 #endif
ae89e2cad6 Jean*0350 prtBlkLn = .TRUE.
0351 ENDIF
7f861c1808 Patr*0352
6060ec2938 Dimi*0353 #if defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING)
d8ff7f7b41 Jean*0354
ae89e2cad6 Jean*0355 IF ( swfluxfile.NE.' ' ) THEN
c1a736f29e Jean*0356 CALL EXF_FLD_SUMMARY( 'Net shortwave flux forcing',
0357 I swfluxfile, swfluxRepCycle, swfluxperiod,
0358 I swfluxStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0359 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0360 CALL EXF_PRINT_INTERP( 'swflux',
0361 & swflux_lon0, swflux_lon_inc, swflux_lat0, swflux_lat_inc,
0362 & swflux_nlon, swflux_nlat, swflux_interpMethod, myThid )
bf658500ad Jean*0363 #endif
ae89e2cad6 Jean*0364 prtBlkLn = .TRUE.
0365 ENDIF
e276dc281e Jean*0366 #endif /* ALLOW_ATM_TEMP or SHORTWAVE_HEATING */
7f861c1808 Patr*0367
d8ff7f7b41 Jean*0368
ae89e2cad6 Jean*0369 IF ( useAtmWind .AND. uwindfile.NE.' ' ) THEN
c1a736f29e Jean*0370 CALL EXF_FLD_SUMMARY( 'Zonal wind forcing',
0371 I uwindfile, uwindRepCycle, uwindperiod,
0372 I uwindStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0373 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0374 CALL EXF_PRINT_INTERP( 'uwind',
0375 & uwind_lon0, uwind_lon_inc, uwind_lat0, uwind_lat_inc,
0376 & uwind_nlon, uwind_nlat, uwind_interpMethod, myThid )
bf658500ad Jean*0377 #endif
ae89e2cad6 Jean*0378 prtBlkLn = .TRUE.
0379 ENDIF
7f861c1808 Patr*0380
d8ff7f7b41 Jean*0381
ae89e2cad6 Jean*0382 IF ( useAtmWind .AND. vwindfile.NE.' ' ) THEN
c1a736f29e Jean*0383 CALL EXF_FLD_SUMMARY( 'Meridional wind forcing',
0384 I vwindfile, vwindRepCycle, vwindperiod,
0385 I vwindStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0386 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0387 CALL EXF_PRINT_INTERP( 'vwind',
0388 & vwind_lon0, vwind_lon_inc, vwind_lat0, vwind_lat_inc,
0389 & vwind_nlon, vwind_nlat, vwind_interpMethod, myThid )
0390 WRITE(msgBuf,'(2A,L5)') ' Interp. U & V comp. together:',
0391 & ' uvInterp_wind =', uvInterp_wind
0392 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0393 & SQUEEZE_RIGHT, myThid )
bf658500ad Jean*0394 #endif
ae89e2cad6 Jean*0395 prtBlkLn = .TRUE.
358649780a Gael*0396 ENDIF
7f861c1808 Patr*0397
c73bfe3b2c Jean*0398
0399 IF ( wspeedfile.NE.' ' ) THEN
0400 CALL EXF_FLD_SUMMARY( 'Surface wind speed',
0401 I wspeedfile, wspeedRepCycle, wspeedperiod,
0402 I wspeedStartTime, useExfYearlyFields, addBlkLn, myThid )
0403 #ifdef USE_EXF_INTERPOLATION
0404 CALL EXF_PRINT_INTERP( 'wspeed',
0405 & wspeed_lon0, wspeed_lon_inc, wspeed_lat0, wspeed_lat_inc,
0406 & wspeed_nlon, wspeed_nlat, wspeed_interpMethod, myThid )
0407 #endif
0408 prtBlkLn = .TRUE.
0409 ENDIF
0410
6060ec2938 Dimi*0411 #ifdef ALLOW_ATM_TEMP
d8ff7f7b41 Jean*0412
ae89e2cad6 Jean*0413 IF ( atempfile.NE.' ' ) THEN
c1a736f29e Jean*0414 CALL EXF_FLD_SUMMARY( 'Atmospheric temperature',
0415 I atempfile, atempRepCycle, atempperiod,
0416 I atempStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0417 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0418 CALL EXF_PRINT_INTERP( 'atemp',
0419 & atemp_lon0, atemp_lon_inc, atemp_lat0, atemp_lat_inc,
0420 & atemp_nlon, atemp_nlat, atemp_interpMethod, myThid )
bf658500ad Jean*0421 #endif
ae89e2cad6 Jean*0422 prtBlkLn = .TRUE.
0423 ENDIF
7f861c1808 Patr*0424
d8ff7f7b41 Jean*0425
ae89e2cad6 Jean*0426 IF ( aqhfile.NE.' ' ) THEN
c1a736f29e Jean*0427 CALL EXF_FLD_SUMMARY( 'Atmospheric specific humidity',
0428 I aqhfile, aqhRepCycle, aqhperiod,
0429 I aqhStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0430 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0431 CALL EXF_PRINT_INTERP( 'aqh',
0432 & aqh_lon0, aqh_lon_inc, aqh_lat0, aqh_lat_inc,
0433 & aqh_nlon, aqh_nlat, aqh_interpMethod, myThid )
bf658500ad Jean*0434 #endif
ae89e2cad6 Jean*0435 prtBlkLn = .TRUE.
0436 ENDIF
7f861c1808 Patr*0437
d4d6d56dc6 Jean*0438
0439 IF ( prtBlkLn ) THEN
0440 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
0441 & SQUEEZE_RIGHT, myThid )
0442 prtBlkLn = .FALSE.
0443 ENDIF
0444 #ifdef ALLOW_READ_TURBFLUXES
0445 WRITE(msgBuf,'(A)')
0446 &'// ALLOW_READ_TURBFLUXES: defined'
0447 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0448 & SQUEEZE_RIGHT, myThid )
0449
0450
0451 IF ( hs_file.NE.' ' ) THEN
c1a736f29e Jean*0452 CALL EXF_FLD_SUMMARY( 'Sensible heat flux (+=down)',
0453 I hs_file, hs_RepCycle, hs_period,
0454 I hs_StartTime, useExfYearlyFields, addBlkLn, myThid )
d4d6d56dc6 Jean*0455 #ifdef USE_EXF_INTERPOLATION
0456 CALL EXF_PRINT_INTERP( 'hs',
0457 & hs_lon0, hs_lon_inc, hs_lat0, hs_lat_inc,
0458 & hs_nlon, hs_nlat, hs_interpMethod, myThid )
0459 #endif
0460 prtBlkLn = .TRUE.
0461 ENDIF
0462
0463
0464 IF ( hl_file.NE.' ' ) THEN
c1a736f29e Jean*0465 CALL EXF_FLD_SUMMARY( 'Latent heat flux (+=down)',
0466 I hl_file, hl_RepCycle, hl_period,
0467 I hl_StartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0468 #ifdef USE_EXF_INTERPOLATION
d4d6d56dc6 Jean*0469 CALL EXF_PRINT_INTERP( 'hl',
0470 & hl_lon0, hl_lon_inc, hl_lat0, hl_lat_inc,
0471 & hl_nlon, hl_nlat, hl_interpMethod, myThid )
bf658500ad Jean*0472 #endif
ae89e2cad6 Jean*0473 prtBlkLn = .TRUE.
0474 ENDIF
7f861c1808 Patr*0475
d4d6d56dc6 Jean*0476 #else /* ALLOW_READ_TURBFLUXES */
0477 WRITE(msgBuf,'(A)')
0478 &'// ALLOW_READ_TURBFLUXES: NOT defined'
0479 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0480 & SQUEEZE_RIGHT, myThid )
0481 #endif /* ALLOW_READ_TURBFLUXES */
0482
0483
0484 IF ( lwfluxfile.NE.' ' ) THEN
c1a736f29e Jean*0485 CALL EXF_FLD_SUMMARY( 'Net longwave flux forcing',
0486 I lwfluxfile, lwfluxRepCycle, lwfluxperiod,
0487 I lwfluxStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0488 #ifdef USE_EXF_INTERPOLATION
d4d6d56dc6 Jean*0489 CALL EXF_PRINT_INTERP( 'lwflux',
0490 & lwflux_lon0, lwflux_lon_inc, lwflux_lat0, lwflux_lat_inc,
0491 & lwflux_nlon, lwflux_nlat, lwflux_interpMethod, myThid )
bf658500ad Jean*0492 #endif
ae89e2cad6 Jean*0493 prtBlkLn = .TRUE.
0494 ENDIF
e276dc281e Jean*0495 #endif /* ALLOW_ATM_TEMP */
7f861c1808 Patr*0496
d8ff7f7b41 Jean*0497
ae89e2cad6 Jean*0498 IF ( prtBlkLn ) THEN
0499 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
0500 & SQUEEZE_RIGHT, myThid )
0501 prtBlkLn = .FALSE.
0502 ENDIF
6060ec2938 Dimi*0503 #ifdef EXF_READ_EVAP
ae89e2cad6 Jean*0504 WRITE(msgBuf,'(A)')
6060ec2938 Dimi*0505 &'// EXF_READ_EVAP: defined'
ae89e2cad6 Jean*0506 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0507 & SQUEEZE_RIGHT, myThid )
26f6b8243e Jean*0508 # ifdef ALLOW_ATM_TEMP
ae89e2cad6 Jean*0509 IF ( evapfile.NE.' ' ) THEN
c1a736f29e Jean*0510 addBlkLn = .FALSE.
0511 CALL EXF_FLD_SUMMARY( 'Evaporation',
0512 I evapfile, evapRepCycle, evapperiod,
0513 I evapStartTime, useExfYearlyFields, addBlkLn, myThid )
0514 addBlkLn = .TRUE.
bf658500ad Jean*0515 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0516 CALL EXF_PRINT_INTERP( 'evap',
0517 & evap_lon0, evap_lon_inc, evap_lat0, evap_lat_inc,
0518 & evap_nlon, evap_nlat, evap_interpMethod, myThid )
bf658500ad Jean*0519 #endif
ae89e2cad6 Jean*0520 prtBlkLn = .TRUE.
0521 ENDIF
26f6b8243e Jean*0522 # endif /* ALLOW_ATM_TEMP */
e276dc281e Jean*0523 #else /* EXF_READ_EVAP */
ae89e2cad6 Jean*0524 WRITE(msgBuf,'(A)')
6060ec2938 Dimi*0525 &'// EXF_READ_EVAP: NOT defined'
ae89e2cad6 Jean*0526 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0527 & SQUEEZE_RIGHT, myThid )
e276dc281e Jean*0528 #endif /* EXF_READ_EVAP */
6060ec2938 Dimi*0529
d4d6d56dc6 Jean*0530 #ifdef ALLOW_ATM_TEMP
0531
0532 IF ( precipfile.NE.' ' ) THEN
c1a736f29e Jean*0533 CALL EXF_FLD_SUMMARY( 'Precipitation data',
0534 I precipfile, precipRepCycle, precipperiod,
0535 I precipStartTime, useExfYearlyFields, addBlkLn, myThid )
d4d6d56dc6 Jean*0536 #ifdef USE_EXF_INTERPOLATION
0537 CALL EXF_PRINT_INTERP( 'precip',
0538 & precip_lon0, precip_lon_inc, precip_lat0, precip_lat_inc,
0539 & precip_nlon, precip_nlat, precip_interpMethod, myThid )
0540 #endif
0541 prtBlkLn = .TRUE.
0542 ENDIF
0543
0544
0545 IF ( snowprecipfile.NE.' ' ) THEN
c1a736f29e Jean*0546 CALL EXF_FLD_SUMMARY( 'Snow Precipitation data',
0547 I snowprecipfile, snowprecipRepCycle, snowprecipperiod,
0548 I snowprecipStartTime, useExfYearlyFields, addBlkLn, myThid )
d4d6d56dc6 Jean*0549 #ifdef USE_EXF_INTERPOLATION
0550 CALL EXF_PRINT_INTERP( 'snowprecip',
0551 & snowprecip_lon0, snowprecip_lon_inc, snowprecip_lat0,
0552 & snowprecip_lat_inc, snowprecip_nlon, snowprecip_nlat,
0553 & snowprecip_interpMethod, myThid )
0554 #endif
0555 prtBlkLn = .TRUE.
0556 ENDIF
0557 #endif /* ALLOW_ATM_TEMP */
0558
d8ff7f7b41 Jean*0559
ae89e2cad6 Jean*0560 IF ( prtBlkLn ) THEN
0561 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
0562 & SQUEEZE_RIGHT, myThid )
0563 prtBlkLn = .FALSE.
0564 ENDIF
6060ec2938 Dimi*0565 #ifdef ALLOW_RUNOFF
ae89e2cad6 Jean*0566 WRITE(msgBuf,'(A)')
6060ec2938 Dimi*0567 &'// ALLOW_RUNOFF: defined'
ae89e2cad6 Jean*0568 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0569 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0570 IF ( runofffile.NE.' ' ) THEN
c1a736f29e Jean*0571 addBlkLn = .FALSE.
0572 CALL EXF_FLD_SUMMARY( 'Runoff data',
0573 I runofffile, runoffRepCycle, runoffperiod,
0574 I runoffStartTime, useExfYearlyFields, addBlkLn, myThid )
0575 addBlkLn = .TRUE.
ae89e2cad6 Jean*0576 # ifdef USE_EXF_INTERPOLATION
0577 CALL EXF_PRINT_INTERP( 'runoff',
0578 & runoff_lon0, runoff_lon_inc, runoff_lat0, runoff_lat_inc,
0579 & runoff_nlon, runoff_nlat, runoff_interpMethod, myThid )
0580 # endif /* USE_EXF_INTERPOLATION */
0581 prtBlkLn = .TRUE.
0582 ENDIF
0583 IF ( prtBlkLn ) THEN
0584 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
0585 & SQUEEZE_RIGHT, myThid )
0586 prtBlkLn = .FALSE.
0587 ENDIF
e603dbf008 Dimi*0588 # ifdef ALLOW_RUNOFTEMP
ae89e2cad6 Jean*0589 WRITE(msgBuf,'(A)')
c1a736f29e Jean*0590 &'// ALLOW_RUNOFTEMP: defined'
ae89e2cad6 Jean*0591 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
e603dbf008 Dimi*0592 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0593 IF ( runoftempfile.NE.' ' ) THEN
c1a736f29e Jean*0594
0595
0596
0597
0598
cbf501ab81 Jean*0599 iL = ILNBLNK(runoftempfile)
ae89e2cad6 Jean*0600 WRITE(msgBuf,'(A)')
0601 & ' Runoff temp. is read from file:'
0602 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0603 & SQUEEZE_RIGHT, myThid )
cbf501ab81 Jean*0604 WRITE(msgBuf,'(3A)') ' >> ', runoftempfile(1:iL), ' <<'
ae89e2cad6 Jean*0605 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0606 & SQUEEZE_RIGHT, myThid )
0607 prtBlkLn = .TRUE.
0608 ENDIF
e603dbf008 Dimi*0609 # else /* ALLOW_RUNOFTEMP */
ae89e2cad6 Jean*0610 WRITE(msgBuf,'(A)')
e603dbf008 Dimi*0611 &'// ALLOW_RUNOFTEMP: NOT defined'
ae89e2cad6 Jean*0612 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
e603dbf008 Dimi*0613 & SQUEEZE_RIGHT, myThid )
0614 # endif /* ALLOW_RUNOFTEMP */
6060ec2938 Dimi*0615 #else /* ALLOW_RUNOFF */
ae89e2cad6 Jean*0616 WRITE(msgBuf,'(A)')
6060ec2938 Dimi*0617 &'// ALLOW_RUNOFF: NOT defined'
ae89e2cad6 Jean*0618 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0619 & SQUEEZE_RIGHT, myThid )
6060ec2938 Dimi*0620 #endif /* ALLOW_RUNOFF */
7f861c1808 Patr*0621
d4d6d56dc6 Jean*0622
0623 IF ( prtBlkLn ) THEN
0624 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
0625 & SQUEEZE_RIGHT, myThid )
0626 prtBlkLn = .FALSE.
0627 ENDIF
0628 #ifdef ALLOW_SALTFLX
0629 WRITE(msgBuf,'(A)')
0630 &'// ALLOW_SALTFLX: defined'
0631 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0632 & SQUEEZE_RIGHT, myThid )
0633 IF ( saltflxfile.NE.' ' ) THEN
c1a736f29e Jean*0634 CALL EXF_FLD_SUMMARY( 'Net upward Salt-Flux forcing',
0635 I saltflxfile, saltflxRepCycle, saltflxperiod,
0636 I saltflxStartTime, useExfYearlyFields, addBlkLn, myThid )
d4d6d56dc6 Jean*0637 #ifdef USE_EXF_INTERPOLATION
0638 CALL EXF_PRINT_INTERP( 'saltflx',
0639 & saltflx_lon0, saltflx_lon_inc, saltflx_lat0, saltflx_lat_inc,
0640 & saltflx_nlon, saltflx_nlat, saltflx_interpMethod, myThid )
0641 #endif
0642 prtBlkLn = .TRUE.
0643 ENDIF
0644 #else /* ALLOW_SALTFLX */
0645 WRITE(msgBuf,'(A)')
0646 &'// ALLOW_SALTFLX: NOT defined'
0647 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0648 & SQUEEZE_RIGHT, myThid )
0649 #endif /* ALLOW_SALTFLX */
0650
1d049a485d Jean*0651 #ifdef ALLOW_DOWNWARD_RADIATION
d8ff7f7b41 Jean*0652
ae89e2cad6 Jean*0653 IF ( swdownfile.NE.' ' ) THEN
c1a736f29e Jean*0654 CALL EXF_FLD_SUMMARY( 'Downward shortwave flux',
0655 I swdownfile, swdownRepCycle, swdownperiod,
0656 I swdownStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0657 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0658 CALL EXF_PRINT_INTERP( 'swdown',
0659 & swdown_lon0, swdown_lon_inc, swdown_lat0, swdown_lat_inc,
0660 & swdown_nlon, swdown_nlat, swdown_interpMethod, myThid )
bf658500ad Jean*0661 #endif
ae89e2cad6 Jean*0662 prtBlkLn = .TRUE.
0663 ENDIF
7f861c1808 Patr*0664
d8ff7f7b41 Jean*0665
ae89e2cad6 Jean*0666 IF ( lwdownfile.NE.' ' ) THEN
c1a736f29e Jean*0667 CALL EXF_FLD_SUMMARY( 'Downward longwave flux',
0668 I lwdownfile, lwdownRepCycle, lwdownperiod,
0669 I lwdownStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0670 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0671 CALL EXF_PRINT_INTERP( 'lwdown',
0672 & lwdown_lon0, lwdown_lon_inc, lwdown_lat0, lwdown_lat_inc,
0673 & lwdown_nlon, lwdown_nlat, lwdown_interpMethod, myThid )
bf658500ad Jean*0674 #endif
ae89e2cad6 Jean*0675 prtBlkLn = .TRUE.
0676 ENDIF
e276dc281e Jean*0677 #endif /* ALLOW_DOWNWARD_RADIATION */
7f861c1808 Patr*0678
6060ec2938 Dimi*0679 #ifdef ATMOSPHERIC_LOADING
d8ff7f7b41 Jean*0680
ae89e2cad6 Jean*0681 IF ( apressurefile.NE.' ' ) THEN
c1a736f29e Jean*0682 CALL EXF_FLD_SUMMARY( 'Atmospheric pressure forcing',
0683 I apressurefile, apressureRepCycle, apressureperiod,
0684 I apressureStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0685 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0686 CALL EXF_PRINT_INTERP( 'apressure', apressure_lon0,
0687 & apressure_lon_inc, apressure_lat0, apressure_lat_inc,
0688 & apressure_nlon, apressure_nlat, apressure_interpMethod, myThid )
bf658500ad Jean*0689 #endif
ae89e2cad6 Jean*0690 prtBlkLn = .TRUE.
0691 ENDIF
e276dc281e Jean*0692 #endif /* ATMOSPHERIC_LOADING */
7f861c1808 Patr*0693
497d85062c Jean*0694 #ifdef EXF_ALLOW_TIDES
0695
0696 IF ( tidePotFile.NE.' ' ) THEN
0697 CALL EXF_FLD_SUMMARY( 'Tidal geopotential',
0698 I tidePotFile, tidePotRepCycle, tidePotPeriod,
0699 I tidePotStartTime, useExfYearlyFields, addBlkLn, myThid )
0700 #ifdef USE_EXF_INTERPOLATION
0701 CALL EXF_PRINT_INTERP( 'tidePot', tidePot_lon0,
0702 & tidePot_lon_inc, tidePot_lat0, tidePot_lat_inc,
0703 & tidePot_nlon, tidePot_nlat, tidePot_interpMethod, myThid )
0704 #endif
0705 prtBlkLn = .TRUE.
0706 ENDIF
0707 #endif /* EXF_ALLOW_TIDES */
0708
24da7525ba Jean*0709 #ifdef EXF_SEAICE_FRACTION
c1a736f29e Jean*0710
ae89e2cad6 Jean*0711 IF ( areamaskfile.NE.' ' ) THEN
c1a736f29e Jean*0712 CALL EXF_FLD_SUMMARY( 'Fractional ice-covered area',
0713 I areamaskfile, areamaskRepCycle, areamaskperiod,
0714 I areamaskStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0715 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0716 CALL EXF_PRINT_INTERP( 'areamask', areamask_lon0,
0717 & areamask_lon_inc, areamask_lat0, areamask_lat_inc,
0718 & areamask_nlon, areamask_nlat, areamask_interpMethod, myThid )
bf658500ad Jean*0719 #endif
ae89e2cad6 Jean*0720 prtBlkLn = .TRUE.
0721 ENDIF
24da7525ba Jean*0722 #endif /* EXF_SEAICE_FRACTION */
7f861c1808 Patr*0723
d8ff7f7b41 Jean*0724
0725
ae89e2cad6 Jean*0726 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
26d3c6fc59 Jean*0727 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0728 WRITE(msgBuf,'(A)')
ad5cdab327 Patr*0729 &'// ======================================================='
ae89e2cad6 Jean*0730 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0731 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0732 WRITE(msgBuf,'(A)')
bf658500ad Jean*0733 &'// External forcing (EXF) climatology configuration :'
ae89e2cad6 Jean*0734 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0735 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0736 WRITE(msgBuf,'(A)')
ad5cdab327 Patr*0737 &'// ======================================================='
ae89e2cad6 Jean*0738 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0739 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0740 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
26d3c6fc59 Jean*0741 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0742 prtBlkLn = .FALSE.
c1a736f29e Jean*0743 addBlkLn = .FALSE.
ad5cdab327 Patr*0744
d8ff7f7b41 Jean*0745
0746
ad5cdab327 Patr*0747
d8ff7f7b41 Jean*0748
0749
0750
ad5cdab327 Patr*0751
0752 #ifdef ALLOW_CLIMSST_RELAXATION
ae89e2cad6 Jean*0753 WRITE(msgBuf,'(A)')
0754 &'// ALLOW_CLIMSST_RELAXATION: defined'
0755 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0756 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0757
0758 IF ( climsstfile .NE. ' ' ) THEN
c1a736f29e Jean*0759 CALL EXF_FLD_SUMMARY( 'Climatological SST',
0760 I climsstfile, climsstRepCycle, climsstperiod,
0761 I climsstStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0762 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0763 CALL EXF_PRINT_INTERP( 'climsst',
0764 & climsst_lon0, climsst_lon_inc, climsst_lat0, climsst_lat_inc,
0765 & climsst_nlon, climsst_nlat, climsst_interpMethod, myThid )
bf658500ad Jean*0766 #endif
ae89e2cad6 Jean*0767 prtBlkLn = .TRUE.
7ba163f5fb Gael*0768 ELSE
ae89e2cad6 Jean*0769 WRITE(msgBuf,'(A)') ' climsst relaxation is NOT used'
0770 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0771 & SQUEEZE_RIGHT, myThid )
7ba163f5fb Gael*0772 ENDIF
ae89e2cad6 Jean*0773 #else /* ALLOW_CLIMSST_RELAXATION */
0774 WRITE(msgBuf,'(A)')
0775 &'// ALLOW_CLIMSST_RELAXATION: NOT defined'
0776 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0777 & SQUEEZE_RIGHT, myThid )
e276dc281e Jean*0778 #endif /* ALLOW_CLIMSST_RELAXATION */
ad5cdab327 Patr*0779
ae89e2cad6 Jean*0780
0781 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
0782 & SQUEEZE_RIGHT, myThid )
0783
0784
0785
ad5cdab327 Patr*0786 #ifdef ALLOW_CLIMSSS_RELAXATION
ae89e2cad6 Jean*0787 WRITE(msgBuf,'(A)')
0788 &'// ALLOW_CLIMSSS_RELAXATION: defined'
0789 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0790 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0791
0792 IF ( climsssfile .NE. ' ' ) THEN
c1a736f29e Jean*0793 CALL EXF_FLD_SUMMARY( 'Climatological SSS',
0794 I climsssfile, climsssRepCycle, climsssperiod,
0795 I climsssStartTime, useExfYearlyFields, addBlkLn, myThid )
bf658500ad Jean*0796 #ifdef USE_EXF_INTERPOLATION
ae89e2cad6 Jean*0797 CALL EXF_PRINT_INTERP( 'climsss',
0798 & climsss_lon0, climsss_lon_inc, climsss_lat0, climsss_lat_inc,
0799 & climsss_nlon, climsss_nlat, climsss_interpMethod, myThid )
bf658500ad Jean*0800 #endif
ae89e2cad6 Jean*0801 prtBlkLn = .TRUE.
7ba163f5fb Gael*0802 ELSE
ae89e2cad6 Jean*0803 WRITE(msgBuf,'(A)') ' climsss relaxation is NOT used'
0804 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0805 & SQUEEZE_RIGHT, myThid )
7ba163f5fb Gael*0806 ENDIF
ae89e2cad6 Jean*0807 #else /* ALLOW_CLIMSSS_RELAXATION */
0808 WRITE(msgBuf,'(A)')
0809 &'// ALLOW_CLIMSSS_RELAXATION: NOT defined'
0810 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0811 & SQUEEZE_RIGHT, myThid )
e276dc281e Jean*0812 #endif /* ALLOW_CLIMSSS_RELAXATION */
ad5cdab327 Patr*0813
ae89e2cad6 Jean*0814 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
26d3c6fc59 Jean*0815 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0816 WRITE(msgBuf,'(A)')
ad5cdab327 Patr*0817 &'// ======================================================='
ae89e2cad6 Jean*0818 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0819 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0820 WRITE(msgBuf,'(A)')
bf658500ad Jean*0821 &'// External forcing (EXF) configuration >>> END <<<'
ae89e2cad6 Jean*0822 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0823 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0824 WRITE(msgBuf,'(A)')
ad5cdab327 Patr*0825 &'// ======================================================='
ae89e2cad6 Jean*0826 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
26d3c6fc59 Jean*0827 & SQUEEZE_RIGHT, myThid )
ae89e2cad6 Jean*0828 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
26d3c6fc59 Jean*0829 & SQUEEZE_RIGHT, myThid )
ad5cdab327 Patr*0830
d8ff7f7b41 Jean*0831 _END_MASTER( myThid )
0832
0833 RETURN
0834 END
bf658500ad Jean*0835
0836
c1a736f29e Jean*0837
0838
0839
0840 SUBROUTINE EXF_FLD_SUMMARY(
0841 I fld_fullName, fld_file,
0842 I fld_repeatCycle, fld_period, fld_start_time,
0843 I useYearlyFields, addBlkLn, myThid )
0844
0845
0846
0847
0848
0849 IMPLICIT NONE
bf658500ad Jean*0850
c1a736f29e Jean*0851 #include "EEPARAMS.h"
0852
0853
0854
0855
0856
0857
0858
0859
0860
0861
0862 CHARACTER*(*) fld_fullName
0863 CHARACTER*(*) fld_file
0864 _RL fld_repeatCycle
0865 _RL fld_period
0866 _RL fld_start_time
0867 LOGICAL useYearlyFields
0868 LOGICAL addBlkLn
0869 INTEGER myThid
0870
0871
0872 INTEGER ILNBLNK
0873 EXTERNAL ILNBLNK
0874
0875
0876 INTEGER iL, jL
0877 CHARACTER*(MAX_LEN_MBUF) tmpBuf, msgBuf
0878 CHARACTER*1 blkLin
0879
0880
0881 blkLin = ' '
0882 jL = 47
0883
0884 IF ( addBlkLn ) THEN
0885 CALL PRINT_MESSAGE( blkLin, standardMessageUnit,
0886 & SQUEEZE_RIGHT, myThid )
0887 ENDIF
deacece587 Oliv*0888 IF ( fld_period.GT.0. .OR.
0889 & (fld_period.EQ.-1. .AND. .NOT.useYearlyFields) ) THEN
c1a736f29e Jean*0890 WRITE(tmpBuf,'(3A)') ' ', fld_fullName, ' starts at'
0891 WRITE(msgBuf,'(A,F12.0)') tmpBuf(1:jL), fld_start_time
0892 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0893 & SQUEEZE_RIGHT, myThid )
0894 ENDIF
0895 WRITE(tmpBuf,'(3A)') ' ', fld_fullName, ' period is'
0896 WRITE(msgBuf,'(A,F12.0)') tmpBuf(1:jL), fld_period
0897 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0898 & SQUEEZE_RIGHT, myThid )
0899
0900 IF ( fld_period.GT.0. ) THEN
0901 iL = ILNBLNK(fld_fullName)
0902 IF ( iL.LT.28 ) THEN
0903 WRITE(tmpBuf,'(3A)') ' ', fld_fullName, ' repeat-cycle is'
0904 ELSE
0905 WRITE(tmpBuf,'(3A)') ' ', fld_fullName, ' rep-cycle is'
0906 ENDIF
0907 WRITE(msgBuf,'(A,F12.0)') tmpBuf(1:jL), fld_repeatCycle
0908 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0909 & SQUEEZE_RIGHT, myThid )
0910 ENDIF
0911 WRITE(msgBuf,'(3A)') ' ', fld_fullName, ' is read from file:'
0912 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0913 & SQUEEZE_RIGHT, myThid )
0914 iL = ILNBLNK(fld_file)
0915 WRITE(msgBuf,'(3A)') ' >> ', fld_file(1:iL), ' <<'
0916 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0917 & SQUEEZE_RIGHT, myThid )
0918
0919 RETURN
0920 END
0921
0922 #ifdef USE_EXF_INTERPOLATION
0923
bf658500ad Jean*0924
0925
0926
0927 SUBROUTINE EXF_PRINT_INTERP( var_name,
0928 I var_lon0, var_lon_inc, var_lat0, var_lat_inc,
0929 I var_nlon, var_nlat, var_interpMethod, myThid )
0930
0931
0932
0933
0934
0935 IMPLICIT NONE
0936
0937 #include "EEPARAMS.h"
0938
0939
0940
0941 CHARACTER*(*) var_name
0942 _RL var_lon0, var_lon_inc, var_lat0
0943 _RL var_lat_inc(*)
0944 INTEGER var_nlon, var_nlat, var_interpMethod
0945 INTEGER myThid
0946
0947
0948
0949
0950
0951
0952 INTEGER i
0953 _RL var_min, var_max
0954 CHARACTER*(MAX_LEN_MBUF) msgBuf
0955
0956
0957 IF ( var_interpMethod.EQ.0 ) THEN
0958 WRITE(msgBuf,'(3X,A,A,A)')
0959 & 'assume "',var_name,'" on model-grid (no interpolation)'
0960 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0961 & SQUEEZE_RIGHT , myThid )
0962 ELSE
0963 WRITE(msgBuf,'(3X,A,A,A,I3,A)')
0964 & 'interpolate "',var_name,'" (method=',var_interpMethod,' ):'
0965 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0966 & SQUEEZE_RIGHT , myThid )
0967
0968 IF ( ABS(var_lon0).LT.1000. .AND. var_lon_inc.GT.-10.
0969 & .AND. var_lon_inc.LT.100. ) THEN
0970 WRITE(msgBuf,'(3X,A,F10.5,A,I6,A,F10.7)')
0971 & 'lon0=', var_lon0, ', nlon=', var_nlon,
0972 & ', lon_inc=',var_lon_inc
0973 ELSE
0974 WRITE(msgBuf,'(3X,A,1PE10.3,A,I6,A,1PE10.3)')
0975 & 'lon0=', var_lon0, ', nlon=', var_nlon,
0976 & ', lon_inc=',var_lon_inc
0977 ENDIF
0978 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0979 & SQUEEZE_RIGHT , myThid )
0980
0981 var_min = var_lat_inc(1)
0982 var_max = var_lat_inc(1)
0983 DO i=1,var_nlat-1
0984 var_min = MIN( var_lat_inc(i), var_min )
0985 var_max = MAX( var_lat_inc(i), var_max )
0986 ENDDO
0987 IF ( ABS(var_lat0).LT.1000. .AND. var_min.GT.-10.
0988 & .AND. var_max.LT.100. ) THEN
0989 IF ( var_min.EQ.var_max ) THEN
0990 WRITE(msgBuf,'(3X,A,F10.5,A,I6,A,F10.7)')
0991 & 'lat0=', var_lat0, ', nlat=', var_nlat,
0992 & ', lat_inc=', var_min
0993 ELSE
0994 WRITE(msgBuf,'(3X,A,F10.5,A,I6,A,2F8.5)')
0995 & 'lat0=', var_lat0, ', nlat=', var_nlat,
0996 & ', inc(min,max)=', var_min, var_max
0997 ENDIF
0998 ELSE
0999 IF ( var_min.EQ.var_max ) THEN
1000 WRITE(msgBuf,'(3X,A,1PE10.3,A,I6,A,1PE10.3)')
1001 & 'lat0=', var_lat0, ', nlat=', var_nlat,
1002 & ', lat_inc=', var_min
1003 ELSE
1004 WRITE(msgBuf,'(3X,A,1PE10.3,A,I6,A,1P2E10.3)')
1005 & 'lat0=', var_lat0, ', nlat=', var_nlat,
1006 & ', inc(min,max)=', var_min, var_max
1007 ENDIF
1008 ENDIF
1009 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1010 & SQUEEZE_RIGHT , myThid )
1011 ENDIF
1012
1013 RETURN
1014 END
1015 #endif /* USE_EXF_INTERPOLATION */