Changeset 10
- Timestamp:
- Aug 15, 2013, 3:23:48 PM (11 years ago)
- Location:
- branches/flexpart91_hasod/src_parallel
- Files:
-
- 1 added
- 1 deleted
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/flexpart91_hasod/src_parallel/FLEXPART.f90
r9 r10 50 50 51 51 #ifdef NETCDF_OUTPUT 52 use n c_output_mod, only: writeheader_ncdf52 use netcdf_output_mod, only: writeheader_netcdf 53 53 #endif 54 54 … … 217 217 !****************************************************************** 218 218 219 if (ln cdfout) then219 if (lnetcdfout.eq.1) then 220 220 #ifdef NETCDF_OUTPUT 221 call writeheader_n cdf(lnest = .false.)221 call writeheader_netcdf(lnest = .false.) 222 222 #endif 223 223 else … … 226 226 227 227 if (nested_output.eq.1) then 228 if (ln cdfout) then228 if (lnetcdfout.eq.1) then 229 229 #ifdef NETCDF_OUTPUT 230 call writeheader_n cdf(lnest = .true.)230 call writeheader_netcdf(lnest = .true.) 231 231 #endif 232 232 else … … 235 235 endif 236 236 237 if ( .NOT.lncdfout) then237 if (lnetcdfout.ne.1) then 238 238 open(unitdates,file=path(2)(1:length(2))//'dates') 239 239 end if -
branches/flexpart91_hasod/src_parallel/Makefile.netcdf
r9 r10 25 25 xmass_mod.o flux_mod.o \ 26 26 point_mod.o outg_mod.o \ 27 random_mod.o n c_output_mod.o27 random_mod.o netcdf_output_mod.o 28 28 29 29 OBJECTS = \ -
branches/flexpart91_hasod/src_parallel/com_mod.f90
r8 r10 108 108 ! lagespectra 1 if age spectra calculation switched on, 2 if not 109 109 110 logical :: lncdfout111 ! switch for netcdf grid output, set to true if IOUT .gt. 10 in COMMAND (file/namelist)110 integer :: lnetcdfout 111 ! lnetcdfout 1 for netcdf grid output, 0 if not. Set in COMMAND (namelist input) 112 112 113 113 integer :: nageclass,lage(maxageclass) … … 120 120 121 121 ! gdomainfill .T., if domain-filling is global, .F. if not 122 123 122 124 123 … … 138 137 !integer*2 kindz(maxpoint) 139 138 integer :: specnum(maxspec) 140 !real xmass(maxpoint,maxspec)141 139 real :: decay(maxspec) 142 140 real :: weta(maxspec),wetb(maxspec) … … 242 240 243 241 integer :: numbwf,wftime(maxwf),lwindinterv 244 character(len=255) :: wfname(maxwf) ,wfspec(maxwf)242 character(len=255) :: wfname(maxwf) 245 243 246 244 ! lwindinterv [s] Interval between wind fields currently in memory … … 248 246 ! wftime(maxwf) [s] times relative to beginning time of wind fields 249 247 ! wfname(maxwf) file names of wind fields 250 ! wfspec(maxwf) specifications of wind field file, e.g. if on hard251 ! disc or on tape252 248 253 249 integer :: memtime(2),memind(2) … … 412 408 413 409 character(len=255) :: wfnamen(maxnests,maxwf) 414 character(len=18) :: wfspecn(maxnests,maxwf)415 410 416 411 ! wfnamen nested wind field names 417 ! wfspecn specifications of wind field file, e.g. if on hard418 ! disc or on tape419 412 420 413 -
branches/flexpart91_hasod/src_parallel/com_mod.mod
r8 r10 1 GFORTRAN module version '6' created from com_mod.f90 on Tue Jul 23 11:18:1020132 MD5: b4969303109781e9e60d59c7f3797b4e-- If you edit this, you'll get what you deserve.1 GFORTRAN module version '6' created from com_mod.f90 on Wed Aug 14 15:51:31 2013 2 MD5:9175d0c3444530a2599b03a75393a9cb -- If you edit this, you'll get what you deserve. 3 3 4 4 (() () () () () () () () () () () () () () () () () () () () () () () … … 1217 1217 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( 1218 1218 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '5000')) 0 () () () 0 0) 1219 247 'wfspec' 'com_mod' 'wfspec' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1220 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (CHARACTER 1 0 0 CHARACTER (( 1221 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '255'))) 0 0 () (1 0 EXPLICIT ( 1222 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 1223 INTEGER ()) 0 '5000')) 0 () () () 0 0) 1224 248 'wfspecn' 'com_mod' 'wfspecn' 1 ((VARIABLE UNKNOWN-INTENT 1225 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (CHARACTER 1 0 0 1226 CHARACTER ((CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '18'))) 0 0 () (2 0 1227 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1228 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( 1229 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '5000')) 0 () () () 0 0) 1230 249 'wftime' 'com_mod' 'wftime' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1219 247 'wftime' 'com_mod' 'wftime' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1231 1220 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (INTEGER 4 0 0 INTEGER ()) 0 0 () ( 1232 1221 1 0 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT ( 1233 1222 INTEGER 4 0 0 INTEGER ()) 0 '5000')) 0 () () () 0 0) 1234 2 50'wstar' 'com_mod' 'wstar' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1235 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (4 0 1236 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') (CONSTANT (INTEGER 1237 4 0 0 INTEGER ()) 0 '360') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') ( 1238 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '180') (CONSTANT (INTEGER 4 0 0 1239 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( 1240 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 1241 INTEGER ()) 0 '2')) 0 () () () 0 0) 1242 2 51'wstarn' 'com_mod' 'wstarn' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1243 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (5 0 1244 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') (CONSTANT (INTEGER 1245 4 0 0 INTEGER ()) 0 '-1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') ( 1246 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '-1') (CONSTANT (INTEGER 4 0 0 1247 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( 1248 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 1249 INTEGER ()) 0 '2') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( 1250 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1251 25 2'ww' 'com_mod' 'ww' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN1223 248 'wstar' 'com_mod' 'wstar' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1224 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (4 0 1225 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') (CONSTANT (INTEGER 1226 4 0 0 INTEGER ()) 0 '360') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') ( 1227 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '180') (CONSTANT (INTEGER 4 0 0 1228 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( 1229 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 1230 INTEGER ()) 0 '2')) 0 () () () 0 0) 1231 249 'wstarn' 'com_mod' 'wstarn' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1232 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (5 0 1233 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') (CONSTANT (INTEGER 1234 4 0 0 INTEGER ()) 0 '-1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') ( 1235 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '-1') (CONSTANT (INTEGER 4 0 0 1236 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( 1237 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 1238 INTEGER ()) 0 '2') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( 1239 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1240 250 'ww' 'com_mod' 'ww' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN 1252 1241 IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (4 0 EXPLICIT ( 1253 1242 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') (CONSTANT (INTEGER 4 0 0 … … 1257 1246 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 1258 1247 INTEGER ()) 0 '2')) 0 () () () 0 0) 1259 25 3'wwn' 'com_mod' 'wwn' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1260 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (5 0 1261 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') (CONSTANT (INTEGER 1262 4 0 0 INTEGER ()) 0 '-1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') ( 1263 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '-1') (CONSTANT (INTEGER 4 0 0 1264 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '92') ( 1265 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 1266 INTEGER ()) 0 '2') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( 1267 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1268 25 4'xglobal' 'com_mod' 'xglobal' 1 ((VARIABLE UNKNOWN-INTENT1248 251 'wwn' 'com_mod' 'wwn' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1249 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (5 0 1250 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') (CONSTANT (INTEGER 1251 4 0 0 INTEGER ()) 0 '-1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') ( 1252 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '-1') (CONSTANT (INTEGER 4 0 0 1253 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '92') ( 1254 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 1255 INTEGER ()) 0 '2') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( 1256 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1257 252 'xglobal' 'com_mod' 'xglobal' 1 ((VARIABLE UNKNOWN-INTENT 1269 1258 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (LOGICAL 4 0 0 LOGICAL ()) 0 0 () 1270 1259 () 0 () () () 0 0) 1271 25 5'xlanduse' 'com_mod' 'xlanduse' 1 ((VARIABLE UNKNOWN-INTENT1260 253 'xlanduse' 'com_mod' 'xlanduse' 1 ((VARIABLE UNKNOWN-INTENT 1272 1261 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 1273 1262 0 () (3 0 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') ( … … 1276 1265 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 1277 1266 INTEGER ()) 0 '13')) 0 () () () 0 0) 1278 25 6'xlandusen' 'com_mod' 'xlandusen' 1 ((VARIABLE UNKNOWN-INTENT1267 254 'xlandusen' 'com_mod' 'xlandusen' 1 ((VARIABLE UNKNOWN-INTENT 1279 1268 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 1280 1269 0 () (4 0 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') ( … … 1284 1273 INTEGER ()) 0 '13') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( 1285 1274 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1286 25 7'xln' 'com_mod' 'xln' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1287 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (1 0 1288 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1289 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1290 25 8'xlon0' 'com_mod' 'xlon0' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1275 255 'xln' 'com_mod' 'xln' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1276 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (1 0 1277 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1278 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1279 256 'xlon0' 'com_mod' 'xlon0' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1291 1280 UNKNOWN IMPLICIT-SAVE 0 0) (REAL 4 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 1292 25 9'xlon0n' 'com_mod' 'xlon0n' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1293 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (1 0 1294 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1295 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1296 2 60'xmass1' 'com_mod' 'xmass1' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1281 257 'xlon0n' 'com_mod' 'xlon0n' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1282 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (1 0 1283 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1284 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1285 258 'xmass1' 'com_mod' 'xmass1' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1297 1286 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (2 0 1298 1287 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1299 1288 4 0 0 INTEGER ()) 0 '3500000') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') 1300 1289 (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1301 2 61'xmassperparticle' 'com_mod' 'xmassperparticle' 1 ((VARIABLE1290 259 'xmassperparticle' 'com_mod' 'xmassperparticle' 1 ((VARIABLE 1302 1291 UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (REAL 4 0 0 REAL 1303 1292 ()) 0 0 () () 0 () () () 0 0) 1304 26 2'xoutshift' 'com_mod' 'xoutshift' 1 ((VARIABLE UNKNOWN-INTENT1293 260 'xoutshift' 'com_mod' 'xoutshift' 1 ((VARIABLE UNKNOWN-INTENT 1305 1294 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (REAL 4 0 0 REAL ()) 0 0 () () 0 1306 1295 () () () 0 0) 1307 26 3'xoutshiftn' 'com_mod' 'xoutshiftn' 1 ((VARIABLE UNKNOWN-INTENT1296 261 'xoutshiftn' 'com_mod' 'xoutshiftn' 1 ((VARIABLE UNKNOWN-INTENT 1308 1297 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (REAL 4 0 0 REAL ()) 0 0 () () 0 1309 1298 () () () 0 0) 1310 26 4'xreceptor' 'com_mod' 'xreceptor' 1 ((VARIABLE UNKNOWN-INTENT1299 262 'xreceptor' 'com_mod' 'xreceptor' 1 ((VARIABLE UNKNOWN-INTENT 1311 1300 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 1312 1301 0 () (1 0 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( 1313 1302 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '20')) 0 () () () 0 0) 1314 26 5'xresoln' 'com_mod' 'xresoln' 1 ((VARIABLE UNKNOWN-INTENT1303 263 'xresoln' 'com_mod' 'xresoln' 1 ((VARIABLE UNKNOWN-INTENT 1315 1304 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 1316 1305 0 () (1 0 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') ( 1317 1306 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1318 26 6'xrn' 'com_mod' 'xrn' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1319 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (1 0 1320 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1321 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1322 26 7'xtra1' 'com_mod' 'xtra1' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1307 264 'xrn' 'com_mod' 'xrn' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1308 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (1 0 1309 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1310 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1311 265 'xtra1' 'com_mod' 'xtra1' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1323 1312 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 8 0 0 REAL ()) 0 0 () (1 0 1324 1313 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1325 1314 4 0 0 INTEGER ()) 0 '3500000')) 0 () () () 0 0) 1326 26 8'ylat0' 'com_mod' 'ylat0' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1315 266 'ylat0' 'com_mod' 'ylat0' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1327 1316 UNKNOWN IMPLICIT-SAVE 0 0) (REAL 4 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 1328 26 9'ylat0n' 'com_mod' 'ylat0n' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1329 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (1 0 1330 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1331 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1332 2 70'yln' 'com_mod' 'yln' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1333 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (1 0 1334 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1335 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1336 2 71'youtshift' 'com_mod' 'youtshift' 1 ((VARIABLE UNKNOWN-INTENT1317 267 'ylat0n' 'com_mod' 'ylat0n' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1318 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (1 0 1319 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1320 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1321 268 'yln' 'com_mod' 'yln' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1322 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (1 0 1323 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1324 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1325 269 'youtshift' 'com_mod' 'youtshift' 1 ((VARIABLE UNKNOWN-INTENT 1337 1326 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (REAL 4 0 0 REAL ()) 0 0 () () 0 1338 1327 () () () 0 0) 1339 27 2'youtshiftn' 'com_mod' 'youtshiftn' 1 ((VARIABLE UNKNOWN-INTENT1328 270 'youtshiftn' 'com_mod' 'youtshiftn' 1 ((VARIABLE UNKNOWN-INTENT 1340 1329 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (REAL 4 0 0 REAL ()) 0 0 () () 0 1341 1330 () () () 0 0) 1342 27 3'yreceptor' 'com_mod' 'yreceptor' 1 ((VARIABLE UNKNOWN-INTENT1331 271 'yreceptor' 'com_mod' 'yreceptor' 1 ((VARIABLE UNKNOWN-INTENT 1343 1332 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 1344 1333 0 () (1 0 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( 1345 1334 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '20')) 0 () () () 0 0) 1346 27 4'yresoln' 'com_mod' 'yresoln' 1 ((VARIABLE UNKNOWN-INTENT1335 272 'yresoln' 'com_mod' 'yresoln' 1 ((VARIABLE UNKNOWN-INTENT 1347 1336 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 1348 1337 0 () (1 0 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') ( 1349 1338 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1350 27 5'yrn' 'com_mod' 'yrn' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1351 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (1 0 1352 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1353 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1354 27 6'ytra1' 'com_mod' 'ytra1' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1339 273 'yrn' 'com_mod' 'yrn' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1340 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (1 0 1341 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1342 4 0 0 INTEGER ()) 0 '1')) 0 () () () 0 0) 1343 274 'ytra1' 'com_mod' 'ytra1' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1355 1344 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 8 0 0 REAL ()) 0 0 () (1 0 1356 1345 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 1357 1346 4 0 0 INTEGER ()) 0 '3500000')) 0 () () () 0 0) 1358 27 7'z0' 'com_mod' 'z0' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN1347 275 'z0' 'com_mod' 'z0' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN 1359 1348 IMPLICIT-SAVE 0 0 DIMENSION THREADPRIVATE) (REAL 4 0 0 REAL ()) 0 0 () ( 1360 1349 1 0 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT ( 1361 1350 INTEGER 4 0 0 INTEGER ()) 0 '13')) 0 () () () 0 0) 1362 27 8'zcolumn_sn' 'com_mod' 'zcolumn_sn' 1 ((VARIABLE UNKNOWN-INTENT1351 276 'zcolumn_sn' 'com_mod' 'zcolumn_sn' 1 ((VARIABLE UNKNOWN-INTENT 1363 1352 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 1364 1353 0 () (3 0 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( … … 1367 1356 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 1368 1357 INTEGER ()) 0 '3000')) 0 () () () 0 0) 1369 27 9'zcolumn_we' 'com_mod' 'zcolumn_we' 1 ((VARIABLE UNKNOWN-INTENT1358 277 'zcolumn_we' 'com_mod' 'zcolumn_we' 1 ((VARIABLE UNKNOWN-INTENT 1370 1359 UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 1371 1360 0 () (3 0 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') ( … … 1374 1363 CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 1375 1364 INTEGER ()) 0 '3000')) 0 () () () 0 0) 1376 2 80'ztra1' 'com_mod' 'ztra1' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC1365 278 'ztra1' 'com_mod' 'ztra1' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC 1377 1366 UNKNOWN IMPLICIT-SAVE 0 0 DIMENSION) (REAL 4 0 0 REAL ()) 0 0 () (1 0 1378 1367 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER … … 1430 1419 0 234 'vdepn' 0 235 'vset' 0 236 'vsetaver' 0 237 'vv' 0 238 'vvn' 0 239 1431 1420 'vvpol' 0 240 'weightmolar' 0 241 'weta' 0 242 'wetb' 0 243 'wetdep' 0 1432 244 'wfname' 0 245 'wfnamen' 0 246 'wf spec' 0 247 'wfspecn' 0 248 'wftime'1433 0 249 'w star' 0 250 'wstarn' 0 251 'ww' 0 252 'wwn' 0 253 'xglobal' 01434 254 'xlanduse' 0 255 'xlandusen' 0 256 'xln' 0 257 'xlon0' 0 258 'xlon0n' 1435 0 259 'xmass1' 0 260 'xmassperparticle' 0 261 'xoutshift' 0 262 1436 'xoutshiftn' 0 263 'xreceptor' 0 264 'xresoln' 0 265 'xrn' 0 266 'xtra1' 1437 0 267 'ylat0' 0 268 'ylat0n' 0 269 'yln' 0 270 'youtshift' 0 2711438 'y outshiftn' 0 272 'yreceptor' 0 273 'yresoln' 0 274 'yrn' 0 275 'ytra1'1439 0 276 'z0' 0 277 'zcolumn_sn' 0 278 'zcolumn_we' 0 279 'ztra1' 0 280)1421 244 'wfname' 0 245 'wfnamen' 0 246 'wftime' 0 247 'wstar' 0 248 'wstarn' 1422 0 249 'ww' 0 250 'wwn' 0 251 'xglobal' 0 252 'xlanduse' 0 253 'xlandusen' 1423 0 254 'xln' 0 255 'xlon0' 0 256 'xlon0n' 0 257 'xmass1' 0 258 1424 'xmassperparticle' 0 259 'xoutshift' 0 260 'xoutshiftn' 0 261 'xreceptor' 1425 0 262 'xresoln' 0 263 'xrn' 0 264 'xtra1' 0 265 'ylat0' 0 266 'ylat0n' 0 1426 267 'yln' 0 268 'youtshift' 0 269 'youtshiftn' 0 270 'yreceptor' 0 271 1427 'yresoln' 0 272 'yrn' 0 273 'ytra1' 0 274 'z0' 0 275 'zcolumn_sn' 0 276 1428 'zcolumn_we' 0 277 'ztra1' 0 278) -
branches/flexpart91_hasod/src_parallel/readageclasses.f90
r8 r10 28 28 ! * 29 29 ! Author: A. Stohl * 30 ! *31 30 ! 20 March 2000 * 31 ! HSO, 14 August 2013 32 ! Added optional namelist input 32 33 ! * 33 34 !***************************************************************************** … … 46 47 integer :: i 47 48 49 ! namelist help variables 50 integer :: readerror 51 52 ! namelist declaration 53 namelist /ageclass/ & 54 nageclass, & 55 lage 56 57 nageclass=-1 ! preset to negative value to identify failed namelist input 48 58 49 59 ! If age spectra calculation is switched off, set number of age classes 50 60 ! to 1 and maximum age to a large number 51 61 !********************************************************************** 52 53 62 54 63 if (lagespectra.ne.1) then … … 57 66 return 58 67 endif 59 60 68 61 69 ! If age spectra claculation is switched on, … … 66 74 status='old',err=999) 67 75 68 do i=1,13 69 read(unitageclasses,*) 70 end do 71 read(unitageclasses,*) nageclass 76 ! try to read in as a namelist 77 read(unitageclasses,ageclass,iostat=readerror) 72 78 79 if ((nageclass.lt.0).or.(readerror.ne.0)) then 80 rewind(unitageclasses) 81 do i=1,13 82 read(unitageclasses,*) 83 end do 84 read(unitageclasses,*) nageclass 85 read(unitageclasses,*) lage(1) 86 do i=2,nageclass 87 read(unitageclasses,*) lage(i) 88 end do 89 endif 90 91 close(unitageclasses) 73 92 74 93 if (nageclass.gt.maxageclass) then … … 81 100 endif 82 101 83 read(unitageclasses,*) lage(1)84 102 if (lage(1).le.0) then 85 103 write(*,*) ' #### FLEXPART MODEL ERROR! AGE OF FIRST #### ' … … 90 108 91 109 do i=2,nageclass 92 read(unitageclasses,*) lage(i)93 110 if (lage(i).le.lage(i-1)) then 94 111 write(*,*) ' #### FLEXPART MODEL ERROR! AGE CLASSES #### ' -
branches/flexpart91_hasod/src_parallel/readavailable.f90
r8 r10 46 46 ! numbwf actual number of wind fields * 47 47 ! wfname(maxwf) file names of needed wind fields * 48 ! wfspec(maxwf) file specifications of wind fields (e.g., if on disc) *49 48 ! wftime(maxwf) [s]times of wind fields relative to beginning time * 50 ! wfname1,wf spec1,wftime1 = same as above, but only local (help variables) *49 ! wfname1,wftime1 = same as above, but only local (help variables) * 51 50 ! * 52 51 ! Constants: * … … 64 63 integer :: wftime1n(maxnests,maxwf),wftimen(maxnests,maxwf) 65 64 real(kind=dp) :: juldate,jul,beg,end 66 character(len=255) :: fname,spec,wfname1(maxwf) ,wfspec1(maxwf)65 character(len=255) :: fname,spec,wfname1(maxwf) 67 66 character(len=255) :: wfname1n(maxnests,maxwf) 68 character(len=40) :: wfspec1n(maxnests,maxwf)69 67 70 68 … … 109 107 110 108 wfname1(numbwf)=fname(1:index(fname,' ')) 111 wfspec1(numbwf)=spec112 109 wftime1(numbwf)=nint((jul-bdate)*86400._dp) 113 110 endif … … 146 143 147 144 wfname1n(k,numbwfn(k))=fname 148 wfspec1n(k,numbwfn(k))=spec149 145 wftime1n(k,numbwfn(k))=nint((jul-bdate)*86400._dp) 150 146 endif … … 205 201 do i=1,numbwf 206 202 wfname(i)=wfname1(i) 207 wfspec(i)=wfspec1(i)208 203 wftime(i)=wftime1(i) 209 204 end do … … 211 206 do i=1,numbwfn(k) 212 207 wfnamen(k,i)=wfname1n(k,i) 213 wfspecn(k,i)=wfspec1n(k,i)214 208 wftimen(k,i)=wftime1n(k,i) 215 209 end do … … 218 212 do i=1,numbwf 219 213 wfname(numbwf-i+1)=wfname1(i) 220 wfspec(numbwf-i+1)=wfspec1(i)221 214 wftime(numbwf-i+1)=wftime1(i) 222 215 end do … … 224 217 do i=1,numbwfn(k) 225 218 wfnamen(k,numbwfn(k)-i+1)=wfname1n(k,i) 226 wfspecn(k,numbwfn(k)-i+1)=wfspec1n(k,i)227 219 wftimen(k,numbwfn(k)-i+1)=wftime1n(k,i) 228 220 end do -
branches/flexpart91_hasod/src_parallel/readcommand.f90
r8 r10 27 27 ! * 28 28 ! Author: A. Stohl * 29 ! *30 29 ! 18 May 1996 * 30 ! HSO, 14 August 2013 31 ! Added optional namelist input 31 32 ! * 32 33 !***************************************************************************** … … 83 84 integer :: readerror 84 85 86 ! declaration of namelist 85 87 namelist /command/ & 86 88 ldirect, & … … 96 98 iout, & 97 99 ipout, & 100 lnetcdfout, & 98 101 lsubgrid, & 99 102 lconvection, & … … 109 112 linit_cond 110 113 111 ! Presetting namelist command114 ! Presetting the namelist command 112 115 ldirect=0 113 ibdate= 20000101116 ibdate=0 114 117 ibtime=0 115 iedate= 20000102118 iedate=0 116 119 ietime=0 117 120 loutstep=10800 … … 124 127 iout=3 125 128 ipout=0 129 lnetcdfout=0 126 130 lsubgrid=1 127 131 lconvection=1 … … 141 145 !************************************************************************** 142 146 open(unitcommand,file=path(1)(1:length(1))//'COMMAND',status='old', & 143 form='formatted',iostat=readerror) 144 ! If fail, check if file does not exist 145 if (readerror.ne.0) then 146 147 print*,'***ERROR: file COMMAND not found. Check your pathnames file.' 148 stop 149 150 endif 151 147 err=999) 148 149 ! try namelist input 152 150 read(unitcommand,command,iostat=readerror) 153 close(unitcommand)154 151 155 152 ! If error in namelist format, try to open with old input code 156 153 ! Failsafe detection with ldirect initial value change 157 if ((readerror.ne.0).or.(ldirect.ne.0)) then 158 159 open(unitcommand,file=path(1)(1:length(1))//'COMMAND',status='old', & 160 err=999) 154 if ((readerror.ne.0).or.(ldirect.eq.0)) then 155 156 rewind(unitcommand) 161 157 162 158 ! Check the format of the COMMAND file (either in free format, … … 346 342 endif 347 343 348 ! check for netcdf output switch 349 lncdfout = .false. 344 ! check for netcdf output switch (use for non-namelist input only!) 350 345 if (iout.ge.8) then 351 ln cdfout = .true.346 lnetcdfout = 1 352 347 iout = iout - 8 353 348 #ifndef NETCDF_OUTPUT 354 print*,'ERROR: netcdf output not activated during compile time '349 print*,'ERROR: netcdf output not activated during compile time but used in COMMAND file!' 355 350 #endif 356 351 endif -
branches/flexpart91_hasod/src_parallel/readoutgrid.f90
r8 r10 53 53 real,parameter :: eps=1.e-4 54 54 55 55 ! namelist variables 56 integer, parameter :: maxoutlev=500 57 real :: outheights(maxoutlev) 58 integer :: readerror 59 60 ! declare namelist 61 namelist /outgrid/ & 62 outlon0,outlat0, & 63 numxgrid,numygrid, & 64 dxout,dyout, & 65 outheights 66 67 ! helps identifying failed namelist input 68 dxout=-1.0 69 outheights=-1.0 56 70 57 71 ! Open the OUTGRID file and read output grid specifications … … 61 75 err=999) 62 76 63 64 call skplin(5,unitoutgrid) 65 66 67 ! 1. Read horizontal grid specifications 68 !**************************************** 69 70 call skplin(3,unitoutgrid) 71 read(unitoutgrid,'(4x,f11.4)') outlon0 72 call skplin(3,unitoutgrid) 73 read(unitoutgrid,'(4x,f11.4)') outlat0 74 call skplin(3,unitoutgrid) 75 read(unitoutgrid,'(4x,i5)') numxgrid 76 call skplin(3,unitoutgrid) 77 read(unitoutgrid,'(4x,i5)') numygrid 78 call skplin(3,unitoutgrid) 79 read(unitoutgrid,'(4x,f12.5)') dxout 80 call skplin(3,unitoutgrid) 81 read(unitoutgrid,'(4x,f12.5)') dyout 82 77 ! try namelist input 78 read(unitoutgrid,outgrid,iostat=readerror) 79 80 81 if ((dxout.le.0).or.(readerror.ne.0)) then 82 83 readerror=1 84 85 rewind(unitoutgrid) 86 call skplin(5,unitoutgrid) 87 88 ! 1. Read horizontal grid specifications 89 !**************************************** 90 91 call skplin(3,unitoutgrid) 92 read(unitoutgrid,'(4x,f11.4)') outlon0 93 call skplin(3,unitoutgrid) 94 read(unitoutgrid,'(4x,f11.4)') outlat0 95 call skplin(3,unitoutgrid) 96 read(unitoutgrid,'(4x,i5)') numxgrid 97 call skplin(3,unitoutgrid) 98 read(unitoutgrid,'(4x,i5)') numygrid 99 call skplin(3,unitoutgrid) 100 read(unitoutgrid,'(4x,f12.5)') dxout 101 call skplin(3,unitoutgrid) 102 read(unitoutgrid,'(4x,f12.5)') dyout 103 104 endif 83 105 84 106 ! Check validity of output grid (shall be within model domain) … … 102 124 ! 2. Count Vertical levels of output grid 103 125 !**************************************** 104 j=0 105 100 j=j+1 126 127 if (readerror.ne.0) then 128 j=0 129 100 j=j+1 106 130 do i=1,3 107 131 read(unitoutgrid,*,end=99) … … 110 134 if (outhelp.eq.0.) goto 99 111 135 goto 100 112 99 113 114 allocate(outheight(numzgrid) &115 ,stat=stat)116 if (stat.ne.0) write(*,*)'ERROR: could not allocate outh'117 allocate(outheighthalf(numzgrid) &118 ,stat=stat)119 if (stat.ne.0) write(*,*)'ERROR: could not allocate outh' 120 121 122 rewind(unitoutgrid)123 call skplin(29,unitoutgrid)136 99 numzgrid=j-1 137 else 138 do i=1,maxoutlev 139 if (outheights(i).lt.0) exit 140 end do 141 numzgrid=i-1 142 end if 143 144 allocate(outheight(numzgrid),stat=stat) 145 if (stat.ne.0) write(*,*)'ERROR: could not allocate outheight' 146 allocate(outheighthalf(numzgrid),stat=stat) 147 if (stat.ne.0) write(*,*)'ERROR: could not allocate outheighthalf' 124 148 125 149 ! 2. Vertical levels of output grid 126 150 !********************************** 127 151 128 j=0 129 1000 j=j+1 130 do i=1,3 131 read(unitoutgrid,*,end=990) 132 end do 133 read(unitoutgrid,'(4x,f7.1)',end=990) outhelp 134 if (outhelp.eq.0.) goto 99 135 outheight(j)=outhelp 136 goto 1000 137 990 numzgrid=j-1 138 152 if (readerror.ne.0) then 153 154 rewind(unitoutgrid) 155 call skplin(29,unitoutgrid) 156 157 do j=1,numzgrid 158 do i=1,3 159 read(unitoutgrid,*) 160 end do 161 read(unitoutgrid,'(4x,f7.1)') outhelp 162 outheight(j)=outhelp 163 end do 164 165 else 166 167 do j=1,numzgrid 168 outheight(j)=outheights(j) 169 end do 170 171 endif 172 173 close(unitoutgrid) 139 174 140 175 ! Check whether vertical levels are specified in ascending order … … 158 193 end do 159 194 160 161 195 xoutshift=xlon0-outlon0 162 196 youtshift=ylat0-outlat0 163 close(unitoutgrid) 164 165 allocate(oroout(0:numxgrid-1,0:numygrid-1) & 166 ,stat=stat) 167 if (stat.ne.0) write(*,*)'ERROR: could not allocate outh' 168 allocate(area(0:numxgrid-1,0:numygrid-1) & 169 ,stat=stat) 170 if (stat.ne.0) write(*,*)'ERROR: could not allocate outh' 171 allocate(volume(0:numxgrid-1,0:numygrid-1,numzgrid) & 172 ,stat=stat) 173 if (stat.ne.0) write(*,*)'ERROR: could not allocate outh' 174 allocate(areaeast(0:numxgrid-1,0:numygrid-1,numzgrid) & 175 ,stat=stat) 176 if (stat.ne.0) write(*,*)'ERROR: could not allocate outh' 177 allocate(areanorth(0:numxgrid-1,0:numygrid-1,numzgrid) & 178 ,stat=stat) 179 if (stat.ne.0) write(*,*)'ERROR: could not allocate outh' 197 198 allocate(oroout(0:numxgrid-1,0:numygrid-1),stat=stat) 199 if (stat.ne.0) write(*,*)'ERROR: could not allocate oroout' 200 allocate(area(0:numxgrid-1,0:numygrid-1),stat=stat) 201 if (stat.ne.0) write(*,*)'ERROR: could not allocate area' 202 allocate(volume(0:numxgrid-1,0:numygrid-1,numzgrid),stat=stat) 203 if (stat.ne.0) write(*,*)'ERROR: could not allocate volume' 204 allocate(areaeast(0:numxgrid-1,0:numygrid-1,numzgrid),stat=stat) 205 if (stat.ne.0) write(*,*)'ERROR: could not allocate areaeast' 206 allocate(areanorth(0:numxgrid-1,0:numygrid-1,numzgrid),stat=stat) 207 if (stat.ne.0) write(*,*)'ERROR: could not allocate areanorth' 180 208 return 181 209 182 210 183 999 211 999 write(*,*) ' #### FLEXPART MODEL ERROR! FILE "OUTGRID" #### ' 184 212 write(*,*) ' #### CANNOT BE OPENED IN THE DIRECTORY #### ' 185 213 write(*,*) ' #### xxx/flexpart/options #### ' -
branches/flexpart91_hasod/src_parallel/readoutgrid_nest.f90
r8 r10 53 53 real,parameter :: eps=1.e-4 54 54 55 integer :: readerror 55 56 57 ! declare namelist 58 namelist /outgridn/ & 59 outlon0n,outlat0n, & 60 numxgridn,numygridn, & 61 dxoutn,dyoutn 62 63 ! helps identifying failed namelist input 64 dxoutn=-1.0 56 65 57 66 ! Open the OUTGRID file and read output grid specifications … … 61 70 status='old',err=999) 62 71 72 ! try namelist input 73 read(unitoutgrid,outgridn,iostat=readerror) 63 74 64 call skplin(5,unitoutgrid)75 if ((dxoutn.le.0).or.(readerror.ne.0)) then 65 76 77 rewind(unitoutgrid) 78 call skplin(5,unitoutgrid) 66 79 67 ! 1. Read horizontal grid specifications68 !****************************************80 ! 1. Read horizontal grid specifications 81 !**************************************** 69 82 70 call skplin(3,unitoutgrid)71 read(unitoutgrid,'(4x,f11.4)') outlon0n72 call skplin(3,unitoutgrid)73 read(unitoutgrid,'(4x,f11.4)') outlat0n74 call skplin(3,unitoutgrid)75 read(unitoutgrid,'(4x,i5)') numxgridn76 call skplin(3,unitoutgrid)77 read(unitoutgrid,'(4x,i5)') numygridn78 call skplin(3,unitoutgrid)79 read(unitoutgrid,'(4x,f12.5)') dxoutn80 call skplin(3,unitoutgrid)81 read(unitoutgrid,'(4x,f12.5)') dyoutn83 call skplin(3,unitoutgrid) 84 read(unitoutgrid,'(4x,f11.4)') outlon0n 85 call skplin(3,unitoutgrid) 86 read(unitoutgrid,'(4x,f11.4)') outlat0n 87 call skplin(3,unitoutgrid) 88 read(unitoutgrid,'(4x,i5)') numxgridn 89 call skplin(3,unitoutgrid) 90 read(unitoutgrid,'(4x,i5)') numygridn 91 call skplin(3,unitoutgrid) 92 read(unitoutgrid,'(4x,f12.5)') dxoutn 93 call skplin(3,unitoutgrid) 94 read(unitoutgrid,'(4x,f12.5)') dyoutn 82 95 96 endif 83 97 84 allocate(orooutn(0:numxgridn-1,0:numygridn-1) & 85 ,stat=stat) 86 if (stat.ne.0) write(*,*)'ERROR: could not allocate outh' 87 allocate(arean(0:numxgridn-1,0:numygridn-1) & 88 ,stat=stat) 89 if (stat.ne.0) write(*,*)'ERROR: could not allocate outh' 90 allocate(volumen(0:numxgridn-1,0:numygridn-1,numzgrid) & 91 ,stat=stat) 92 if (stat.ne.0) write(*,*)'ERROR: could not allocate outh' 98 close(unitoutgrid) 99 100 allocate(orooutn(0:numxgridn-1,0:numygridn-1),stat=stat) 101 if (stat.ne.0) write(*,*)'ERROR: could not allocate orooutn' 102 allocate(arean(0:numxgridn-1,0:numygridn-1),stat=stat) 103 if (stat.ne.0) write(*,*)'ERROR: could not allocate arean' 104 allocate(volumen(0:numxgridn-1,0:numygridn-1,numzgrid),stat=stat) 105 if (stat.ne.0) write(*,*)'ERROR: could not allocate volumen' 93 106 94 107 ! Check validity of output grid (shall be within model domain) … … 110 123 xoutshiftn=xlon0-outlon0n 111 124 youtshiftn=ylat0-outlat0n 112 close(unitoutgrid)113 125 return 114 126 115 116 999 write(*,*) ' #### FLEXPART MODEL ERROR! FILE OUTGRID_NEST #### ' 127 999 write(*,*) ' #### FLEXPART MODEL ERROR! FILE OUTGRID_NEST #### ' 117 128 write(*,*) ' #### CANNOT BE OPENED IN THE DIRECTORY #### ' 118 129 write(*,*) ' #### xxx/flexpart/options #### ' -
branches/flexpart91_hasod/src_parallel/readreceptors.f90
r8 r10 27 27 ! * 28 28 ! Author: A. Stohl * 29 ! *30 29 ! 1 August 1996 * 30 ! HSO, 14 August 2013 31 ! Added optional namelist input 31 32 ! * 32 33 !***************************************************************************** … … 51 52 character(len=16) :: receptor 52 53 54 integer :: readerror 55 real :: lon,lat ! for namelist input, lon/lat are used instead of x,y 56 57 ! declare namelist 58 namelist /receptors/ & 59 receptor, lon, lat 60 61 lon=-999.9 53 62 54 63 ! For backward runs, do not allow receptor output. Thus, set number of receptors to zero … … 67 76 status='old',err=999) 68 77 69 call skplin(5,unitreceptor) 78 ! try namelist input 79 read(unitreceptor,receptors,iostat=readerror) 70 80 81 rewind(unitreceptor) 82 if ((lon.lt.-900).or.(readerror.ne.0)) then 71 83 72 ! Read the names and coordinates of the receptors 73 !************************************************ 84 call skplin(5,unitreceptor) 74 85 75 j=0 76 100 j=j+1 86 ! Read the names and coordinates of the receptors 87 !************************************************ 88 89 j=0 90 100 j=j+1 77 91 read(unitreceptor,*,end=99) 78 92 read(unitreceptor,*,end=99) … … 89 103 endif 90 104 if (j.gt.maxreceptor) then 91 write(*,*) ' #### FLEXPART MODEL ERROR! TOO MANY RECEPTOR #### '92 write(*,*) ' #### POINTS ARE GIVEN. #### '93 write(*,*) ' #### MAXIMUM NUMBER IS ',maxreceptor,' #### '94 write(*,*) ' #### PLEASE MAKE CHANGES IN FILE RECEPTORS #### '105 write(*,*) ' #### FLEXPART MODEL ERROR! TOO MANY RECEPTOR #### ' 106 write(*,*) ' #### POINTS ARE GIVEN. #### ' 107 write(*,*) ' #### MAXIMUM NUMBER IS ',maxreceptor,' #### ' 108 write(*,*) ' #### PLEASE MAKE CHANGES IN FILE RECEPTORS #### ' 95 109 endif 96 110 receptorname(j)=receptor … … 102 116 goto 100 103 117 104 99 numreceptor=j-1 118 99 numreceptor=j-1 119 120 else ! continue with namelist input 121 122 j=0 123 do while (readerror.eq.0) 124 j=j+1 125 lon=-999.9 126 read(unitreceptor,receptors,iostat=readerror) 127 if ((lon.lt.-900).or.(readerror.ne.0)) then 128 readerror=1 129 else 130 if (j.gt.maxreceptor) then 131 write(*,*) ' #### FLEXPART MODEL ERROR! TOO MANY RECEPTOR #### ' 132 write(*,*) ' #### POINTS ARE GIVEN. #### ' 133 write(*,*) ' #### MAXIMUM NUMBER IS ',maxreceptor,' #### ' 134 write(*,*) ' #### PLEASE MAKE CHANGES IN FILE RECEPTORS #### ' 135 endif 136 receptorname(j)=receptor 137 xreceptor(j)=(lon-xlon0)/dx ! transform to grid coordinates 138 yreceptor(j)=(lat-ylat0)/dy 139 xm=r_earth*cos(lat*pi/180.)*dx/180.*pi 140 ym=r_earth*dy/180.*pi 141 receptorarea(j)=xm*ym 142 endif 143 end do 144 numreceptor=j-1 145 146 endif 147 148 105 149 close(unitreceptor) 106 150 return 107 151 108 152 109 999 153 999 write(*,*) ' #### FLEXPART MODEL ERROR! FILE "RECEPTORS" #### ' 110 154 write(*,*) ' #### CANNOT BE OPENED IN THE DIRECTORY #### ' 111 155 write(*,'(a)') path(1)(1:length(1)) -
branches/flexpart91_hasod/src_parallel/readreleases.f90
r8 r10 33 33 ! Update: 29 January 2001 * 34 34 ! Release altitude can be either in magl or masl * 35 ! HSO, 12 August 2013 36 ! Added optional namelist input 35 37 ! * 36 38 !***************************************************************************** … … 67 69 implicit none 68 70 69 integer :: numpartmax,i,j,id1,it1,id2,it2,specnum_rel,idum,stat 71 integer :: numpartmax,i,j,id1,it1,id2,it2,idum,stat 72 integer :: specnum_rel(maxspec) 70 73 real :: vsh(ni),fracth(ni),schmih(ni),releaserate,xdum,cun 71 74 real(kind=dp) :: jul1,jul2,juldate … … 73 76 logical :: old 74 77 78 ! help variables for namelist reading 79 integer :: numpoints, parts, readerror 80 integer*2 :: zkind 81 integer :: idate1, itime1, idate2, itime2 82 real :: lon1,lon2,lat1,lat2,z1,z2,mass(nspec) 83 character*40 :: comment 84 85 ! declare namelists 86 namelist /releases_ctrl/ & 87 nspec, & 88 specnum_rel 89 90 namelist /release/ & 91 idate1, itime1, & 92 idate2, itime2, & 93 lon1, lon2, & 94 lat1, lat2, & 95 z1, z2, & 96 zkind, & 97 mass, & 98 parts, & 99 comment 100 101 numpoint=0 102 103 ! presetting namelist releases_ctrl 104 nspec = -1 ! use negative value to determine failed namelist input 105 specnum_rel(1) = 0 106 75 107 !sec, read release to find how many releasepoints should be allocated 76 77 108 open(unitreleases,file=path(1)(1:length(1))//'RELEASES',status='old', & 78 109 err=999) 110 111 ! check if namelist input provided 112 read(unitreleases,releases_ctrl,iostat=readerror) 113 114 if ((readerror.ne.0).or.(nspec.lt.0)) then 115 116 ! no namelist format, close file and allow reopening in old format 117 rewind(unitreleases) 118 119 readerror=1 ! indicates old format 79 120 80 121 ! Check the format of the RELEASES file (either in free format, … … 93 134 rewind(unitreleases) 94 135 95 96 136 ! Skip first 11 lines (file header) 97 137 !********************************** 98 138 99 139 call skplin(11,unitreleases) 100 101 102 140 read(unitreleases,*,err=998) nspec 103 141 if (old) call skplin(2,unitreleases) 104 142 do i=1,nspec 105 read(unitreleases,*,err=998) specnum_rel 143 read(unitreleases,*,err=998) specnum_rel(1) 106 144 if (old) call skplin(2,unitreleases) 107 145 end do 108 146 109 numpoint=0110 147 100 numpoint=numpoint+1 111 148 read(unitreleases,*,end=25) … … 142 179 25 numpoint=numpoint-1 143 180 181 else 182 readerror=0 183 do while (readerror.eq.0) 184 idate1=-1 185 read(unitreleases,release,iostat=readerror) 186 if ((idate1.lt.0).or.(readerror.ne.0)) then 187 readerror=1 188 else 189 numpoint=numpoint+1 190 endif 191 end do 192 readerror=0 193 endif ! if namelist input 194 195 rewind(unitreleases) 196 144 197 !allocate memory for numpoint releaspoint 145 allocate(ireleasestart(numpoint) & 146 ,stat=stat) 147 if (stat.ne.0) write(*,*)'ERROR: could not allocate RELEASPOINT' 148 allocate(ireleaseend(numpoint) & 149 ,stat=stat) 150 if (stat.ne.0) write(*,*)'ERROR: could not allocate RELEASPOINT' 151 allocate(xpoint1(numpoint) & 152 ,stat=stat) 153 if (stat.ne.0) write(*,*)'ERROR: could not allocate RELEASPOINT' 154 allocate(xpoint2(numpoint) & 155 ,stat=stat) 156 if (stat.ne.0) write(*,*)'ERROR: could not allocate RELEASPOINT' 157 allocate(ypoint1(numpoint) & 158 ,stat=stat) 159 if (stat.ne.0) write(*,*)'ERROR: could not allocate RELEASPOINT' 160 allocate(ypoint2(numpoint) & 161 ,stat=stat) 162 if (stat.ne.0) write(*,*)'ERROR: could not allocate RELEASPOINT' 163 allocate(zpoint1(numpoint) & 164 ,stat=stat) 165 if (stat.ne.0) write(*,*)'ERROR: could not allocate RELEASPOINT' 166 allocate(zpoint2(numpoint) & 167 ,stat=stat) 168 if (stat.ne.0) write(*,*)'ERROR: could not allocate RELEASPOINT' 169 allocate(kindz(numpoint) & 170 ,stat=stat) 171 if (stat.ne.0) write(*,*)'ERROR: could not allocate RELEASPOINT' 172 allocate(xmass(numpoint,maxspec) & 173 ,stat=stat) 174 if (stat.ne.0) write(*,*)'ERROR: could not allocate RELEASPOINT' 175 allocate(rho_rel(numpoint) & 176 ,stat=stat) 177 if (stat.ne.0) write(*,*)'ERROR: could not allocate RELEASPOINT' 178 allocate(npart(numpoint) & 179 ,stat=stat) 180 if (stat.ne.0) write(*,*)'ERROR: could not allocate RELEASPOINT' 181 allocate(xmasssave(numpoint) & 182 ,stat=stat) 183 if (stat.ne.0) write(*,*)'ERROR: could not allocate RELEASPOINT' 184 185 write (*,*) ' Releasepoints allocated: ', numpoint 186 187 do i=1,numpoint 188 xmasssave(i)=0. 189 end do 198 allocate(ireleasestart(numpoint),stat=stat) 199 200 if (stat.ne.0) write(*,*)'ERROR: could not allocate releasepoint' 201 allocate(ireleaseend(numpoint),stat=stat) 202 if (stat.ne.0) write(*,*)'ERROR: could not allocate releasepoint' 203 allocate(xpoint1(numpoint),stat=stat) 204 if (stat.ne.0) write(*,*)'ERROR: could not allocate releasepoint' 205 allocate(xpoint2(numpoint),stat=stat) 206 if (stat.ne.0) write(*,*)'ERROR: could not allocate releasepoint' 207 allocate(ypoint1(numpoint),stat=stat) 208 if (stat.ne.0) write(*,*)'ERROR: could not allocate releasepoint' 209 allocate(ypoint2(numpoint),stat=stat) 210 if (stat.ne.0) write(*,*)'ERROR: could not allocate releasepoint' 211 allocate(zpoint1(numpoint),stat=stat) 212 if (stat.ne.0) write(*,*)'ERROR: could not allocate releasepoint' 213 allocate(zpoint2(numpoint),stat=stat) 214 if (stat.ne.0) write(*,*)'ERROR: could not allocate releasepoint' 215 allocate(kindz(numpoint),stat=stat) 216 if (stat.ne.0) write(*,*)'ERROR: could not allocate releasepoint' 217 allocate(xmass(numpoint,maxspec),stat=stat) 218 if (stat.ne.0) write(*,*)'ERROR: could not allocate releasepoint' 219 allocate(rho_rel(numpoint),stat=stat) 220 if (stat.ne.0) write(*,*)'ERROR: could not allocate releasepoint' 221 allocate(npart(numpoint),stat=stat) 222 if (stat.ne.0) write(*,*)'ERROR: could not allocate releasepoint' 223 allocate(xmasssave(numpoint),stat=stat) 224 if (stat.ne.0) write(*,*)'ERROR: could not allocate releasepoint' 225 226 write (*,*) numpoint,' releasepoints allocated.' 227 228 do i=1,numpoint 229 xmasssave(i)=0. 230 end do 190 231 191 232 !now save the information … … 198 239 end do 199 240 200 rewind(unitreleases) 201 202 241 if (readerror.ne.0) then 203 242 ! Skip first 11 lines (file header) 204 243 !********************************** 205 244 206 call skplin(11,unitreleases) 207 245 call skplin(11,unitreleases) 208 246 209 247 ! Assign species-specific parameters needed for physical processes 210 248 !************************************************************************* 211 249 212 read(unitreleases,*,err=998) nspec 213 if (nspec.gt.maxspec) goto 994 214 if (old) call skplin(2,unitreleases) 250 read(unitreleases,*,err=998) nspec 251 if (nspec.gt.maxspec) goto 994 252 if (old) call skplin(2,unitreleases) 253 endif 215 254 do i=1,nspec 216 read(unitreleases,*,err=998) specnum_rel 217 if (old) call skplin(2,unitreleases) 218 call readspecies(specnum_rel,i) 255 if (readerror.ne.0) then 256 read(unitreleases,*,err=998) specnum_rel(1) 257 if (old) call skplin(2,unitreleases) 258 call readspecies(specnum_rel(1),i) 259 else 260 call readspecies(specnum_rel(i),i) 261 endif 219 262 220 263 ! For backward runs, only 1 species is allowed … … 301 344 ! Read specifications for each release point 302 345 !******************************************* 303 346 numpoints=numpoint 304 347 numpoint=0 305 348 numpartmax=0 306 349 releaserate=0. 307 350 1000 numpoint=numpoint+1 351 352 if (readerror.eq.0) then ! reading namelist format 353 354 if (numpoint.gt.numpoints) goto 250 355 zkind = 1 356 mass = 0 357 parts = 0 358 comment = ' ' 359 read(unitreleases,release,iostat=readerror) 360 id1=idate1 361 it1=itime1 362 id2=idate2 363 it2=itime2 364 xpoint1(numpoint)=lon1 365 xpoint2(numpoint)=lon2 366 ypoint1(numpoint)=lat1 367 ypoint2(numpoint)=lat2 368 zpoint1(numpoint)=z1 369 zpoint2(numpoint)=z2 370 kindz(numpoint)=zkind 371 do i=1,nspec 372 xmass(numpoint,i)=mass(i) 373 end do 374 npart(numpoint)=parts 375 compoint(min(1001,numpoint))=comment 376 377 else 378 308 379 read(unitreleases,*,end=250) 309 380 read(unitreleases,*,err=998,end=250) id1,it1 … … 347 418 endif 348 419 420 endif ! if namelist format 349 421 350 422 ! If a release point contains no particles, stop and issue error message -
branches/flexpart91_hasod/src_parallel/readspecies.f90
r8 r10 30 30 ! * 31 31 ! 11 July 1996 * 32 ! 33 ! HSO, 13 August 2013 34 ! added optional namelist input 32 35 ! * 33 36 !***************************************************************************** … … 55 58 logical :: spec_found 56 59 60 character(len=16) :: pspecies 61 real :: pdecay, pweta, pwetb, preldiff, phenry, pf0, pdensity, pdquer 62 real :: pdsigma, pdryvel, pweightmolar, pohreact, pspec_ass, pkao 63 integer :: readerror 64 65 ! declare namelist 66 namelist /species_params/ & 67 pspecies, pdecay, pweta, pwetb, preldiff, phenry, pf0, pdensity, pdquer, & 68 pdsigma, pdryvel, pweightmolar, pohreact, pspec_ass, pkao 69 70 pspecies=" " 71 pdecay=-999.9 72 pweta=-9.9E-09 73 pwetb=0.0 74 preldiff=-9.9 75 phenry=0.0 76 pf0=0.0 77 pdensity=-9.9E09 78 pdquer=0.0 79 pdsigma=0.0 80 pdryvel=-9.99 81 pohreact=-9.9E-09 82 pspec_ass=-9 83 pkao=-99.99 84 pweightmolar=-789.0 ! read failure indicator value 85 57 86 ! Open the SPECIES file and read species names and properties 58 87 !************************************************************ 59 88 specnum(pos_spec)=id_spec 60 89 write(aspecnumb,'(i3.3)') specnum(pos_spec) 61 open(unitspecies,file= & 62 path(1)(1:length(1))//'SPECIES/SPECIES_'//aspecnumb,status='old', & 63 err=998) 64 !write(*,*) 'reading SPECIES',specnum(pos_spec) 90 open(unitspecies,file=path(1)(1:length(1))//'SPECIES/SPECIES_'//aspecnumb,status='old',err=998) 91 write(*,*) 'reading SPECIES',specnum(pos_spec) 65 92 66 93 ASSSPEC=.FALSE. 67 94 68 do i=1,6 69 read(unitspecies,*) 70 end do 95 ! try namelist input 96 read(unitspecies,species_params,iostat=readerror) 97 98 if ((pweightmolar.eq.-789.0).or.(readerror.ne.0)) then ! no namelist found 99 100 rewind(unitspecies) 101 102 do i=1,6 103 read(unitspecies,*) 104 end do 71 105 72 106 read(unitspecies,'(a10)',end=22) species(pos_spec) 73 ! write(*,*) species(pos_spec)74 107 read(unitspecies,'(f18.1)',end=22) decay(pos_spec) 75 ! write(*,*) decay(pos_spec)76 108 read(unitspecies,'(e18.1)',end=22) weta(pos_spec) 77 ! write(*,*) weta(pos_spec)78 109 read(unitspecies,'(f18.2)',end=22) wetb(pos_spec) 79 ! write(*,*) wetb(pos_spec)80 110 read(unitspecies,'(f18.1)',end=22) reldiff(pos_spec) 81 ! write(*,*) reldiff(pos_spec)82 111 read(unitspecies,'(e18.1)',end=22) henry(pos_spec) 83 ! write(*,*) henry(pos_spec)84 112 read(unitspecies,'(f18.1)',end=22) f0(pos_spec) 85 ! write(*,*) f0(pos_spec)86 113 read(unitspecies,'(e18.1)',end=22) density(pos_spec) 87 ! write(*,*) density(pos_spec)88 114 read(unitspecies,'(e18.1)',end=22) dquer(pos_spec) 89 ! write(*,*) dquer(pos_spec)90 115 read(unitspecies,'(e18.1)',end=22) dsigma(pos_spec) 91 ! write(*,*) dsigma(pos_spec)92 116 read(unitspecies,'(f18.2)',end=22) dryvel(pos_spec) 93 ! write(*,*) dryvel(pos_spec)94 117 read(unitspecies,'(f18.2)',end=22) weightmolar(pos_spec) 95 ! write(*,*) weightmolar(pos_spec)96 118 read(unitspecies,'(e18.1)',end=22) ohreact(pos_spec) 97 ! write(*,*) ohreact(pos_spec)98 119 read(unitspecies,'(i18)',end=22) spec_ass(pos_spec) 99 ! write(*,*) spec_ass(pos_spec)100 120 read(unitspecies,'(f18.2)',end=22) kao(pos_spec) 101 ! write(*,*) kao(pos_spec) 102 i=pos_spec 103 104 if ((weta(pos_spec).gt.0).and.(henry(pos_spec).le.0)) then 105 if (dquer(pos_spec).le.0) goto 996 ! no particle, no henry set 106 endif 107 108 if (spec_ass(pos_spec).gt.0) then 109 spec_found=.FALSE. 110 do j=1,pos_spec-1 111 if (spec_ass(pos_spec).eq.specnum(j)) then 112 spec_ass(pos_spec)=j 113 spec_found=.TRUE. 114 ASSSPEC=.TRUE. 115 endif 116 end do 117 if (spec_found.eqv..FALSE.) then 118 goto 997 119 endif 120 endif 121 122 if (dsigma(i).eq.1.) dsigma(i)=1.0001 ! avoid floating exception 123 if (dsigma(i).eq.0.) dsigma(i)=1.0001 ! avoid floating exception 124 125 if ((reldiff(i).gt.0.).and.(density(i).gt.0.)) then 126 write(*,*) '#### FLEXPART MODEL ERROR! FILE "SPECIES" ####' 127 write(*,*) '#### IS CORRUPT. SPECIES CANNOT BE BOTH ####' 128 write(*,*) '#### PARTICLE AND GAS. ####' 129 write(*,*) '#### SPECIES NUMBER',aspecnumb 130 stop 131 endif 121 122 else 123 124 species(pos_spec)=pspecies 125 decay(pos_spec)=pdecay 126 weta(pos_spec)=pweta 127 wetb(pos_spec)=pwetb 128 reldiff(pos_spec)=preldiff 129 henry(pos_spec)=phenry 130 f0(pos_spec)=pf0 131 density(pos_spec)=pdensity 132 dquer(pos_spec)=pdquer 133 dsigma(pos_spec)=pdsigma 134 dryvel(pos_spec)=pdryvel 135 weightmolar(pos_spec)=pweightmolar 136 ohreact(pos_spec)=pohreact 137 spec_ass(pos_spec)=pspec_ass 138 kao(pos_spec)=pkao 139 140 endif 141 142 i=pos_spec 143 144 if ((weta(pos_spec).gt.0).and.(henry(pos_spec).le.0)) then 145 if (dquer(pos_spec).le.0) goto 996 ! no particle, no henry set 146 endif 147 148 if (spec_ass(pos_spec).gt.0) then 149 spec_found=.FALSE. 150 do j=1,pos_spec-1 151 if (spec_ass(pos_spec).eq.specnum(j)) then 152 spec_ass(pos_spec)=j 153 spec_found=.TRUE. 154 ASSSPEC=.TRUE. 155 endif 156 end do 157 if (spec_found.eqv..FALSE.) then 158 goto 997 159 endif 160 endif 161 162 if (dsigma(i).eq.1.) dsigma(i)=1.0001 ! avoid floating exception 163 if (dsigma(i).eq.0.) dsigma(i)=1.0001 ! avoid floating exception 164 165 if ((reldiff(i).gt.0.).and.(density(i).gt.0.)) then 166 write(*,*) '#### FLEXPART MODEL ERROR! FILE "SPECIES" ####' 167 write(*,*) '#### IS CORRUPT. SPECIES CANNOT BE BOTH ####' 168 write(*,*) '#### PARTICLE AND GAS. ####' 169 write(*,*) '#### SPECIES NUMBER',aspecnumb 170 stop 171 endif 132 172 20 continue 133 173 -
branches/flexpart91_hasod/src_parallel/timemanager.f90
r9 r10 97 97 idummy_ran3_initialize, idummy_ran3_advance 98 98 #ifdef NETCDF_OUTPUT 99 use n c_output_mod, only: concoutput_ncdf, concoutput_nest_ncdf99 use netcdf_output_mod, only: concoutput_netcdf, concoutput_nest_netcdf 100 100 #endif 101 101 … … 324 324 if ((itime.eq.loutend).and.(outnum.gt.0.)) then 325 325 if ((iout.le.3.).or.(iout.eq.5)) then 326 if (ln cdfout) then326 if (lnetcdfout.eq.1) then 327 327 #ifdef NETCDF_OUTPUT 328 call concoutput_n cdf(itime,outnum,gridtotalunc, &328 call concoutput_netcdf(itime,outnum,gridtotalunc, & 329 329 wetgridtotalunc,drygridtotalunc) 330 330 #endif … … 335 335 336 336 if (nested_output.eq.1) then 337 if (ln cdfout) then337 if (lnetcdfout.eq.1) then 338 338 #ifdef NETCDF_OUTPUT 339 call concoutput_nest_n cdf(itime,outnum)339 call concoutput_nest_netcdf(itime,outnum) 340 340 #endif 341 341 else
Note: See TracChangeset
for help on using the changeset viewer.