Changeset 3467
- Timestamp:
- Oct 30, 2018 7:05:21 PM (6 years ago)
- Location:
- palm/trunk
- Files:
-
- 29 edited
- 3 copied
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SCRIPTS/.palm.iofiles
r3421 r3467 11 11 PIDS_STATIC inopt:tr d3#:d3r $base_data/$run_identifier/INPUT _static* 12 12 PIDS_DYNAMIC inopt:tr d3#:d3r $base_data/$run_identifier/INPUT _dynamic* 13 PIDS_SALSA inopt:tr d3#:d3r $base_data/$run_identifier/INPUT _salsa* 14 PIDS_CHEM inopt:tr d3#:d3r $base_data/$run_identifier/INPUT _chemistry* 13 15 rrtmg_lw.nc inopt:tr d3#:d3r $base_data/$run_identifier/INPUT _rlw 14 16 rrtmg_sw.nc inopt:tr d3#:d3r $base_data/$run_identifier/INPUT _rsw -
palm/trunk/SOURCE
-
palm/trunk/SOURCE/Makefile
- Property svn:mergeinfo changed
/palm/branches/salsa/SOURCE/Makefile (added) merged: 2525,2561,2607,2708,2730,2739,2757,2777,2814,2832,2869-2870,3005,3064,3104,3124,3169,3308,3331,3412
r3458 r3467 25 25 # ----------------- 26 26 # $Id$ 27 # Implementation of a new aerosol module salsa. 28 # 29 # 30 # 3458 2018-10-30 14:51:23Z kanani 27 31 # from chemistry branch r3443, banzhafs, Russo, forkel, basit: 28 32 # radiation_model_mod added to chemistry_model_mod … … 628 632 read_restart_data_mod.f90 \ 629 633 run_control.f90 \ 634 salsa_mod.f90 \ 635 salsa_util_mod.f90 \ 630 636 set_slicer_attributes_dvrp.f90 \ 631 637 singleton_mod.f90 \ … … 693 699 694 700 CC = cc 695 CFLAGS = -O 701 CFLAGS = -O 696 702 697 703 F90 = … … 703 709 # The following line is needed for palm_simple_install, don't remove it! 704 710 #to_be_replaced_by_include 705 706 711 707 712 .SUFFIXES: … … 746 751 bulk_cloud_model_mod.o \ 747 752 mod_kinds.o \ 748 modules.o 753 modules.o \ 754 salsa_util_mod.o 749 755 advec_w_pw.o: \ 750 756 mod_kinds.o \ … … 765 771 ocean_mod.o \ 766 772 radiation_model_mod.o \ 773 salsa_mod.o \ 767 774 turbulence_closure_mod.o \ 768 775 urban_surface_mod.o … … 793 800 modules.o \ 794 801 pmc_interface_mod.o \ 802 salsa_mod.o \ 795 803 surface_mod.o \ 796 804 turbulence_closure_mod.o … … 837 845 pmc_interface_mod.o \ 838 846 radiation_model_mod.o \ 847 salsa_mod.o \ 839 848 spectra_mod.o \ 840 849 subsidence_mod.o \ … … 853 862 modules.o \ 854 863 netcdf_data_input_mod.o \ 864 salsa_mod.o \ 855 865 surface_mod.o 856 866 chemistry_model_mod.o: \ … … 916 926 modules.o \ 917 927 netcdf_interface_mod.o \ 928 salsa_mod.o \ 918 929 surface_mod.o 919 930 data_output_profiles.o: \ … … 960 971 ocean_mod.o \ 961 972 radiation_model_mod.o \ 973 salsa_mod.o \ 962 974 surface_mod.o \ 963 975 urban_surface_mod.o \ … … 976 988 netcdf_interface_mod.o \ 977 989 ocean_mod.o \ 990 salsa_mod.o \ 978 991 turbulence_closure_mod.o \ 979 992 urban_surface_mod.o … … 1062 1075 pmc_interface_mod.o \ 1063 1076 radiation_model_mod.o \ 1077 salsa_mod.o \ 1064 1078 spectra_mod.o \ 1065 1079 subsidence_mod.o \ … … 1097 1111 random_generator_parallel_mod.o \ 1098 1112 read_restart_data_mod.o \ 1113 salsa_mod.o \ 1099 1114 surface_layer_fluxes_mod.o \ 1100 1115 surface_mod.o \ … … 1131 1146 modules.o \ 1132 1147 netcdf_interface_mod.o \ 1133 radiation_model_mod.o 1148 radiation_model_mod.o \ 1149 salsa_mod.o 1134 1150 init_pegrid.o: \ 1135 1151 mod_kinds.o \ … … 1343 1359 ocean_mod.o \ 1344 1360 radiation_model_mod.o \ 1361 salsa_mod.o \ 1345 1362 spectra_mod.o \ 1346 1363 turbulence_closure_mod.o \ … … 1386 1403 pmc_interface_mod.o \ 1387 1404 pmc_particle_interface.o \ 1405 salsa_mod.o \ 1388 1406 surface_layer_fluxes_mod.o \ 1389 1407 time_to_string.o \ … … 1410 1428 radiation_model_mod.o \ 1411 1429 read_restart_data_mod.o \ 1430 salsa_mod.o \ 1412 1431 spectra_mod.o \ 1413 1432 surface_output_mod.o \ … … 1444 1463 pmc_mpi_wrapper_mod.o \ 1445 1464 pmc_parent_mod.o \ 1465 salsa_mod.o \ 1446 1466 surface_mod.o 1447 1467 pmc_child_mod.o: \ … … 1522 1542 plant_canopy_model_mod.o \ 1523 1543 radiation_model_mod.o \ 1544 salsa_mod.o \ 1524 1545 subsidence_mod.o \ 1525 1546 surface_mod.o \ … … 1564 1585 random_function_mod.o\ 1565 1586 random_generator_parallel_mod.o \ 1587 salsa_mod.o \ 1566 1588 spectra_mod.o \ 1567 1589 surface_mod.o \ … … 1576 1598 mod_kinds.o \ 1577 1599 modules.o 1600 salsa_mod.o: \ 1601 modules.o \ 1602 mod_kinds.o \ 1603 advec_ws.o \ 1604 advec_s_pw.o \ 1605 advec_s_up.o \ 1606 chemistry_model_mod.o \ 1607 diffusion_s.o \ 1608 netcdf_data_input_mod.o \ 1609 plant_canopy_model_mod.o \ 1610 salsa_util_mod.o \ 1611 surface_mod.o \ 1612 netcdf_data_input_mod.o 1613 salsa_util_mod.o: \ 1614 mod_kinds.o \ 1615 modules.o 1578 1616 set_slicer_attributes_dvrp.o: \ 1579 1617 mod_kinds.o \ … … 1603 1641 modules.o \ 1604 1642 radiation_model_mod.o \ 1643 salsa_mod.o \ 1605 1644 surface_mod.o \ 1606 1645 turbulence_closure_mod.o \ … … 1642 1681 ocean_mod.o \ 1643 1682 pmc_interface_mod.o \ 1683 salsa_mod.o \ 1644 1684 turbulence_closure_mod.o \ 1645 1685 urban_surface_mod.o … … 1681 1721 progress_bar_mod.o \ 1682 1722 radiation_model_mod.o \ 1723 salsa_mod.o \ 1683 1724 spectra_mod.o \ 1684 1725 surface_layer_fluxes_mod.o \ - Property svn:mergeinfo changed
-
palm/trunk/SOURCE/advec_ws.f90
r3302 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3302 2018-10-03 02:39:40Z raasch 27 30 ! Stokes drift velocity added in scalar advection 28 31 ! … … 47 50 ! 2731 2018-01-09 17:44:02Z suehring 48 51 ! Enable loop vectorization by splitting the k-loop 49 ! 52 ! 50 53 ! 2718 2018-01-02 08:49:38Z maronga 51 54 ! Corrected "Former revisions" section … … 315 318 USE pegrid 316 319 320 USE salsa_util_mod, & 321 ONLY: sums_salsa_ws_l 322 317 323 USE statistics, & 318 324 ONLY: sums_us2_ws_l, sums_vs2_ws_l, sums_ws2_ws_l, sums_wsncs_ws_l,& … … 381 387 ALLOCATE( sums_wssas_ws_l(nzb:nzt+1,0:threads_per_task-1) ) 382 388 sums_wssas_ws_l = 0.0_wp 383 ENDIF 389 ENDIF 390 ! 391 !-- Mona: Now always allocated 392 ALLOCATE( sums_salsa_ws_l(nzb:nzt+1,0:threads_per_task-1) ) 393 sums_salsa_ws_l = 0.0_wp 384 394 385 395 ENDIF … … 1096 1106 ws_scheme_sca 1097 1107 1098 USE kinds 1108 USE kinds 1099 1109 1100 1110 USE bulk_cloud_model_mod, & 1101 1111 ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert 1102 1112 1113 USE salsa_util_mod, & 1114 ONLY: sums_salsa_ws_l 1115 1103 1116 USE statistics, & 1104 1117 ONLY: sums_us2_ws_l, sums_vs2_ws_l, sums_ws2_ws_l, sums_wsncs_ws_l,& 1105 1118 sums_wsnrs_ws_l, sums_wspts_ws_l, sums_wsqcs_ws_l, & 1106 1119 sums_wsqrs_ws_l, sums_wsqs_ws_l, sums_wsss_ws_l, & 1107 sums_wssas_ws_l, sums_wsus_ws_l, sums_wsvs_ws_l 1120 sums_wssas_ws_l, sums_wsus_ws_l, sums_wsvs_ws_l 1108 1121 1109 1122 … … 1134 1147 ENDIF 1135 1148 IF ( ocean_mode ) sums_wssas_ws_l = 0.0_wp 1136 1149 1150 sums_salsa_ws_l = 0.0_wp 1151 1152 1137 1153 ENDIF 1138 1154 … … 1167 1183 USE pegrid 1168 1184 1185 USE salsa_util_mod, & 1186 ONLY: sums_salsa_ws_l 1187 1169 1188 USE statistics, & 1170 1189 ONLY: hom, sums_wsncs_ws_l, sums_wsnrs_ws_l, sums_wspts_ws_l, & 1171 1190 sums_wsqcs_ws_l, sums_wsqrs_ws_l, sums_wsqs_ws_l, & 1172 sums_wssas_ws_l, sums_wsss_ws_l, weight_substep 1191 sums_wssas_ws_l, sums_wsss_ws_l, weight_substep 1173 1192 1174 1193 … … 1704 1723 ) * weight_substep(intermediate_timestep_count) 1705 1724 ENDDO 1725 1726 CASE ( 'aerosol_mass', 'aerosol_number', 'salsa_gas' ) 1727 1728 DO k = nzb, nzt 1729 sums_salsa_ws_l(k,tn) = sums_salsa_ws_l(k,tn) + & 1730 ( flux_t(k) / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) ) & 1731 * ( w(k,j,i) - hom(k,1,3,0) ) & 1732 + diss_t(k) / ( ABS(w(k,j,i)) + 1.0E-20_wp ) & 1733 * ABS( w(k,j,i) - hom(k,1,3,0) ) & 1734 ) * weight_substep(intermediate_timestep_count) 1735 ENDDO 1706 1736 1707 1737 ! CASE ( 'kc' ) … … 3211 3241 3212 3242 USE kinds 3243 3244 USE salsa_util_mod, & 3245 ONLY: sums_salsa_ws_l 3213 3246 3214 3247 USE statistics, & … … 3731 3764 * ABS(w(k,j,i) - hom(k,1,3,0) ) & 3732 3765 ) * weight_substep(intermediate_timestep_count) 3733 ENDDO 3766 ENDDO 3767 3768 CASE ( 'aerosol_mass', 'aerosol_number', 'salsa_gas' ) 3769 DO k = nzb, nzt 3770 sums_salsa_ws_l(k,tn) = sums_salsa_ws_l(k,tn) & 3771 + ( flux_t(k) & 3772 / ( w(k,j,i) + SIGN( 1.0E-20_wp, w(k,j,i) ) ) & 3773 * ( w(k,j,i) - hom(k,1,3,0) ) & 3774 + diss_t(k) & 3775 / ( ABS(w(k,j,i)) + 1.0E-20_wp ) & 3776 * ABS(w(k,j,i) - hom(k,1,3,0) ) & 3777 ) * weight_substep(intermediate_timestep_count) 3778 ENDDO 3734 3779 3735 3780 -
palm/trunk/SOURCE/average_3d_data.f90
r3448 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3448 2018-10-29 18:14:31Z kanani 27 30 ! Adjustment of biometeorology calls 28 31 ! … … 71 74 ! Implementation of new microphysic scheme: cloud_scheme = 'morrison' 72 75 ! includes two more prognostic equations for cloud drop concentration (nc) 73 ! and cloud water content (qc). 76 ! and cloud water content (qc). 74 77 ! 75 78 ! 2233 2017-05-30 18:08:54Z suehring … … 188 191 USE radiation_model_mod, & 189 192 ONLY: radiation, radiation_3d_data_averaging 193 194 USE salsa_mod, & 195 ONLY: salsa, salsa_3d_data_averaging 190 196 191 197 USE turbulence_closure_mod, & … … 569 575 CALL radiation_3d_data_averaging( 'average', doav(ii) ) 570 576 ENDIF 577 578 IF ( salsa ) THEN 579 CALL salsa_3d_data_averaging( 'average', doav(ii) ) 580 ENDIF 571 581 572 582 IF ( biometeorology ) THEN -
palm/trunk/SOURCE/boundary_conds.f90
r3347 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3347 2018-10-15 14:21:08Z suehring 27 30 ! Bugfix in setting boundary conditions in offline nesting 28 31 ! … … 240 243 USE pmc_interface, & 241 244 ONLY : nesting_mode, rans_mode_parent 245 246 USE salsa_mod, & 247 ONLY: salsa, salsa_boundary_conds 242 248 243 249 USE surface_mod, & … … 1373 1379 1374 1380 ENDIF 1381 1382 IF ( salsa ) THEN 1383 CALL salsa_boundary_conds 1384 ENDIF 1375 1385 1376 1386 END SUBROUTINE boundary_conds -
palm/trunk/SOURCE/check_parameters.f90
- Property svn:mergeinfo changed
/palm/branches/salsa/SOURCE/check_parameters.f90 (added) merged: 2505,2525-2526,2561,2607,2708,2730,2738,2744,2748,2777,2814,2832,2838,2869,3005,3064,3104,3169,3211,3308,3331,3412
r3454 r3467 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! 23 ! 2017-10-10 11:29:14Z monakurppa 24 ! Implementation of a new aerosol module salsa. 23 25 ! 24 26 ! Former revisions: … … 781 783 ONLY: radiation, radiation_check_data_output, & 782 784 radiation_check_data_output_pr, radiation_check_parameters 785 786 USE salsa_mod, & 787 ONLY: salsa, salsa_check_data_output, salsa_check_parameters 783 788 784 789 USE spectra_mod, & … … 1514 1519 !-- Checks for surface data output 1515 1520 IF ( surface_data_output ) CALL surface_output_check_parameters 1521 ! 1522 !-- When SALSA is used, perform additional checks 1523 IF ( salsa ) CALL salsa_check_parameters 1516 1524 1517 1525 ! … … 3214 3222 ENDIF 3215 3223 3224 IF ( unit == 'illegal' .AND. salsa ) THEN 3225 CALL salsa_check_data_output( var, unit ) 3226 ENDIF 3227 3216 3228 IF ( unit == 'illegal' .AND. urban_surface & 3217 3229 .AND. var(1:4) == 'usm_' ) THEN - Property svn:mergeinfo changed
-
palm/trunk/SOURCE/chem_emissions_mod.f90
r3458 r3467 27 27 ! ----------------- 28 28 ! $Id$ 29 ! Enabled PARAMETRIZED mode for default surfaces when LSM is not applied but 30 ! salsa is used 31 ! 32 ! 3458 2018-10-30 14:51:23Z kanani 29 33 ! from chemistry branch r3443, banzhafs, Russo: 30 34 ! Additional correction for index of input file of pre-processed mode … … 885 889 USE indices, & 886 890 ONLY: nnx,nny,nnz 891 USE salsa_mod, & 892 ONLY: salsa 887 893 USE surface_mod, & 888 894 ONLY: surf_lsm_h,surf_def_h,surf_usm_h … … 1366 1372 1367 1373 !> Streets are lsm surfaces, hence, no usm surface treatment required 1368 IF (surf_lsm_h%ns .GT. 0 ) THEN1374 IF (surf_lsm_h%ns .GT. 0 ) THEN 1369 1375 DO m = 1, surf_lsm_h%ns 1370 1376 i = surf_lsm_h%i(m) … … 1442 1448 !> If no street type is defined, then assign null emissions to all the species 1443 1449 surf_lsm_h%cssws(:,m) = 0.0_wp 1450 1451 ENDIF 1452 1453 ENDDO 1454 ELSEIF ( salsa ) THEN 1455 DO m = 1, surf_def_h(0)%ns 1456 i = surf_def_h(0)%i(m) 1457 j = surf_def_h(0)%j(m) 1458 k = surf_def_h(0)%k(m) 1459 1460 1461 IF ( street_type_f%var(j,i) >= main_street_id .AND. & 1462 street_type_f%var(j,i) < max_street_id ) & 1463 THEN 1464 1465 !> Cycle over already matched species 1466 DO ispec=1,nspec_out 1467 1468 !> PMs are already in mass units:micrograms: have to be converted to kilograms 1469 IF ( TRIM(spc_names(match_spec_model(ispec)))=="PM1" & 1470 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM25" & 1471 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM10")& 1472 THEN 1473 1474 surf_def_h(0)%cssws(match_spec_model(ispec),m) = & 1475 emiss_factor_main(match_spec_input(ispec)) * & 1476 emis_distribution(1,j,i,ispec) * rho_air(k) /& 1477 time_factor(1) 1478 ELSE 1479 1480 !> Other Species: inputs are micromoles: have to be converted 1481 surf_def_h(0)%cssws(match_spec_model(ispec),m) = & 1482 emiss_factor_main(match_spec_input(ispec)) * & 1483 emis_distribution(1,j,i,ispec) * & 1484 conv_to_ratio(k,j,i) * rho_air(k) / time_factor(1) 1485 ENDIF 1486 ENDDO 1487 1488 ELSEIF ( street_type_f%var(j,i) >= side_street_id .AND. & 1489 street_type_f%var(j,i) < main_street_id ) & 1490 THEN 1491 1492 !> Cycle over already matched species 1493 DO ispec=1,nspec_out 1494 1495 !> PMs are already in mass units: micrograms 1496 IF ( TRIM(spc_names(match_spec_model(ispec)))=="PM1" & 1497 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM25" & 1498 .OR. TRIM(spc_names(match_spec_model(ispec)))=="PM10")& 1499 THEN 1500 1501 surf_def_h(0)%cssws(match_spec_model(ispec),m) = & 1502 emiss_factor_side(match_spec_input(ispec)) * & 1503 emis_distribution(1,j,i,ispec) * rho_air(k) / & 1504 time_factor(1) 1505 ELSE 1506 1507 surf_def_h(0)%cssws(match_spec_model(ispec),m) = & 1508 emiss_factor_side(match_spec_input(ispec)) * & 1509 emis_distribution(1,j,i,ispec) * & 1510 conv_to_ratio(k,j,i) * rho_air(k) / time_factor(1) 1511 ENDIF 1512 1513 ENDDO 1514 1515 ELSE 1516 1517 !> If no street type is defined, then assign null emissions to all the species 1518 surf_def_h(0)%cssws(:,m) = 0.0_wp 1444 1519 1445 1520 ENDIF -
palm/trunk/SOURCE/data_output_2d.f90
r3448 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3448 2018-10-29 18:14:31Z kanani 27 30 ! Add biometeorology 28 31 ! … … 314 317 USE radiation_model_mod, & 315 318 ONLY: radiation, radiation_data_output_2d 319 320 USE salsa_mod, & 321 ONLY: salsa, salsa_data_output_2d 316 322 317 323 USE surface_mod, & … … 1338 1344 nzb_do, nzt_do ) 1339 1345 ENDIF 1340 1341 IF ( .NOT. found ) THEN1342 CALL tcm_data_output_2d( av, do2d(av,if), found, grid, mode,&1343 local_pf, nzb_do, nzt_do)1344 ENDIF 1346 1347 IF ( .NOT. found .AND. salsa ) THEN 1348 CALL salsa_data_output_2d( av, do2d(av,if), found, grid, & 1349 mode, local_pf, two_d ) 1350 ENDIF 1345 1351 1346 1352 IF ( .NOT. found .AND. uv_exposure ) THEN -
palm/trunk/SOURCE/data_output_3d.f90
r3448 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3448 2018-10-29 18:14:31Z kanani 27 30 ! Adjustment of biometeorology calls 28 31 ! … … 291 294 USE radiation_model_mod, & 292 295 ONLY: nzub, nzut, radiation, radiation_data_output_3d 296 297 USE salsa_mod, & 298 ONLY: salsa, salsa_data_output_3d 293 299 294 300 USE turbulence_closure_mod, & … … 775 781 resorted = .TRUE. 776 782 ENDIF 783 784 ! 785 !-- SALSA output 786 IF ( .NOT. found .AND. salsa ) THEN 787 CALL salsa_data_output_3d( av, do3d(av,if), found, local_pf ) 788 resorted = .TRUE. 789 ENDIF 777 790 778 791 IF ( .NOT. found .AND. biometeorology ) THEN -
palm/trunk/SOURCE/data_output_mask.f90
r3435 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3435 2018-10-26 18:25:44Z gronemeier 27 30 ! Add terrain-following output 28 31 ! … … 186 189 ONLY: radiation, radiation_data_output_mask 187 190 191 USE salsa_mod, & 192 ONLY: salsa, salsa_data_output_mask 193 188 194 USE surface_mod, & 189 ONLY : surf_def_h, surf_lsm_h, surf_usm_h, get_topography_top_index_ji 195 ONLY : surf_def_h, surf_lsm_h, surf_usm_h, get_topography_top_index_ji 190 196 191 197 IMPLICIT NONE … … 665 671 ENDIF 666 672 ! 673 !-- SALSA quantities 674 IF ( salsa ) THEN 675 CALL salsa_data_output_mask( av, domask(mid,av,ivar), found, & 676 local_pf ) 677 ENDIF 678 ! 667 679 !-- User defined quantity 668 680 IF ( .NOT. found ) THEN -
palm/trunk/SOURCE/date_and_time_mod.f90
r3458 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Tabs removed 28 ! 29 ! 3458 2018-10-30 14:51:23Z kanani 27 30 ! from chemistry branch r3443, banzhafs: 28 31 ! Added initial hour_of_day, hour_of_year, day_of_year and month_of_year to … … 563 566 ELSE 564 567 565 568 DO i_mon=1,index_mm 566 569 567 568 569 570 sum_dd=sum_dd+days(i_mon) 571 572 ENDDO 570 573 571 574 index_hh=(sum_dd*nhour)+(index_dd*nhour)+(hh) -
palm/trunk/SOURCE/header.f90
r3448 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3448 2018-10-29 18:14:31Z kanani 27 30 ! Add biometeorology 28 31 ! … … 484 487 USE radiation_model_mod, & 485 488 ONLY: radiation, radiation_header 489 490 USE salsa_mod, & 491 ONLY: salsa, salsa_header 486 492 487 493 USE spectra_mod, & … … 2061 2067 ENDIF 2062 2068 ENDIF 2069 2070 ! 2071 !-- SALSA information 2072 IF ( salsa ) CALL salsa_header( io ) 2063 2073 2064 2074 ! -
palm/trunk/SOURCE/init_3d_model.f90
- Property svn:mergeinfo changed
/palm/branches/salsa/SOURCE/init_3d_model.f90 (added) merged: 2505,2525-2526,2561,2607,2708,2730,2738,2744,2748,2777,2814,2832,2869,3005,3018,3064,3104,3169,3211,3308,3412
r3458 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3458 2018-10-30 14:51:23Z kanani 27 30 ! from chemistry branch r3443, basit: 28 31 ! bug fixed in sums and sums_l for chemistry profile output … … 618 621 USE random_generator_parallel, & 619 622 ONLY: init_parallel_random_generator 620 623 621 624 USE read_restart_data_mod, & 622 ONLY: rrd_read_parts_of_global, rrd_local 625 ONLY: rrd_read_parts_of_global, rrd_local 626 627 USE salsa_mod, & 628 ONLY: salsa, salsa_init, salsa_init_arrays 623 629 624 630 USE statistics, & … … 1065 1071 IF ( land_surface ) CALL lsm_init_arrays 1066 1072 IF ( ocean_mode ) CALL ocean_init_arrays 1073 IF ( salsa ) CALL salsa_init_arrays 1067 1074 IF ( wind_turbine ) CALL wtm_init_arrays 1068 1075 IF ( uv_exposure ) CALL uvem_init_arrays … … 2413 2420 2414 2421 ! 2422 !-- If required, initialize quantities needed in SALSA 2423 IF ( salsa ) THEN 2424 CALL location_message( 'initializing SALSA model', .TRUE. ) 2425 CALL salsa_init 2426 CALL location_message( 'finished', .TRUE. ) 2427 ENDIF 2428 2429 ! 2415 2430 !-- If required, initialize quantities needed for the gust module 2416 2431 IF ( gust_module_enabled ) THEN - Property svn:mergeinfo changed
-
palm/trunk/SOURCE/init_masks.f90
r3435 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3435 2018-10-26 18:25:44Z gronemeier 27 30 ! Add checks for chemistry and radiation model 28 31 ! Set indices for terrain-following masked output … … 180 183 ONLY: particle_advection 181 184 182 USE pegrid 185 USE pegrid 183 186 184 187 USE radiation_model_mod, & 185 188 ONLY: radiation, radiation_check_data_output 189 190 USE salsa_mod, & 191 ONLY: salsa, salsa_check_data_output 186 192 187 193 IMPLICIT NONE … … 477 483 478 484 CALL user_check_data_output( var, unit ) 485 486 IF ( salsa ) THEN 487 CALL salsa_check_data_output( var, unit ) 488 ENDIF 479 489 480 490 IF ( unit == 'illegal' .AND. air_chemistry & -
palm/trunk/SOURCE/lpm_pack_arrays.f90
r3241 r3467 354 354 END SUBROUTINE lpm_sort_timeloop_done 355 355 356 357 356 END MODULE lpm_pack_and_sort_mod -
palm/trunk/SOURCE/modules.f90
r3448 r3467 2139 2139 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: sums_l !< subdomain sum (_l) gathered for various quantities 2140 2140 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: sums_l_l !< subdomain sum (_l) of mixing length from diffusivities 2141 2141 2142 2142 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: hom !< horizontal mean of various quantities (profiles/timeseries) 2143 2143 -
palm/trunk/SOURCE/netcdf_data_input_mod.f90
r3464 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Salsa implemented 28 ! 29 ! 3464 2018-10-30 18:08:55Z kanani 27 30 ! Define coordinate reference system (crs) and read from input dataset 28 31 ! Revise default values for reference coordinates … … 776 779 !-- Public subroutines 777 780 PUBLIC netcdf_data_input_check_dynamic, netcdf_data_input_check_static, & 778 netcdf_data_input_chemistry_data, netcdf_data_input_inquire_file, 781 netcdf_data_input_chemistry_data, netcdf_data_input_inquire_file, & 779 782 netcdf_data_input_init, netcdf_data_input_init_lsm, & 780 783 netcdf_data_input_init_3d, & 781 784 netcdf_data_input_interpolate, netcdf_data_input_offline_nesting, & 782 netcdf_data_input_surface_data, netcdf_data_input_topo 785 netcdf_data_input_surface_data, netcdf_data_input_topo, & 786 get_attribute, get_dimension_length, get_variable, open_read_file 783 787 784 788 CONTAINS -
palm/trunk/SOURCE/netcdf_interface_mod.f90
r3464 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! - Salsa implemented 28 ! - Bugfix convert_utm_to... 29 ! 30 ! 3464 2018-10-30 18:08:55Z kanani 27 31 ! - Add variable crs to output files 28 32 ! - Add long_name to UTM coordinates … … 103 107 ! 2718 2018-01-02 08:49:38Z maronga 104 108 ! Corrected "Former revisions" section 105 ! 109 ! 106 110 ! 2696 2017-12-14 17:12:51Z kanani 107 111 ! Change in file header (GPL part) … … 659 663 660 664 USE radiation_model_mod, & 661 ONLY: radiation, radiation_define_netcdf_grid 665 ONLY: radiation, radiation_define_netcdf_grid 666 667 USE salsa_mod, & 668 ONLY: salsa, salsa_define_netcdf_grid 662 669 663 670 USE spectra_mod, & … … 1164 1171 CASE DEFAULT 1165 1172 ! 1166 !-- Check for quantities defined in other modules 1173 !-- Check for quantities defined in other modules 1167 1174 CALL tcm_define_netcdf_grid( domask( mid,av,i), found, & 1168 1175 grid_x, grid_y, grid_z ) … … 1198 1205 grid_z ) 1199 1206 ENDIF 1207 ! 1208 !-- Check for SALSA quantities 1209 IF ( .NOT. found .AND. salsa ) THEN 1210 CALL salsa_define_netcdf_grid( domask(mid,av,i), found, & 1211 grid_x, grid_y, grid_z ) 1212 ENDIF 1200 1213 ! 1201 1214 !-- Now check for user-defined quantities … … 2034 2047 ENDIF 2035 2048 2049 ! 2050 !-- Check for SALSA quantities 2051 IF ( .NOT. found .AND. salsa ) THEN 2052 CALL salsa_define_netcdf_grid( do3d(av,i), found, grid_x,& 2053 grid_y, grid_z ) 2054 ENDIF 2055 2036 2056 !-- Check for user-defined quantities 2037 2057 IF ( .NOT. found ) THEN … … 3057 3077 grid_z ) 3058 3078 ENDIF 3079 3080 ! 3081 !-- Check for SALSA quantities 3082 IF ( .NOT. found .AND. salsa ) THEN 3083 CALL salsa_define_netcdf_grid( do2d(av,i), found, & 3084 grid_x, grid_y, & 3085 grid_z ) 3086 ENDIF 3059 3087 3060 3088 ! … … 4037 4065 grid_z ) 4038 4066 ENDIF 4067 4068 ! 4069 !-- Check for SALSA quantities 4070 IF ( .NOT. found .AND. salsa ) THEN 4071 CALL salsa_define_netcdf_grid( do2d(av,i), found, & 4072 grid_x, grid_y, grid_z ) 4073 ENDIF 4039 4074 4040 4075 ! … … 4970 5005 grid_z ) 4971 5006 ENDIF 4972 5007 5008 ! 5009 !-- Check for SALSA quantities 5010 IF ( .NOT. found .AND. salsa ) THEN 5011 CALL salsa_define_netcdf_grid( do2d(av,i), found, & 5012 grid_x, grid_y, grid_z ) 5013 ENDIF 4973 5014 ! 4974 5015 !-- Check for gust module quantities … … 7231 7272 7232 7273 WRITE( message_identifier, '(''NC'',I4.4)' ) errno 7274 7233 7275 message_string = TRIM( NF90_STRERROR( nc_stat ) ) 7234 7276 … … 7435 7477 IMPLICIT NONE 7436 7478 7479 INTEGER(iwp) :: j !< loop index 7480 7437 7481 REAL(wp), INTENT(in) :: eutm !< easting (UTM) 7438 7482 REAL(wp), INTENT(out) :: lat !< geographic latitude in degree … … 7447 7491 REAL(wp) :: eta !< 7448 7492 REAL(wp) :: eta_s !< 7449 REAL(wp) :: j !< loop index7450 7493 REAL(wp) :: n !< 3rd flattening 7451 7494 REAL(wp) :: n2 !< n^2 -
palm/trunk/SOURCE/parin.f90
r3448 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3448 2018-10-29 18:14:31Z kanani 27 30 ! Add biometeorology 28 31 ! … … 520 523 521 524 USE read_restart_data_mod, & 522 ONLY: rrd_global 525 ONLY: rrd_global 526 527 USE salsa_mod, & 528 ONLY: salsa_parin 523 529 524 530 USE spectra_mod, & … … 912 918 CALL uvem_parin 913 919 ! 920 !-- Check if SALSA processes should be carried out and read &salsa_par 921 !-- if required 922 CALL salsa_parin 923 ! 914 924 !-- Read user-defined variables 915 925 CALL user_parin -
palm/trunk/SOURCE/plant_canopy_model_mod.f90
r3449 r3467 299 299 ! 300 300 !-- Public variables and constants 301 PUBLIC pc_heating_rate, pc_transpiration_rate, pc_latent_rate,&302 303 301 PUBLIC cdc, pc_heating_rate, pc_transpiration_rate, pc_latent_rate, & 302 canopy_mode, cthf, dt_plant_canopy, lad, lad_s, pch_index, & 303 plant_canopy_transpiration 304 304 305 305 INTERFACE pcm_calc_transpiration_rate -
palm/trunk/SOURCE/prognostic_equations.f90
r3458 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! Remove cpu-logs from i,j loop in cache version. 29 ! 30 ! 3458 2018-10-30 14:51:23Z kanani 27 31 ! remove duplicate USE chem_modules 28 32 ! from chemistry branch r3443, banzhafs, basit: … … 368 372 timestep_scheme, tsc, use_subsidence_tendencies, & 369 373 use_upstream_for_tke, wind_turbine, ws_scheme_mom, & 370 ws_scheme_sca, urban_surface, land_surface 374 ws_scheme_sca, urban_surface, land_surface, & 375 time_since_reference_point 371 376 372 377 USE coriolis_mod, & … … 407 412 ONLY: radiation, radiation_tendency, & 408 413 skip_time_do_radiation 409 414 415 USE salsa_mod, & 416 ONLY: aerosol_mass, aerosol_number, dt_salsa, last_salsa_time, nbins, & 417 ncc_tot, ngast, salsa, salsa_boundary_conds, salsa_diagnostics, & 418 salsa_driver, salsa_gas, salsa_gases_from_chem, salsa_tendency, & 419 skip_time_do_salsa 420 421 USE salsa_util_mod, & 422 ONLY: sums_salsa_ws_l 423 410 424 USE statistics, & 411 425 ONLY: hom … … 460 474 461 475 IMPLICIT NONE 462 476 477 INTEGER(iwp) :: b !< index for aerosol size bins (salsa) 478 INTEGER(iwp) :: c !< index for chemical compounds (salsa) 479 INTEGER(iwp) :: g !< index for gaseous compounds (salsa) 463 480 INTEGER(iwp) :: i !< 464 481 INTEGER(iwp) :: i_omp_start !< … … 523 540 lsp_usr = lsp_usr +1 524 541 ENDDO 525 542 543 526 544 ENDDO 527 545 CALL cpu_log( log_point_s(84), 'chemistry exch-horiz ', 'stop' ) … … 530 548 531 549 ENDIF 550 551 ! 552 !-- Run SALSA and aerosol dynamic processes. SALSA is run with a longer time 553 !-- step. The exchange of ghost points is required after this update of the 554 !-- concentrations of aerosol number and mass 555 IF ( salsa ) THEN 556 557 IF ( time_since_reference_point >= skip_time_do_salsa ) THEN 558 IF ( ( time_since_reference_point - last_salsa_time ) >= dt_salsa ) & 559 THEN 560 CALL cpu_log( log_point_s(90), 'salsa processes ', 'start' ) 561 !$OMP PARALLEL PRIVATE (i,j,b,c,g) 562 !$OMP DO 563 ! 564 !-- Call salsa processes 565 DO i = nxl, nxr 566 DO j = nys, nyn 567 CALL salsa_diagnostics( i, j ) 568 CALL salsa_driver( i, j, 3 ) 569 CALL salsa_diagnostics( i, j ) 570 ENDDO 571 ENDDO 572 573 CALL cpu_log( log_point_s(90), 'salsa processes ', 'stop' ) 574 575 CALL cpu_log( log_point_s(91), 'salsa exch-horiz ', 'start' ) 576 ! 577 !-- Exchange ghost points and decycle if needed. 578 DO b = 1, nbins 579 CALL exchange_horiz( aerosol_number(b)%conc, nbgp ) 580 CALL salsa_boundary_conds( aerosol_number(b)%conc_p, & 581 aerosol_number(b)%init ) 582 DO c = 1, ncc_tot 583 CALL exchange_horiz( aerosol_mass((c-1)*nbins+b)%conc, nbgp ) 584 CALL salsa_boundary_conds( & 585 aerosol_mass((c-1)*nbins+b)%conc_p, & 586 aerosol_mass((c-1)*nbins+b)%init ) 587 ENDDO 588 ENDDO 589 590 IF ( .NOT. salsa_gases_from_chem ) THEN 591 DO g = 1, ngast 592 CALL exchange_horiz( salsa_gas(g)%conc, nbgp ) 593 CALL salsa_boundary_conds( salsa_gas(g)%conc_p, & 594 salsa_gas(g)%init ) 595 ENDDO 596 ENDIF 597 CALL cpu_log( log_point_s(91), 'salsa exch-horiz ', 'stop' ) 598 599 !$OMP END PARALLEL 600 last_salsa_time = time_since_reference_point 601 602 ENDIF 603 604 ENDIF 605 606 ENDIF 532 607 533 608 ! … … 549 624 ! 550 625 !-- Loop over all prognostic equations 551 !$OMP PARALLEL PRIVATE (i,i_omp_start,j,k,loop_start,tn) 626 !-- b, c ang g added for SALSA 627 !$OMP PARALLEL PRIVATE (i,i_omp_start,j,k,loop_start,tn,b,c,g) 552 628 553 629 !$ tn = omp_get_thread_num() … … 1310 1386 IF ( air_chemistry ) THEN 1311 1387 !> TODO: remove time measurement since it slows down performance because it will be called extremely often 1312 CALL cpu_log( log_point(83), '(chem advec+diff+prog)', 'start' )1313 1388 ! 1314 1389 !-- Loop over chemical species … … 1324 1399 chem_species(lsp)%diss_l_cs ) 1325 1400 ENDDO 1326 1327 CALL cpu_log( log_point(83), '(chem advec+diff+prog)', 'stop' ) 1401 1328 1402 ENDIF ! Chemical equations 1329 1403 ! … … 1332 1406 CALL ocean_prognostic_equations( i, j, i_omp_start, tn ) 1333 1407 ENDIF 1408 1409 IF ( salsa ) THEN 1410 ! 1411 !-- Loop over aerosol size bins: number and mass bins 1412 IF ( time_since_reference_point >= skip_time_do_salsa ) THEN 1413 1414 DO b = 1, nbins 1415 sums_salsa_ws_l = aerosol_number(b)%sums_ws_l 1416 CALL salsa_tendency( 'aerosol_number', & 1417 aerosol_number(b)%conc_p, & 1418 aerosol_number(b)%conc, & 1419 aerosol_number(b)%tconc_m, & 1420 i, j, i_omp_start, tn, b, b, & 1421 aerosol_number(b)%flux_s, & 1422 aerosol_number(b)%diss_s, & 1423 aerosol_number(b)%flux_l, & 1424 aerosol_number(b)%diss_l, & 1425 aerosol_number(b)%init ) 1426 aerosol_number(b)%sums_ws_l = sums_salsa_ws_l 1427 DO c = 1, ncc_tot 1428 sums_salsa_ws_l = aerosol_mass((c-1)*nbins+b)%sums_ws_l 1429 CALL salsa_tendency( 'aerosol_mass', & 1430 aerosol_mass((c-1)*nbins+b)%conc_p,& 1431 aerosol_mass((c-1)*nbins+b)%conc, & 1432 aerosol_mass((c-1)*nbins+b)%tconc_m,& 1433 i, j, i_omp_start, tn, b, c, & 1434 aerosol_mass((c-1)*nbins+b)%flux_s,& 1435 aerosol_mass((c-1)*nbins+b)%diss_s,& 1436 aerosol_mass((c-1)*nbins+b)%flux_l,& 1437 aerosol_mass((c-1)*nbins+b)%diss_l,& 1438 aerosol_mass((c-1)*nbins+b)%init ) 1439 aerosol_mass((c-1)*nbins+b)%sums_ws_l = sums_salsa_ws_l 1440 ENDDO 1441 ENDDO 1442 IF ( .NOT. salsa_gases_from_chem ) THEN 1443 DO g = 1, ngast 1444 sums_salsa_ws_l = salsa_gas(g)%sums_ws_l 1445 CALL salsa_tendency( 'salsa_gas', salsa_gas(g)%conc_p, & 1446 salsa_gas(g)%conc, salsa_gas(g)%tconc_m, & 1447 i, j, i_omp_start, tn, g, g, & 1448 salsa_gas(g)%flux_s, salsa_gas(g)%diss_s,& 1449 salsa_gas(g)%flux_l, salsa_gas(g)%diss_l,& 1450 salsa_gas(g)%init ) 1451 salsa_gas(g)%sums_ws_l = sums_salsa_ws_l 1452 ENDDO 1453 ENDIF 1454 1455 ENDIF 1456 1457 ENDIF 1334 1458 1335 1459 ENDDO ! loop over j … … 1355 1479 IMPLICIT NONE 1356 1480 1481 INTEGER(iwp) :: b !< index for aerosol size bins (salsa) 1482 INTEGER(iwp) :: c !< index for chemical compounds (salsa) 1483 INTEGER(iwp) :: g !< index for gaseous compounds (salsa) 1357 1484 INTEGER(iwp) :: i !< 1358 1485 INTEGER(iwp) :: j !< … … 1362 1489 REAL(wp) :: sbt !< 1363 1490 1491 ! 1492 !-- Run SALSA and aerosol dynamic processes. SALSA is run with a longer time 1493 !-- step. The exchange of ghost points is required after this update of the 1494 !-- concentrations of aerosol number and mass 1495 IF ( salsa ) THEN 1496 1497 IF ( time_since_reference_point >= skip_time_do_salsa ) THEN 1498 1499 IF ( ( time_since_reference_point - last_salsa_time ) >= dt_salsa ) & 1500 THEN 1501 1502 CALL cpu_log( log_point_s(90), 'salsa processes ', 'start' ) 1503 !$OMP PARALLEL PRIVATE (i,j,b,c,g) 1504 !$OMP DO 1505 ! 1506 !-- Call salsa processes 1507 DO i = nxl, nxr 1508 DO j = nys, nyn 1509 CALL salsa_diagnostics( i, j ) 1510 CALL salsa_driver( i, j, 3 ) 1511 CALL salsa_diagnostics( i, j ) 1512 ENDDO 1513 ENDDO 1514 1515 CALL cpu_log( log_point_s(90), 'salsa processes ', 'stop' ) 1516 1517 CALL cpu_log( log_point_s(91), 'salsa exch-horiz ', 'start' ) 1518 ! 1519 !-- Exchange ghost points and decycle if needed. 1520 DO b = 1, nbins 1521 CALL exchange_horiz( aerosol_number(b)%conc, nbgp ) 1522 CALL salsa_boundary_conds( aerosol_number(b)%conc_p, & 1523 aerosol_number(b)%init ) 1524 DO c = 1, ncc_tot 1525 CALL exchange_horiz( aerosol_mass((c-1)*nbins+b)%conc, nbgp ) 1526 CALL salsa_boundary_conds( & 1527 aerosol_mass((c-1)*nbins+b)%conc_p, & 1528 aerosol_mass((c-1)*nbins+b)%init ) 1529 ENDDO 1530 ENDDO 1531 1532 IF ( .NOT. salsa_gases_from_chem ) THEN 1533 DO g = 1, ngast 1534 CALL exchange_horiz( salsa_gas(g)%conc, nbgp ) 1535 CALL salsa_boundary_conds( salsa_gas(g)%conc_p, & 1536 salsa_gas(g)%init ) 1537 ENDDO 1538 ENDIF 1539 CALL cpu_log( log_point_s(91), 'salsa exch-horiz ', 'stop' ) 1540 1541 !$OMP END PARALLEL 1542 last_salsa_time = time_since_reference_point 1543 1544 ENDIF 1545 1546 ENDIF 1547 1548 ENDIF 1364 1549 1365 1550 ! … … 2392 2577 CALL cpu_log( log_point(83), '(chem advec+diff+prog)', 'stop' ) 2393 2578 ENDIF ! Chemicals equations 2579 2580 IF ( salsa ) THEN 2581 CALL cpu_log( log_point_s(92), 'salsa advec+diff+prog ', 'start' ) 2582 ! 2583 !-- Loop over aerosol size bins: number and mass bins 2584 IF ( time_since_reference_point >= skip_time_do_salsa ) THEN 2585 2586 DO b = 1, nbins 2587 sums_salsa_ws_l = aerosol_number(b)%sums_ws_l 2588 CALL salsa_tendency( 'aerosol_number', aerosol_number(b)%conc_p, & 2589 aerosol_number(b)%conc, & 2590 aerosol_number(b)%tconc_m, & 2591 b, b, aerosol_number(b)%init ) 2592 aerosol_number(b)%sums_ws_l = sums_salsa_ws_l 2593 DO c = 1, ncc_tot 2594 sums_salsa_ws_l = aerosol_mass((c-1)*nbins+b)%sums_ws_l 2595 CALL salsa_tendency( 'aerosol_mass', & 2596 aerosol_mass((c-1)*nbins+b)%conc_p, & 2597 aerosol_mass((c-1)*nbins+b)%conc, & 2598 aerosol_mass((c-1)*nbins+b)%tconc_m, & 2599 b, c, aerosol_mass((c-1)*nbins+b)%init ) 2600 aerosol_mass((c-1)*nbins+b)%sums_ws_l = sums_salsa_ws_l 2601 ENDDO 2602 ENDDO 2603 IF ( .NOT. salsa_gases_from_chem ) THEN 2604 DO g = 1, ngast 2605 sums_salsa_ws_l = salsa_gas(g)%sums_ws_l 2606 CALL salsa_tendency( 'salsa_gas', salsa_gas(g)%conc_p, & 2607 salsa_gas(g)%conc, salsa_gas(g)%tconc_m, & 2608 g, g, salsa_gas(g)%init ) 2609 salsa_gas(g)%sums_ws_l = sums_salsa_ws_l 2610 ENDDO 2611 ENDIF 2612 2613 ENDIF 2614 2615 CALL cpu_log( log_point_s(92), 'salsa advec+diff+prog ', 'stop' ) 2616 ENDIF 2394 2617 2395 2618 ! -
palm/trunk/SOURCE/read_restart_data_mod.f90
r3355 r3467 1085 1085 USE random_generator_parallel, & 1086 1086 ONLY: id_random_array, seq_random_array 1087 1088 USE salsa_mod, & 1089 ONLY: salsa, salsa_rrd_local 1087 1090 1088 1091 USE surface_mod, & … … 1907 1910 nyn_on_file, nysf, nysc, & 1908 1911 nys_on_file, found ) 1912 ! 1913 !-- Read salsa restart data 1914 IF ( .NOT. found .AND. salsa ) THEN 1915 CALL salsa_rrd_local 1916 ENDIF 1909 1917 1910 1918 ! -
palm/trunk/SOURCE/sum_up_3d_data.f90
r3448 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3448 2018-10-29 18:14:31Z kanani 27 30 ! Adjustment of biometeorology calls 28 31 ! … … 275 278 USE radiation_model_mod, & 276 279 ONLY: radiation, radiation_3d_data_averaging 280 281 USE salsa_mod, & 282 ONLY: salsa, salsa_3d_data_averaging 277 283 278 284 USE surface_mod, & … … 539 545 CALL radiation_3d_data_averaging( 'allocate', doav(ii) ) 540 546 ENDIF 547 548 ! 549 !-- SALSA quantity 550 IF ( salsa ) THEN 551 CALL salsa_3d_data_averaging( 'allocate', doav(ii) ) 552 ENDIF 541 553 542 554 CALL tcm_3d_data_averaging( 'allocate', doav(ii) ) … … 1187 1199 CALL radiation_3d_data_averaging( 'sum', doav(ii) ) 1188 1200 ENDIF 1201 1202 ! 1203 !-- SALSA quantity 1204 IF ( salsa ) THEN 1205 CALL salsa_3d_data_averaging( 'sum', doav(ii) ) 1206 ENDIF 1189 1207 1190 1208 CALL tcm_3d_data_averaging( 'sum', doav(ii) ) -
palm/trunk/SOURCE/surface_mod.f90
r3444 r3467 175 175 ! 2547 2017-10-16 12:41:56Z schwenkel 176 176 ! extended by cloud_droplets option 177 ! 178 ! 2526 2017-10-10 11:29:14Z monakurppa 179 ! Implementation of a new aerosol module salsa: new surface fluxes for aerosols 180 ! and gases. 177 181 ! 178 182 ! 2508 2017-10-02 08:57:09Z suehring … … 322 326 REAL(wp), DIMENSION(:), ALLOCATABLE :: nrsws !< surface flux nr 323 327 REAL(wp), DIMENSION(:), ALLOCATABLE :: sasws !< surface flux salinity 328 !-- Added for SALSA: 329 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: answs !< surface flux aerosol number: dim 1: flux, dim 2: bin 330 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: amsws !< surface flux aerosol mass: dim 1: flux, dim 2: bin 331 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: gtsws !< surface flux gesous tracers: dim 1: flux, dim 2: gas 324 332 325 333 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: cssws !< surface flux chemical species … … 522 530 REAL(wp), DIMENSION(:), ALLOCATABLE :: qsws_liq_eb_av !< average of qsws_liq_eb 523 531 REAL(wp), DIMENSION(:), ALLOCATABLE :: t_surf_wall_av !< average of wall surface temperature (K) 532 REAL(wp), DIMENSION(:), ALLOCATABLE :: t_surf_av !< average of wall surface temperature (K) 524 533 REAL(wp), DIMENSION(:), ALLOCATABLE :: t_surf_window_av !< average of window surface temperature (K) 525 534 REAL(wp), DIMENSION(:), ALLOCATABLE :: t_surf_green_av !< average of green wall surface temperature (K) -
palm/trunk/SOURCE/swap_timelevel.f90
r3303 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3303 2018-10-03 12:04:15Z raasch 27 30 ! bugfix for swapping in case of ocean mode 28 31 ! … … 158 161 USE control_parameters, & 159 162 ONLY: air_chemistry, humidity, land_surface, neutral, ocean_mode, & 160 passive_scalar, timestep_count, urban_surface 163 passive_scalar, simulated_time, timestep_count, urban_surface, & 164 time_since_reference_point 161 165 162 166 USE gust_mod, & … … 176 180 USE pmc_interface, & 177 181 ONLY: nested_run, pmci_set_swaplevel 182 183 USE salsa_mod, & 184 ONLY: salsa, salsa_swap_timelevel, skip_time_do_salsa 178 185 179 186 USE turbulence_closure_mod, & … … 285 292 CALL ocean_swap_timelevel( MOD( timestep_count, 2 ) ) 286 293 ENDIF 294 295 IF ( salsa .AND. simulated_time >= time_since_reference_point ) THEN 296 CALL salsa_swap_timelevel( MOD( timestep_count, 2 ) ) 297 ENDIF 287 298 288 299 CALL tcm_swap_timelevel( MOD( timestep_count, 2) ) -
palm/trunk/SOURCE/time_integration.f90
r3448 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3448 2018-10-29 18:14:31Z kanani 27 30 ! Add biometeorology 28 31 ! … … 549 552 stg_adjust, stg_main, time_stg_adjust, time_stg_call, & 550 553 use_syn_turb_gen 554 555 USE salsa_mod, & 556 ONLY: aerosol_number, aerosol_mass, nbins, ncc_tot, ngast, salsa, & 557 salsa_boundary_conds, salsa_gas, salsa_gases_from_chem, & 558 skip_time_do_salsa 551 559 552 560 USE user_actions_mod, & … … 571 579 572 580 CHARACTER (LEN=9) :: time_to_string !< 573 574 INTEGER(iwp) :: lsp !< 581 582 INTEGER(iwp) :: b !< index for aerosol size bins 583 INTEGER(iwp) :: c !< index for chemical compounds in aerosol size bins 584 INTEGER(iwp) :: g !< index for gaseous compounds 585 INTEGER(iwp) :: lsp 575 586 INTEGER(iwp) :: lsp_usr !< 576 587 INTEGER(iwp) :: n !< loop counter for chemistry species … … 694 705 CALL cpu_log( log_point(55), 'wind_turbine', 'stop' ) 695 706 696 ENDIF 707 ENDIF 697 708 698 709 ! … … 852 863 ENDIF 853 864 865 IF ( salsa .AND. time_since_reference_point >= skip_time_do_salsa )& 866 THEN 867 CALL cpu_log( log_point_s(91), 'salsa exch-horiz ', 'start' ) 868 DO b = 1, nbins 869 CALL exchange_horiz( aerosol_number(b)%conc_p, nbgp ) 870 CALL cpu_log( log_point_s(93), 'salsa decycle', 'start' ) 871 CALL salsa_boundary_conds( aerosol_number(b)%conc_p, & 872 aerosol_number(b)%init ) 873 CALL cpu_log( log_point_s(93), 'salsa decycle', 'stop' ) 874 DO c = 1, ncc_tot 875 CALL exchange_horiz( aerosol_mass((c-1)*nbins+b)%conc_p, & 876 nbgp ) 877 CALL cpu_log( log_point_s(93), 'salsa decycle', 'start' ) 878 CALL salsa_boundary_conds( aerosol_mass((c-1)*nbins+b)%conc_p,& 879 aerosol_mass((c-1)*nbins+b)%init ) 880 CALL cpu_log( log_point_s(93), 'salsa decycle', 'stop' ) 881 ENDDO 882 ENDDO 883 IF ( .NOT. salsa_gases_from_chem ) THEN 884 DO g = 1, ngast 885 CALL exchange_horiz( salsa_gas(g)%conc_p, nbgp ) 886 CALL cpu_log( log_point_s(93), 'salsa decycle', 'start' ) 887 CALL salsa_boundary_conds( salsa_gas(g)%conc_p, & 888 salsa_gas(g)%init ) 889 CALL cpu_log( log_point_s(93), 'salsa decycle', 'stop' ) 890 ENDDO 891 ENDIF 892 CALL cpu_log( log_point_s(91), 'salsa exch-horiz ', 'stop' ) 893 ENDIF 894 854 895 CALL cpu_log( log_point(26), 'exchange-horiz-progn', 'stop' ) 855 896 … … 906 947 ENDIF 907 948 908 IF ( passive_scalar ) CALL exchange_horiz( s, nbgp ) 949 IF ( passive_scalar ) CALL exchange_horiz( s, nbgp ) 950 909 951 IF ( .NOT. constant_diffusion ) CALL exchange_horiz( e, nbgp ) 910 952 … … 926 968 !-- Correct the w top-BC in nest domains to ensure mass conservation. 927 969 !-- This action must never be done for the root domain. Vertical 928 !-- nesting implies mass conservation.929 970 !-- Commented out April 18, 2018 as seemingly unnecessary. 930 971 !-- Will later be completely removed. … … 1248 1289 time_dopr = time_dopr + dt_3d 1249 1290 ENDIF 1250 time_dopr_listing = time_dopr_listing+ dt_3d1291 time_dopr_listing = time_dopr_listing + dt_3d 1251 1292 time_run_control = time_run_control + dt_3d 1252 1293 ! -
palm/trunk/SOURCE/time_integration_spinup.f90
- Property svn:mergeinfo deleted
-
palm/trunk/SOURCE/write_restart_data_mod.f90
r3355 r3467 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implementation of a new aerosol module salsa. 28 ! 29 ! 3355 2018-10-16 14:03:34Z knoop 27 30 ! changes concerning modularization of ocean option 28 31 ! … … 940 943 USE random_generator_parallel, & 941 944 ONLY: id_random_array, seq_random_array 945 946 USE salsa_mod, & 947 ONLY: salsa, salsa_wrd_local 942 948 943 949 USE surface_mod, & … … 1269 1275 CALL surface_wrd_local 1270 1276 IF ( radiation ) CALL radiation_wrd_local 1277 IF ( salsa ) CALL salsa_wrd_local 1271 1278 IF ( urban_surface ) CALL usm_wrd_local 1272 1279
Note: See TracChangeset
for help on using the changeset viewer.