Changeset 3337 for palm/trunk/SOURCE/chem_emissions_mod.f90
- Timestamp:
- Oct 12, 2018 3:17:09 PM (6 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE
- Property svn:mergeinfo changed
/palm/branches/resler/SOURCE (added) merged: 2136-2138,2324-2325,2655,2679,2684,2694-2695,2783-2786,2810,2985,3000,3015,3017,3060-3061,3063,3154,3317,3319-3321,3323,3335-3336
- Property svn:mergeinfo changed
-
palm/trunk/SOURCE/chem_emissions_mod.f90
r3312 r3337 27 27 ! ----------------- 28 28 ! $Id$ 29 ! (from branch resler) 30 ! Formatting 31 ! 32 ! 3312 2018-10-06 14:15:46Z knoop 29 33 ! Initial revision 30 34 ! … … 719 723 DO ispec = 1 , len_index 720 724 721 IF ( emiss_factor_main(match_spec_input(ispec)) .LT. 0 .AND. emiss_factor_side(match_spec_input(ispec)) .LT. 0 ) THEN 722 723 message_string = 'PARAMETERIZED emissions mode selected:' // & 725 IF ( emiss_factor_main(match_spec_input(ispec)) .LT. 0 .AND. & 726 emiss_factor_side(match_spec_input(ispec)) .LT. 0 ) THEN 727 728 message_string = 'PARAMETERIZED emissions mode selected:' // & 724 729 ' EMISSIONS POSSIBLE ONLY ON STREET SURFACES' // & 725 730 ' but values of scaling factors for street types' // & … … 1246 1251 IF (TRIM(spc_names(match_spec_model(ispec)))=="NO") THEN 1247 1252 !> Kg/m2 kg/m2*s 1248 delta_emis(nys:nyn,nxl:nxr) = emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%nox_comp(icat,1)*con_factor 1253 delta_emis(nys:nyn,nxl:nxr) = & 1254 emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%nox_comp(icat,1)*con_factor 1249 1255 1250 emis_distribution(1,nys:nyn,nxl:nxr,ispec)=emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1256 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & 1257 emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1251 1258 1252 1259 ELSE IF (TRIM(spc_names(match_spec_model(ispec)))=="NO2") THEN 1253 1260 1254 delta_emis(nys:nyn,nxl:nxr) = emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%nox_comp(icat,2)*con_factor 1255 1256 emis_distribution(1,nys:nyn,nxl:nxr,ispec)=emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1261 delta_emis(nys:nyn,nxl:nxr) = & 1262 emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%nox_comp(icat,2)*con_factor 1263 1264 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & 1265 emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1257 1266 1258 1267 !> SOX Compositions … … 1260 1269 ELSE IF (TRIM(spc_names(match_spec_model(ispec)))=="SO2") THEN 1261 1270 1262 delta_emis(nys:nyn,nxl:nxr) = emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%sox_comp(icat,1)*con_factor 1263 1264 emis_distribution(1,nys:nyn,nxl:nxr,ispec)=emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1271 delta_emis(nys:nyn,nxl:nxr) = & 1272 emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%sox_comp(icat,1)*con_factor 1273 1274 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & 1275 emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1265 1276 1266 1277 ELSE IF (TRIM(spc_names(match_spec_model(ispec)))=="SO4") THEN 1267 1278 1268 delta_emis(nys:nyn,nxl:nxr) = emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%sox_comp(icat,2)*con_factor 1269 1270 emis_distribution(1,nys:nyn,nxl:nxr,ispec)=emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1279 delta_emis(nys:nyn,nxl:nxr) = & 1280 emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%sox_comp(icat,2)*con_factor 1281 1282 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & 1283 emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1271 1284 1272 1285 … … 1278 1291 DO i_pm_comp= 1,SIZE(emt_att%pm_comp(1,:,1)) 1279 1292 1280 delta_emis(nys:nyn,nxl:nxr) = emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%pm_comp(icat,i_pm_comp,1)*con_factor 1293 delta_emis(nys:nyn,nxl:nxr) = & 1294 emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%pm_comp(icat,i_pm_comp,1)*con_factor 1281 1295 1282 1296 1283 emis_distribution(1,nys:nyn,nxl:nxr,ispec)=emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1297 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & 1298 emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1284 1299 1285 1300 ENDDO … … 1291 1306 DO i_pm_comp= 1,SIZE(emt_att%pm_comp(1,:,2)) 1292 1307 1293 delta_emis(nys:nyn,nxl:nxr) = emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%pm_comp(icat,i_pm_comp,2)*con_factor 1308 delta_emis(nys:nyn,nxl:nxr) = & 1309 emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%pm_comp(icat,i_pm_comp,2)*con_factor 1294 1310 1295 1311 1296 emis_distribution(1,nys:nyn,nxl:nxr,ispec)=emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1312 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & 1313 emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1297 1314 1298 1315 ENDDO … … 1304 1321 DO i_pm_comp= 1,SIZE(emt_att%pm_comp(1,:,3)) 1305 1322 1306 delta_emis(nys:nyn,nxl:nxr) = emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%pm_comp(icat,i_pm_comp,3)*con_factor 1323 delta_emis(nys:nyn,nxl:nxr) = & 1324 emis(nys:nyn,nxl:nxr)*time_factor(icat)*emt_att%pm_comp(icat,i_pm_comp,3)*con_factor 1307 1325 1308 1326 1309 emis_distribution(1,nys:nyn,nxl:nxr,ispec)=emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1327 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & 1328 emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1310 1329 1311 1330 ENDDO … … 1319 1338 IF (TRIM(spc_names(match_spec_model(ispec)))==TRIM(emt_att%voc_name(ivoc))) THEN 1320 1339 1321 delta_emis(nys:nyn,nxl:nxr) = emis(nys:nyn,nxl:nxr)*time_factor(icat)* 1340 delta_emis(nys:nyn,nxl:nxr) = emis(nys:nyn,nxl:nxr)*time_factor(icat)* & 1322 1341 emt_att%voc_comp(icat,match_spec_voc_input(ivoc))*con_factor 1323 1342 1324 emis_distribution(1,nys:nyn,nxl:nxr,ispec)=emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1343 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & 1344 emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1325 1345 1326 1346 ENDIF … … 1333 1353 delta_emis(nys:nyn,nxl:nxr) = emis(nys:nyn,nxl:nxr)*time_factor(icat)*con_factor 1334 1354 1335 emis_distribution(1,nys:nyn,nxl:nxr,ispec)=emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1355 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & 1356 emis_distribution(1,nys:nyn,nxl:nxr,ispec)+delta_emis(nys:nyn,nxl:nxr) 1336 1357 1337 1358 ENDIF ! IF (spc_names==) … … 1375 1396 1376 1397 !> PMs are already in mass units:micrograms:they have to be converted to kilograms 1377 IF (TRIM(spc_names(match_spec_model(ispec)))=="PM1" .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM25" & 1398 IF (TRIM(spc_names(match_spec_model(ispec)))=="PM1" & 1399 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM25" & 1378 1400 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM10") THEN 1379 1401 … … 1389 1411 !> Other Species: inputs are micromoles: they have to be converted in moles 1390 1412 ! ppm/s *m *kg/m^3 1391 surf_lsm_h%cssws(match_spec_model(ispec),m) = emiss_factor_main(match_spec_input(ispec))* 1413 surf_lsm_h%cssws(match_spec_model(ispec),m) = emiss_factor_main(match_spec_input(ispec))* & 1392 1414 ! micromoles/(m^2*s) 1393 emis_distribution(1,j,i,ispec) * 1415 emis_distribution(1,j,i,ispec) * & 1394 1416 ! m**3/Nmole 1395 conv_to_ratio(k,j,i)* &1417 conv_to_ratio(k,j,i)* & 1396 1418 ! kg/m^3 1397 1419 rho_air(k) … … 1403 1425 1404 1426 1405 ELSEIF ( street_type_f%var(j,i) >= side_street_id .AND. street_type_f%var(j,i) < main_street_id ) THEN 1427 ELSEIF ( street_type_f%var(j,i) >= side_street_id .AND. & 1428 street_type_f%var(j,i) < main_street_id ) THEN 1406 1429 1407 1430 !> Cycle over already matched species … … 1409 1432 1410 1433 !> PMs are already in mass units: micrograms 1411 IF (TRIM(spc_names(match_spec_model(ispec)))=="PM1" .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM25" & 1434 IF ( TRIM(spc_names(match_spec_model(ispec)))=="PM1" & 1435 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM25" & 1412 1436 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM10") THEN 1413 1437 1414 1438 ! kg/(m^2*s) *kg/m^3 1415 surf_lsm_h%cssws(match_spec_model(ispec),m)= emiss_factor_side(match_spec_input(ispec)) * 1439 surf_lsm_h%cssws(match_spec_model(ispec),m)= emiss_factor_side(match_spec_input(ispec)) * & 1416 1440 ! kg/(m^2*s) 1417 1441 emis_distribution(1,j,i,ispec)* & … … 1423 1447 !>Other Species: inputs are micromoles 1424 1448 ! ppm/s *m *kg/m^3 1425 surf_lsm_h%cssws(match_spec_model(ispec),m) = emiss_factor_side(match_spec_input(ispec)) * 1449 surf_lsm_h%cssws(match_spec_model(ispec),m) = emiss_factor_side(match_spec_input(ispec)) * & 1426 1450 ! micromoles/(m^2*s) 1427 emis_distribution(1,j,i,ispec) * 1451 emis_distribution(1,j,i,ispec) * & 1428 1452 ! m**3/Nmole 1429 conv_to_ratio(k,j,i)* &1453 conv_to_ratio(k,j,i)* & 1430 1454 ! kg/m^3 1431 1455 rho_air(k) … … 1466 1490 1467 1491 !> PMs 1468 IF (TRIM(spc_names(match_spec_model(ispec)))=="PM1" .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM25" & 1469 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM10") THEN 1492 IF (TRIM(spc_names(match_spec_model(ispec)))=="PM1" & 1493 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM25" & 1494 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM10") THEN 1470 1495 1471 1496 ! kg/(m^2*s) *kg/m^3 kg/(m^2*s) … … 1522 1547 1523 1548 !> PMs 1524 IF (TRIM(spc_names(match_spec_model(ispec)))=="PM1" .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM25" & 1525 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM10") THEN 1549 IF (TRIM(spc_names(match_spec_model(ispec)))=="PM1" & 1550 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM25" & 1551 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM10") THEN 1526 1552 1527 1553 ! kg/(m^2*s) * kg/m^3 kg/(m^2*s) … … 1573 1599 1574 1600 !> PMs 1575 IF (TRIM(spc_names(match_spec_model(ispec)))=="PM1" .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM25" & 1576 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM10") THEN 1601 IF (TRIM(spc_names(match_spec_model(ispec)))=="PM1" & 1602 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM25" & 1603 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM10") THEN 1577 1604 1578 1605 ! kg/(m^2*s) *kg/m^3 kg/(m^2*s)
Note: See TracChangeset
for help on using the changeset viewer.