- Timestamp:
- Sep 24, 2018 3:42:55 PM (6 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 2 added
- 4 deleted
- 58 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/Makefile
r3235 r3274 461 461 advec_w_up.f90 \ 462 462 average_3d_data.f90 \ 463 basic_constants_and_equations_mod.f90 \ 463 464 boundary_conds.f90 \ 464 465 buoyancy.f90 \ 465 calc_liquid_water_content.f90 \466 466 calc_mean_profile.f90 \ 467 467 calc_radiation.f90 \ … … 488 488 data_output_tseries.f90 \ 489 489 date_and_time_mod.f90 \ 490 diagnostic_quantities_mod.f90 \491 490 diffusion_s.f90 \ 492 491 diffusion_u.f90 \ … … 506 505 init_3d_model.f90 \ 507 506 init_advec.f90 \ 508 init_cloud_physics.f90 \509 507 init_coupling.f90 \ 510 508 init_dvrp.f90 \ … … 542 540 lpm_write_restart_file.f90 \ 543 541 message.f90 \ 544 microphysics_mod.f90 \542 bulk_cloud_model_mod.f90 \ 545 543 model_1d_mod.f90 \ 546 544 mod_kinds.f90 \ … … 691 689 modules.o 692 690 advec_ws.o: \ 691 bulk_cloud_model_mod.o \ 693 692 mod_kinds.o \ 694 693 modules.o … … 700 699 modules.o 701 700 average_3d_data.o: \ 701 bulk_cloud_model_mod.o \ 702 702 chemistry_model_mod.o \ 703 703 cpulog_mod.o \ … … 710 710 turbulence_closure_mod.o \ 711 711 urban_surface_mod.o 712 basic_constants_and_equations_mod.o: \ 713 mod_kinds.o 712 714 boundary_conds.o: \ 715 basic_constants_and_equations_mod.o \ 716 bulk_cloud_model_mod.o \ 713 717 chemistry_model_mod.o \ 714 718 mod_kinds.o \ … … 717 721 surface_mod.o \ 718 722 turbulence_closure_mod.o 723 bulk_cloud_model_mod.o: \ 724 basic_constants_and_equations_mod.o \ 725 cpulog_mod.o \ 726 mod_kinds.o \ 727 modules.o \ 728 surface_mod.o 719 729 buoyancy.o: \ 730 basic_constants_and_equations_mod.o \ 720 731 mod_kinds.o \ 721 732 modules.o … … 723 734 mod_kinds.o \ 724 735 modules.o 725 calc_liquid_water_content.o: \726 diagnostic_quantities_mod.o \727 mod_kinds.o \728 modules.o729 736 calc_radiation.o: \ 737 basic_constants_and_equations_mod.o \ 730 738 mod_kinds.o \ 731 739 modules.o … … 741 749 posix_calls_from_fortran.o 742 750 check_parameters.o: \ 751 basic_constants_and_equations_mod.o \ 752 bulk_cloud_model_mod.o \ 743 753 chemistry_model_mod.o \ 744 754 gust_mod.o \ 745 755 land_surface_model_mod.o \ 746 756 large_scale_forcing_nudging_mod.o \ 747 microphysics_mod.o \748 757 model_1d_mod.o \ 749 758 mod_kinds.o \ … … 778 787 modules.o 779 788 chem_photolysis_mod.o: \ 789 basic_constants_and_equations_mod.o \ 780 790 chem_gasphase_mod.o \ 781 791 chemistry_model_mod.o \ … … 788 798 netcdf_interface_mod.o 789 799 compute_vpt.o: \ 800 basic_constants_and_equations_mod.o \ 801 bulk_cloud_model_mod.o \ 790 802 mod_kinds.o \ 791 803 modules.o … … 803 815 modules.o 804 816 data_output_dvrp.o: \ 817 basic_constants_and_equations_mod.o \ 818 bulk_cloud_model_mod.o \ 805 819 cpulog_mod.o \ 806 820 mod_kinds.o \ 807 821 modules.o 808 822 data_output_mask.o: \ 823 basic_constants_and_equations_mod.o \ 824 bulk_cloud_model_mod.o \ 809 825 cpulog_mod.o \ 810 826 mod_kinds.o \ … … 824 840 netcdf_interface_mod.o 825 841 data_output_spectra.o: \ 842 basic_constants_and_equations_mod.o \ 826 843 cpulog_mod.o \ 827 844 mod_kinds.o \ … … 841 858 virtual_flight_mod.o 842 859 data_output_2d.o: \ 860 basic_constants_and_equations_mod.o \ 861 bulk_cloud_model_mod.o \ 843 862 cpulog_mod.o \ 844 863 gust_mod.o \ … … 853 872 uv_exposure_model_mod.o 854 873 data_output_3d.o: \ 874 basic_constants_and_equations_mod.o \ 875 bulk_cloud_model_mod.o \ 855 876 chemistry_model_mod.o \ 856 877 cpulog_mod.o \ … … 866 887 mod_kinds.o \ 867 888 modules.o 868 diagnostic_quantities_mod.o: \869 mod_kinds.o \870 modules.o871 889 diffusion_s.o: \ 872 890 mod_kinds.o \ … … 916 934 temperton_fft_mod.o 917 935 flow_statistics.o: \ 936 basic_constants_and_equations_mod.o \ 937 bulk_cloud_model_mod.o \ 918 938 cpulog_mod.o \ 919 939 gust_mod.o \ … … 932 952 modules.o 933 953 header.o: \ 954 basic_constants_and_equations_mod.o \ 955 bulk_cloud_model_mod.o \ 934 956 cpulog_mod.o \ 935 957 date_and_time_mod.o \ … … 937 959 land_surface_model_mod.o \ 938 960 large_scale_forcing_nudging_mod.o \ 939 microphysics_mod.o \940 961 model_1d_mod.o \ 941 962 mod_kinds.o \ … … 956 977 init_3d_model.o: \ 957 978 advec_ws.o \ 979 basic_constants_and_equations_mod.o \ 980 bulk_cloud_model_mod.o \ 958 981 chemistry_model_mod.o \ 959 982 cpulog_mod.o \ … … 963 986 large_scale_forcing_nudging_mod.o \ 964 987 lpm_init.o \ 965 microphysics_mod.o \966 988 model_1d_mod.o \ 967 989 mod_kinds.o \ … … 987 1009 mod_kinds.o \ 988 1010 modules.o 989 init_cloud_physics.o: \990 mod_kinds.o \991 modules.o992 1011 init_coupling.o: \ 993 1012 mod_kinds.o \ … … 1007 1026 vertical_nesting_mod.o 1008 1027 init_masks.o: \ 1028 bulk_cloud_model_mod.o \ 1009 1029 mod_kinds.o \ 1010 1030 modules.o \ 1011 1031 netcdf_interface_mod.o 1012 1032 init_ocean.o: \ 1033 basic_constants_and_equations_mod.o \ 1013 1034 eqn_state_seawater.o \ 1014 1035 mod_kinds.o \ … … 1024 1045 modules.o 1025 1046 init_rankine.o: \ 1047 basic_constants_and_equations_mod.o \ 1026 1048 mod_kinds.o \ 1027 1049 modules.o 1028 1050 init_slope.o: \ 1051 basic_constants_and_equations_mod.o \ 1029 1052 mod_kinds.o \ 1030 1053 modules.o 1031 1054 interaction_droplets_ptq.o: \ 1055 basic_constants_and_equations_mod.o \ 1032 1056 mod_kinds.o \ 1033 1057 modules.o 1034 1058 land_surface_model_mod.o: \ 1059 basic_constants_and_equations_mod.o \ 1060 bulk_cloud_model_mod.o \ 1035 1061 calc_mean_profile.o \ 1036 diagnostic_quantities_mod.o \1037 1062 mod_kinds.o \ 1038 1063 modules.o \ … … 1073 1098 pmc_particle_interface.o 1074 1099 lpm_advec.o: \ 1100 basic_constants_and_equations_mod.o \ 1075 1101 cpulog_mod.o \ 1076 1102 mod_kinds.o \ … … 1085 1111 surface_mod.o 1086 1112 lpm_calc_liquid_water_content.o: \ 1113 basic_constants_and_equations_mod.o \ 1087 1114 cpulog_mod.o \ 1088 1115 mod_kinds.o \ … … 1090 1117 modules.o 1091 1118 lpm_collision_kernels.o: \ 1119 basic_constants_and_equations_mod.o \ 1092 1120 cpulog_mod.o \ 1093 1121 mod_kinds.o \ … … 1102 1130 netcdf_interface_mod.o 1103 1131 lpm_droplet_collision.o: \ 1132 basic_constants_and_equations_mod.o \ 1104 1133 cpulog_mod.o \ 1105 1134 lpm_collision_kernels.o \ … … 1108 1137 modules.o 1109 1138 lpm_droplet_condensation.o: \ 1110 cpulog_mod.o \1111 diagnostic_quantities_mod.o \1139 basic_constants_and_equations_mod.o \ 1140 cpulog_mod.o \ 1112 1141 lpm_collision_kernels.o \ 1113 1142 mod_kinds.o \ … … 1122 1151 netcdf_interface_mod.o 1123 1152 lpm_init.o: \ 1124 diagnostic_quantities_mod.o \1153 basic_constants_and_equations_mod.o \ 1125 1154 lpm_collision_kernels.o \ 1126 1155 lpm_exchange_horiz.o \ … … 1160 1189 modules.o 1161 1190 lpm_splitting.o: \ 1191 basic_constants_and_equations_mod.o \ 1162 1192 cpulog_mod.o \ 1163 1193 lpm_exchange_horiz.o \ … … 1178 1208 modules.o \ 1179 1209 pmc_interface_mod.o 1180 microphysics_mod.o: \1181 cpulog_mod.o \1182 diagnostic_quantities_mod.o \1183 mod_kinds.o \1184 modules.o \1185 surface_mod.o1186 1210 model_1d_mod.o: \ 1211 basic_constants_and_equations_mod.o \ 1187 1212 mod_kinds.o \ 1188 1213 modules.o … … 1190 1215 mod_kinds.o 1191 1216 multi_agent_system_mod.o: \ 1217 basic_constants_and_equations_mod.o \ 1192 1218 chemistry_model_mod.o \ 1193 1219 cpulog_mod.o \ … … 1206 1232 surface_mod.o 1207 1233 netcdf_interface_mod.o: \ 1234 basic_constants_and_equations_mod.o \ 1208 1235 chemistry_model_mod.o \ 1209 1236 gust_mod.o \ … … 1225 1252 modules.o 1226 1253 palm.o: \ 1254 bulk_cloud_model_mod.o \ 1227 1255 chemistry_model_mod.o \ 1228 1256 chem_photolysis_mod.o \ … … 1238 1266 write_restart_data_mod.o 1239 1267 parin.o: \ 1268 bulk_cloud_model_mod.o \ 1240 1269 chemistry_model_mod.o \ 1241 1270 chem_modules.o \ … … 1244 1273 gust_mod.o \ 1245 1274 land_surface_model_mod.o \ 1246 microphysics_mod.o \1247 1275 model_1d_mod.o \ 1248 1276 mod_kinds.o \ … … 1263 1291 wind_turbine_model_mod.o 1264 1292 plant_canopy_model_mod.o: \ 1293 bulk_cloud_model_mod.o \ 1265 1294 mod_kinds.o \ 1266 1295 modules.o \ … … 1276 1305 pmc_parent_mod.o 1277 1306 pmc_interface_mod.o: \ 1307 bulk_cloud_model_mod.o \ 1278 1308 chemistry_model_mod.o \ 1279 1309 chem_modules.o \ … … 1344 1374 advec_ws.o \ 1345 1375 advec_w_up.o \ 1376 bulk_cloud_model_mod.o \ 1346 1377 buoyancy.o \ 1347 1378 calc_radiation.o \ … … 1358 1389 eqn_state_seawater.o \ 1359 1390 large_scale_forcing_nudging_mod.o \ 1360 microphysics_mod.o \1361 1391 mod_kinds.o \ 1362 1392 mod_kinds.o \ … … 1375 1405 modules.o 1376 1406 radiation_model_mod.o: \ 1407 basic_constants_and_equations_mod.o \ 1408 bulk_cloud_model_mod.o \ 1377 1409 calc_mean_profile.o \ 1378 1410 date_and_time_mod.o \ 1379 microphysics_mod.o \1380 1411 mod_particle_attributes.o \ 1381 1412 modules.o \ … … 1393 1424 modules.o 1394 1425 read_restart_data_mod.o: \ 1426 bulk_cloud_model_mod.o \ 1395 1427 chemistry_model_mod.o \ 1396 1428 cpulog_mod.o \ … … 1398 1430 gust_mod.o \ 1399 1431 land_surface_model_mod.o \ 1400 microphysics_mod.o \1401 1432 modules.o \ 1402 1433 mod_kinds.o \ … … 1435 1466 modules.o 1436 1467 sum_up_3d_data.o: \ 1468 basic_constants_and_equations_mod.o \ 1469 bulk_cloud_model_mod.o \ 1437 1470 chemistry_model_mod.o \ 1438 1471 cpulog_mod.o \ … … 1447 1480 uv_exposure_model_mod.o 1448 1481 surface_coupler.o: \ 1482 basic_constants_and_equations_mod.o \ 1449 1483 cpulog_mod.o \ 1450 1484 mod_kinds.o \ … … 1452 1486 surface_mod.o 1453 1487 surface_layer_fluxes_mod.o: \ 1488 basic_constants_and_equations_mod.o \ 1489 bulk_cloud_model_mod.o \ 1454 1490 chem_modules.o \ 1455 1491 exchange_horiz_2d.o \ … … 1465 1501 modules.o 1466 1502 swap_timelevel.o: \ 1503 bulk_cloud_model_mod.o \ 1467 1504 chemistry_model_mod.o \ 1468 1505 cpulog_mod.o \ … … 1475 1512 urban_surface_mod.o 1476 1513 synthetic_turbulence_generator_mod.o: \ 1514 basic_constants_and_equations_mod.o \ 1477 1515 cpulog_mod.o \ 1478 1516 mod_kinds.o \ … … 1484 1522 time_integration.o: \ 1485 1523 advec_ws.o \ 1524 bulk_cloud_model_mod.o \ 1486 1525 buoyancy.o \ 1487 1526 calc_mean_profile.o \ … … 1496 1535 large_scale_forcing_nudging_mod.o \ 1497 1536 lpm.o \ 1498 microphysics_mod.o \1499 1537 mod_kinds.o \ 1500 1538 modules.o \ … … 1516 1554 wind_turbine_model_mod.o 1517 1555 time_integration_spinup.o: \ 1556 basic_constants_and_equations_mod.o \ 1518 1557 cpulog_mod.o \ 1519 1558 date_and_time_mod.o \ … … 1528 1567 mod_kinds.o 1529 1568 timestep.o: \ 1530 cpulog_mod.o \1531 microphysics_mod.o \1569 bulk_cloud_model_mod.o \ 1570 cpulog_mod.o \ 1532 1571 mod_kinds.o \ 1533 1572 modules.o \ … … 1542 1581 modules.o 1543 1582 tridia_solver_mod.o: \ 1583 basic_constants_and_equations_mod.o \ 1544 1584 mod_kinds.o \ 1545 1585 modules.o … … 1549 1589 advec_s_up.o \ 1550 1590 advec_ws.o \ 1551 cpulog_mod.o \ 1552 microphysics_mod.o \ 1591 basic_constants_and_equations_mod.o \ 1592 bulk_cloud_model_mod.o \ 1593 cpulog_mod.o \ 1553 1594 mod_kinds.o \ 1554 1595 mod_particle_attributes.o \ … … 1560 1601 user_actions.o 1561 1602 urban_surface_mod.o: \ 1603 basic_constants_and_equations_mod.o \ 1562 1604 date_and_time_mod.o \ 1563 1605 mod_kinds.o \ … … 1706 1748 user_module.o 1707 1749 uv_exposure_model_mod.o: \ 1750 basic_constants_and_equations_mod.o \ 1708 1751 date_and_time_mod.o \ 1709 1752 mod_kinds.o \ … … 1716 1759 turbulence_closure_mod.o 1717 1760 virtual_flight_mod.o: \ 1761 basic_constants_and_equations_mod.o \ 1762 bulk_cloud_model_mod.o \ 1718 1763 cpulog_mod.o \ 1719 1764 mod_kinds.o \ … … 1723 1768 user_init_flight.o 1724 1769 wind_turbine_model_mod.o: \ 1770 basic_constants_and_equations_mod.o \ 1725 1771 cpulog_mod.o \ 1726 1772 mod_kinds.o \ … … 1729 1775 mod_kinds.o 1730 1776 write_restart_data_mod.o: \ 1777 bulk_cloud_model_mod.o \ 1731 1778 chemistry_model_mod.o \ 1732 1779 date_and_time_mod.o \ 1733 1780 gust_mod.o \ 1734 1781 land_surface_model_mod.o \ 1735 microphysics_mod.o \1736 1782 mod_kinds.o \ 1737 1783 mod_particle_attributes.o \ -
palm/trunk/SOURCE/advec_ws.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 219 222 MODULE advec_ws 220 223 221 224 USE kinds 225 226 IMPLICIT NONE 227 228 REAL(wp) :: adv_mom_1 !< 1/4 - constant used in 5th-order advection scheme for momentum advection (1st-order part) 229 REAL(wp) :: adv_mom_3 !< 1/24 - constant used in 5th-order advection scheme for momentum advection (3rd-order part) 230 REAL(wp) :: adv_mom_5 !< 1/120 - constant used in 5th-order advection scheme for momentum advection (5th-order part) 231 REAL(wp) :: adv_sca_1 !< 1/2 - constant used in 5th-order advection scheme for scalar advection (1st-order part) 232 REAL(wp) :: adv_sca_3 !< 1/12 - constant used in 5th-order advection scheme for scalar advection (3rd-order part) 233 REAL(wp) :: adv_sca_5 !< 1/60 - constant used in 5th-order advection scheme for scalar advection (5th-order part) 222 234 223 235 PRIVATE … … 280 292 flux_s_v, flux_s_w 281 293 282 USE constants, &283 ONLY: adv_mom_1, adv_mom_3, adv_mom_5, adv_sca_1, adv_sca_3, &284 adv_sca_5285 286 294 USE control_parameters, & 287 ONLY: cloud_physics, humidity, loop_optimization, & 288 passive_scalar, microphysics_morrison, microphysics_seifert, & 289 ocean, rans_tke_e, ws_scheme_mom, ws_scheme_sca 295 ONLY: humidity, loop_optimization, passive_scalar, ocean, & 296 rans_tke_e, ws_scheme_mom, ws_scheme_sca 290 297 291 298 USE indices, & … … 293 300 294 301 USE kinds 295 302 303 USE bulk_cloud_model_mod, & 304 ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert 305 296 306 USE pegrid 297 307 … … 345 355 ENDIF 346 356 347 IF ( cloud_physics.AND. microphysics_morrison ) THEN357 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 348 358 ALLOCATE( sums_wsqcs_ws_l(nzb:nzt+1,0:threads_per_task-1) ) 349 359 ALLOCATE( sums_wsncs_ws_l(nzb:nzt+1,0:threads_per_task-1) ) … … 352 362 ENDIF 353 363 354 IF ( cloud_physics.AND. microphysics_seifert ) THEN364 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 355 365 ALLOCATE( sums_wsqrs_ws_l(nzb:nzt+1,0:threads_per_task-1) ) 356 366 ALLOCATE( sums_wsnrs_ws_l(nzb:nzt+1,0:threads_per_task-1) ) … … 422 432 ENDIF 423 433 424 IF ( cloud_physics.AND. microphysics_morrison ) THEN434 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 425 435 ALLOCATE( flux_s_qc(nzb+1:nzt,0:threads_per_task-1), & 426 436 diss_s_qc(nzb+1:nzt,0:threads_per_task-1), & … … 433 443 ENDIF 434 444 435 IF ( cloud_physics.AND. microphysics_seifert ) THEN445 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 436 446 ALLOCATE( flux_s_qr(nzb+1:nzt,0:threads_per_task-1), & 437 447 diss_s_qr(nzb+1:nzt,0:threads_per_task-1), & … … 1074 1084 1075 1085 USE control_parameters, & 1076 ONLY: cloud_physics, humidity, passive_scalar, ocean, & 1077 microphysics_morrison, microphysics_seifert, ws_scheme_mom, & 1078 ws_scheme_sca 1086 ONLY: humidity, passive_scalar, ocean, ws_scheme_mom, ws_scheme_sca 1079 1087 1080 1088 USE kinds 1089 1090 USE bulk_cloud_model_mod, & 1091 ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert 1081 1092 1082 1093 USE statistics, & … … 1104 1115 IF ( humidity ) sums_wsqs_ws_l = 0.0_wp 1105 1116 IF ( passive_scalar ) sums_wsss_ws_l = 0.0_wp 1106 IF ( cloud_physics.AND. microphysics_morrison ) THEN1117 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 1107 1118 sums_wsqcs_ws_l = 0.0_wp 1108 1119 sums_wsncs_ws_l = 0.0_wp 1109 1120 ENDIF 1110 IF ( cloud_physics.AND. microphysics_seifert ) THEN1121 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 1111 1122 sums_wsqrs_ws_l = 0.0_wp 1112 1123 sums_wsnrs_ws_l = 0.0_wp … … 1130 1141 USE arrays_3d, & 1131 1142 ONLY: ddzw, drho_air, tend, u, v, w, rho_air_zw 1132 1133 USE constants, &1134 ONLY: adv_sca_1, adv_sca_3, adv_sca_51135 1143 1136 1144 USE control_parameters, & … … 1704 1712 drho_air, rho_air_zw 1705 1713 1706 USE constants, &1707 ONLY: adv_mom_1, adv_mom_3, adv_mom_51708 1709 1714 USE control_parameters, & 1710 1715 ONLY: intermediate_timestep_count, u_gtrans, v_gtrans … … 2202 2207 drho_air, rho_air_zw 2203 2208 2204 USE constants, &2205 ONLY: adv_mom_1, adv_mom_3, adv_mom_52206 2207 2209 USE control_parameters, & 2208 2210 ONLY: intermediate_timestep_count, u_gtrans, v_gtrans … … 2707 2709 drho_air_zw, rho_air 2708 2710 2709 USE constants, &2710 ONLY: adv_mom_1, adv_mom_3, adv_mom_52711 2712 2711 USE control_parameters, & 2713 2712 ONLY: intermediate_timestep_count, u_gtrans, v_gtrans … … 3184 3183 USE arrays_3d, & 3185 3184 ONLY: ddzw, drho_air, tend, u, v, w, rho_air_zw 3186 3187 USE constants, &3188 ONLY: adv_sca_1, adv_sca_3, adv_sca_53189 3185 3190 3186 USE control_parameters, & … … 3740 3736 ONLY: ddzw, drho_air, tend, u, v, w, rho_air_zw 3741 3737 3742 USE constants, &3743 ONLY: adv_mom_1, adv_mom_3, adv_mom_53744 3745 3738 USE control_parameters, & 3746 3739 ONLY: intermediate_timestep_count, u_gtrans, v_gtrans … … 4234 4227 ONLY: ddzw, drho_air, tend, u, v, w, rho_air_zw 4235 4228 4236 USE constants, &4237 ONLY: adv_mom_1, adv_mom_3, adv_mom_54238 4239 4229 USE control_parameters, & 4240 4230 ONLY: intermediate_timestep_count, u_gtrans, v_gtrans … … 4738 4728 USE arrays_3d, & 4739 4729 ONLY: ddzu, drho_air_zw, tend, u, v, w, rho_air 4740 4741 USE constants, &4742 ONLY: adv_mom_1, adv_mom_3, adv_mom_54743 4730 4744 4731 USE control_parameters, & -
palm/trunk/SOURCE/average_3d_data.f90
r3004 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3004 2018-04-27 12:33:25Z Giersch 27 30 ! Further allocation checks implemented, case z0q* added 28 31 ! … … 138 141 USE averaging 139 142 143 USE bulk_cloud_model_mod, & 144 ONLY: bulk_cloud_model, bcm_3d_data_averaging 145 140 146 USE chemistry_model_mod, & 141 147 ONLY: chem_3d_data_averaging … … 255 261 ENDIF 256 262 257 CASE ( 'nc' )258 IF ( ALLOCATED( nc_av ) ) THEN259 DO i = nxlg, nxrg260 DO j = nysg, nyng261 DO k = nzb, nzt+1262 nc_av(k,j,i) = nc_av(k,j,i) / REAL( average_count_3d, KIND=wp )263 ENDDO264 ENDDO265 ENDDO266 ENDIF267 268 CASE ( 'nr' )269 IF ( ALLOCATED( nr_av ) ) THEN270 DO i = nxlg, nxrg271 DO j = nysg, nyng272 DO k = nzb, nzt+1273 nr_av(k,j,i) = nr_av(k,j,i) / REAL( average_count_3d, KIND=wp )274 ENDDO275 ENDDO276 ENDDO277 ENDIF278 279 263 CASE ( 'ol*' ) 280 264 IF ( ALLOCATED( ol_av ) ) THEN … … 320 304 ENDIF 321 305 322 CASE ( 'prr' )323 IF ( ALLOCATED( prr_av ) ) THEN324 DO i = nxlg, nxrg325 DO j = nysg, nyng326 DO k = nzb, nzt+1327 prr_av(k,j,i) = prr_av(k,j,i) / REAL( average_count_3d, KIND=wp )328 ENDDO329 ENDDO330 ENDDO331 ENDIF332 333 306 CASE ( 'pt' ) 334 307 IF ( ALLOCATED( pt_av ) ) THEN … … 353 326 ENDIF 354 327 355 CASE ( 'qc' )356 IF ( ALLOCATED( qc_av ) ) THEN357 DO i = nxlg, nxrg358 DO j = nysg, nyng359 DO k = nzb, nzt+1360 qc_av(k,j,i) = qc_av(k,j,i) / REAL( average_count_3d, KIND=wp )361 ENDDO362 ENDDO363 ENDDO364 ENDIF365 366 328 CASE ( 'ql' ) 367 329 IF ( ALLOCATED( ql_av ) ) THEN … … 404 366 ql_vp_av(k,j,i) = ql_vp_av(k,j,i) / & 405 367 REAL( average_count_3d, KIND=wp ) 406 ENDDO407 ENDDO408 ENDDO409 ENDIF410 411 CASE ( 'qr' )412 IF ( ALLOCATED( qr_av ) ) THEN413 DO i = nxlg, nxrg414 DO j = nysg, nyng415 DO k = nzb, nzt+1416 qr_av(k,j,i) = qr_av(k,j,i) / REAL( average_count_3d, KIND=wp )417 368 ENDDO 418 369 ENDDO … … 607 558 !-- Turbulence closure module 608 559 CALL tcm_3d_data_averaging( 'average', doav(ii) ) 609 560 ! 561 !-- microphysics module quantities 562 IF ( bulk_cloud_model ) THEN 563 CALL bcm_3d_data_averaging( 'average', doav(ii) ) 564 ENDIF 610 565 ! 611 566 !-- Land surface quantity -
palm/trunk/SOURCE/boundary_conds.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 197 200 w, w_p, w_m_l, w_m_n, w_m_r, w_m_s 198 201 202 USE basic_constants_and_equations_mod, & 203 ONLY: kappa 204 199 205 USE chemistry_model_mod, & 200 206 ONLY: chem_boundary_conds … … 204 210 bc_dirichlet_s, bc_radiation_l, bc_radiation_n, bc_radiation_r, & 205 211 bc_radiation_s, bc_pt_t_val, bc_q_t_val, bc_s_t_val, & 206 child_domain, constant_diffusion, c loud_physics, coupling_mode, &212 child_domain, constant_diffusion, coupling_mode, & 207 213 dt_3d, humidity, ibc_pt_b, ibc_pt_t, ibc_q_b, ibc_q_t, ibc_s_b, & 208 214 ibc_s_t,ibc_sa_t, ibc_uv_b, ibc_uv_t, & 209 intermediate_timestep_count, kappa, & 210 microphysics_morrison, microphysics_seifert, & 215 intermediate_timestep_count, & 211 216 nesting_offline, nudging, & 212 217 ocean, passive_scalar, rans_mode, rans_tke_e, tsc, use_cmax … … 220 225 221 226 USE kinds 227 228 USE bulk_cloud_model_mod, & 229 ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert 222 230 223 231 USE pegrid … … 597 605 ENDIF 598 606 599 IF ( cloud_physics.AND. microphysics_morrison ) THEN607 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 600 608 ! 601 609 !-- Surface conditions cloud water (Dirichlet) … … 618 626 ENDIF 619 627 620 IF ( cloud_physics.AND. microphysics_seifert ) THEN628 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 621 629 ! 622 630 !-- Surface conditions rain water (Dirichlet) … … 736 744 IF ( humidity ) THEN 737 745 q_p(:,nys-1,:) = q_p(:,nys,:) 738 IF ( cloud_physics.AND. microphysics_morrison ) THEN746 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 739 747 qc_p(:,nys-1,:) = qc_p(:,nys,:) 740 748 nc_p(:,nys-1,:) = nc_p(:,nys,:) 741 749 ENDIF 742 IF ( cloud_physics.AND. microphysics_seifert ) THEN750 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 743 751 qr_p(:,nys-1,:) = qr_p(:,nys,:) 744 752 nr_p(:,nys-1,:) = nr_p(:,nys,:) … … 752 760 IF ( humidity ) THEN 753 761 q_p(:,nyn+1,:) = q_p(:,nyn,:) 754 IF ( cloud_physics.AND. microphysics_morrison ) THEN762 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 755 763 qc_p(:,nyn+1,:) = qc_p(:,nyn,:) 756 764 nc_p(:,nyn+1,:) = nc_p(:,nyn,:) 757 765 ENDIF 758 IF ( cloud_physics.AND. microphysics_seifert ) THEN766 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 759 767 qr_p(:,nyn+1,:) = qr_p(:,nyn,:) 760 768 nr_p(:,nyn+1,:) = nr_p(:,nyn,:) … … 768 776 IF ( humidity ) THEN 769 777 q_p(:,:,nxl-1) = q_p(:,:,nxl) 770 IF ( cloud_physics.AND. microphysics_morrison ) THEN778 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 771 779 qc_p(:,:,nxl-1) = qc_p(:,:,nxl) 772 780 nc_p(:,:,nxl-1) = nc_p(:,:,nxl) 773 781 ENDIF 774 IF ( cloud_physics.AND. microphysics_seifert ) THEN782 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 775 783 qr_p(:,:,nxl-1) = qr_p(:,:,nxl) 776 784 nr_p(:,:,nxl-1) = nr_p(:,:,nxl) … … 784 792 IF ( humidity ) THEN 785 793 q_p(:,:,nxr+1) = q_p(:,:,nxr) 786 IF ( cloud_physics.AND. microphysics_morrison ) THEN794 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 787 795 qc_p(:,:,nxr+1) = qc_p(:,:,nxr) 788 796 nc_p(:,:,nxr+1) = nc_p(:,:,nxr) 789 797 ENDIF 790 IF ( cloud_physics.AND. microphysics_seifert ) THEN798 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 791 799 qr_p(:,:,nxr+1) = qr_p(:,:,nxr) 792 800 nr_p(:,:,nxr+1) = nr_p(:,:,nxr) -
palm/trunk/SOURCE/buoyancy.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused Variable removed 28 31 ! … … 114 117 !------------------------------------------------------------------------------! 115 118 MODULE buoyancy_mod 116 119 120 USE basic_constants_and_equations_mod, & 121 ONLY: g 117 122 118 123 PRIVATE … … 138 143 139 144 USE control_parameters, & 140 ONLY: atmos_ocean_sign, cos_alpha_surface, g, message_string,&145 ONLY: atmos_ocean_sign, cos_alpha_surface, message_string, & 141 146 pt_surface, sin_alpha_surface, sloping_surface 142 147 … … 244 249 245 250 USE control_parameters, & 246 ONLY: atmos_ocean_sign, cos_alpha_surface, g, message_string,&251 ONLY: atmos_ocean_sign, cos_alpha_surface, message_string, & 247 252 pt_surface, sin_alpha_surface, sloping_surface 248 253 -
palm/trunk/SOURCE/calc_radiation.f90
r2718 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 2718 2018-01-02 08:49:38Z maronga 27 30 ! Corrected "Former revisions" section 28 31 ! … … 77 80 MODULE calc_radiation_mod 78 81 82 83 USE arrays_3d, & 84 ONLY: dzw, pt, ql, tend, d_exner, exner 85 86 USE basic_constants_and_equations_mod, & 87 ONLY: c_p, lv_d_cp, sigma_sb 88 89 USE control_parameters, & 90 ONLY: rho_surface 91 92 USE indices, & 93 ONLY: nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0 94 79 95 USE kinds 80 96 97 USE pegrid 98 81 99 PRIVATE 82 100 PUBLIC calc_radiation 83 101 84 102 LOGICAL, SAVE :: first_call = .TRUE. !< 85 REAL(wp), SAVE :: sigma = 5.67E-08_wp !<86 103 87 104 REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE :: lwp_ground !< … … 103 120 !------------------------------------------------------------------------------! 104 121 SUBROUTINE calc_radiation 105 106 USE arrays_3d, &107 ONLY: dzw, pt, ql, tend108 109 USE cloud_parameters, &110 ONLY: cp, l_d_cp, pt_d_t, t_d_pt111 112 USE control_parameters, &113 ONLY: rho_surface114 115 USE indices, &116 ONLY: nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0117 118 USE kinds119 120 USE pegrid121 122 122 123 123 IMPLICIT NONE … … 159 159 lwp_top(nzt+1) = rho_surface * ql(nzt+1,j,i) * dzw(nzt+1) 160 160 161 temperature = pt(nzb,j,i) * t_d_pt(nzb) + l_d_cp * ql(nzb,j,i)162 blackbody_emission(nzb) = sigma * temperature**4161 temperature = pt(nzb,j,i) * exner(nzb) + lv_d_cp * ql(nzb,j,i) 162 blackbody_emission(nzb) = sigma_sb * temperature**4 163 163 164 164 DO k = nzb+1, nzt … … 171 171 rho_surface * ql(k_help,j,i) * dzw(k_help) 172 172 173 temperature = pt(k,j,i) * t_d_pt(k) + l_d_cp * ql(k,j,i)174 blackbody_emission(k) = sigma * temperature**4&173 temperature = pt(k,j,i) * exner(k) + lv_d_cp * ql(k,j,i) 174 blackbody_emission(k) = sigma_sb * temperature**4 & 175 175 * MERGE( 1.0_wp, 0.0_wp, & 176 176 BTEST( wall_flags_0(k,j,i), 0 ) ) … … 182 182 lwp_top(nzb) = lwp_top(nzb+1) 183 183 184 temperature = pt(nzt+1,j,i) * t_d_pt(nzt+1) + l_d_cp * &184 temperature = pt(nzt+1,j,i) * exner(nzt+1) + lv_d_cp * & 185 185 ql(nzt+1,j,i) 186 blackbody_emission(nzt+1) = sigma * temperature**4186 blackbody_emission(nzt+1) = sigma_sb * temperature**4 187 187 188 188 ! … … 232 232 !-- Compute tendency term 233 233 tend(k,j,i) = tend(k,j,i) - & 234 ( pt_d_t(k) / ( rho_surface * cp ) *&234 ( d_exner(k) / ( rho_surface * c_p ) * & 235 235 ( df_p - df_m ) / dzw(k) ) & 236 236 * MERGE( 1.0_wp, 0.0_wp, & … … 253 253 SUBROUTINE calc_radiation_ij( i, j ) 254 254 255 USE arrays_3d, &256 ONLY: dzw, pt, ql, tend257 258 USE cloud_parameters, &259 ONLY: cp, l_d_cp, pt_d_t, t_d_pt260 261 USE control_parameters, &262 ONLY: rho_surface263 264 USE indices, &265 ONLY: nzb, nzt, wall_flags_0266 267 USE kinds268 269 USE pegrid270 271 272 255 IMPLICIT NONE 273 256 … … 305 288 lwp_top(nzt+1) = rho_surface * ql(nzt+1,j,i) * dzw(nzt+1) 306 289 307 temperature = pt(nzb,j,i) * t_d_pt(nzb) + l_d_cp * ql(nzb,j,i)308 blackbody_emission(nzb) = sigma * temperature**4290 temperature = pt(nzb,j,i) * exner(nzb) + lv_d_cp * ql(nzb,j,i) 291 blackbody_emission(nzb) = sigma_sb * temperature**4 309 292 310 293 DO k = nzb+1, nzt … … 315 298 rho_surface * ql(k_help,j,i) * dzw(k_help) 316 299 317 temperature = pt(k,j,i) * t_d_pt(k) + l_d_cp * ql(k,j,i)318 blackbody_emission(k) = sigma * temperature**4&300 temperature = pt(k,j,i) * exner(k) + lv_d_cp * ql(k,j,i) 301 blackbody_emission(k) = sigma_sb * temperature**4 & 319 302 * MERGE( 1.0_wp, 0.0_wp, & 320 303 BTEST( wall_flags_0(k,j,i), 0 ) ) … … 325 308 lwp_top(nzb) = lwp_top(nzb+1) 326 309 327 temperature = pt(nzt+1,j,i) * t_d_pt(nzt+1) + l_d_cp * &310 temperature = pt(nzt+1,j,i) * exner(nzt+1) + lv_d_cp * & 328 311 ql(nzt+1,j,i) 329 blackbody_emission(nzt+1) = sigma * temperature**4312 blackbody_emission(nzt+1) = sigma_sb * temperature**4 330 313 331 314 ! … … 370 353 ! 371 354 !-- Compute tendency term 372 tend(k,j,i) = tend(k,j,i) - ( pt_d_t(k) / ( rho_surface * cp ) *&373 355 tend(k,j,i) = tend(k,j,i) - ( d_exner(k) / ( rho_surface * c_p ) & 356 * ( df_p - df_m ) / dzw(k) ) & 374 357 * MERGE( 1.0_wp, 0.0_wp, & 375 358 BTEST( wall_flags_0(k,j,i), 0 ) ) -
palm/trunk/SOURCE/check_parameters.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id: check_parameters.f90 2520 2017-10-05 13:50:26Z gronemeier & 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 2520 2017-10-05 13:50:26Z gronemeier 27 30 ! unused variables removed 28 31 ! … … 298 301 ! 299 302 ! 1994 2016-08-15 09:52:21Z suehring 300 ! Add missing check for cloud_physicsand cloud_droplets303 ! Add missing check for bulk_cloud_model and cloud_droplets 301 304 ! 302 305 ! 1992 2016-08-12 15:14:59Z suehring … … 665 668 666 669 USE arrays_3d 670 671 USE bulk_cloud_model_mod, & 672 ONLY: bulk_cloud_model, bcm_check_parameters, bcm_check_data_output, & 673 bcm_check_data_output_pr 674 667 675 USE chemistry_model_mod, & 668 676 ONLY: chem_boundary_conds, chem_check_data_output, & 669 chem_check_data_output_pr, chem_species 677 chem_check_data_output_pr, chem_species 670 678 USE chem_modules 671 USE cloud_parameters 672 USE constants 679 USE basic_constants_and_equations_mod 673 680 USE control_parameters 674 681 USE dvrp_variables … … 1058 1065 WRITE( action, '(A)' ) 'galilei_transformation = .TRUE.' 1059 1066 ENDIF 1060 IF ( cloud_physics) THEN1061 WRITE( action, '(A)' ) ' cloud_physics= .TRUE.'1067 IF ( bulk_cloud_model ) THEN 1068 WRITE( action, '(A)' ) 'bulk_cloud_model = .TRUE.' 1062 1069 ENDIF 1063 1070 IF ( cloud_droplets ) THEN … … 1186 1193 1187 1194 ENDIF 1188 !1189 !-- Check cloud scheme1190 IF ( cloud_scheme == 'saturation_adjust' ) THEN1191 microphysics_sat_adjust = .TRUE.1192 microphysics_seifert = .FALSE.1193 microphysics_kessler = .FALSE.1194 precipitation = .FALSE.1195 ELSEIF ( cloud_scheme == 'seifert_beheng' ) THEN1196 microphysics_sat_adjust = .FALSE.1197 microphysics_seifert = .TRUE.1198 microphysics_kessler = .FALSE.1199 microphysics_morrison = .FALSE.1200 precipitation = .TRUE.1201 ELSEIF ( cloud_scheme == 'kessler' ) THEN1202 microphysics_sat_adjust = .FALSE.1203 microphysics_seifert = .FALSE.1204 microphysics_kessler = .TRUE.1205 microphysics_morrison = .FALSE.1206 precipitation = .TRUE.1207 ELSEIF ( cloud_scheme == 'morrison' ) THEN1208 microphysics_sat_adjust = .FALSE.1209 microphysics_seifert = .TRUE.1210 microphysics_kessler = .FALSE.1211 microphysics_morrison = .TRUE.1212 precipitation = .TRUE.1213 ELSE1214 message_string = 'unknown cloud microphysics scheme cloud_scheme ="' // &1215 TRIM( cloud_scheme ) // '"'1216 CALL message( 'check_parameters', 'PA0357', 1, 2, 0, 6, 0 )1217 ENDIF1218 !1219 !-- Check aerosol1220 IF ( aerosol_bulk == 'nacl' ) THEN1221 aerosol_nacl = .TRUE.1222 aerosol_c3h4o4 = .FALSE.1223 aerosol_nh4no3 = .FALSE.1224 ELSEIF ( aerosol_bulk == 'c3h4o4' ) THEN1225 aerosol_nacl = .FALSE.1226 aerosol_c3h4o4 = .TRUE.1227 aerosol_nh4no3 = .FALSE.1228 ELSEIF ( aerosol_bulk == 'nh4no3' ) THEN1229 aerosol_nacl = .FALSE.1230 aerosol_c3h4o4 = .FALSE.1231 aerosol_nh4no3 = .TRUE.1232 ELSE1233 message_string = 'unknown aerosol = "' // TRIM( aerosol_bulk ) // '"'1234 CALL message( 'check_parameters', 'PA0469', 1, 2, 0, 6, 0 )1235 ENDIF1236 1195 1237 1196 ! … … 1352 1311 ! 1353 1312 !-- Check for proper settings for microphysics 1354 IF ( cloud_physics.AND. cloud_droplets ) THEN1355 message_string = ' cloud_physics = .TRUE. is not allowed with ' //&1313 IF ( bulk_cloud_model .AND. cloud_droplets ) THEN 1314 message_string = 'bulk_cloud_model = .TRUE. is not allowed with ' // & 1356 1315 'cloud_droplets = .TRUE.' 1357 1316 CALL message( 'check_parameters', 'PA0442', 1, 2, 0, 6, 0 ) … … 1458 1417 ENDIF 1459 1418 1460 IF ( cloud_physics.AND. .NOT. humidity ) THEN1461 WRITE( message_string, * ) ' cloud_physics = ', cloud_physics, ' is ',&1462 ' not allowed with humidity = ', humidity1419 IF ( bulk_cloud_model .AND. .NOT. humidity ) THEN 1420 WRITE( message_string, * ) 'bulk_cloud_model = ', bulk_cloud_model, & 1421 ' is not allowed with humidity = ', humidity 1463 1422 CALL message( 'check_parameters', 'PA0034', 1, 2, 0, 6, 0 ) 1464 1423 ENDIF … … 1483 1442 !-- When land surface model is used, perform additional checks 1484 1443 IF ( land_surface ) CALL lsm_check_parameters 1444 ! 1445 !-- When microphysics module is used, perform additional checks 1446 IF ( bulk_cloud_model ) CALL bcm_check_parameters 1485 1447 1486 1448 ! … … 2394 2356 2395 2357 ! 2396 !-- Set the default value for the integration interval of precipitation amount2397 IF ( microphysics_seifert .OR. microphysics_kessler ) THEN2398 IF ( precipitation_amount_interval == 9999999.9_wp ) THEN2399 precipitation_amount_interval = dt_do2d_xy2400 ELSE2401 IF ( precipitation_amount_interval > dt_do2d_xy ) THEN2402 WRITE( message_string, * ) 'precipitation_amount_interval = ', &2403 precipitation_amount_interval, ' must not be larger than ', &2404 'dt_do2d_xy = ', dt_do2d_xy2405 CALL message( 'check_parameters', 'PA0090', 1, 2, 0, 6, 0 )2406 ENDIF2407 ENDIF2408 ENDIF2409 2410 !2411 2358 !-- Determine the number of output profiles and check whether they are 2412 2359 !-- permissible … … 2447 2394 2448 2395 CASE ( 'pt', '#pt' ) 2449 IF ( .NOT. cloud_physics) THEN2396 IF ( .NOT. bulk_cloud_model ) THEN 2450 2397 dopr_index(i) = 4 2451 2398 dopr_unit(i) = 'K' … … 2682 2629 2683 2630 CASE ( 'qv', '#qv' ) 2684 IF ( .NOT. cloud_physics) THEN2631 IF ( .NOT. bulk_cloud_model ) THEN 2685 2632 dopr_index(i) = 41 2686 2633 dopr_unit(i) = 'kg/kg' … … 2705 2652 2706 2653 CASE ( 'lpt', '#lpt' ) 2707 IF ( .NOT. cloud_physics) THEN2654 IF ( .NOT. bulk_cloud_model ) THEN 2708 2655 message_string = 'data_output_pr = ' // & 2709 2656 TRIM( data_output_pr(i) ) // ' is not imp' // & 2710 'lemented for cloud_physics= .FALSE.'2657 'lemented for bulk_cloud_model = .FALSE.' 2711 2658 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 ) 2712 2659 ELSE … … 2821 2768 2822 2769 CASE ( 'w"qv"' ) 2823 IF ( humidity .AND. .NOT. cloud_physics) THEN2770 IF ( humidity .AND. .NOT. bulk_cloud_model ) THEN 2824 2771 dopr_index(i) = 48 2825 2772 dopr_unit(i) = TRIM ( waterflux_output_unit ) 2826 2773 hom(:,2,48,:) = SPREAD( zw, 2, statistic_regions+1 ) 2827 ELSEIF ( humidity .AND. cloud_physics) THEN2774 ELSEIF ( humidity .AND. bulk_cloud_model ) THEN 2828 2775 dopr_index(i) = 51 2829 2776 dopr_unit(i) = TRIM ( waterflux_output_unit ) … … 2832 2779 message_string = 'data_output_pr = ' // & 2833 2780 TRIM( data_output_pr(i) ) // ' is not imp' // & 2834 'lemented for cloud_physics = .FALSE. an'// &2835 ' d humidity = .FALSE.'2781 'lemented for bulk_cloud_model = .FALSE. ' // & 2782 'and humidity = .FALSE.' 2836 2783 CALL message( 'check_parameters', 'PA0095', 1, 2, 0, 6, 0 ) 2837 2784 ENDIF 2838 2785 2839 2786 CASE ( 'w*qv*' ) 2840 IF ( humidity .AND. .NOT. cloud_physics ) & 2841 THEN 2787 IF ( humidity .AND. .NOT. bulk_cloud_model ) THEN 2842 2788 dopr_index(i) = 49 2843 2789 dopr_unit(i) = TRIM ( waterflux_output_unit ) 2844 2790 hom(:,2,49,:) = SPREAD( zw, 2, statistic_regions+1 ) 2845 ELSEIF( humidity .AND. cloud_physics) THEN2791 ELSEIF( humidity .AND. bulk_cloud_model ) THEN 2846 2792 dopr_index(i) = 52 2847 2793 dopr_unit(i) = TRIM ( waterflux_output_unit ) … … 2850 2796 message_string = 'data_output_pr = ' // & 2851 2797 TRIM( data_output_pr(i) ) // ' is not imp' // & 2852 'lemented for cloud_physics = .FALSE. an'// &2853 ' d humidity = .FALSE.'2798 'lemented for bulk_cloud_model = .FALSE. ' // & 2799 'and humidity = .FALSE.' 2854 2800 CALL message( 'check_parameters', 'PA0095', 1, 2, 0, 6, 0 ) 2855 2801 ENDIF 2856 2802 2857 2803 CASE ( 'wqv' ) 2858 IF ( humidity .AND. .NOT. cloud_physics) THEN2804 IF ( humidity .AND. .NOT. bulk_cloud_model ) THEN 2859 2805 dopr_index(i) = 50 2860 2806 dopr_unit(i) = TRIM ( waterflux_output_unit ) 2861 2807 hom(:,2,50,:) = SPREAD( zw, 2, statistic_regions+1 ) 2862 ELSEIF ( humidity .AND. cloud_physics) THEN2808 ELSEIF ( humidity .AND. bulk_cloud_model ) THEN 2863 2809 dopr_index(i) = 53 2864 2810 dopr_unit(i) = TRIM ( waterflux_output_unit ) … … 2867 2813 message_string = 'data_output_pr = ' // & 2868 2814 TRIM( data_output_pr(i) ) // ' is not imp' // & 2869 'lemented for cloud_physics = .FALSE. an'// &2870 ' d humidity = .FALSE.'2815 'lemented for bulk_cloud_model = .FALSE. ' // & 2816 'and humidity = .FALSE.' 2871 2817 CALL message( 'check_parameters', 'PA0095', 1, 2, 0, 6, 0 ) 2872 2818 ENDIF 2873 2819 2874 2820 CASE ( 'ql' ) 2875 IF ( .NOT. cloud_physics.AND. .NOT. cloud_droplets ) THEN2821 IF ( .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets ) THEN 2876 2822 message_string = 'data_output_pr = ' // & 2877 2823 TRIM( data_output_pr(i) ) // ' is not imp' // & 2878 'lemented for cloud_physics = .FALSE. and' // &2879 ' cloud_droplets = .FALSE.'2824 'lemented for bulk_cloud_model = .FALSE. ' // & 2825 'and cloud_droplets = .FALSE.' 2880 2826 CALL message( 'check_parameters', 'PA0096', 1, 2, 0, 6, 0 ) 2881 2827 ELSE … … 3034 2980 hom(:,2,120,:) = SPREAD( zw, 2, statistic_regions+1 ) 3035 2981 3036 CASE ( 'nc' )3037 IF ( .NOT. cloud_physics ) THEN3038 message_string = 'data_output_pr = ' // &3039 TRIM( data_output_pr(i) ) // ' is not imp' // &3040 'lemented for cloud_physics = .FALSE.'3041 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )3042 ELSEIF ( .NOT. microphysics_morrison ) THEN3043 message_string = 'data_output_pr = ' // &3044 TRIM( data_output_pr(i) ) // ' is not imp' // &3045 'lemented for cloud_scheme /= morrison'3046 CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 )3047 ELSE3048 dopr_index(i) = 893049 dopr_unit(i) = '1/m3'3050 hom(:,2,89,:) = SPREAD( zu, 2, statistic_regions+1 )3051 ENDIF3052 3053 CASE ( 'nr' )3054 IF ( .NOT. cloud_physics ) THEN3055 message_string = 'data_output_pr = ' // &3056 TRIM( data_output_pr(i) ) // ' is not imp' // &3057 'lemented for cloud_physics = .FALSE.'3058 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )3059 ELSEIF ( .NOT. microphysics_seifert ) THEN3060 message_string = 'data_output_pr = ' // &3061 TRIM( data_output_pr(i) ) // ' is not imp' // &3062 'lemented for cloud_scheme /= seifert_beheng'3063 CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 )3064 ELSE3065 dopr_index(i) = 733066 dopr_unit(i) = '1/m3'3067 hom(:,2,73,:) = SPREAD( zu, 2, statistic_regions+1 )3068 ENDIF3069 3070 CASE ( 'qr' )3071 IF ( .NOT. cloud_physics ) THEN3072 message_string = 'data_output_pr = ' // &3073 TRIM( data_output_pr(i) ) // ' is not imp' // &3074 'lemented for cloud_physics = .FALSE.'3075 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )3076 ELSEIF ( .NOT. microphysics_seifert ) THEN3077 message_string = 'data_output_pr = ' // &3078 TRIM( data_output_pr(i) ) // ' is not imp' // &3079 'lemented for cloud_scheme /= seifert_beheng'3080 CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 )3081 ELSE3082 dopr_index(i) = 743083 dopr_unit(i) = 'kg/kg'3084 hom(:,2,74,:) = SPREAD( zu, 2, statistic_regions+1 )3085 ENDIF3086 3087 CASE ( 'qc' )3088 IF ( .NOT. cloud_physics ) THEN3089 message_string = 'data_output_pr = ' // &3090 TRIM( data_output_pr(i) ) // ' is not imp' // &3091 'lemented for cloud_physics = .FALSE.'3092 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )3093 ELSE3094 dopr_index(i) = 753095 dopr_unit(i) = 'kg/kg'3096 hom(:,2,75,:) = SPREAD( zu, 2, statistic_regions+1 )3097 ENDIF3098 3099 CASE ( 'prr' )3100 IF ( .NOT. cloud_physics ) THEN3101 message_string = 'data_output_pr = ' // &3102 TRIM( data_output_pr(i) ) // ' is not imp' // &3103 'lemented for cloud_physics = .FALSE.'3104 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 )3105 ELSEIF ( microphysics_sat_adjust ) THEN3106 message_string = 'data_output_pr = ' // &3107 TRIM( data_output_pr(i) ) // ' is not ava' // &3108 'ilable for cloud_scheme = saturation_adjust'3109 CALL message( 'check_parameters', 'PA0422', 1, 2, 0, 6, 0 )3110 ELSE3111 dopr_index(i) = 763112 dopr_unit(i) = 'kg/kg m/s'3113 hom(:,2,76,:) = SPREAD( zu, 2, statistic_regions+1 )3114 ENDIF3115 3116 2982 CASE ( 'ug' ) 3117 2983 dopr_index(i) = 78 … … 3154 3020 CALL lsm_check_data_output_pr( data_output_pr(i), i, unit, & 3155 3021 dopr_unit(i) ) 3022 ! 3023 !-- Block of microphysics module profile outputs 3024 IF ( unit == 'illegal' .AND. bulk_cloud_model ) THEN 3025 CALL bcm_check_data_output_pr(data_output_pr(i), i, unit, & 3026 dopr_unit(i) ) 3027 ENDIF 3156 3028 3157 3029 IF ( unit == 'illegal' ) THEN … … 3260 3132 3261 3133 CASE ( 'lpt' ) 3262 IF ( .NOT. cloud_physics) THEN3134 IF ( .NOT. bulk_cloud_model ) THEN 3263 3135 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3264 'res cloud_physics= .TRUE.'3136 'res bulk_cloud_model = .TRUE.' 3265 3137 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) 3266 3138 ENDIF 3267 3139 unit = 'K' 3268 3269 CASE ( 'nc' )3270 IF ( .NOT. cloud_physics ) THEN3271 message_string = 'output of "' // TRIM( var ) // '" requi' // &3272 'res cloud_physics = .TRUE.'3273 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )3274 ELSEIF ( .NOT. microphysics_morrison ) THEN3275 message_string = 'output of "' // TRIM( var ) // '" requi' // &3276 'res = morrison '3277 CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 )3278 ENDIF3279 unit = '1/m3'3280 3281 CASE ( 'nr' )3282 IF ( .NOT. cloud_physics ) THEN3283 message_string = 'output of "' // TRIM( var ) // '" requi' // &3284 'res cloud_physics = .TRUE.'3285 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )3286 ELSEIF ( .NOT. microphysics_seifert ) THEN3287 message_string = 'output of "' // TRIM( var ) // '" requi' // &3288 'res cloud_scheme = seifert_beheng'3289 CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 )3290 ENDIF3291 unit = '1/m3'3292 3140 3293 3141 CASE ( 'pc', 'pr' ) … … 3301 3149 IF ( TRIM( var ) == 'pr' ) unit = 'm' 3302 3150 3303 CASE ( 'prr' )3304 IF ( .NOT. cloud_physics ) THEN3305 message_string = 'output of "' // TRIM( var ) // '" requi' // &3306 'res cloud_physics = .TRUE.'3307 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 )3308 ELSEIF ( microphysics_sat_adjust ) THEN3309 message_string = 'output of "' // TRIM( var ) // '" is ' // &3310 'not available for cloud_scheme = saturation_adjust'3311 CALL message( 'check_parameters', 'PA0423', 1, 2, 0, 6, 0 )3312 ENDIF3313 unit = 'kg/kg m/s'3314 3315 3151 CASE ( 'q', 'vpt' ) 3316 3152 IF ( .NOT. humidity ) THEN … … 3322 3158 IF ( TRIM( var ) == 'vpt' ) unit = 'K' 3323 3159 3324 CASE ( 'q c' )3325 IF ( .NOT. cloud_physics) THEN3160 CASE ( 'ql' ) 3161 IF ( .NOT. ( bulk_cloud_model .OR. cloud_droplets ) ) THEN 3326 3162 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3327 'res cloud_physics = .TRUE.' 3328 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) 3329 ENDIF 3330 unit = 'kg/kg' 3331 3332 CASE ( 'ql' ) 3333 IF ( .NOT. ( cloud_physics .OR. cloud_droplets ) ) THEN 3334 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3335 'res cloud_physics = .TRUE. or cloud_droplets = .TRUE.' 3163 'res bulk_cloud_model = .TRUE. or cloud_droplets = .TRUE.' 3336 3164 CALL message( 'check_parameters', 'PA0106', 1, 2, 0, 6, 0 ) 3337 3165 ENDIF … … 3348 3176 IF ( TRIM( var ) == 'ql_vp' ) unit = 'none' 3349 3177 3350 CASE ( 'q r' )3351 IF ( .NOT. cloud_physics) THEN3178 CASE ( 'qv' ) 3179 IF ( .NOT. bulk_cloud_model ) THEN 3352 3180 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3353 'res cloud_physics = .TRUE.' 3354 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) 3355 ELSEIF ( .NOT. microphysics_seifert ) THEN 3356 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3357 'res cloud_scheme = seifert_beheng' 3358 CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 ) 3359 ENDIF 3360 unit = 'kg/kg' 3361 3362 CASE ( 'qv' ) 3363 IF ( .NOT. cloud_physics ) THEN 3364 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3365 'res cloud_physics = .TRUE.' 3181 'res bulk_cloud_model = .TRUE.' 3366 3182 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) 3367 3183 ENDIF … … 3400 3216 CONTINUE 3401 3217 3402 CASE ( 'ghf*', 'lwp*', 'ol*', ' pra*', 'prr*', 'qsws*', 'r_a*',&3218 CASE ( 'ghf*', 'lwp*', 'ol*', 'qsws*', 'r_a*', & 3403 3219 'shf*', 'ssws*', 't*', 'tsurf*', 'u*', 'z0*', 'z0h*', 'z0q*' ) 3404 3220 IF ( k == 0 .OR. data_output(i)(ilen-2:ilen) /= '_xy' ) THEN … … 3409 3225 ENDIF 3410 3226 3411 IF ( TRIM( var ) == 'lwp*' .AND. .NOT. cloud_physics) THEN3227 IF ( TRIM( var ) == 'lwp*' .AND. .NOT. bulk_cloud_model ) THEN 3412 3228 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3413 'res cloud_physics= .TRUE.'3229 'res bulk_cloud_model = .TRUE.' 3414 3230 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) 3415 ENDIF3416 IF ( TRIM( var ) == 'pra*' .AND. &3417 .NOT. ( microphysics_kessler .OR. microphysics_seifert ) ) THEN3418 message_string = 'output of "' // TRIM( var ) // '" requi' // &3419 'res cloud_scheme = kessler or seifert_beheng'3420 CALL message( 'check_parameters', 'PA0112', 1, 2, 0, 6, 0 )3421 ENDIF3422 IF ( TRIM( var ) == 'pra*' .AND. j == 1 ) THEN3423 message_string = 'temporal averaging of precipitation ' // &3424 'amount "' // TRIM( var ) // '" is not possible'3425 CALL message( 'check_parameters', 'PA0113', 1, 2, 0, 6, 0 )3426 ENDIF3427 IF ( TRIM( var ) == 'prr*' .AND. &3428 .NOT. ( microphysics_kessler .OR. microphysics_seifert ) ) THEN3429 message_string = 'output of "' // TRIM( var ) // '" requi' // &3430 'res cloud_scheme = kessler or seifert_beheng'3431 CALL message( 'check_parameters', 'PA0112', 1, 2, 0, 6, 0 )3432 3231 ENDIF 3433 3232 IF ( TRIM( var ) == 'qsws*' .AND. .NOT. humidity ) THEN … … 3460 3259 IF ( TRIM( var ) == 'lwp*' ) unit = 'kg/m2' 3461 3260 IF ( TRIM( var ) == 'ol*' ) unit = 'm' 3462 IF ( TRIM( var ) == 'pra*' ) unit = 'mm'3463 IF ( TRIM( var ) == 'prr*' ) unit = 'mm/s'3464 3261 IF ( TRIM( var ) == 'qsws*' ) unit = 'kgm/kgs' 3465 3262 IF ( TRIM( var ) == 'r_a*' ) unit = 's/m' … … 3483 3280 3484 3281 CALL tcm_check_data_output ( var, unit ) 3282 3283 ! 3284 !-- Block of microphysics module outputs 3285 IF ( unit == 'illegal' .AND. bulk_cloud_model ) THEN 3286 CALL bcm_check_data_output ( var, unit ) 3287 ENDIF 3485 3288 3486 3289 IF ( unit == 'illegal' ) THEN -
palm/trunk/SOURCE/chem_photolysis_mod.f90
r3241 r3274 26 26 ! ----------------- 27 27 ! $Id$ 28 ! Modularization of all bulk cloud physics code components 29 ! 30 ! 3241 2018-09-12 15:02:00Z raasch 28 31 ! unused variables commented 29 32 ! … … 50 53 ONLY: dzw, hyp, pt, q, ql, zu, zw 51 54 52 USE constants,&55 USE basic_constants_and_equations_mod, & 53 56 ONLY: pi 54 57 … … 68 71 USE control_parameters, & 69 72 ONLY: initializing_actions 70 ! ONLY: cloud_droplets, cloud_physics, g, initializing_actions,&73 ! ONLY: cloud_droplets, initializing_actions, & 71 74 ! large_scale_forcing, lsf_surf, phi, pt_surface, rho_surface, & 72 75 ! surface_pressure, time_since_reference_point … … 271 274 ! INTEGER(iwp) :: i, j, k !< loop indices 272 275 INTEGER(iwp) :: iphot,iav !< loop indix for photolysis reaction 273 ! REAL(wp) :: exn, & !< Exner functions at surface 276 ! REAL(wp) :: exn, & !< Exner functions at surface (better use palms own exner array in arrays_3d) 274 277 ! pt1 !< potential temperature at first grid level 275 278 … … 304 307 ! INTEGER(iwp) :: i, j, k !< loop indices 305 308 INTEGER(iwp) :: iphot,iav !< loop indix for photolysis reaction 306 ! REAL(wp) :: exn, & !< Exner functions at surface 309 ! REAL(wp) :: exn, & !< Exner functions at surface (better use palms own exner array in arrays_3d) 307 310 ! pt1 !< potential temperature at first grid level 308 311 REAL(wp) :: coszi !< 1./cosine of zenith angle -
palm/trunk/SOURCE/chemistry_model_mod.f90
r3248 r3274 27 27 ! ----------------- 28 28 ! $Id$ 29 ! Modularization of all bulk cloud physics code components 30 ! 31 ! 3248 2018-09-14 09:42:06Z sward 29 32 ! Minor formating changes 30 33 ! … … 144 147 intermediate_timestep_count_max, & 145 148 timestep_scheme, use_prescribed_profile_data 146 USE arrays_3d, ONLY: hyp, pt, rdf_sc, tend, zu 149 USE arrays_3d, ONLY: hyp, pt, rdf_sc, tend, zu, exner 147 150 USE chem_gasphase_mod, ONLY: nspec, spc_names, nkppctrl, nmaxfixsteps, & 148 151 t_steps, fill_temp, chem_gasphase_integrate, & … … 939 942 IF (chem_gasphase_on) THEN 940 943 941 tmp_temp(:) = pt(:,j,i) * ( hyp(nzb+1:nzt) / 100000.0_wp )**0.286_wp944 tmp_temp(:) = pt(:,j,i) * exner(nzb+1:nzt) 942 945 ! ppm to molecules/cm**3 943 946 ! tmp_fact = 1.e-6_wp*6.022e23_wp/(22.414_wp*1000._wp) * 273.15_wp * hyp(nzb+1:nzt)/( 101300.0_wp * tmp_temp ) -
palm/trunk/SOURCE/compute_vpt.f90
r2718 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 2718 2018-01-02 08:49:38Z maronga 27 30 ! Corrected "Former revisions" section 28 31 ! … … 67 70 68 71 USE arrays_3d, & 69 ONLY: pt, q, ql, vpt 70 72 ONLY: pt, q, ql, vpt, d_exner 73 74 USE basic_constants_and_equations_mod, & 75 ONLY: lv_d_cp 76 77 USE control_parameters, & 78 ONLY: cloud_droplets 79 71 80 USE indices, & 72 81 ONLY: nzb, nzt 73 74 USE cloud_parameters, & 75 ONLY: l_d_cp, pt_d_t 76 77 USE control_parameters, & 78 ONLY: cloud_droplets, cloud_physics 79 82 80 83 USE kinds 84 85 USE bulk_cloud_model_mod, & 86 ONLY: bulk_cloud_model 81 87 82 88 IMPLICIT NONE … … 84 90 INTEGER(iwp) :: k !< 85 91 86 IF ( .NOT. cloud_physics.AND. .NOT. cloud_droplets ) THEN92 IF ( .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets ) THEN 87 93 vpt = pt * ( 1.0_wp + 0.61_wp * q ) 88 ELSE IF ( cloud_physics) THEN94 ELSE IF (bulk_cloud_model) THEN 89 95 DO k = nzb, nzt+1 90 vpt(k,:,:) = ( pt(k,:,:) + pt_d_t(k) * l_d_cp * ql(k,:,:) ) *&96 vpt(k,:,:) = ( pt(k,:,:) + d_exner(k) * lv_d_cp * ql(k,:,:) ) * & 91 97 ( 1.0_wp + 0.61_wp * q(k,:,:) - 1.61_wp * ql(k,:,:) ) 92 98 ENDDO -
palm/trunk/SOURCE/data_output_2d.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 237 240 precipitation_amount, prr, q, qc, ql, ql_c, ql_v, qr, & 238 241 rho_ocean, s, sa, tend, u, v, vpt, w, zu, zw, & 239 waterflux_output_conversion 240 242 waterflux_output_conversion, hyrho, d_exner 243 241 244 USE averaging 242 243 USE cloud_parameters, & 244 ONLY: cp, hyrho, l_d_cp, l_v, pt_d_t 245 245 246 USE basic_constants_and_equations_mod, & 247 ONLY: c_p, lv_d_cp, l_v 248 249 USE bulk_cloud_model_mod, & 250 ONLY: bulk_cloud_model, bcm_data_output_2d 251 246 252 USE control_parameters, & 247 ONLY: cloud_physics, data_output_2d_on_each_pe, data_output_xy,&253 ONLY: data_output_2d_on_each_pe, data_output_xy, & 248 254 data_output_xz, data_output_yz, do2d, & 249 255 do2d_xy_last_time, do2d_xy_time_count, & … … 254 260 psolver, section, simulated_time, & 255 261 time_since_reference_point, uv_exposure 256 262 257 263 USE cpulog, & 258 264 ONLY: cpu_log, log_point 259 265 260 266 USE gust_mod, & 261 267 ONLY: gust_data_output_2d, gust_module_enabled 262 268 263 269 USE indices, & 264 270 ONLY: nbgp, nx, nxl, nxlg, nxr, nxrg, ny, nyn, nyng, nys, nysg, & 265 271 nzb, nzt, wall_flags_0 266 272 267 273 USE kinds 268 274 269 275 USE land_surface_model_mod, & 270 276 ONLY: lsm_data_output_2d, zs 271 277 272 278 #if defined( __netcdf ) 273 279 USE NETCDF … … 579 585 level_z(nzb+1) = zu(nzb+1) 580 586 581 CASE ( 'nc_xy', 'nc_xz', 'nc_yz' )582 IF ( av == 0 ) THEN583 to_be_resorted => nc584 ELSE585 IF ( .NOT. ALLOCATED( nc_av ) ) THEN586 ALLOCATE( nc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )587 nc_av = REAL( fill_value, KIND = wp )588 ENDIF589 to_be_resorted => nc_av590 ENDIF591 IF ( mode == 'xy' ) level_z = zu592 593 CASE ( 'nr_xy', 'nr_xz', 'nr_yz' )594 IF ( av == 0 ) THEN595 to_be_resorted => nr596 ELSE597 IF ( .NOT. ALLOCATED( nr_av ) ) THEN598 ALLOCATE( nr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )599 nr_av = REAL( fill_value, KIND = wp )600 ENDIF601 to_be_resorted => nr_av602 ENDIF603 IF ( mode == 'xy' ) level_z = zu604 605 587 CASE ( 'ghf*_xy' ) ! 2d-array 606 588 IF ( av == 0 ) THEN … … 756 738 ENDIF 757 739 758 CASE ( 'pra*_xy' ) ! 2d-array / integral quantity => no av759 ! CALL exchange_horiz_2d( precipitation_amount )760 DO i = nxl, nxr761 DO j = nys, nyn762 local_pf(i,j,nzb+1) = precipitation_amount(j,i)763 ENDDO764 ENDDO765 precipitation_amount = 0.0_wp ! reset for next integ. interval766 resorted = .TRUE.767 two_d = .TRUE.768 level_z(nzb+1) = zu(nzb+1)769 770 CASE ( 'prr_xy', 'prr_xz', 'prr_yz' )771 IF ( av == 0 ) THEN772 ! CALL exchange_horiz( prr, nbgp )773 DO i = nxl, nxr774 DO j = nys, nyn775 DO k = nzb, nzt+1776 local_pf(i,j,k) = prr(k,j,i) * hyrho(nzb+1)777 ENDDO778 ENDDO779 ENDDO780 ELSE781 IF ( .NOT. ALLOCATED( prr_av ) ) THEN782 ALLOCATE( prr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )783 prr_av = REAL( fill_value, KIND = wp )784 ENDIF785 ! CALL exchange_horiz( prr_av, nbgp )786 DO i = nxl, nxr787 DO j = nys, nyn788 DO k = nzb, nzt+1789 local_pf(i,j,k) = prr_av(k,j,i) * hyrho(nzb+1)790 ENDDO791 ENDDO792 ENDDO793 ENDIF794 resorted = .TRUE.795 IF ( mode == 'xy' ) level_z = zu796 797 740 CASE ( 'pt_xy', 'pt_xz', 'pt_yz' ) 798 741 IF ( av == 0 ) THEN 799 IF ( .NOT. cloud_physics) THEN742 IF ( .NOT. bulk_cloud_model ) THEN 800 743 to_be_resorted => pt 801 744 ELSE … … 803 746 DO j = nys, nyn 804 747 DO k = nzb, nzt+1 805 local_pf(i,j,k) = pt(k,j,i) + l _d_cp *&806 pt_d_t(k) *&748 local_pf(i,j,k) = pt(k,j,i) + lv_d_cp * & 749 d_exner(k) * & 807 750 ql(k,j,i) 808 751 ENDDO … … 829 772 ENDIF 830 773 to_be_resorted => q_av 831 ENDIF832 IF ( mode == 'xy' ) level_z = zu833 834 CASE ( 'qc_xy', 'qc_xz', 'qc_yz' )835 IF ( av == 0 ) THEN836 to_be_resorted => qc837 ELSE838 IF ( .NOT. ALLOCATED( qc_av ) ) THEN839 ALLOCATE( qc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )840 qc_av = REAL( fill_value, KIND = wp )841 ENDIF842 to_be_resorted => qc_av843 774 ENDIF 844 775 IF ( mode == 'xy' ) level_z = zu … … 921 852 IF ( mode == 'xy' ) level_z = zu 922 853 923 CASE ( 'qr_xy', 'qr_xz', 'qr_yz' )924 IF ( av == 0 ) THEN925 to_be_resorted => qr926 ELSE927 IF ( .NOT. ALLOCATED( qr_av ) ) THEN928 ALLOCATE( qr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )929 qr_av = REAL( fill_value, KIND = wp )930 ENDIF931 to_be_resorted => qr_av932 ENDIF933 IF ( mode == 'xy' ) level_z = zu934 935 854 CASE ( 'qsws*_xy' ) ! 2d-array 936 855 IF ( av == 0 ) THEN … … 1071 990 j = surf_lsm_h%j(m) 1072 991 k = surf_lsm_h%k(m) 1073 local_pf(i,j,nzb+1) = surf_lsm_h%shf(m) * c p992 local_pf(i,j,nzb+1) = surf_lsm_h%shf(m) * c_p 1074 993 ENDDO 1075 994 DO m = 1, surf_usm_h%ns … … 1077 996 j = surf_usm_h%j(m) 1078 997 k = surf_usm_h%k(m) 1079 local_pf(i,j,nzb+1) = surf_usm_h%shf(m) * c p998 local_pf(i,j,nzb+1) = surf_usm_h%shf(m) * c_p 1080 999 ENDDO 1081 1000 ELSE … … 1387 1306 1388 1307 ! 1389 !-- Land surface model quantity1390 IF ( land_surface ) THEN1391 CALL lsm_data_output_2d( av, do2d(av,if), found, grid, mode,&1392 local_pf, two_d, nzb_do, nzt_do )1393 ENDIF1394 1395 !1396 1308 !-- Turbulence closure variables 1397 1309 IF ( .NOT. found ) THEN 1398 1310 CALL tcm_data_output_2d( av, do2d(av,if), found, grid, mode,& 1399 1311 local_pf, nzb_do, nzt_do ) 1312 ENDIF 1313 1314 ! 1315 !-- Microphysics module quantities 1316 IF ( .NOT. found .AND. bulk_cloud_model ) THEN 1317 CALL bcm_data_output_2d( av, do2d(av,if), found, grid, mode,& 1318 local_pf, two_d, nzb_do, nzt_do ) 1319 ENDIF 1320 1321 ! 1322 !-- Land surface model quantity 1323 IF ( .NOT. found .AND. land_surface ) THEN 1324 CALL lsm_data_output_2d( av, do2d(av,if), found, grid, mode,& 1325 local_pf, two_d, nzb_do, nzt_do ) 1400 1326 ENDIF 1401 1327 … … 1417 1343 ! 1418 1344 !-- UV exposure model quantity 1419 IF ( uv_exposure ) THEN1345 IF ( .NOT. found .AND. uv_exposure ) THEN 1420 1346 CALL uvem_data_output_2d( av, do2d(av,if), found, grid, & 1421 1347 local_pf, two_d, nzb_do, nzt_do ) -
palm/trunk/SOURCE/data_output_3d.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables and format statements removed 28 31 ! … … 206 209 USE arrays_3d, & 207 210 ONLY: e, nc, nr, p, pt, prr, q, qc, ql, ql_c, ql_v, qr, rho_ocean, s, & 208 sa, tend, u, v, vpt, w 209 211 sa, tend, u, v, vpt, w, d_exner 212 210 213 USE averaging 211 214 215 USE basic_constants_and_equations_mod, & 216 ONLY: lv_d_cp 217 218 USE bulk_cloud_model_mod, & 219 ONLY: bulk_cloud_model, bcm_data_output_3d 220 212 221 USE chemistry_model_mod, & 213 222 ONLY: chem_data_output_3d 214 223 215 USE cloud_parameters, &216 ONLY: l_d_cp, pt_d_t217 218 224 USE control_parameters, & 219 ONLY: air_chemistry, cloud_physics, do3d, do3d_no, do3d_time_count,&225 ONLY: air_chemistry, do3d, do3d_no, do3d_time_count, & 220 226 io_blocks, io_group, land_surface, message_string, & 221 227 ntdim_3d, nz_do3d, plant_canopy, & 222 228 psolver, simulated_time, time_since_reference_point, & 223 229 urban_surface, varnamelength 224 230 225 231 USE cpulog, & 226 232 ONLY: log_point, cpu_log … … 228 234 USE gust_mod, & 229 235 ONLY: gust_data_output_3d, gust_module_enabled 230 236 231 237 USE indices, & 232 238 ONLY: nbgp, nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt, & 233 239 wall_flags_0 234 240 235 241 USE kinds 236 242 237 243 USE land_surface_model_mod, & 238 244 ONLY: lsm_data_output_3d, nzb_soil, nzt_soil … … 399 405 ENDIF 400 406 to_be_resorted => lpt_av 401 ENDIF402 403 CASE ( 'nc' )404 IF ( av == 0 ) THEN405 to_be_resorted => nc406 ELSE407 IF ( .NOT. ALLOCATED( nc_av ) ) THEN408 ALLOCATE( nc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )409 nc_av = REAL( fill_value, KIND = wp )410 ENDIF411 to_be_resorted => nc_av412 ENDIF413 414 CASE ( 'nr' )415 IF ( av == 0 ) THEN416 to_be_resorted => nr417 ELSE418 IF ( .NOT. ALLOCATED( nr_av ) ) THEN419 ALLOCATE( nr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )420 nr_av = REAL( fill_value, KIND = wp )421 ENDIF422 to_be_resorted => nr_av423 407 ENDIF 424 408 … … 506 490 ENDIF 507 491 508 CASE ( 'prr' )509 IF ( av == 0 ) THEN510 DO i = nxl, nxr511 DO j = nys, nyn512 DO k = nzb_do, nzt_do513 local_pf(i,j,k) = prr(k,j,i)514 ENDDO515 ENDDO516 ENDDO517 ELSE518 IF ( .NOT. ALLOCATED( prr_av ) ) THEN519 ALLOCATE( prr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )520 prr_av = REAL( fill_value, KIND = wp )521 ENDIF522 DO i = nxl, nxr523 DO j = nys, nyn524 DO k = nzb_do, nzt_do525 local_pf(i,j,k) = prr_av(k,j,i)526 ENDDO527 ENDDO528 ENDDO529 ENDIF530 resorted = .TRUE.531 532 492 CASE ( 'pt' ) 533 493 IF ( av == 0 ) THEN 534 IF ( .NOT. cloud_physics) THEN494 IF ( .NOT. bulk_cloud_model ) THEN 535 495 to_be_resorted => pt 536 496 ELSE … … 538 498 DO j = nys, nyn 539 499 DO k = nzb_do, nzt_do 540 local_pf(i,j,k) = pt(k,j,i) + l _d_cp *&541 pt_d_t(k) *&500 local_pf(i,j,k) = pt(k,j,i) + lv_d_cp * & 501 d_exner(k) * & 542 502 ql(k,j,i) 543 503 ENDDO … … 563 523 ENDIF 564 524 to_be_resorted => q_av 565 ENDIF566 567 CASE ( 'qc' )568 IF ( av == 0 ) THEN569 to_be_resorted => qc570 ELSE571 IF ( .NOT. ALLOCATED( qc_av ) ) THEN572 ALLOCATE( qc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )573 qc_av = REAL( fill_value, KIND = wp )574 ENDIF575 to_be_resorted => qc_av576 525 ENDIF 577 526 … … 647 596 ENDIF 648 597 649 CASE ( 'qr' )650 IF ( av == 0 ) THEN651 to_be_resorted => qr652 ELSE653 IF ( .NOT. ALLOCATED( qr_av ) ) THEN654 ALLOCATE( qr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )655 qr_av = REAL( fill_value, KIND = wp )656 ENDIF657 to_be_resorted => qr_av658 ENDIF659 660 598 CASE ( 'qv' ) 661 599 IF ( av == 0 ) THEN … … 758 696 !-- Block of urban surface model outputs 759 697 CASE ( 'usm_output' ) 760 CALL usm_data_output_3d( av, do3d(av,if), found, local_pf, &698 CALL usm_data_output_3d( av, do3d(av,if), found, local_pf, & 761 699 nzb_do, nzt_do ) 762 700 763 701 CASE DEFAULT 764 702 703 IF ( .NOT. found ) THEN 704 CALL tcm_data_output_3d( av, do3d(av,if), found, local_pf, & 705 nzb_do, nzt_do ) 706 resorted = .TRUE. 707 ENDIF 708 709 ! 710 !-- Microphysic module quantities 711 IF ( .NOT. found .AND. bulk_cloud_model ) THEN 712 CALL bcm_data_output_3d( av, do3d(av,if), found, local_pf, & 713 nzb_do, nzt_do ) 714 resorted = .TRUE. 715 ENDIF 716 765 717 ! 766 718 !-- Land surface quantity 767 IF ( land_surface ) THEN719 IF ( .NOT. found .AND. land_surface ) THEN 768 720 ! 769 721 !-- For soil model quantities, it is required to re-allocate local_pf … … 788 740 ENDIF 789 741 790 ENDIF791 792 IF ( .NOT. found ) THEN793 CALL tcm_data_output_3d( av, do3d(av,if), found, local_pf, &794 nzb_do, nzt_do )795 resorted = .TRUE.796 742 ENDIF 797 743 -
palm/trunk/SOURCE/data_output_dvrp.f90
r3045 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3045 2018-05-28 07:55:41Z Giersch 27 30 ! Code adjusted according to PALM coding standards 28 31 ! … … 131 134 132 135 USE arrays_3d, & 133 ONLY: p, pt, q, ql, s, ts, u, us, v, w, zu 134 135 USE cloud_parameters, & 136 ONLY: l_d_cp, pt_d_t 137 138 USE constants, & 139 ONLY: pi 140 136 ONLY: p, pt, q, ql, s, ts, u, us, v, w, zu, d_exner 137 138 USE basic_constants_and_equations_mod, & 139 ONLY: pi, lv_d_cp 140 141 141 USE control_parameters, & 142 ONLY: cloud_droplets, cloud_physics, do2d, do3d, humidity, ibc_uv_b,&142 ONLY: cloud_droplets, do2d, do3d, humidity, ibc_uv_b, & 143 143 message_string, nz_do3d, passive_scalar, simulated_time, & 144 144 threshold … … 160 160 161 161 USE kinds 162 163 USE bulk_cloud_model_mod, & 164 ONLY: bulk_cloud_model 162 165 163 166 USE pegrid … … 335 338 336 339 CASE ( 'pt', 'pt_xy', 'pt_xz', 'pt_yz' ) 337 IF ( .NOT. cloud_physics) THEN340 IF ( .NOT. bulk_cloud_model ) THEN 338 341 DO i = nxl_dvrp, nxr_dvrp+1 339 342 DO j = nys_dvrp, nyn_dvrp+1 … … 347 350 DO j = nys_dvrp, nyn_dvrp+1 348 351 DO k = nzb, nz_do3d 349 local_pf(i,j,k) = pt(k,j,i) + l _d_cp *&350 pt_d_t(k) * ql(k,j,i)352 local_pf(i,j,k) = pt(k,j,i) + lv_d_cp * & 353 d_exner(k) * ql(k,j,i) 351 354 ENDDO 352 355 ENDDO … … 372 375 373 376 CASE ( 'ql', 'ql_xy', 'ql_xz', 'ql_yz' ) 374 IF ( cloud_physics.OR. cloud_droplets ) THEN377 IF ( bulk_cloud_model .OR. cloud_droplets ) THEN 375 378 DO i = nxl_dvrp, nxr_dvrp+1 376 379 DO j = nys_dvrp, nyn_dvrp+1 … … 381 384 ENDDO 382 385 ELSE 383 message_string = 'if cloud_physics = .FALSE. and ' // &386 message_string = 'if bulk_cloud_model = .FALSE. and ' // & 384 387 'cloud_droplets = .FALSE. ' 385 388 'output of ' // TRIM( output_variable) // & -
palm/trunk/SOURCE/data_output_mask.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variable removed 28 31 ! … … 129 132 USE arrays_3d, & 130 133 ONLY: e, nc, nr, p, pt, q, qc, ql, ql_c, ql_v, qr, rho_ocean, s, sa, & 131 tend, u, v, vpt, w 134 tend, u, v, vpt, w, d_exner 132 135 133 136 USE averaging, & … … 135 138 qc_av, ql_av, ql_c_av, ql_v_av, ql_vp_av, qv_av, qr_av, & 136 139 rho_ocean_av, s_av, sa_av, u_av, v_av, vpt_av, w_av 137 138 USE cloud_parameters,&139 ONLY: l _d_cp, pt_d_t140 141 USE basic_constants_and_equations_mod, & 142 ONLY: lv_d_cp 140 143 141 144 USE control_parameters, & 142 ONLY: cloud_physics, domask, domask_no, domask_time_count, mask_i,&145 ONLY: domask, domask_no, domask_time_count, mask_i, & 143 146 mask_j, mask_k, mask_size, mask_size_l, mask_start_l, & 144 147 max_masks, message_string, mid, nz_do3d, simulated_time … … 150 153 151 154 USE kinds 155 156 USE bulk_cloud_model_mod, & 157 ONLY: bulk_cloud_model 152 158 153 159 USE NETCDF … … 354 360 CASE ( 'pt' ) 355 361 IF ( av == 0 ) THEN 356 IF ( .NOT. cloud_physics) THEN362 IF ( .NOT. bulk_cloud_model ) THEN 357 363 to_be_resorted => pt 358 364 ELSE … … 362 368 local_pf(i,j,k) = & 363 369 pt(mask_k(mid,k),mask_j(mid,j),mask_i(mid,i)) & 364 + l _d_cp * pt_d_t(mask_k(mid,k)) *&370 + lv_d_cp * d_exner(mask_k(mid,k)) * & 365 371 ql(mask_k(mid,k),mask_j(mid,j),mask_i(mid,i)) 366 372 ENDDO -
palm/trunk/SOURCE/data_output_spectra.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 238 241 #if defined( __netcdf ) 239 242 240 USE constants,&243 USE basic_constants_and_equations_mod, & 241 244 ONLY: pi 242 245 -
palm/trunk/SOURCE/flow_statistics.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 283 286 momentumflux_output_conversion, nc, nr, p, prho, prr, pt, q, & 284 287 qc, ql, qr, rho_air, rho_air_zw, rho_ocean, s, & 285 sa, u, ug, v, vg, vpt, w, w_subs, waterflux_output_conversion, zw 288 sa, u, ug, v, vg, vpt, w, w_subs, waterflux_output_conversion, & 289 zw, d_exner 286 290 287 USE cloud_parameters,&288 ONLY: l_d_cp, pt_d_t291 USE basic_constants_and_equations_mod, & 292 ONLY: g, lv_d_cp 289 293 290 294 USE control_parameters, & 291 ONLY: average_count_pr, cloud_droplets, cloud_physics, do_sum,&292 dt_3d, g, humidity, initializing_actions, land_surface,&295 ONLY: average_count_pr, cloud_droplets, do_sum, & 296 dt_3d, humidity, initializing_actions, land_surface, & 293 297 large_scale_forcing, large_scale_subsidence, max_pr_user, & 294 message_string, neutral, microphysics_morrison, & 295 microphysics_seifert, ocean, passive_scalar, simulated_time, & 296 simulated_time_at_begin, use_subsidence_tendencies, & 298 message_string, neutral, ocean, passive_scalar, simulated_time,& 299 simulated_time_at_begin, use_subsidence_tendencies, & 297 300 use_surface_fluxes, use_top_fluxes, ws_scheme_mom, & 298 301 ws_scheme_sca … … 313 316 314 317 USE kinds 318 319 USE bulk_cloud_model_mod, & 320 ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert 315 321 316 322 USE land_surface_model_mod, & … … 515 521 ENDDO 516 522 ENDDO 517 IF ( cloud_physics) THEN523 IF ( bulk_cloud_model ) THEN 518 524 !$OMP DO 519 525 DO i = nxl, nxr … … 525 531 * flag 526 532 sums_l(k,43,tn) = sums_l(k,43,tn) + ( & 527 pt(k,j,i) + l _d_cp*pt_d_t(k) * ql(k,j,i) &533 pt(k,j,i) + lv_d_cp * d_exner(k) * ql(k,j,i) & 528 534 ) * rmask(j,i,sr) & 529 535 * flag … … 563 569 sums_l(:,41,0) = sums_l(:,41,0) + sums_l(:,41,i) 564 570 sums_l(:,44,0) = sums_l(:,44,0) + sums_l(:,44,i) 565 IF ( cloud_physics) THEN571 IF ( bulk_cloud_model ) THEN 566 572 sums_l(:,42,0) = sums_l(:,42,0) + sums_l(:,42,i) 567 573 sums_l(:,43,0) = sums_l(:,43,0) + sums_l(:,43,i) … … 598 604 CALL MPI_ALLREDUCE( sums_l(nzb,41,0), sums(nzb,41), nzt+2-nzb, & 599 605 MPI_REAL, MPI_SUM, comm2d, ierr ) 600 IF ( cloud_physics) THEN606 IF ( bulk_cloud_model ) THEN 601 607 IF ( collective_wait ) CALL MPI_BARRIER( comm2d, ierr ) 602 608 CALL MPI_ALLREDUCE( sums_l(nzb,42,0), sums(nzb,42), nzt+2-nzb, & … … 621 627 sums(:,44) = sums_l(:,44,0) 622 628 sums(:,41) = sums_l(:,41,0) 623 IF ( cloud_physics) THEN629 IF ( bulk_cloud_model ) THEN 624 630 sums(:,42) = sums_l(:,42,0) 625 631 sums(:,43) = sums_l(:,43,0) … … 654 660 hom(:,1,44,sr) = sums(:,44) ! vpt 655 661 hom(:,1,41,sr) = sums(:,41) ! qv (q) 656 IF ( cloud_physics) THEN662 IF ( bulk_cloud_model ) THEN 657 663 sums(:,42) = sums(:,42) / ngp_2dh_s_inner(:,sr) 658 664 sums(:,43) = sums(:,43) / ngp_2dh_s_inner(:,sr) … … 948 954 * ddzu(k+1) * rmask(j,i,sr) * flag 949 955 950 IF ( cloud_physics) THEN956 IF ( bulk_cloud_model ) THEN 951 957 sums_l(k,51,tn) = sums_l(k,51,tn) & 952 958 - 0.5_wp * ( kh(k,j,i) + kh(k+1,j,i) )& … … 1014 1020 * heatflux_output_conversion(k+ki) 1015 1021 ENDIF 1016 IF ( cloud_physics) THEN1022 IF ( bulk_cloud_model ) THEN 1017 1023 ! 1018 1024 !-- Formula does not work if ql(k+ki) /= 0.0 … … 1067 1073 * heatflux_output_conversion(nzb) 1068 1074 ENDIF 1069 IF ( cloud_physics) THEN1075 IF ( bulk_cloud_model ) THEN 1070 1076 ! 1071 1077 !-- Formula does not work if ql(nzb) /= 0.0 … … 1118 1124 * heatflux_output_conversion(nzb) 1119 1125 ENDIF 1120 IF ( cloud_physics) THEN1126 IF ( bulk_cloud_model ) THEN 1121 1127 ! 1122 1128 !-- Formula does not work if ql(nzb) /= 0.0 … … 1293 1299 * heatflux_output_conversion(nzt) 1294 1300 ENDIF 1295 IF ( cloud_physics) THEN1301 IF ( bulk_cloud_model ) THEN 1296 1302 ! 1297 1303 !-- Formula does not work if ql(nzb) /= 0.0 … … 1347 1353 !-- content, rain drop concentration and rain water content 1348 1354 IF ( humidity ) THEN 1349 IF ( cloud_physics.OR. cloud_droplets ) THEN1355 IF ( bulk_cloud_model .OR. cloud_droplets ) THEN 1350 1356 pts = 0.5_wp * ( vpt(k,j,i) - hom(k,1,44,sr) + & 1351 1357 vpt(k+1,j,i) - hom(k+1,1,44,sr) ) -
palm/trunk/SOURCE/header.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 378 381 USE arrays_3d, & 379 382 ONLY: pt_init, q_init, s_init, sa_init, ug, vg, w_subs, zu, zw 380 383 384 USE basic_constants_and_equations_mod, & 385 ONLY: g, kappa, l_v, r_d 386 387 USE bulk_cloud_model_mod, & 388 ONLY: bulk_cloud_model, bcm_header 389 381 390 USE control_parameters 382 383 USE cloud_parameters, &384 ONLY: cp, l_v, r_d385 391 386 392 USE cpulog, & … … 413 419 USE lsf_nudging_mod, & 414 420 ONLY: lsf_nudging_header 415 416 USE microphysics_mod, &417 ONLY: cloud_water_sedimentation, collision_turbulence, &418 c_sedimentation, limiter_sedimentation, nc_const, &419 ventilation_effect420 421 421 422 USE model_1d_mod, & … … 742 743 IF ( neutral ) WRITE ( io, 131 ) pt_surface 743 744 IF ( humidity ) THEN 744 IF ( .NOT. cloud_physics) THEN745 IF ( .NOT. bulk_cloud_model ) THEN 745 746 WRITE ( io, 129 ) 746 747 ELSE … … 1902 1903 1903 1904 ! 1904 !-- Cloud physics parameters 1905 IF ( cloud_physics ) THEN 1906 WRITE ( io, 415 ) 1907 WRITE ( io, 416 ) surface_pressure, r_d, rho_surface, cp, l_v 1908 IF ( microphysics_seifert ) THEN 1909 WRITE ( io, 510 ) 1.0E-6_wp * nc_const 1910 WRITE ( io, 511 ) c_sedimentation 1911 ENDIF 1912 ENDIF 1905 !-- Output of microphysics information 1906 IF ( bulk_cloud_model ) CALL bcm_header( io ) 1913 1907 1914 1908 ! 1915 1909 !-- Cloud physcis parameters / quantities / numerical methods 1916 1910 WRITE ( io, 430 ) 1917 IF ( humidity .AND. .NOT. cloud_physics.AND. .NOT. cloud_droplets) THEN1911 IF ( humidity .AND. .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets) THEN 1918 1912 WRITE ( io, 431 ) 1919 ELSEIF ( humidity .AND. cloud_physics ) THEN 1920 WRITE ( io, 432 ) 1921 IF ( cloud_top_radiation ) WRITE ( io, 132 ) 1922 IF ( microphysics_kessler ) THEN 1923 WRITE ( io, 133 ) 1924 ELSEIF ( microphysics_seifert ) THEN 1925 IF ( cloud_water_sedimentation ) WRITE ( io, 506 ) 1926 WRITE ( io, 505 ) 1927 IF ( collision_turbulence ) WRITE ( io, 507 ) 1928 IF ( ventilation_effect ) WRITE ( io, 508 ) 1929 IF ( limiter_sedimentation ) WRITE ( io, 509 ) 1930 ENDIF 1931 ELSEIF ( humidity .AND. cloud_droplets ) THEN 1913 ENDIF 1914 IF ( cloud_top_radiation ) WRITE ( io, 132 ) 1915 IF ( humidity .AND. cloud_droplets ) THEN 1932 1916 WRITE ( io, 433 ) 1933 1917 IF ( curvature_solution_effects ) WRITE ( io, 434 ) … … 2105 2089 132 FORMAT (' Parameterization of long-wave radiation processes via'/ & 2106 2090 ' effective emissivity scheme') 2107 133 FORMAT (' Precipitation parameterization via Kessler-Scheme')2108 2091 134 FORMAT (' --> Additional prognostic equation for a passive scalar') 2109 2092 135 FORMAT (' --> Solve perturbation pressure via ',A,' method (', & … … 2327 2310 413 FORMAT (' Reference density in buoyancy terms: ',F8.3,' kg/m**3') 2328 2311 414 FORMAT (' Reference temperature in buoyancy terms: ',F8.4,' K') 2329 415 FORMAT (/' Cloud physics parameters:'/ &2330 ' ------------------------'/)2331 416 FORMAT (' Surface pressure : p_0 = ',F7.2,' hPa'/ &2332 ' Gas constant : R = ',F5.1,' J/(kg K)'/ &2333 ' Density of air : rho_0 =',F6.3,' kg/m**3'/ &2334 ' Specific heat cap. : c_p = ',F6.1,' J/(kg K)'/ &2335 ' Vapourization heat : L_v =',E9.2,' J/kg')2336 2312 420 FORMAT (/' Characteristic levels of the initial temperature profile:'// & 2337 2313 ' Height: ',A,' m'/ & … … 2376 2352 ' ----------------------------------'/) 2377 2353 431 FORMAT (' Humidity is considered, bu no condensation') 2378 432 FORMAT (' Bulk scheme with liquid water potential temperature and'/ &2379 ' total water content is used.'/ &2380 ' Condensation is parameterized via 0% - or 100% scheme.')2381 2354 433 FORMAT (' Cloud droplets treated explicitly using the Lagrangian part', & 2382 2355 'icle model') … … 2473 2446 503 FORMAT (' --> Momentum advection via Wicker-Skamarock-Scheme 5th order') 2474 2447 504 FORMAT (' --> Scalar advection via Wicker-Skamarock-Scheme 5th order') 2475 505 FORMAT (' Precipitation parameterization via Seifert-Beheng-Scheme')2476 506 FORMAT (' Cloud water sedimentation parameterization via Stokes law')2477 507 FORMAT (' Turbulence effects on precipitation process')2478 508 FORMAT (' Ventilation effects on evaporation of rain drops')2479 509 FORMAT (' Slope limiter used for sedimentation process')2480 510 FORMAT (' Droplet density : N_c = ',F6.1,' 1/cm**3')2481 511 FORMAT (' Sedimentation Courant number: '/&2482 ' C_s =',F4.1,' ')2483 2448 512 FORMAT (/' Date: ',A8,6X,'Run: ',A34/ & 2484 2449 ' Time: ',A8,6X,'Run-No.: ',I2.2/ & -
palm/trunk/SOURCE/init_3d_model.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 255 258 ! precipitation_amount, precipitation_rate, prr moved to arrays_3d. 256 259 ! Initialization of nc_1d, nr_1d, pt_1d, qc_1d, qr_1d, q_1d moved to 257 ! microphysics_init.260 ! bcm_init. 258 261 ! 259 262 ! 1845 2016-04-08 08:29:13Z raasch … … 498 501 USE arrays_3d 499 502 503 USE basic_constants_and_equations_mod, & 504 ONLY: c_p, g, l_v, pi, r_d, exner_function, exner_function_invers, & 505 ideal_gas_law_rho, ideal_gas_law_rho_pt, barometric_formula 506 507 USE bulk_cloud_model_mod, & 508 ONLY: bulk_cloud_model, bcm_init, bcm_init_arrays 509 500 510 USE chemistry_model_mod, & 501 511 ONLY: chem_emissions 502 512 503 USE cloud_parameters, &504 ONLY: cp, l_v, r_d505 506 USE constants, &507 ONLY: pi508 509 513 USE control_parameters 510 514 … … 530 534 USE lsf_nudging_mod, & 531 535 ONLY: lsf_init, ls_forcing_surf, nudge_init 532 533 USE microphysics_mod, &534 ONLY: microphysics_init535 536 536 537 USE model_1d_mod, & … … 738 739 #endif 739 740 740 IF ( cloud_physics ) THEN741 !742 !-- Liquid water content743 #if defined( __nopointer )744 ALLOCATE ( ql(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )745 #else746 ALLOCATE ( ql_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )747 #endif748 749 !750 !-- 3D-cloud water content751 IF ( .NOT. microphysics_morrison ) THEN752 #if defined( __nopointer )753 ALLOCATE( qc(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )754 #else755 ALLOCATE( qc_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )756 #endif757 ENDIF758 !759 !-- Precipitation amount and rate (only needed if output is switched)760 ALLOCATE( precipitation_amount(nysg:nyng,nxlg:nxrg) )761 762 !763 !-- 3d-precipitation rate764 ALLOCATE( prr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )765 766 IF ( microphysics_morrison ) THEN767 !768 !-- 3D-cloud drop water content, cloud drop concentration arrays769 #if defined( __nopointer )770 ALLOCATE( nc(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &771 nc_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &772 qc(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &773 qc_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &774 tnc_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &775 tqc_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )776 #else777 ALLOCATE( nc_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &778 nc_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &779 nc_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &780 qc_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &781 qc_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &782 qc_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )783 #endif784 ENDIF785 786 IF ( microphysics_seifert ) THEN787 !788 !-- 3D-rain water content, rain drop concentration arrays789 #if defined( __nopointer )790 ALLOCATE( nr(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &791 nr_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &792 qr(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &793 qr_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &794 tnr_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &795 tqr_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )796 #else797 ALLOCATE( nr_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &798 nr_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &799 nr_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &800 qr_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &801 qr_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &802 qr_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )803 #endif804 ENDIF805 806 ENDIF807 808 741 IF ( cloud_droplets ) THEN 809 742 ! … … 868 801 ! 869 802 !-- Density profile calculation for anelastic approximation 870 t_surface = pt_surface * ( surface_pressure / 1000.0_wp )**( r_d / c p )803 t_surface = pt_surface * ( surface_pressure / 1000.0_wp )**( r_d / c_p ) 871 804 IF ( TRIM( approximation ) == 'anelastic' ) THEN 872 805 DO k = nzb, nzt+1 873 806 p_hydrostatic(k) = surface_pressure * 100.0_wp * & 874 ( 1 - ( g * zu(k) ) / ( c p * t_surface )&875 )**( c p / r_d )807 ( 1 - ( g * zu(k) ) / ( c_p * t_surface ) & 808 )**( c_p / r_d ) 876 809 rho_air(k) = ( p_hydrostatic(k) * & 877 810 ( 100000.0_wp / p_hydrostatic(k) & 878 )**( r_d / c p )&811 )**( r_d / c_p ) & 879 812 ) / ( r_d * pt_init(k) ) 880 813 ENDDO … … 887 820 DO k = nzb, nzt+1 888 821 p_hydrostatic(k) = surface_pressure * 100.0_wp * & 889 ( 1 - ( g * zu(nzb) ) / ( c p * t_surface )&890 )**( c p / r_d )822 ( 1 - ( g * zu(nzb) ) / ( c_p * t_surface ) & 823 )**( c_p / r_d ) 891 824 rho_air(k) = ( p_hydrostatic(k) * & 892 825 ( 100000.0_wp / p_hydrostatic(k) & 893 )**( r_d / c p )&826 )**( r_d / c_p ) & 894 827 ) / ( r_d * pt_init(nzb) ) 895 828 ENDDO … … 923 856 momentumflux_input_conversion(k) = rho_air_zw(k) 924 857 ELSEIF ( TRIM( flux_input_mode ) == 'dynamic' ) THEN 925 heatflux_input_conversion(k) = 1.0_wp / c p858 heatflux_input_conversion(k) = 1.0_wp / c_p 926 859 waterflux_input_conversion(k) = 1.0_wp / l_v 927 860 momentumflux_input_conversion(k) = 1.0_wp … … 933 866 momentumflux_output_conversion(k) = drho_air_zw(k) 934 867 ELSEIF ( TRIM( flux_output_mode ) == 'dynamic' ) THEN 935 heatflux_output_conversion(k) = c p868 heatflux_output_conversion(k) = c_p 936 869 waterflux_output_conversion(k) = l_v 937 870 momentumflux_output_conversion(k) = 1.0_wp … … 1065 998 IF ( humidity ) THEN 1066 999 q => q_1; q_p => q_2; tq_m => q_3 1067 IF ( humidity ) THEN 1068 vpt => vpt_1 1069 IF ( cloud_physics ) THEN 1070 ql => ql_1 1071 IF ( .NOT. microphysics_morrison ) THEN 1072 qc => qc_1 1073 ENDIF 1074 IF ( microphysics_morrison ) THEN 1075 qc => qc_1; qc_p => qc_2; tqc_m => qc_3 1076 nc => nc_1; nc_p => nc_2; tnc_m => nc_3 1077 ENDIF 1078 IF ( microphysics_seifert ) THEN 1079 qr => qr_1; qr_p => qr_2; tqr_m => qr_3 1080 nr => nr_1; nr_p => nr_2; tnr_m => nr_3 1081 ENDIF 1082 ENDIF 1083 ENDIF 1000 vpt => vpt_1 1084 1001 IF ( cloud_droplets ) THEN 1085 1002 ql => ql_1 … … 1102 1019 !-- Initialize surface arrays 1103 1020 CALL init_surface_arrays 1021 ! 1022 !-- Allocate microphysics module arrays 1023 IF ( bulk_cloud_model ) THEN 1024 CALL bcm_init_arrays 1025 ENDIF 1104 1026 ! 1105 1027 !-- Allocate land surface model arrays … … 1297 1219 !-- Set inital w to 0 1298 1220 w = 0.0_wp 1299 !1300 !-- Initialize the remaining quantities1301 IF ( humidity ) THEN1302 IF ( cloud_physics .AND. microphysics_morrison ) THEN1303 DO i = nxlg, nxrg1304 DO j = nysg, nyng1305 qc(:,j,i) = 0.0_wp1306 nc(:,j,i) = 0.0_wp1307 ENDDO1308 ENDDO1309 ENDIF1310 1311 IF ( cloud_physics .AND. microphysics_seifert ) THEN1312 DO i = nxlg, nxrg1313 DO j = nysg, nyng1314 qr(:,j,i) = 0.0_wp1315 nr(:,j,i) = 0.0_wp1316 ENDDO1317 ENDDO1318 ENDIF1319 1320 ENDIF1321 1221 1322 1222 IF ( passive_scalar ) THEN … … 1376 1276 ENDDO 1377 1277 ENDDO 1378 IF ( cloud_physics .AND. microphysics_morrison ) THEN1379 DO i = nxlg, nxrg1380 DO j = nysg, nyng1381 qc(:,j,i) = 0.0_wp1382 nc(:,j,i) = 0.0_wp1383 ENDDO1384 ENDDO1385 ENDIF1386 IF ( cloud_physics .AND. microphysics_seifert ) THEN1387 DO i = nxlg, nxrg1388 DO j = nysg, nyng1389 qr(:,j,i) = 0.0_wp1390 nr(:,j,i) = 0.0_wp1391 ENDDO1392 ENDDO1393 ENDIF1394 1278 ENDIF 1395 1279 … … 1485 1369 ENDDO 1486 1370 ENDDO 1487 IF ( cloud_physics .AND. microphysics_morrison ) THEN1488 DO i = nxlg, nxrg1489 DO j = nysg, nyng1490 qc(:,j,i) = 0.0_wp1491 nc(:,j,i) = 0.0_wp1492 ENDDO1493 ENDDO1494 ENDIF1495 1496 IF ( cloud_physics .AND. microphysics_seifert ) THEN1497 DO i = nxlg, nxrg1498 DO j = nysg, nyng1499 qr(:,j,i) = 0.0_wp1500 nr(:,j,i) = 0.0_wp1501 ENDDO1502 ENDDO1503 ENDIF1504 1505 1371 ENDIF 1506 1372 … … 1598 1464 !-- Store initial profile of mixing ratio and potential 1599 1465 !-- temperature 1600 IF ( cloud_physics.OR. cloud_droplets ) THEN1466 IF ( bulk_cloud_model .OR. cloud_droplets ) THEN 1601 1467 hom(:,1,27,:) = SPREAD( q(:,nys,nxl), 2, statistic_regions+1 ) 1602 1468 hom(:,1,28,:) = SPREAD( pt(:,nys,nxl), 2, statistic_regions+1 ) … … 1645 1511 !-- In case of iterative solvers, p must get an initial value 1646 1512 IF ( psolver(1:9) == 'multigrid' .OR. psolver == 'sor' ) p = 0.0_wp 1647 1648 !1649 !-- Treating cloud physics, liquid water content and precipitation amount1650 !-- are zero at beginning of the simulation1651 IF ( cloud_physics ) THEN1652 ql = 0.0_wp1653 qc = 0.0_wp1654 1655 precipitation_amount = 0.0_wp1656 ENDIF1657 1513 ! 1658 1514 !-- Impose vortex with vertical axis on the initial velocity profile … … 1693 1549 tq_m = 0.0_wp 1694 1550 q_p = q 1695 IF ( cloud_physics .AND. microphysics_morrison ) THEN1696 tqc_m = 0.0_wp1697 qc_p = qc1698 tnc_m = 0.0_wp1699 nc_p = nc1700 ENDIF1701 IF ( cloud_physics .AND. microphysics_seifert ) THEN1702 tqr_m = 0.0_wp1703 qr_p = qr1704 tnr_m = 0.0_wp1705 nr_p = nr1706 ENDIF1707 1551 ENDIF 1708 1552 … … 1963 1807 IF ( humidity ) THEN 1964 1808 q_p = q 1965 IF ( cloud_physics .AND. microphysics_morrison ) THEN1966 qc_p = qc1967 nc_p = nc1968 ENDIF1969 IF ( cloud_physics .AND. microphysics_seifert ) THEN1970 qr_p = qr1971 nr_p = nr1972 ENDIF1973 1809 ENDIF 1974 1810 IF ( passive_scalar ) s_p = s … … 1982 1818 IF ( humidity ) THEN 1983 1819 tq_m = 0.0_wp 1984 IF ( cloud_physics .AND. microphysics_morrison ) THEN1985 tqc_m = 0.0_wp1986 tnc_m = 0.0_wp1987 ENDIF1988 IF ( cloud_physics .AND. microphysics_seifert ) THEN1989 tqr_m = 0.0_wp1990 tnr_m = 0.0_wp1991 ENDIF1992 1820 ENDIF 1993 1821 IF ( passive_scalar ) ts_m = 0.0_wp … … 2417 2245 CALL init_ocean 2418 2246 2419 E LSE2247 ENDIF 2420 2248 ! 2421 2249 !-- Initialize quantities for handling cloud physics 2422 2250 !-- This routine must be called before lpm_init, because 2423 !-- otherwise, array pt_d_t, needed in data_output_dvrp (called by2251 !-- otherwise, array d_exner, needed in data_output_dvrp (called by 2424 2252 !-- lpm_init) is not defined. 2425 CALL init_cloud_physics 2426 ! 2427 !-- Initialize bulk cloud microphysics 2428 CALL microphysics_init 2253 IF ( .NOT. ocean ) THEN 2254 2255 ALLOCATE( hyp(nzb:nzt+1) ) 2256 ALLOCATE( d_exner(nzb:nzt+1) ) 2257 ALLOCATE( exner(nzb:nzt+1) ) 2258 ALLOCATE( hyrho(nzb:nzt+1) ) 2259 ! 2260 !-- Check temperature in case of too large domain height 2261 DO k = nzb, nzt+1 2262 IF ( ( pt_surface * exner_function(surface_pressure * 100.0_wp) - g/c_p * zu(k) ) < 0.0_wp ) THEN 2263 WRITE( message_string, * ) 'absolute temperature < 0.0 at zu(', k, & 2264 ') = ', zu(k) 2265 CALL message( 'init_bulk_cloud_model', 'PA0142', 1, 2, 0, 6, 0 ) 2266 ENDIF 2267 ENDDO 2268 2269 ! 2270 !-- Calculate vertical profile of the hydrostatic pressure (hyp) 2271 hyp = barometric_formula(zu, pt_surface * exner_function(surface_pressure * 100.0_wp), surface_pressure * 100.0_wp) 2272 d_exner = exner_function_invers(hyp) 2273 exner = 1.0_wp / exner_function_invers(hyp) 2274 hyrho = ideal_gas_law_rho_pt(hyp, pt_init) 2275 ! 2276 !-- Compute reference density 2277 rho_surface = ideal_gas_law_rho(surface_pressure * 100.0_wp, pt_surface * exner_function(surface_pressure * 100.0_wp)) 2278 2279 ENDIF 2280 ! 2281 !-- If required, initialize quantities needed for the microphysics module 2282 IF ( bulk_cloud_model ) THEN 2283 CALL bcm_init 2429 2284 ENDIF 2430 2285 -
palm/trunk/SOURCE/init_masks.f90
r3065 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3065 2018-06-12 07:03:02Z Giersch 27 30 ! dz_stretch_level was replaced by dz_stretch_level_start 28 31 ! … … 134 137 135 138 USE control_parameters, & 136 ONLY: constant_diffusion, cloud_droplets, cloud_physics,&139 ONLY: constant_diffusion, cloud_droplets, & 137 140 data_output_masks, data_output_masks_user, & 138 141 doav, doav_n, domask, domask_no, dz, dz_stretch_level_start, & … … 142 145 mask_x_loop, mask_xyz_dimension, mask_y, mask_y_loop, mask_z, & 143 146 mask_z_loop, max_masks, message_string, mid, & 144 microphysics_morrison, microphysics_seifert, passive_scalar, & 145 ocean, varnamelength 146 147 passive_scalar, ocean, varnamelength 148 147 149 148 150 USE grid_variables, & … … 153 155 154 156 USE kinds 157 158 USE bulk_cloud_model_mod, & 159 ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert 155 160 156 161 USE netcdf_interface, & … … 309 314 310 315 CASE ( 'lpt' ) 311 IF ( .NOT. cloud_physics) THEN312 WRITE ( message_string, * ) 'output of "', TRIM( var ), & 313 '" requires cloud_physics= .TRUE.'316 IF ( .NOT. bulk_cloud_model ) THEN 317 WRITE ( message_string, * ) 'output of "', TRIM( var ), & 318 '" requires bulk_cloud_model = .TRUE.' 314 319 CALL message( 'init_masks', 'PA0108', 1, 2, 0, 6, 0 ) 315 320 ENDIF … … 317 322 318 323 CASE ( 'nc' ) 319 IF ( .NOT. cloud_physics) THEN320 WRITE ( message_string, * ) 'output of "', TRIM( var ), & 321 '" requires cloud_physics= .TRUE.'324 IF ( .NOT. bulk_cloud_model ) THEN 325 WRITE ( message_string, * ) 'output of "', TRIM( var ), & 326 '" requires bulk_cloud_model = .TRUE.' 322 327 CALL message( 'init_masks', 'PA0108', 1, 2, 0, 6, 0 ) 323 328 ELSEIF ( .NOT. microphysics_morrison ) THEN … … 329 334 330 335 CASE ( 'nr' ) 331 IF ( .NOT. cloud_physics) THEN332 WRITE ( message_string, * ) 'output of "', TRIM( var ), & 333 '" requires cloud_physics= .TRUE.'336 IF ( .NOT. bulk_cloud_model ) THEN 337 WRITE ( message_string, * ) 'output of "', TRIM( var ), & 338 '" requires bulk_cloud_model = .TRUE.' 334 339 CALL message( 'init_masks', 'PA0108', 1, 2, 0, 6, 0 ) 335 340 ELSEIF ( .NOT. microphysics_seifert ) THEN … … 360 365 361 366 CASE ( 'qc' ) 362 IF ( .NOT. cloud_physics) THEN367 IF ( .NOT. bulk_cloud_model ) THEN 363 368 message_string = 'output of "' // TRIM( var ) // '"' // & 364 'requires cloud_physics= .TRUE.'369 'requires bulk_cloud_model = .TRUE.' 365 370 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) 366 371 ENDIF … … 368 373 369 374 CASE ( 'ql' ) 370 IF ( .NOT. ( cloud_physics.OR. cloud_droplets ) ) THEN371 WRITE ( message_string, * ) 'output of "', TRIM( var ), & 372 '" requires cloud_physics = .TRUE. or cloud_droplets',&373 ' = .TRUE.'375 IF ( .NOT. ( bulk_cloud_model .OR. cloud_droplets ) ) THEN 376 WRITE ( message_string, * ) 'output of "', TRIM( var ), & 377 '" requires bulk_cloud_model = .TRUE. or ', & 378 'cloud_droplets = .TRUE.' 374 379 CALL message( 'init_masks', 'PA0106', 1, 2, 0, 6, 0 ) 375 380 ENDIF … … 387 392 388 393 CASE ( 'qv' ) 389 IF ( .NOT. cloud_physics) THEN390 WRITE ( message_string, * ) 'output of "', TRIM( var ), & 391 '" requires cloud_physics= .TRUE.'394 IF ( .NOT. bulk_cloud_model ) THEN 395 WRITE ( message_string, * ) 'output of "', TRIM( var ), & 396 '" requires bulk_cloud_model = .TRUE.' 392 397 CALL message( 'init_masks', 'PA0108', 1, 2, 0, 6, 0 ) 393 398 ENDIF … … 395 400 396 401 CASE ( 'qr' ) 397 IF ( .NOT. cloud_physics) THEN402 IF ( .NOT. bulk_cloud_model ) THEN 398 403 message_string = 'output of "' // TRIM( var ) // '" ' // & 399 'requires cloud_physics= .TRUE.'404 'requires bulk_cloud_model = .TRUE.' 400 405 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) 401 406 ELSEIF ( .NOT. microphysics_seifert ) THEN -
palm/trunk/SOURCE/init_ocean.f90
r3270 r3274 25 25 ! ------------------ 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3270 2018-09-24 06:28:20Z raasch 27 30 ! bugfix for r2502: wrong calculation of hyp(nzt) in second iterative step 28 31 ! … … 90 93 ONLY: dzu, hyp, pt_init, ref_state, sa_init, zu, zw 91 94 95 USE basic_constants_and_equations_mod, & 96 ONLY: g 97 92 98 USE control_parameters, & 93 ONLY: g, molecular_viscosity, prho_reference, rho_surface,&99 ONLY: molecular_viscosity, prho_reference, rho_surface, & 94 100 rho_reference, surface_pressure, use_single_reference_value 95 101 -
palm/trunk/SOURCE/init_rankine.f90
r2718 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 2718 2018-01-02 08:49:38Z maronga 27 30 ! Corrected "Former revisions" section 28 31 ! … … 73 76 ONLY: initializing_actions, n_sor, nsor, nsor_ini 74 77 75 USE constants,&78 USE basic_constants_and_equations_mod, & 76 79 ONLY: pi 77 80 -
palm/trunk/SOURCE/init_slope.f90
r2718 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 2718 2018-01-02 08:49:38Z maronga 27 30 ! Corrected "Former revisions" section 28 31 ! … … 72 75 ONLY: pt, pt_init, pt_slope_ref, zu 73 76 74 USE constants,&77 USE basic_constants_and_equations_mod, & 75 78 ONLY: pi 76 79 -
palm/trunk/SOURCE/interaction_droplets_ptq.f90
r3040 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3040 2018-05-25 10:22:08Z schwenkel 27 30 ! Changed the name specific humidity to mixing ratio 28 31 ! … … 74 77 ! 75 78 ! 799 2011-12-21 17:48:03Z franke 76 ! Bugfix: pt_d_t(k) was missing in calculation of pt_p79 ! Bugfix: d_exner(k) was missing in calculation of pt_p 77 80 ! 78 81 ! RCS Log replace by Id keyword, revision history cleaned up … … 89 92 MODULE interaction_droplets_ptq_mod 90 93 94 95 USE arrays_3d, & 96 ONLY: pt_p, ql_c, q_p, d_exner 97 98 USE basic_constants_and_equations_mod, & 99 ONLY: lv_d_cp 100 101 USE indices, & 102 ONLY: nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0 103 104 USE kinds 105 106 USE pegrid 91 107 92 108 PRIVATE … … 111 127 SUBROUTINE i_droplets_ptq 112 128 113 USE arrays_3d, &114 ONLY: pt_p, ql_c, q_p115 116 USE cloud_parameters, &117 ONLY: l_d_cp, pt_d_t118 119 USE indices, &120 ONLY: nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0121 122 USE kinds123 124 USE pegrid125 126 129 IMPLICIT NONE 127 130 … … 140 143 141 144 q_p(k,j,i) = q_p(k,j,i) - ql_c(k,j,i) * flag 142 pt_p(k,j,i) = pt_p(k,j,i) + l _d_cp * ql_c(k,j,i) * pt_d_t(k)&145 pt_p(k,j,i) = pt_p(k,j,i) + lv_d_cp * ql_c(k,j,i) * d_exner(k) & 143 146 * flag 144 147 ENDDO … … 155 158 !------------------------------------------------------------------------------! 156 159 SUBROUTINE i_droplets_ptq_ij( i, j ) 157 158 USE arrays_3d, &159 ONLY: pt_p, ql_c, q_p160 161 USE cloud_parameters, &162 ONLY: l_d_cp, pt_d_t163 164 USE indices, &165 ONLY: nzb, nzt, wall_flags_0166 167 USE kinds, &168 ONLY: iwp, wp169 170 USE pegrid171 160 172 161 IMPLICIT NONE … … 185 174 186 175 q_p(k,j,i) = q_p(k,j,i) - ql_c(k,j,i) * flag 187 pt_p(k,j,i) = pt_p(k,j,i) + l _d_cp * ql_c(k,j,i) * pt_d_t(k) * flag176 pt_p(k,j,i) = pt_p(k,j,i) + lv_d_cp * ql_c(k,j,i) * d_exner(k) * flag 188 177 ENDDO 189 178 -
palm/trunk/SOURCE/land_surface_model_mod.f90
r3271 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3271 2018-09-24 08:20:34Z suehring 27 30 ! Several bugfixes: 28 31 ! - Initialization of pt_surface array with soil temperature in the uppermost … … 474 477 475 478 USE arrays_3d, & 476 ONLY: hyp, pt, prr, q, q_p, ql, vpt, u, v, w 479 ONLY: hyp, pt, prr, q, q_p, ql, vpt, u, v, w, hyrho, exner, d_exner 480 481 USE basic_constants_and_equations_mod, & 482 ONLY: c_p, g, lv_d_cp, l_v, magnus, rho_l, r_d, r_v 477 483 478 484 USE calc_mean_profile_mod, & 479 485 ONLY: calc_mean_profile 480 486 481 USE cloud_parameters, &482 ONLY: cp, hyrho, l_d_cp, l_d_r, l_v, pt_d_t, rho_l, r_d, r_v483 484 487 USE control_parameters, & 485 ONLY: cloud_droplets, c loud_physics, coupling_start_time, dt_3d, &488 ONLY: cloud_droplets, coupling_start_time, dt_3d, & 486 489 end_time, humidity, intermediate_timestep_count, & 487 490 initializing_actions, intermediate_timestep_count_max, & 488 land_surface, max_masks, p recipitation, pt_surface, &491 land_surface, max_masks, pt_surface, & 489 492 rho_surface, spinup, spinup_pt_mean, spinup_time, & 490 493 surface_pressure, timestep_scheme, tsc, & … … 493 496 USE indices, & 494 497 ONLY: nbgp, nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb 498 499 USE bulk_cloud_model_mod, & 500 ONLY: bulk_cloud_model, precipitation 495 501 496 502 USE netcdf_data_input_mod, & … … 584 590 deep_soil_temperature = 9999999.9_wp, & !< Deep soil temperature (bottom boundary condition) 585 591 drho_l_lv, & !< (rho_l * l_v)**-1 586 exn, & !< value of the Exner function587 592 field_capacity = 9999999.9_wp, & !< NAMELIST m_fc 588 593 f_shortwave_incoming = 9999999.9_wp, & !< NAMELIST f_sw_in … … 604 609 rho_cp, & !< rho_surface * cp 605 610 rho_lv, & !< rho_ocean * l_v 606 rd_d_rv, & !< r_d / r_v607 611 saturation_moisture = 9999999.9_wp, & !< NAMELIST m_sat 608 612 skip_time_do_lsm = 0.0_wp, & !< LSM is not called before this time … … 1734 1738 SUBROUTINE lsm_energy_balance( horizontal, l ) 1735 1739 1736 USE diagnostic_quantities_mod, &1737 ONLY: magnus1738 1739 1740 USE pegrid 1740 1741 … … 1816 1817 j_off = surf%joff 1817 1818 i_off = surf%ioff 1818 1819 !1820 !-- Calculate the exner function for the current time step1821 exn = ( surface_pressure / 1000.0_wp )**0.286_wp1822 1819 1823 1820 DO m = 1, surf%ns … … 1889 1886 !-- time step is used here. Note that this formulation is the 1890 1887 !-- equivalent to the ECMWF formulation using drag coefficients 1891 ! IF ( cloud_physics) THEN1892 ! pt1 = pt(k,j,i) + l _d_cp * pt_d_t(k) * ql(k,j,i)1888 ! IF ( bulk_cloud_model ) THEN 1889 ! pt1 = pt(k,j,i) + lv_d_cp * d_exner(k) * ql(k,j,i) 1893 1890 ! qv1 = q(k,j,i) - ql(k,j,i) 1894 1891 ! ELSEIF ( cloud_droplets ) THEN 1895 ! pt1 = pt(k,j,i) + l _d_cp * pt_d_t(k) * ql(k,j,i)1892 ! pt1 = pt(k,j,i) + lv_d_cp * d_exner(k) * ql(k,j,i) 1896 1893 ! qv1 = q(k,j,i) 1897 1894 ! ELSE … … 2097 2094 !-- Denominator of the prognostic equation 2098 2095 coef_2 = surf%rad_lw_out_change_0(m) + f_qsws * dq_s_dt & 2099 + lambda_surface + f_shf / exn 2096 + lambda_surface + f_shf / exner(nzb) 2100 2097 ELSE 2101 2098 ! … … 2107 2104 ! 2108 2105 !-- Denominator of the prognostic equation 2109 coef_2 = surf%rad_lw_out_change_0(m) + lambda_surface + f_shf / exn 2106 coef_2 = surf%rad_lw_out_change_0(m) + lambda_surface + f_shf / exner(nzb) 2110 2107 2111 2108 ENDIF … … 2160 2157 2161 2158 2162 ! pt(k+k_off,j+j_off,i+i_off) = surf_t_surface_p%var_1d(m) / exn !is actually no air temperature2163 surf%pt_surface(m) = surf_t_surface_p%var_1d(m) / exn 2159 ! pt(k+k_off,j+j_off,i+i_off) = surf_t_surface_p%var_1d(m) / exner(nzb) !is actually no air temperature 2160 surf%pt_surface(m) = surf_t_surface_p%var_1d(m) / exner(nzb) 2164 2161 2165 2162 ! … … 2177 2174 - surf_t_soil%var_2d(nzb_soil,m) ) 2178 2175 2179 surf%shf(m) = - f_shf * ( surf%pt1(m) - surf%pt_surface(m) ) / c p2176 surf%shf(m) = - f_shf * ( surf%pt1(m) - surf%pt_surface(m) ) / c_p 2180 2177 2181 2178 IF ( humidity ) THEN … … 2330 2327 SUBROUTINE calc_q_surface 2331 2328 2332 USE diagnostic_quantities_mod2333 2334 2329 IMPLICIT NONE 2335 2330 2336 REAL(wp) :: resistance !< aerodynamic and soil resistance term 2331 REAL(wp) :: e_s !< saturation water vapor pressure 2332 REAL(wp) :: q_s !< saturation mixing ratio 2333 REAL(wp) :: resistance !< aerodynamic and soil resistance term 2337 2334 2338 2335 DO m = 1, surf%ns … … 2353 2350 ! 2354 2351 !-- Calculate mixing ratio at surface 2355 IF ( cloud_physics) THEN2352 IF ( bulk_cloud_model ) THEN 2356 2353 q(k+k_off,j+j_off,i+i_off) = resistance * q_s + & 2357 2354 ( 1.0_wp - resistance ) * & … … 2471 2468 !------------------------------------------------------------------------------! 2472 2469 SUBROUTINE lsm_init 2473 2470 2474 2471 USE control_parameters, & 2475 2472 ONLY: message_string … … 2501 2498 REAL(wp), DIMENSION(:), ALLOCATABLE :: bound, bound_root_fr !< temporary arrays for storing index bounds 2502 2499 REAL(wp), DIMENSION(:), ALLOCATABLE :: pr_soil_init !< temporary array used for averaging soil profiles 2503 2504 !2505 !-- Calculate Exner function2506 exn = ( surface_pressure / 1000.0_wp )**0.286_wp2507 2500 ! 2508 2501 !-- If no cloud physics is used, rho_surface has not been calculated before 2509 IF ( .NOT. cloud_physics.AND. .NOT. cloud_droplets ) THEN2502 IF ( .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets ) THEN 2510 2503 CALL calc_mean_profile( pt, 4 ) 2511 rho_surface = surface_pressure * 100.0_wp / ( r_d * hom(topo_min_level+1,1,4,0) * exn)2504 rho_surface = hyp(nzb) / ( r_d * hom(topo_min_level+1,1,4,0) * exner(nzb) ) 2512 2505 ENDIF 2513 2506 2514 2507 ! 2515 2508 !-- Calculate frequently used parameters 2516 rho_cp = cp * rho_surface 2517 rd_d_rv = r_d / r_v 2509 rho_cp = c_p * rho_surface 2518 2510 rho_lv = rho_surface * l_v 2519 2511 drho_l_lv = 1.0_wp / (rho_l * l_v) … … 4451 4443 !-- uppermost layer 4452 4444 t_surface_h%var_1d(m) = t_soil_h%var_2d(nzb_soil,m) 4453 surf_lsm_h%pt_surface(m) = t_soil_h%var_2d(nzb_soil,m) / exn 4445 surf_lsm_h%pt_surface(m) = t_soil_h%var_2d(nzb_soil,m) / exner(nzb) 4454 4446 4455 IF ( cloud_physics.OR. cloud_droplets ) THEN4456 surf_lsm_h%pt1(m) = pt(k,j,i) + l _d_cp * pt_d_t(k) * ql(k,j,i)4447 IF ( bulk_cloud_model .OR. cloud_droplets ) THEN 4448 surf_lsm_h%pt1(m) = pt(k,j,i) + lv_d_cp * d_exner(k) * ql(k,j,i) 4457 4449 ELSE 4458 4450 surf_lsm_h%pt1(m) = pt(k,j,i) … … 4480 4472 !-- uppermost layer 4481 4473 t_surface_v(l)%var_1d(m) = t_soil_v(l)%var_2d(nzb_soil,m) 4482 surf_lsm_v(l)%pt_surface(m) = t_soil_v(l)%var_2d(nzb_soil,m) / exn 4483 4484 IF ( cloud_physics.OR. cloud_droplets ) THEN4485 surf_lsm_v(l)%pt1(m) = pt(k,j,i) + l _d_cp * pt_d_t(k) * ql(k,j,i)4474 surf_lsm_v(l)%pt_surface(m) = t_soil_v(l)%var_2d(nzb_soil,m) / exner(nzb) 4475 4476 IF ( bulk_cloud_model .OR. cloud_droplets ) THEN 4477 surf_lsm_v(l)%pt1(m) = pt(k,j,i) + lv_d_cp * d_exner(k) * ql(k,j,i) 4486 4478 ELSE 4487 4479 surf_lsm_v(l)%pt1(m) = pt(k,j,i) … … 7078 7070 7079 7071 USE control_parameters, & 7080 ONLY: g,message_string, molecular_viscosity7072 ONLY: message_string, molecular_viscosity 7081 7073 7082 7074 IMPLICIT NONE -
palm/trunk/SOURCE/lpm_advec.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 173 176 ONLY: de_dx, de_dy, de_dz, diss, dzw, e, km, u, v, w, zu, zw 174 177 178 USE basic_constants_and_equations_mod, & 179 ONLY: g, kappa 180 175 181 USE cpulog 176 182 … … 179 185 USE control_parameters, & 180 186 ONLY: cloud_droplets, constant_flux_layer, dt_3d, dt_3d_reached_l, & 181 dz, g, kappa,topography, u_gtrans, v_gtrans187 dz, topography, u_gtrans, v_gtrans 182 188 183 189 USE grid_variables, & -
palm/trunk/SOURCE/lpm_calc_liquid_water_content.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 75 78 ONLY: dzw, ql, ql_v, ql_vp 76 79 77 USE cloud_parameters, & 78 ONLY: rho_l 79 80 USE constants, & 81 ONLY: pi 80 USE basic_constants_and_equations_mod, & 81 ONLY: pi, rho_l 82 82 83 83 USE control_parameters, & -
palm/trunk/SOURCE/lpm_collision_kernels.f90
r2718 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 2718 2018-01-02 08:49:38Z maronga 27 30 ! Corrected "Former revisions" section 28 31 ! … … 135 138 136 139 137 USE constants,&138 ONLY: pi140 USE basic_constants_and_equations_mod, & 141 ONLY: g, pi 139 142 140 143 USE kinds … … 404 407 405 408 USE control_parameters, & 406 ONLY: g,molecular_viscosity409 ONLY: molecular_viscosity 407 410 408 411 USE particle_attributes, & -
palm/trunk/SOURCE/lpm_droplet_collision.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 122 125 ONLY: diss, dzw, ql_v, ql_vp 123 126 124 USE cloud_parameters, & 125 ONLY: rho_l, rho_s 126 127 USE constants, & 128 ONLY: pi 127 USE basic_constants_and_equations_mod, & 128 ONLY: pi, rho_l, rho_s 129 129 130 130 USE control_parameters, & -
palm/trunk/SOURCE/lpm_droplet_condensation.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 136 139 137 140 USE arrays_3d, & 138 ONLY: dzw, hyp, pt, q, ql_c, ql_v 139 140 USE cloud_parameters, & 141 ONLY: l_v, molecular_weight_of_solute, & 142 molecular_weight_of_water, rho_l, rho_s, r_v, vanthoff 143 144 USE constants, & 145 ONLY: pi 141 ONLY: dzw, hyp, pt, q, ql_c, ql_v, exner 142 143 USE basic_constants_and_equations_mod, & 144 ONLY: l_v, molecular_weight_of_solute, molecular_weight_of_water, & 145 magnus, pi, rho_l, rho_s, r_v, vanthoff 146 146 147 147 USE control_parameters, & … … 150 150 USE cpulog, & 151 151 ONLY: cpu_log, log_point_s 152 153 USE diagnostic_quantities_mod, &154 ONLY: magnus155 152 156 153 USE grid_variables, & … … 220 217 ! 221 218 !-- Absolute temperature 222 t_int = pt(kp,jp,ip) * ( hyp(kp) / 100000.0_wp )**0.286_wp219 t_int = pt(kp,jp,ip) * exner(kp) 223 220 ! 224 221 !-- Saturation vapor pressure (Eq. 10 in Bolton, 1980) -
palm/trunk/SOURCE/lpm_init.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 1051 1054 1052 1055 USE arrays_3d, & 1053 ONLY: hyp, pt, q 1054 1055 USE cloud_parameters, & 1056 ONLY: molecular_weight_of_solute, molecular_weight_of_water, rho_l, & 1057 r_v, rho_s, vanthoff 1058 1059 USE constants, & 1060 ONLY: pi 1061 1062 USE diagnostic_quantities_mod, & 1063 ONLY: magnus 1064 1056 ONLY: hyp, pt, q, exner 1057 1058 USE basic_constants_and_equations_mod, & 1059 ONLY: molecular_weight_of_solute, molecular_weight_of_water, magnus, & 1060 pi, rho_l, r_v, rho_s, vanthoff 1065 1061 1066 1062 USE kinds … … 1199 1195 !-- the sometimes lengthy growth toward their equilibrium radius within 1200 1196 !-- the simulation. 1201 t_int = pt(kp,jp,ip) * ( hyp(kp) / 100000.0_wp )**0.286_wp1197 t_int = pt(kp,jp,ip) * exner(kp) 1202 1198 1203 1199 e_s = magnus( t_int ) -
palm/trunk/SOURCE/lpm_splitting.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 61 64 ONLY: ql 62 65 63 USE cloud_parameters, & 64 ONLY: rho_l 65 66 USE constants, & 67 ONLY: pi 66 USE basic_constants_and_equations_mod, & 67 ONLY: pi, rho_l 68 68 69 69 USE cpulog, & -
palm/trunk/SOURCE/model_1d_mod.f90
r3135 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3135 2018-07-16 14:43:04Z gronemeier 27 30 ! Bugfix: add +1 to c_3 according to Sogachev et al. (2012) 28 31 ! … … 173 176 ONLY: dd2zu, ddzu, ddzw, dzu, dzw, pt_init, q_init, ug, u_init, & 174 177 vg, v_init, zu 178 179 USE basic_constants_and_equations_mod, & 180 ONLY: g, kappa, pi 175 181 176 182 USE control_parameters, & 177 ONLY: constant_diffusion, constant_flux_layer, dissipation_1d, f, g,&183 ONLY: constant_diffusion, constant_flux_layer, dissipation_1d, f, & 178 184 humidity, ibc_e_b, intermediate_timestep_count, & 179 intermediate_timestep_count_max, k appa, km_constant,&185 intermediate_timestep_count_max, km_constant, & 180 186 message_string, mixing_length_1d, prandtl_number, & 181 187 roughness_length, run_description_header, simulated_time_chr, & … … 989 995 990 996 991 USE constants, &992 ONLY: pi993 994 997 IMPLICIT NONE 995 998 -
palm/trunk/SOURCE/modules.f90
r3240 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3240 2018-09-12 12:04:40Z Giersch 27 30 ! max_pr_user_tmp has been defined as a control variable because it is not 28 31 ! local anymore … … 985 988 REAL(wp), DIMENSION(:), ALLOCATABLE :: momentumflux_output_conversion !< conversion factor array for momentumflux output 986 989 990 REAL(wp), DIMENSION(:), ALLOCATABLE :: hyrho !< density of air calculated with hydrostatic pressure 991 REAL(wp), DIMENSION(:), ALLOCATABLE :: exner !< ratio of actual and potential temperature 992 REAL(wp), DIMENSION(:), ALLOCATABLE :: d_exner !< ratio of potential and actual temperature 993 987 994 SAVE 988 995 … … 1044 1051 1045 1052 END MODULE averaging 1046 1047 1048 !------------------------------------------------------------------------------!1049 ! Description:1050 ! ------------1051 !> Definition of variables and constants for cloud physics.1052 !------------------------------------------------------------------------------!1053 MODULE cloud_parameters1054 1055 USE kinds1056 1057 REAL(wp) :: cp = 1005.0_wp !< heat capacity of dry air (J kg-1 K-1)1058 REAL(wp) :: l_v = 2.5E+06_wp !< latent heat of vaporization (J kg-1)1059 REAL(wp) :: l_d_cp !< l_v / cp1060 REAL(wp) :: l_d_r !< l_v / r_d1061 REAL(wp) :: l_d_rv !< l_v / r_v1062 REAL(wp) :: molecular_weight_of_solute = 0.05844_wp !< mol. m. NaCl (kg mol-1)1063 REAL(wp) :: molecular_weight_of_water = 0.01801528_wp !< mol. m. H2O (kg mol-1)1064 REAL(wp) :: rho_l = 1.0E3_wp !< density of water (kg m-3)1065 REAL(wp) :: rho_s = 2165.0_wp !< density of NaCl (kg m-3)1066 REAL(wp) :: r_d = 287.0_wp !< sp. gas const. dry air (J kg-1 K-1)1067 REAL(wp) :: r_v = 461.51_wp !< sp. gas const. water vapor (J kg-1 K-1)1068 REAL(wp) :: vanthoff = 2.0_wp !< van't Hoff factor for NaCl1069 1070 1071 1072 REAL(wp), DIMENSION(:), ALLOCATABLE :: hyrho !< density of air calculated with hydrostatic pressure1073 REAL(wp), DIMENSION(:), ALLOCATABLE :: pt_d_t !< ratio of potential and actual temperature1074 REAL(wp), DIMENSION(:), ALLOCATABLE :: t_d_pt !< ratio of actual and potential temperature1075 1076 SAVE1077 1078 END MODULE cloud_parameters1079 1080 1081 !------------------------------------------------------------------------------!1082 ! Description:1083 ! ------------1084 !> Definition of general constants.1085 !------------------------------------------------------------------------------!1086 MODULE constants1087 1088 USE kinds1089 1090 REAL(wp) :: pi = 3.141592654_wp !< PI1091 REAL(wp) :: adv_mom_1 !< 1/4 - constant used in 5th-order advection scheme for momentum advection (1st-order part)1092 REAL(wp) :: adv_mom_3 !< 1/24 - constant used in 5th-order advection scheme for momentum advection (3rd-order part)1093 REAL(wp) :: adv_mom_5 !< 1/120 - constant used in 5th-order advection scheme for momentum advection (5th-order part)1094 REAL(wp) :: adv_sca_1 !< 1/2 - constant used in 5th-order advection scheme for scalar advection (1st-order part)1095 REAL(wp) :: adv_sca_3 !< 1/12 - constant used in 5th-order advection scheme for scalar advection (3rd-order part)1096 REAL(wp) :: adv_sca_5 !< 1/60 - constant used in 5th-order advection scheme for scalar advection (5th-order part)1097 1098 SAVE1099 1100 END MODULE constants1101 1053 1102 1054 … … 1157 1109 CHARACTER (LEN=20) :: bc_uv_b = 'dirichlet' !< namelist parameter 1158 1110 CHARACTER (LEN=20) :: bc_uv_t = 'dirichlet' !< namelist parameter 1159 CHARACTER (LEN=20) :: aerosol_bulk = 'nacl' !< namelist parameter1160 CHARACTER (LEN=20) :: cloud_scheme = 'saturation_adjust' !< namelist parameter1161 1111 CHARACTER (LEN=20) :: coupling_mode = 'uncoupled' !< coupling mode for atmosphere-ocean coupling 1162 1112 CHARACTER (LEN=20) :: coupling_mode_remote = 'uncoupled' !< coupling mode of the remote process in case of coupled atmosphere-ocean runs … … 1311 1261 INTEGER(iwp), DIMENSION(:,:), ALLOCATABLE :: mask_k_global !< global grid index of masked output point on z-dimension 1312 1262 1313 LOGICAL :: aerosol_nacl =.TRUE. !< nacl aerosol for bulk scheme1314 LOGICAL :: aerosol_c3h4o4 =.FALSE. !< malonic acid aerosol for bulk scheme1315 LOGICAL :: aerosol_nh4no3 =.FALSE. !< malonic acid aerosol for bulk scheme1316 1263 LOGICAL :: agent_time_unlimited = .FALSE. !< namelist parameter 1317 1264 LOGICAL :: air_chemistry = .FALSE. !< chemistry model switch … … 1331 1278 LOGICAL :: bc_radiation_s = .FALSE. !< radiation boundary condition for outflow at south domain boundary 1332 1279 LOGICAL :: calc_soil_moisture_during_spinup = .FALSE. !< namelist parameter 1333 LOGICAL :: call_microphysics_at_all_substeps = .FALSE. !< namelist parameter1334 1280 LOGICAL :: call_psolver_at_all_substeps = .TRUE. !< namelist parameter 1335 1281 LOGICAL :: child_domain = .FALSE. !< flag indicating that model is nested in a parent domain 1336 1282 LOGICAL :: cloud_droplets = .FALSE. !< namelist parameter 1337 LOGICAL :: cloud_physics = .FALSE. !< namelist parameter1338 1283 LOGICAL :: cloud_top_radiation = .FALSE. !< namelist parameter 1339 1284 LOGICAL :: complex_terrain = .FALSE. !< namelist parameter … … 1375 1320 LOGICAL :: lsf_vert = .TRUE. !< use atmospheric forcing (large scale forcing)? 1376 1321 LOGICAL :: masking_method = .FALSE. !< namelist parameter 1377 LOGICAL :: microphysics_sat_adjust = .FALSE. !< use saturation adjust bulk scheme?1378 LOGICAL :: microphysics_kessler = .FALSE. !< use kessler bulk scheme?1379 LOGICAL :: microphysics_morrison = .FALSE. !< use 2-moment Morrison (add. prog. eq. for nc and qc)1380 LOGICAL :: microphysics_seifert = .FALSE. !< use 2-moment Seifert and Beheng scheme1381 1322 LOGICAL :: mg_switch_to_pe0 = .FALSE. !< internal multigrid switch for steering the ghost point exchange in case that data has been collected on PE0 1382 1323 LOGICAL :: nesting_offline = .FALSE. !< flag controlling offline nesting in COSMO model … … 1386 1327 LOGICAL :: passive_scalar = .FALSE. !< namelist parameter 1387 1328 LOGICAL :: plant_canopy = .FALSE. !< switch for use of plant canopy model 1388 LOGICAL :: precipitation = .FALSE. !< namelist parameter1389 1329 LOGICAL :: random_heatflux = .FALSE. !< namelist parameter 1390 1330 LOGICAL :: rans_mode = .FALSE. !< switch between RANS and LES mode … … 1492 1432 REAL(wp) :: f = 0.0_wp !< Coriolis parameter 1493 1433 REAL(wp) :: fs = 0.0_wp !< Coriolis parameter 1494 REAL(wp) :: g = 9.81_wp !< gravitational acceleration1495 1434 REAL(wp) :: inflow_damping_height = 9999999.9_wp !< namelist parameter 1496 1435 REAL(wp) :: inflow_damping_width = 9999999.9_wp !< namelist parameter 1497 REAL(wp) :: kappa = 0.4_wp !< von Karman constant1498 1436 REAL(wp) :: km_constant = -1.0_wp !< namelist parameter 1499 1437 REAL(wp) :: latitude = 55.0_wp !< namelist parameter … … 1512 1450 REAL(wp) :: particle_maximum_age = 9999999.9_wp !< namelist parameter 1513 1451 REAL(wp) :: prandtl_number = 1.0_wp !< namelist parameter 1514 REAL(wp) :: precipitation_amount_interval = 9999999.9_wp !< namelist parameter1515 1452 REAL(wp) :: prho_reference !< reference state of potential density 1516 1453 REAL(wp) :: pt_damping_factor = 0.0_wp !< namelist parameter -
palm/trunk/SOURCE/multi_agent_system_mod.f90
r3268 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3268 2018-09-21 13:45:37Z sward 27 30 ! Cleaned up agent pointer assignment in output routine 28 31 ! … … 77 80 USE, INTRINSIC :: ISO_C_BINDING 78 81 79 USE constants,&82 USE basic_constants_and_equations_mod, & 80 83 ONLY: pi 81 84 … … 2689 2692 2690 2693 USE arrays_3d, & 2691 ONLY: u, v, pt, hyp 2694 ONLY: u, v, pt, hyp, exner 2692 2695 2693 2696 ! USE chemistry_model_mod, & … … 2761 2764 ! 2762 2765 !-- Calculate temperature at agent position 2763 agents(nl)%t = pt(kl,jl,il) * & 2764 ( hyp(kl) / 100000.0_wp )**0.286_wp 2766 agents(nl)%t = pt(kl,jl,il) * exner(kl) 2765 2767 ! ! 2766 2768 ! !-- Get PM10 concentration at agent position, if possible … … 4107 4109 SUBROUTINE mas_timestep_social_forces ( mode, nl, ip, jp ) 4108 4110 4109 ! USE constants, &4110 ! ONLY: pi4111 4112 4111 IMPLICIT NONE 4113 4112 -
palm/trunk/SOURCE/netcdf_interface_mod.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 552 555 ONLY: chem_define_netcdf_grid 553 556 554 USE constants,&557 USE basic_constants_and_equations_mod, & 555 558 ONLY: pi 556 559 -
palm/trunk/SOURCE/palm.f90
r3258 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3258 2018-09-18 07:23:31Z Giersch 27 30 ! current revision for user interface has been changed to 3240 28 31 ! … … 245 248 246 249 USE control_parameters, & 247 ONLY: air_chemistry, c loud_physics, constant_diffusion, child_domain,&250 ONLY: air_chemistry, constant_diffusion, child_domain, & 248 251 coupling_char, coupling_mode, do2d_at_begin, do3d_at_begin, & 249 252 humidity, initializing_actions, io_blocks, io_group, & 250 message_string, microphysics_morrison, microphysics_seifert,&253 message_string, & 251 254 neutral, passive_scalar, runnr, simulated_time_chr, spinup, & 252 255 time_since_reference_point, user_interface_current_revision, & … … 259 262 ONLY: nbgp 260 263 264 USE kinds 265 266 USE bulk_cloud_model_mod, & 267 ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert 268 261 269 USE multi_agent_system_mod, & 262 270 ONLY: agents_active, mas_last_actions … … 265 273 ONLY: netcdf_data_input_inquire_file, netcdf_data_input_init, & 266 274 netcdf_data_input_surface_data, netcdf_data_input_topo 267 268 USE kinds269 275 270 276 USE particle_attributes, & … … 442 448 IF ( humidity ) THEN 443 449 CALL exchange_horiz( q, nbgp ) 444 IF ( cloud_physics.AND. microphysics_morrison ) THEN450 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 445 451 CALL exchange_horiz( qc, nbgp ) 446 452 CALL exchange_horiz( nc, nbgp ) 447 453 ENDIF 448 IF ( cloud_physics.AND. microphysics_seifert ) THEN454 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 449 455 CALL exchange_horiz( qr, nbgp ) 450 456 CALL exchange_horiz( nr, nbgp ) -
palm/trunk/SOURCE/parin.f90
r3248 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3248 2018-09-14 09:42:06Z sward 27 30 ! Minor formating changes 28 31 ! … … 420 423 421 424 USE arrays_3d, & 422 ONLY: pt_init, q_init, ref_state, s_init, sa_init, & 425 ONLY: pt_init, q_init, ref_state, s_init, sa_init, & 423 426 ug, u_init, v_init, vg 427 428 USE bulk_cloud_model_mod, & 429 ONLY: bcm_parin 424 430 425 431 USE chemistry_model_mod, & 426 432 ONLY: chem_parin 427 433 428 434 USE chem_modules 429 435 … … 455 461 USE land_surface_model_mod, & 456 462 ONLY: lsm_parin 457 458 USE microphysics_mod, &459 ONLY: c_sedimentation, cloud_water_sedimentation, &460 collision_turbulence, curvature_solution_effects_bulk, &461 dry_aerosol_radius, limiter_sedimentation, na_init, nc_const, &462 sigma_bulk, ventilation_effect463 463 464 464 USE model_1d_mod, & … … 525 525 INTEGER(iwp) :: ioerr !< error flag for open/read/write 526 526 527 NAMELIST /inipar/ a erosol_bulk, alpha_surface, approximation, bc_e_b, &527 NAMELIST /inipar/ alpha_surface, approximation, bc_e_b, & 528 528 bc_lr, bc_ns, bc_p_b, bc_p_t, bc_pt_b, bc_pt_t, bc_q_b, & 529 529 bc_q_t,bc_s_b, bc_s_t, bc_sa_t, bc_uv_b, bc_uv_t, & … … 531 531 building_length_y, building_wall_left, building_wall_south, & 532 532 calc_soil_moisture_during_spinup, & 533 call_psolver_at_all_substeps, call_microphysics_at_all_substeps,&533 call_psolver_at_all_substeps, & 534 534 canyon_height, & 535 535 canyon_width_x, canyon_width_y, canyon_wall_left, & 536 canyon_wall_south, c_sedimentation, cfl_factor, cloud_droplets, & 537 cloud_physics, cloud_scheme, cloud_top_radiation, & 538 cloud_water_sedimentation, & 539 collective_wait, collision_turbulence, complex_terrain, & 536 canyon_wall_south, cfl_factor, cloud_droplets, & 537 cloud_top_radiation, & 538 collective_wait, complex_terrain, & 540 539 conserve_volume_flow, & 541 540 conserve_volume_flow_mode, constant_flux_layer, & 542 coupling_start_time, curvature_solution_effects_bulk,&541 coupling_start_time, & 543 542 cycle_mg, damp_level_1d, & 544 543 data_output_during_spinup, & 545 544 day_of_year_init, & 546 545 dissipation_1d, & 547 dp_external, dp_level_b, dp_smooth, dpdxy, dry_aerosol_radius,&546 dp_external, dp_level_b, dp_smooth, dpdxy, & 548 547 dt, dt_pr_1d, dt_run_control_1d, dt_spinup, dx, dy, dz, dz_max, & 549 548 dz_stretch_factor, dz_stretch_level, dz_stretch_level_start, & … … 555 554 initializing_actions, km_constant, & 556 555 large_scale_forcing, large_scale_subsidence, latitude, & 557 l imiter_sedimentation, longitude, &556 longitude, & 558 557 loop_optimization, lsf_exception, masking_method, mg_cycles, & 559 558 mg_switch_to_pe0_level, mixing_length_1d, momentum_advec, & 560 most_method, n a_init, nc_const, nesting_offline, &559 most_method, nesting_offline, & 561 560 netcdf_precision, neutral, ngsrb, & 562 561 nsor, nsor_ini, nudging, nx, ny, nz, ocean, omega, omega_sor, & 563 562 outflow_source_plane, passive_scalar, & 564 prandtl_number, p recipitation, psolver, pt_damping_factor, &563 prandtl_number, psolver, pt_damping_factor, & 565 564 pt_damping_width, pt_reference, pt_surface, & 566 565 pt_surface_initial_change, pt_vertical_gradient, & … … 574 573 roughness_length, sa_surface, & 575 574 sa_vertical_gradient, sa_vertical_gradient_level, scalar_advec, & 576 scalar_rayleigh_damping, sigma_bulk,&575 scalar_rayleigh_damping, & 577 576 spinup_time, spinup_pt_amplitude, spinup_pt_mean, & 578 577 statistic_regions, subs_vertical_gradient, & … … 592 591 use_top_fluxes, use_ug_for_galilei_tr, use_upstream_for_tke, & 593 592 uv_heights, u_bulk, u_profile, vg_surface, vg_vertical_gradient, & 594 vg_vertical_gradient_level, v_bulk, v_profile, ventilation_effect,&593 vg_vertical_gradient_level, v_bulk, v_profile,& 595 594 wall_adjustment, wall_heatflux, wall_humidityflux, & 596 595 wall_salinityflux, wall_scalarflux, y_shift, zeta_max, zeta_min, & 597 596 z0h_factor 598 597 599 NAMELIST /initialization_parameters/ a erosol_bulk, alpha_surface, &598 NAMELIST /initialization_parameters/ alpha_surface, & 600 599 approximation, bc_e_b, & 601 600 bc_lr, bc_ns, bc_p_b, bc_p_t, bc_pt_b, bc_pt_t, bc_q_b, & … … 604 603 building_length_y, building_wall_left, building_wall_south, & 605 604 calc_soil_moisture_during_spinup, & 606 call_psolver_at_all_substeps, call_microphysics_at_all_substeps,&605 call_psolver_at_all_substeps, & 607 606 canyon_height, & 608 607 canyon_width_x, canyon_width_y, canyon_wall_left, & 609 canyon_wall_south, c_sedimentation, cfl_factor, cloud_droplets, & 610 cloud_physics, cloud_scheme, cloud_top_radiation, & 611 cloud_water_sedimentation, & 612 collective_wait, collision_turbulence, complex_terrain, & 608 canyon_wall_south, cfl_factor, cloud_droplets, & 609 cloud_top_radiation, & 610 collective_wait, complex_terrain, & 613 611 conserve_volume_flow, & 614 612 conserve_volume_flow_mode, constant_flux_layer, & 615 coupling_start_time, curvature_solution_effects_bulk,&613 coupling_start_time, & 616 614 cycle_mg, damp_level_1d, & 617 615 data_output_during_spinup, & 618 616 day_of_year_init, & 619 617 dissipation_1d, & 620 dp_external, dp_level_b, dp_smooth, dpdxy, dry_aerosol_radius,&618 dp_external, dp_level_b, dp_smooth, dpdxy, & 621 619 dt, dt_pr_1d, dt_run_control_1d, dt_spinup, dx, dy, dz, dz_max, & 622 620 dz_stretch_factor, dz_stretch_level, dz_stretch_level_start, & … … 628 626 initializing_actions, km_constant, & 629 627 large_scale_forcing, large_scale_subsidence, latitude, & 630 l imiter_sedimentation, longitude, &628 longitude, & 631 629 loop_optimization, lsf_exception, masking_method, mg_cycles, & 632 630 mg_switch_to_pe0_level, mixing_length_1d, momentum_advec, & 633 most_method, n a_init, nc_const, nesting_offline, &631 most_method, nesting_offline, & 634 632 netcdf_precision, neutral, ngsrb, & 635 633 nsor, nsor_ini, nudging, nx, ny, nz, ocean, omega, omega_sor, & 636 634 outflow_source_plane, passive_scalar, & 637 prandtl_number, p recipitation, psolver, pt_damping_factor, &635 prandtl_number, psolver, pt_damping_factor, & 638 636 pt_damping_width, pt_reference, pt_surface, & 639 637 pt_surface_initial_change, pt_vertical_gradient, & … … 647 645 roughness_length, sa_surface, & 648 646 sa_vertical_gradient, sa_vertical_gradient_level, scalar_advec, & 649 scalar_rayleigh_damping, sigma_bulk,&647 scalar_rayleigh_damping, & 650 648 spinup_time, spinup_pt_amplitude, spinup_pt_mean, & 651 649 statistic_regions, subs_vertical_gradient, & … … 665 663 use_free_convection_scaling, & 666 664 uv_heights, u_bulk, u_profile, vg_surface, vg_vertical_gradient, & 667 vg_vertical_gradient_level, v_bulk, v_profile, ventilation_effect,&665 vg_vertical_gradient_level, v_bulk, v_profile,& 668 666 wall_adjustment, wall_heatflux, wall_humidityflux, & 669 667 wall_salinityflux, wall_scalarflux, y_shift, zeta_max, zeta_min, & … … 684 682 mask_y_loop, mask_z_loop, netcdf_data_format, netcdf_deflate, & 685 683 normalizing_region, npex, npey, nz_do3d, & 686 pr ecipitation_amount_interval, profile_columns, profile_rows, &684 profile_columns, profile_rows, & 687 685 restart_time, section_xy, section_xz, section_yz, & 688 686 skip_time_data_output, skip_time_data_output_av, skip_time_dopr, & … … 705 703 mask_y_loop, mask_z_loop, netcdf_data_format, netcdf_deflate, & 706 704 normalizing_region, npex, npey, nz_do3d, & 707 pr ecipitation_amount_interval, profile_columns, profile_rows, &705 profile_columns, profile_rows, & 708 706 restart_time, section_xy, section_xz, section_yz, & 709 707 skip_time_data_output, skip_time_data_output_av, skip_time_dopr, & … … 864 862 865 863 ! 864 !-- Check if gust module is used and read &gust_par if required 865 CALL bcm_parin 866 867 ! 866 868 !-- Check if urban surface model is used and read &urban_surface_par if required 867 869 CALL usm_parin -
palm/trunk/SOURCE/plant_canopy_model_mod.f90
r3248 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3248 2018-09-14 09:42:06Z sward 27 30 ! Minor formating changes 28 31 ! … … 365 368 366 369 USE control_parameters, & 367 ONLY: cloud_physics, coupling_char, message_string, & 368 microphysics_seifert 370 ONLY: coupling_char, message_string 371 372 USE bulk_cloud_model_mod, & 373 ONLY: bulk_cloud_model, microphysics_seifert 369 374 370 375 USE netcdf_data_input_mod, & … … 407 412 ENDIF 408 413 409 IF ( cloud_physics.AND. microphysics_seifert ) THEN414 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 410 415 message_string = 'plant_canopy = .TRUE. requires cloud_scheme /=' // & 411 416 ' seifert_beheng' -
palm/trunk/SOURCE/pmc_interface_mod.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! unused variables removed 28 31 ! … … 326 329 USE control_parameters, & 327 330 ONLY: air_chemistry, bc_dirichlet_l, bc_dirichlet_n, bc_dirichlet_r, & 328 bc_dirichlet_s, c loud_physics, child_domain,&331 bc_dirichlet_s, child_domain, & 329 332 constant_diffusion, constant_flux_layer, & 330 333 coupling_char, dt_3d, dz, humidity, message_string, & 331 microphysics_morrison, microphysics_seifert, &332 334 neutral, passive_scalar, rans_mode, rans_tke_e, & 333 335 roughness_length, simulated_time, topography, volume_flow … … 348 350 ONLY: nbgp, nx, nxl, nxlg, nxlu, nxr, nxrg, ny, nyn, nyng, nys, nysg, & 349 351 nysv, nz, nzb, nzt, wall_flags_0 352 353 USE bulk_cloud_model_mod, & 354 ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert 350 355 351 356 USE particle_attributes, & … … 1269 1274 CALL pmc_set_dataarray_name( 'coarse', 'q' ,'fine', 'q', ierr ) 1270 1275 1271 IF ( cloud_physics.AND. microphysics_morrison ) THEN1276 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 1272 1277 CALL pmc_set_dataarray_name( 'coarse', 'qc' ,'fine', 'qc', ierr ) 1273 1278 CALL pmc_set_dataarray_name( 'coarse', 'nc' ,'fine', 'nc', ierr ) 1274 1279 ENDIF 1275 1280 1276 IF ( cloud_physics.AND. microphysics_seifert ) THEN1281 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 1277 1282 CALL pmc_set_dataarray_name( 'coarse', 'qr' ,'fine', 'qr', ierr ) 1278 1283 CALL pmc_set_dataarray_name( 'coarse', 'nr' ,'fine', 'nr', ierr ) … … 3842 3847 r2yo, r1zo, r2zo, 's' ) 3843 3848 3844 IF ( cloud_physics.AND. microphysics_morrison ) THEN3849 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 3845 3850 CALL pmci_interp_tril_all ( qc, qcc, ico, jco, kco, r1xo, r2xo, & 3846 3851 r1yo, r2yo, r1zo, r2zo, 's' ) … … 3849 3854 ENDIF 3850 3855 3851 IF ( cloud_physics.AND. microphysics_seifert ) THEN3856 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 3852 3857 CALL pmci_interp_tril_all ( qr, qrc, ico, jco, kco, r1xo, r2xo, & 3853 3858 r1yo, r2yo, r1zo, r2zo, 's' ) … … 4575 4580 nzt_topo_nestbc_l, 'l', 's' ) 4576 4581 4577 IF ( cloud_physics.AND. microphysics_morrison ) THEN4582 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 4578 4583 CALL pmci_interp_tril_lr( qc, qcc, ico, jco, kco, r1xo, & 4579 4584 r2xo, r1yo, r2yo, r1zo, r2zo, & … … 4589 4594 ENDIF 4590 4595 4591 IF ( cloud_physics.AND. microphysics_seifert ) THEN4596 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 4592 4597 CALL pmci_interp_tril_lr( qr, qrc, ico, jco, kco, r1xo, & 4593 4598 r2xo, r1yo, r2yo, r1zo, r2zo, & … … 4683 4688 nzt_topo_nestbc_r, 'r', 's' ) 4684 4689 4685 IF ( cloud_physics.AND. microphysics_morrison ) THEN4690 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 4686 4691 4687 4692 CALL pmci_interp_tril_lr( qc, qcc, ico, jco, kco, r1xo, & … … 4700 4705 ENDIF 4701 4706 4702 IF ( cloud_physics.AND. microphysics_seifert ) THEN4707 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 4703 4708 4704 4709 … … 4796 4801 nzt_topo_nestbc_s, 's', 's' ) 4797 4802 4798 IF ( cloud_physics.AND. microphysics_morrison ) THEN4803 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 4799 4804 4800 4805 CALL pmci_interp_tril_sn( qc, qcc, ico, jco, kco, r1xo, & … … 4812 4817 ENDIF 4813 4818 4814 IF ( cloud_physics.AND. microphysics_seifert ) THEN4819 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 4815 4820 4816 4821 CALL pmci_interp_tril_sn( qr, qrc, ico, jco, kco, r1xo, & … … 4907 4912 nzt_topo_nestbc_n, 'n', 's' ) 4908 4913 4909 IF ( cloud_physics.AND. microphysics_morrison ) THEN4914 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 4910 4915 4911 4916 CALL pmci_interp_tril_sn( qc, qcc, ico, jco, kco, r1xo, & … … 4923 4928 ENDIF 4924 4929 4925 IF ( cloud_physics.AND. microphysics_seifert ) THEN4930 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 4926 4931 4927 4932 CALL pmci_interp_tril_sn( qr, qrc, ico, jco, kco, r1xo, & … … 4994 4999 r2yo, r1zo, r2zo, 's' ) 4995 5000 4996 IF ( cloud_physics.AND. microphysics_morrison ) THEN5001 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 4997 5002 4998 5003 CALL pmci_interp_tril_t( qc, qcc, ico, jco, kco, r1xo, r2xo, r1yo,& … … 5004 5009 ENDIF 5005 5010 5006 IF ( cloud_physics.AND. microphysics_seifert ) THEN5011 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 5007 5012 5008 5013 … … 5078 5083 kfuo, ijkfc_s, 'q' ) 5079 5084 5080 IF ( cloud_physics.AND. microphysics_morrison ) THEN5085 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 5081 5086 5082 5087 CALL pmci_anterp_tophat( qc, qcc, kctu, iflo, ifuo, jflo, jfuo, & … … 5088 5093 ENDIF 5089 5094 5090 IF ( cloud_physics.AND. microphysics_seifert ) THEN5095 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 5091 5096 5092 5097 CALL pmci_anterp_tophat( qr, qrc, kctu, iflo, ifuo, jflo, jfuo, & … … 5902 5907 ENDDO 5903 5908 ENDIF 5904 IF ( cloud_physics.AND. microphysics_morrison ) THEN5909 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 5905 5910 DO m = 1, bc_h(0)%ns 5906 5911 i = bc_h(0)%i(m) … … 5920 5925 ENDIF 5921 5926 5922 IF ( cloud_physics.AND. microphysics_seifert ) THEN5927 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 5923 5928 DO m = 1, bc_h(0)%ns 5924 5929 i = bc_h(0)%i(m) -
palm/trunk/SOURCE/prognostic_equations.f90
r3241 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! omp_get_thread_num now declared in omp directive 28 31 ! … … 289 292 w, w_p 290 293 294 USE bulk_cloud_model_mod, & 295 ONLY: call_microphysics_at_all_substeps, bulk_cloud_model, & 296 bcm_actions, microphysics_sat_adjust, & 297 microphysics_morrison, microphysics_seifert 298 291 299 USE chemistry_model_mod, & 292 300 ONLY: chem_integrate, chem_prognostic_equations, & … … 300 308 301 309 USE control_parameters, & 302 ONLY: air_chemistry, call_microphysics_at_all_substeps,&303 cloud_ physics, cloud_top_radiation, constant_diffusion,&310 ONLY: air_chemistry, & 311 cloud_top_radiation, constant_diffusion, & 304 312 dp_external, dp_level_ind_b, dp_smooth_factor, dpdxy, dt_3d, & 305 313 humidity, intermediate_timestep_count, & 306 314 intermediate_timestep_count_max, large_scale_forcing, & 307 large_scale_subsidence, microphysics_morrison,&308 microphysics_seifert, microphysics_sat_adjust, neutral, nudging,&315 large_scale_subsidence, & 316 neutral, nudging, & 309 317 ocean, passive_scalar, plant_canopy, & 310 318 prho_reference, prho_reference, & … … 381 389 USE lsf_nudging_mod, & 382 390 ONLY: ls_advec, nudge 383 384 USE microphysics_mod, &385 ONLY: microphysics_control386 391 387 392 USE plant_canopy_model_mod, & … … 500 505 ! 501 506 !-- If required, calculate cloud microphysics 502 IF ( cloud_physics .AND. .NOT. microphysics_sat_adjust .AND.&507 IF ( bulk_cloud_model .AND. .NOT. microphysics_sat_adjust .AND. & 503 508 ( intermediate_timestep_count == 1 .OR. & 504 509 call_microphysics_at_all_substeps ) ) & … … 508 513 DO i = nxlg, nxrg 509 514 DO j = nysg, nyng 510 CALL microphysics_control( i, j )515 CALL bcm_actions( i, j ) 511 516 ENDDO 512 517 ENDDO … … 995 1000 !-- If required, calculate prognostic equations for cloud water content 996 1001 !-- and cloud drop concentration 997 IF ( cloud_physics.AND. microphysics_morrison ) THEN1002 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 998 1003 ! 999 1004 !-- Calculate prognostic equation for cloud water content … … 1111 1116 !-- If required, calculate prognostic equations for rain water content 1112 1117 !-- and rain drop concentration 1113 IF ( cloud_physics.AND. microphysics_seifert ) THEN1118 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 1114 1119 ! 1115 1120 !-- Calculate prognostic equation for rain water content … … 1371 1376 ! 1372 1377 !-- If required, calculate cloud microphysical impacts 1373 IF ( cloud_physics .AND. .NOT. microphysics_sat_adjust .AND.&1378 IF ( bulk_cloud_model .AND. .NOT. microphysics_sat_adjust .AND. & 1374 1379 ( intermediate_timestep_count == 1 .OR. & 1375 1380 call_microphysics_at_all_substeps ) & 1376 1381 ) THEN 1377 1382 CALL cpu_log( log_point(51), 'microphysics', 'start' ) 1378 CALL microphysics_control1383 CALL bcm_actions 1379 1384 CALL cpu_log( log_point(51), 'microphysics', 'stop' ) 1380 1385 ENDIF … … 1981 1986 !-- If required, calculate prognostic equations for cloud water content 1982 1987 !-- and cloud drop concentration 1983 IF ( cloud_physics.AND. microphysics_morrison ) THEN1988 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 1984 1989 1985 1990 CALL cpu_log( log_point(67), 'qc-equation', 'start' ) … … 2160 2165 !-- If required, calculate prognostic equations for rain water content 2161 2166 !-- and rain drop concentration 2162 IF ( cloud_physics.AND. microphysics_seifert ) THEN2167 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 2163 2168 2164 2169 CALL cpu_log( log_point(52), 'qr-equation', 'start' ) -
palm/trunk/SOURCE/radiation_model_mod.f90
r3272 r3274 28 28 ! ----------------- 29 29 ! $Id$ 30 ! Modularization of all bulk cloud physics code components 31 ! 32 ! 3272 2018-09-24 10:16:32Z suehring 30 33 ! - split direct and diffusion shortwave radiation using RRTMG rather than using 31 34 ! calc_diffusion_radiation, in case of RRTMG … … 103 106 ! 104 107 ! 3117 2018-07-11 09:59:11Z maronga 105 ! Bugfix: water vapor was not transfered to RRTMG when cloud_physics= .F.108 ! Bugfix: water vapor was not transfered to RRTMG when bulk_cloud_model = .F. 106 109 ! Bugfix: changed the calculation of RRTMG boundary conditions (Mohamed Salim) 107 110 ! Bugfix: dry residual atmosphere is replaced by standard RRTMG atmosphere … … 437 440 438 441 USE arrays_3d, & 439 ONLY: dzw, hyp, nc, pt, q, ql, zu, zw 442 ONLY: dzw, hyp, nc, pt, q, ql, zu, zw, exner, d_exner 443 444 USE basic_constants_and_equations_mod, & 445 ONLY: c_p, g, lv_d_cp, l_v, pi, r_d, rho_l, solar_constant, & 446 barometric_formula 440 447 441 448 USE calc_mean_profile_mod, & 442 449 ONLY: calc_mean_profile 443 450 444 USE cloud_parameters, &445 ONLY: cp, l_d_cp, l_v, r_d, rho_l446 447 USE constants, &448 ONLY: pi449 450 451 USE control_parameters, & 451 ONLY: cloud_droplets, c loud_physics, coupling_char, dz, g,&452 ONLY: cloud_droplets, coupling_char, dz, & 452 453 humidity, & 453 454 initializing_actions, io_blocks, io_group, & 454 455 latitude, longitude, large_scale_forcing, lsf_surf, & 455 message_string, microphysics_morrison,plant_canopy, pt_surface,&456 message_string, plant_canopy, pt_surface,& 456 457 rho_surface, surface_pressure, time_since_reference_point, & 457 458 urban_surface, land_surface, end_time, spinup_time, dt_spinup … … 475 476 USE kinds 476 477 477 USE microphysics_mod,&478 ONLY: na_init, nc_const, sigma_gc478 USE bulk_cloud_model_mod, & 479 ONLY: bulk_cloud_model, microphysics_morrison, na_init, nc_const, sigma_gc 479 480 480 481 #if defined ( __netcdf ) … … 561 562 /) 562 563 564 REAL(wp), PARAMETER :: sigma_sb = 5.67037321E-8_wp !< Stefan-Boltzmann constant 565 563 566 INTEGER(iwp) :: albedo_type = 9999999, & !< Albedo surface type 564 567 dots_rad = 0 !< starting index for timeseries output … … 578 581 !< will be considered. However fewer SVFs are expected. 579 582 radiation_interactions_on = .TRUE. !< namelist flag to force RTM activiation regardless to vertical urban/land surface and trees 580 581 582 REAL(wp), PARAMETER :: sigma_sb = 5.67037321E-8_wp, & !< Stefan-Boltzmann constant583 solar_constant = 1368.0_wp !< solar constant at top of atmosphere584 583 585 584 REAL(wp) :: albedo = 9999999.9_wp, & !< NAMELIST alpha … … 2274 2273 ! 2275 2274 !-- Initialize RRTMG