- Timestamp:
- Sep 24, 2018 3:42:55 PM (7 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 2276 IF ( lw_radiation ) CALL rrtmg_lw_ini ( c p )2277 IF ( sw_radiation ) CALL rrtmg_sw_ini ( c p )2275 IF ( lw_radiation ) CALL rrtmg_lw_ini ( c_p ) 2276 IF ( sw_radiation ) CALL rrtmg_sw_ini ( c_p ) 2278 2277 2279 2278 ! … … 2335 2334 2336 2335 INTEGER(iwp) :: l !< running index for surface orientation 2337 2338 REAL(wp) :: exn !< Exner functions at surface2339 REAL(wp) :: exn1 !< Exner functions at first grid level or at urban layer top2340 2336 REAL(wp) :: pt1 !< potential temperature at first grid level or mean value at urban layer top 2341 2337 REAL(wp) :: pt1_l !< potential temperature at first grid level or mean value at urban layer top at local subdomain … … 2355 2351 ! 2356 2352 !-- Calculate value of the Exner function at model surface 2357 exn = (surface_pressure / 1000.0_wp )**0.286_wp2358 2353 ! 2359 2354 !-- In case averaged radiation is used, calculate mean temperature and … … 2361 2356 IF ( average_radiation ) THEN 2362 2357 pt1 = 0.0_wp 2363 IF ( cloud_physics.OR. cloud_droplets ) ql1 = 0.0_wp2358 IF ( bulk_cloud_model .OR. cloud_droplets ) ql1 = 0.0_wp 2364 2359 2365 2360 pt1_l = SUM( pt(nzut,nys:nyn,nxl:nxr) ) 2366 IF ( cloud_physics.OR. cloud_droplets ) ql1_l = SUM( ql(nzut,nys:nyn,nxl:nxr) )2361 IF ( bulk_cloud_model .OR. cloud_droplets ) ql1_l = SUM( ql(nzut,nys:nyn,nxl:nxr) ) 2367 2362 2368 2363 #if defined( __parallel ) 2369 2364 IF ( collective_wait ) CALL MPI_BARRIER( comm2d, ierr ) 2370 2365 CALL MPI_ALLREDUCE( pt1_l, pt1, 1, MPI_REAL, MPI_SUM, comm2d, ierr ) 2371 IF ( cloud_physics.OR. cloud_droplets ) &2366 IF ( bulk_cloud_model .OR. cloud_droplets ) & 2372 2367 CALL MPI_ALLREDUCE( ql1_l, ql1, 1, MPI_REAL, MPI_SUM, comm2d, ierr ) 2373 2368 #else 2374 2369 pt1 = pt1_l 2375 IF ( cloud_physics.OR. cloud_droplets ) ql1 = ql1_l2370 IF ( bulk_cloud_model .OR. cloud_droplets ) ql1 = ql1_l 2376 2371 #endif 2377 2378 exn1 = ( hyp(nzut) / 100000.0_wp )**0.286_wp 2379 IF ( cloud_physics .OR. cloud_droplets ) pt1 = pt1 + l_d_cp / exn1 * ql1 2372 2373 IF ( bulk_cloud_model .OR. cloud_droplets ) pt1 = pt1 + lv_d_cp / exner(nzut) * ql1 2380 2374 ! 2381 2375 !-- Finally, divide by number of grid points … … 2418 2412 k = nzut 2419 2413 2420 exn1 = ( hyp(k+1) / 100000.0_wp )**0.286_wp2421 2422 2414 surf%rad_sw_in = solar_constant * sky_trans * zenith(0) 2423 2415 surf%rad_sw_out = albedo_urb * surf%rad_sw_in 2424 2416 2425 surf%rad_lw_in = 0.8_wp * sigma_sb * (pt1 * exn 1)**42417 surf%rad_lw_in = 0.8_wp * sigma_sb * (pt1 * exner(k+1))**4 2426 2418 2427 2419 surf%rad_lw_out = emissivity_urb * sigma_sb * (t_rad_urb)**4 & … … 2443 2435 j = surf%j(m) 2444 2436 k = surf%k(m) 2445 2446 exn1 = (hyp(k) / 100000.0_wp )**0.286_wp2447 2437 2448 2438 surf%rad_sw_in(m) = solar_constant * sky_trans * zenith(0) … … 2469 2459 ) & 2470 2460 * sigma_sb & 2471 * ( surf%pt_surface(m) * exn )**42461 * ( surf%pt_surface(m) * exner(nzb) )**4 2472 2462 2473 2463 surf%rad_lw_out_change_0(m) = & … … 2479 2469 surf%emissivity(ind_wat_win,m) & 2480 2470 ) * 3.0_wp * sigma_sb & 2481 * ( surf%pt_surface(m) * exn )** 32482 2483 2484 IF ( cloud_physics.OR. cloud_droplets ) THEN2485 pt1 = pt(k,j,i) + l _d_cp / exn1* ql(k,j,i)2486 surf%rad_lw_in(m) = 0.8_wp * sigma_sb * (pt1 * exn 1)**42471 * ( surf%pt_surface(m) * exner(nzb) )** 3 2472 2473 2474 IF ( bulk_cloud_model .OR. cloud_droplets ) THEN 2475 pt1 = pt(k,j,i) + lv_d_cp / exner(k) * ql(k,j,i) 2476 surf%rad_lw_in(m) = 0.8_wp * sigma_sb * (pt1 * exner(k))**4 2487 2477 ELSE 2488 surf%rad_lw_in(m) = 0.8_wp * sigma_sb * (pt(k,j,i) * exn 1)**42478 surf%rad_lw_in(m) = 0.8_wp * sigma_sb * (pt(k,j,i) * exner(k))**4 2489 2479 ENDIF 2490 2480 … … 2524 2514 INTEGER(iwp) :: l !< running index for surface orientation 2525 2515 2526 REAL(wp) :: exn !< Exner functions at surface2527 REAL(wp) :: exn1 !< Exner functions at first grid level2528 2516 REAL(wp) :: pt1 !< potential temperature at first grid level or mean value at urban layer top 2529 2517 REAL(wp) :: pt1_l !< potential temperature at first grid level or mean value at urban layer top at local subdomain … … 2531 2519 REAL(wp) :: ql1_l !< liquid water mixing ratio at first grid level or mean value at urban layer top at local subdomain 2532 2520 2533 TYPE(surf_type), POINTER :: surf !< pointer on respective surface type, used to generalize routine 2534 2535 ! 2536 !-- Calculate value of the Exner function 2537 exn = (surface_pressure / 1000.0_wp )**0.286_wp 2521 TYPE(surf_type), POINTER :: surf !< pointer on respective surface type, used to generalize routine 2522 2538 2523 ! 2539 2524 !-- In case averaged radiation is used, calculate mean temperature and … … 2541 2526 IF ( average_radiation ) THEN 2542 2527 pt1 = 0.0_wp 2543 IF ( cloud_physics.OR. cloud_droplets ) ql1 = 0.0_wp2528 IF ( bulk_cloud_model .OR. cloud_droplets ) ql1 = 0.0_wp 2544 2529 2545 2530 pt1_l = SUM( pt(nzut,nys:nyn,nxl:nxr) ) 2546 IF ( cloud_physics.OR. cloud_droplets ) ql1_l = SUM( ql(nzut,nys:nyn,nxl:nxr) )2531 IF ( bulk_cloud_model .OR. cloud_droplets ) ql1_l = SUM( ql(nzut,nys:nyn,nxl:nxr) ) 2547 2532 2548 2533 #if defined( __parallel ) 2549 2534 IF ( collective_wait ) CALL MPI_BARRIER( comm2d, ierr ) 2550 2535 CALL MPI_ALLREDUCE( pt1_l, pt1, 1, MPI_REAL, MPI_SUM, comm2d, ierr ) 2551 IF ( cloud_physics.OR. cloud_droplets ) &2536 IF ( bulk_cloud_model .OR. cloud_droplets ) & 2552 2537 CALL MPI_ALLREDUCE( ql1_l, ql1, 1, MPI_REAL, MPI_SUM, comm2d, ierr ) 2553 2538 #else 2554 2539 pt1 = pt1_l 2555 IF ( cloud_physics.OR. cloud_droplets ) ql1 = ql1_l2540 IF ( bulk_cloud_model .OR. cloud_droplets ) ql1 = ql1_l 2556 2541 #endif 2557 IF ( cloud_physics .OR. cloud_droplets ) pt1 = pt1 + l_d_cp / exn1* ql12542 IF ( bulk_cloud_model .OR. cloud_droplets ) pt1 = pt1 + lv_d_cp / exner(nzut+1) * ql1 2558 2543 ! 2559 2544 !-- Finally, divide by number of grid points … … 2595 2580 IF ( average_radiation ) THEN 2596 2581 2597 ! set height above canopy2598 k = nzut2599 2600 2582 surf%rad_net = net_radiation 2601 ! MS: Wyh k + 1 ? 2602 exn1 = (hyp(k+1) / 100000.0_wp )**0.286_wp 2603 2604 surf%rad_lw_in = 0.8_wp * sigma_sb * (pt1 * exn1)**4 2583 2584 surf%rad_lw_in = 0.8_wp * sigma_sb * (pt1 * exner(nzut+1))**4 2605 2585 2606 2586 surf%rad_lw_out = emissivity_urb * sigma_sb * (t_rad_urb)**4 & … … 2636 2616 surf%rad_net(m) = net_radiation 2637 2617 2638 exn1 = (hyp(k) / 100000.0_wp )**0.286_wp 2639 2640 IF ( cloud_physics .OR. cloud_droplets ) THEN 2641 pt1 = pt(k,j,i) + l_d_cp / exn1 * ql(k,j,i) 2642 surf%rad_lw_in(m) = 0.8_wp * sigma_sb * (pt1 * exn1)**4 2618 IF ( bulk_cloud_model .OR. cloud_droplets ) THEN 2619 pt1 = pt(k,j,i) + lv_d_cp / exner(k) * ql(k,j,i) 2620 surf%rad_lw_in(m) = 0.8_wp * sigma_sb * (pt1 * exner(k))**4 2643 2621 ELSE 2644 2622 surf%rad_lw_in(m) = 0.8_wp * sigma_sb * & 2645 ( pt(k,j,i) * exn 1)**42623 ( pt(k,j,i) * exner(k) )**4 2646 2624 ENDIF 2647 2625 … … 2656 2634 ) & 2657 2635 * sigma_sb & 2658 * ( surf%pt_surface(m) * exn )**42636 * ( surf%pt_surface(m) * exner(nzb) )**4 2659 2637 2660 2638 surf%rad_sw_in(m) = ( surf%rad_net(m) - surf%rad_lw_in(m) & … … 2954 2932 rrtm_tlev(0,nzb+1) = t_rad_urb 2955 2933 2956 IF ( cloud_physics) THEN2934 IF ( bulk_cloud_model ) THEN 2957 2935 2958 2936 CALL calc_mean_profile( ql, 54 ) … … 2962 2940 DO k = nzb+1, nzt+1 2963 2941 rrtm_tlay(0,k) = pt_av(k) * ( (hyp(k) ) / 100000._wp & 2964 )**.286_wp + l _d_cp * ql_av(k)2942 )**.286_wp + lv_d_cp * ql_av(k) 2965 2943 rrtm_h2ovmr(0,k) = mol_mass_air_d_wv * (q_av(k) - ql_av(k)) 2966 2944 ENDDO … … 3013 2991 rrtm_icld = 0 3014 2992 3015 IF ( cloud_physics) THEN2993 IF ( bulk_cloud_model ) THEN 3016 2994 DO k = nzb+1, nzt+1 3017 2995 rrtm_cliqwp(0,k) = ql_av(k) * 1000._wp * & … … 3133 3111 !-- Prepare profiles of temperature and H2O volume mixing ratio 3134 3112 DO m = surf_lsm_h%start_index(j,i), surf_lsm_h%end_index(j,i) 3135 rrtm_tlev(0,nzb+1) = surf_lsm_h%pt_surface(m) * & 3136 ( surface_pressure / 1000.0_wp )**0.286_wp 3113 rrtm_tlev(0,nzb+1) = surf_lsm_h%pt_surface(m) * exner(nzb) 3137 3114 ENDDO 3138 3115 DO m = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i) 3139 rrtm_tlev(0,nzb+1) = surf_usm_h%pt_surface(m) * & 3140 ( surface_pressure / 1000.0_wp )**0.286_wp 3116 rrtm_tlev(0,nzb+1) = surf_usm_h%pt_surface(m) * exner(nzb) 3141 3117 ENDDO 3142 3118 3143 3119 3144 IF ( cloud_physics) THEN3120 IF ( bulk_cloud_model ) THEN 3145 3121 DO k = nzb+1, nzt+1 3146 rrtm_tlay(0,k) = pt(k,j,i) * ( (hyp(k) ) / 100000.0_wp&3147 )**0.286_wp + l_d_cp * ql(k,j,i)3122 rrtm_tlay(0,k) = pt(k,j,i) * exner(k) & 3123 + lv_d_cp * ql(k,j,i) 3148 3124 rrtm_h2ovmr(0,k) = mol_mass_air_d_wv * (q(k,j,i) - ql(k,j,i)) 3149 3125 ENDDO 3150 3126 ELSEIF ( cloud_droplets ) THEN 3151 3127 DO k = nzb+1, nzt+1 3152 rrtm_tlay(0,k) = pt(k,j,i) * ( (hyp(k) ) / 100000.0_wp&3153 )**0.286_wp + l_d_cp * ql(k,j,i)3128 rrtm_tlay(0,k) = pt(k,j,i) * exner(k) & 3129 + lv_d_cp * ql(k,j,i) 3154 3130 rrtm_h2ovmr(0,k) = mol_mass_air_d_wv * q(k,j,i) 3155 3131 ENDDO 3156 3132 ELSE 3157 3133 DO k = nzb+1, nzt+1 3158 rrtm_tlay(0,k) = pt(k,j,i) * ( (hyp(k) ) / 100000.0_wp & 3159 )**0.286_wp 3134 rrtm_tlay(0,k) = pt(k,j,i) * exner(k) 3160 3135 ENDDO 3161 3136 … … 3202 3177 rrtm_icld = 0 3203 3178 3204 IF ( cloud_physics.OR. cloud_droplets ) THEN3179 IF ( bulk_cloud_model .OR. cloud_droplets ) THEN 3205 3180 DO k = nzb+1, nzt+1 3206 3181 rrtm_cliqwp(0,k) = ql(k,j,i) * 1000.0_wp * & … … 3214 3189 ! 3215 3190 !-- Calculate cloud droplet effective radius 3216 IF ( cloud_physics) THEN3191 IF ( bulk_cloud_model ) THEN 3217 3192 ! 3218 3193 !-- Calculete effective droplet radius. In case of using … … 3285 3260 surf_lsm_h%frac(ind_wat_win,m) * & 3286 3261 surf_lsm_h%emissivity(ind_wat_win,m) 3287 rrtm_tsfc = surf_lsm_h%pt_surface(m) * & 3288 (surface_pressure / 1000.0_wp )**0.286_wp 3262 rrtm_tsfc = surf_lsm_h%pt_surface(m) * exner(nzb) 3289 3263 ENDDO 3290 3264 DO m = surf_usm_h%start_index(j,i), surf_usm_h%end_index(j,i) … … 3295 3269 surf_usm_h%frac(ind_wat_win,m) * & 3296 3270 surf_usm_h%emissivity(ind_wat_win,m) 3297 rrtm_tsfc = surf_usm_h%pt_surface(m) * & 3298 (surface_pressure / 1000.0_wp )**0.286_wp 3271 rrtm_tsfc = surf_usm_h%pt_surface(m) * exner(nzb) 3299 3272 ENDDO 3300 3273 ! … … 3985 3958 ALLOCATE ( rrtm_plev(0:0,nzb+1:nzt_rad+2) ) 3986 3959 3987 t_surface = pt_surface * ( surface_pressure / 1000.0_wp )**0.286_wp3960 t_surface = pt_surface * exner(nzb) 3988 3961 DO k = nzb+1, nzt+1 3989 3962 rrtm_play(0,k) = hyp(k) * 0.01_wp 3990 rrtm_plev(0,k) = surface_pressure * ( (t_surface - g/cp * zw(k-1)) / & 3991 t_surface )**(1.0_wp/0.286_wp) 3963 rrtm_plev(0,k) = barometric_formula(zw(k-1), & 3964 pt_surface * exner(nzb), & 3965 surface_pressure ) 3992 3966 ENDDO 3993 3967 … … 4406 4380 SUBROUTINE radiation_tendency_ij ( i, j, tend ) 4407 4381 4408 USE cloud_parameters, &4409 ONLY: pt_d_t4410 4411 4382 IMPLICIT NONE 4412 4383 … … 4421 4392 DO k = nzb+1, nzt+1 4422 4393 tend(k,j,i) = tend(k,j,i) + (rad_lw_hr(k,j,i) + rad_sw_hr(k,j,i)) & 4423 * pt_d_t(k) * d_seconds_hour4394 * d_exner(k) * d_seconds_hour 4424 4395 ENDDO 4425 4396 #endif … … 4437 4408 SUBROUTINE radiation_tendency ( tend ) 4438 4409 4439 USE cloud_parameters, &4440 ONLY: pt_d_t4441 4442 4410 USE indices, & 4443 4411 ONLY: nxl, nxr, nyn, nys … … 4457 4425 DO k = nzb+1, nzt+1 4458 4426 tend(k,j,i) = tend(k,j,i) + ( rad_lw_hr(k,j,i) & 4459 + rad_sw_hr(k,j,i) ) * pt_d_t(k)&4427 + rad_sw_hr(k,j,i) ) * d_exner(k) & 4460 4428 * d_seconds_hour 4461 4429 ENDDO … … 4525 4493 #if ! defined( __nopointer ) 4526 4494 IF ( plant_canopy ) THEN 4527 pchf_prep(:) = r_d * (hyp(nzub:nzut) / 100000.0_wp)**0.286_wp&4528 / (c p * hyp(nzub:nzut) * dx*dy*dz(1)) !< equals to 1 / (rho * c_p * Vbox * T)4529 pctf_prep(:) = r_d * (hyp(nzub:nzut) / 100000.0_wp)**0.286_wp&4495 pchf_prep(:) = r_d * exner(nzub:nzut) & 4496 / (c_p * hyp(nzub:nzut) * dx*dy*dz(1)) !< equals to 1 / (rho * c_p * Vbox * T) 4497 pctf_prep(:) = r_d * exner(nzub:nzut) & 4530 4498 / (l_v * hyp(nzub:nzut) * dx*dy*dz(1)) 4531 4499 ENDIF … … 5032 5000 ! k = surf_lsm_h%k(m) 5033 5001 ! pt_surf_urb_l = pt_surf_urb_l + surf_lsm_h%pt_surface(m) & 5034 ! * ( hyp(k) / 100000.0_wp )**0.286_wp5002 ! * exner(k) 5035 5003 ! count_surfaces_l = count_surfaces_l + 1.0_wp 5036 5004 ! ENDDO … … 5038 5006 ! k = surf_usm_h%k(m) 5039 5007 ! pt_surf_urb_l = pt_surf_urb_l + surf_usm_h%pt_surface(m) & 5040 ! * ( hyp(k) / 100000.0_wp )**0.286_wp5008 ! * exner(k) 5041 5009 ! count_surfaces_l = count_surfaces_l + 1.0_wp 5042 5010 ! ENDDO … … 5045 5013 ! k = surf_lsm_v(l)%k(m) 5046 5014 ! pt_surf_urb_l = pt_surf_urb_l + surf_lsm_v(l)%pt_surface(m) & 5047 ! * ( hyp(k) / 100000.0_wp )**0.286_wp5015 ! * exner(k) 5048 5016 ! count_surfaces_l = count_surfaces_l + 1.0_wp 5049 5017 ! ENDDO 5050 5018 ! DO m = 1, surf_usm_v(l)%ns 5051 5019 ! k = surf_usm_v(l)%k(m) 5052 ! pt_surf_urb_l = pt_surf_urb_l + surf_usm_v(l)%pt_surface(m) & 5053 ! * ( hyp(k) / 100000.0_wp )**0.286_wp 5020 ! pt_surf_urb_l = pt_surf_urb_l + surf_usm_v(l)%pt_surface(m) * exner(k) 5054 5021 ! count_surfaces_l = count_surfaces_l + 1.0_wp 5055 5022 ! ENDDO -
palm/trunk/SOURCE/read_restart_data_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 ! … … 111 114 q_init, ref_state, s_init, sa_init, u_init, ug, v_init, vg 112 115 116 USE bulk_cloud_model_mod, & 117 ONLY: bcm_rrd_global 118 113 119 USE date_and_time_mod, & 114 120 ONLY: day_of_year_init, time_utc_init … … 125 131 USE indices, & 126 132 ONLY: nz, nx, nx_on_file, ny, ny_on_file 127 128 USE microphysics_mod, &129 ONLY: c_sedimentation, collision_turbulence, &130 cloud_water_sedimentation, limiter_sedimentation, &131 nc_const, ventilation_effect132 133 133 134 USE model_1d_mod, & … … 332 333 CASE ( 'building_wall_south' ) 333 334 READ ( 13 ) building_wall_south 334 CASE ( 'c_sedimentation' )335 READ ( 13 ) c_sedimentation336 335 CASE ( 'call_psolver_at_all_substeps' ) 337 336 READ ( 13 ) call_psolver_at_all_substeps … … 350 349 CASE ( 'cloud_droplets' ) 351 350 READ ( 13 ) cloud_droplets 352 CASE ( 'cloud_physics' )353 READ ( 13 ) cloud_physics354 CASE ( 'cloud_scheme' )355 READ ( 13 ) cloud_scheme356 351 CASE ( 'cloud_top_radiation' ) 357 352 READ ( 13 ) cloud_top_radiation 358 CASE ( 'cloud_water_sedimentation' )359 READ ( 13 ) cloud_water_sedimentation360 353 CASE ( 'collective_wait' ) 361 354 READ ( 13 ) collective_wait 362 CASE ( 'collision_turbulence' )363 READ ( 13 ) collision_turbulence364 355 CASE ( 'conserve_volume_flow' ) 365 356 READ ( 13 ) conserve_volume_flow … … 461 452 CASE ( 'latitude' ) 462 453 READ ( 13 ) latitude 463 CASE ( 'limiter_sedimentation' )464 READ ( 13 ) limiter_sedimentation465 454 CASE ( 'longitude' ) 466 455 READ ( 13 ) longitude … … 484 473 CASE ( 'most_method' ) 485 474 READ ( 13 ) most_method 486 CASE ( 'nc_const' )487 READ ( 13 ) nc_const488 475 CASE ( 'netcdf_precision' ) 489 476 READ ( 13 ) netcdf_precision … … 520 507 CASE ( 'prandtl_number' ) 521 508 READ ( 13 ) prandtl_number 522 CASE ( 'precipitation' )523 READ ( 13 ) precipitation524 509 CASE ( 'psolver' ) 525 510 READ ( 13 ) psolver … … 732 717 CASE ( 'v_max_ijk' ) 733 718 READ ( 13 ) v_max_ijk 734 CASE ( 'ventilation_effect' )735 READ ( 13 ) ventilation_effect736 719 CASE ( 'vg' ) 737 720 READ ( 13 ) vg … … 786 769 CASE DEFAULT 787 770 771 IF ( .NOT. found ) CALL bcm_rrd_global( found ) 772 788 773 IF ( .NOT. found ) CALL wtm_rrd_global( found ) 789 774 … … 1061 1046 1062 1047 USE arrays_3d, & 1063 ONLY: e, kh, km, p, pt, q, ql, qc, nc, nr, prr, precipitation_amount,&1064 qr,s, sa, u, u_m_l, u_m_n, u_m_r, u_m_s, v, v_m_l, v_m_n, &1048 ONLY: e, kh, km, p, pt, q, ql, & 1049 s, sa, u, u_m_l, u_m_n, u_m_r, u_m_s, v, v_m_l, v_m_n, & 1065 1050 v_m_r, v_m_s, vpt, w, w_m_l, w_m_n, w_m_r, w_m_s 1066 1051 … … 1073 1058 ONLY: cpu_log, log_point_s 1074 1059 1075 USE gust_mod, &1060 USE gust_mod, & 1076 1061 ONLY : gust_rrd_local 1077 1062 … … 1084 1069 USE land_surface_model_mod, & 1085 1070 ONLY: lsm_rrd_local 1071 1072 USE bulk_cloud_model_mod, & 1073 ONLY : bcm_rrd_local 1086 1074 1087 1075 USE particle_attributes, & … … 1469 1457 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 1470 1458 1471 CASE ( 'nc' )1472 IF ( k == 1 ) READ ( 13 ) tmp_3d1473 nc(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &1474 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)1475 1476 CASE ( 'nc_av' )1477 IF ( .NOT. ALLOCATED( nc_av ) ) THEN1478 ALLOCATE( nc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )1479 ENDIF1480 IF ( k == 1 ) READ ( 13 ) tmp_3d1481 nc_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &1482 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)1483 1484 1485 CASE ( 'nr' )1486 IF ( k == 1 ) READ ( 13 ) tmp_3d1487 nr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &1488 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)1489 1490 CASE ( 'nr_av' )1491 IF ( .NOT. ALLOCATED( nr_av ) ) THEN1492 ALLOCATE( nr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )1493 ENDIF1494 IF ( k == 1 ) READ ( 13 ) tmp_3d1495 nr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &1496 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)1497 1498 1459 CASE ( 'p' ) 1499 1460 IF ( k == 1 ) READ ( 13 ) tmp_3d … … 1525 1486 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 1526 1487 1527 CASE ( 'prr' )1528 IF ( .NOT. ALLOCATED( prr ) ) THEN1529 ALLOCATE( prr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )1530 ENDIF1531 IF ( k == 1 ) READ ( 13 ) tmp_3d1532 prr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &1533 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)1534 1535 CASE ( 'prr_av' )1536 IF ( .NOT. ALLOCATED( prr_av ) ) THEN1537 ALLOCATE( prr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )1538 ENDIF1539 IF ( k == 1 ) READ ( 13 ) tmp_3d1540 prr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &1541 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)1542 1543 CASE ( 'precipitation_amount' )1544 IF ( k == 1 ) READ ( 13 ) tmp_2d1545 precipitation_amount(nysc-nbgp:nync+nbgp, &1546 nxlc-nbgp:nxrc+nbgp) = &1547 tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)1548 1549 1488 CASE ( 'pt' ) 1550 1489 IF ( k == 1 ) READ ( 13 ) tmp_3d … … 1573 1512 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 1574 1513 1575 CASE ( 'qc' )1576 IF ( k == 1 ) READ ( 13 ) tmp_3d1577 qc(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &1578 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)1579 1580 CASE ( 'qc_av' )1581 IF ( .NOT. ALLOCATED( qc_av ) ) THEN1582 ALLOCATE( qc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )1583 ENDIF1584 IF ( k == 1 ) READ ( 13 ) tmp_3d1585 qc_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &1586 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)1587 1588 1514 CASE ( 'ql' ) 1589 1515 IF ( k == 1 ) READ ( 13 ) tmp_3d … … 1597 1523 IF ( k == 1 ) READ ( 13 ) tmp_3d 1598 1524 ql_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = & 1599 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)1600 1601 CASE ( 'qr' )1602 IF ( k == 1 ) READ ( 13 ) tmp_3d1603 qr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &1604 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)1605 1606 CASE ( 'qr_av' )1607 IF ( .NOT. ALLOCATED( qr_av ) ) THEN1608 ALLOCATE( qr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )1609 ENDIF1610 IF ( k == 1 ) READ ( 13 ) tmp_3d1611 qr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &1612 1525 tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp) 1613 1526 … … 1968 1881 1969 1882 ! 1883 !-- Read microphysics module restart data 1884 IF ( .NOT. found ) CALL bcm_rrd_local( i, k, nxlf, & 1885 nxlc, nxl_on_file, nxrf, nxrc, & 1886 nxr_on_file, nynf, nync, & 1887 nyn_on_file, nysf, nysc, & 1888 nys_on_file, tmp_2d, tmp_3d, found ) 1889 1890 ! 1970 1891 !-- Read surface related variables 1971 1892 IF ( .NOT. found ) CALL surface_rrd_local( i, k, nxlf, & -
palm/trunk/SOURCE/sum_up_3d_data.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 ! … … 204 207 ONLY: dzw, e, heatflux_output_conversion, nc, nr, p, prr, pt, & 205 208 q, qc, ql, ql_c, ql_v, qr, rho_ocean, s, sa, u, v, vpt, w, & 206 waterflux_output_conversion 209 waterflux_output_conversion, d_exner 207 210 208 211 USE averaging, & 209 ONLY: e_av, ghf_av, lpt_av, lwp_av, nc_av, & 210 nr_av, & 211 ol_av, p_av, pc_av, pr_av, prr_av, pt_av, q_av, qc_av, ql_av, & 212 ql_c_av, ql_v_av, ql_vp_av, qr_av, qsws_av, qv_av, r_a_av, & 212 ONLY: e_av, ghf_av, lpt_av, lwp_av, & 213 ol_av, p_av, pc_av, pr_av, pt_av, q_av, ql_av, & 214 ql_c_av, ql_v_av, ql_vp_av, qsws_av, qv_av, r_a_av, & 213 215 rho_ocean_av, s_av, sa_av, shf_av, ssws_av, ts_av, tsurf_av, & 214 216 u_av, us_av, v_av, vpt_av, w_av, z0_av, z0h_av, z0q_av 215 217 218 USE basic_constants_and_equations_mod, & 219 ONLY: c_p, lv_d_cp, l_v 220 221 USE bulk_cloud_model_mod, & 222 ONLY: bulk_cloud_model, bcm_3d_data_averaging 223 216 224 USE chemistry_model_mod, & 217 225 ONLY: chem_3d_data_averaging 218 226 219 USE cloud_parameters, &220 ONLY: cp, l_d_cp, l_v, pt_d_t221 222 227 USE control_parameters, & 223 ONLY: air_chemistry, average_count_3d, cloud_physics, doav, doav_n,&228 ONLY: air_chemistry, average_count_3d, doav, doav_n, & 224 229 land_surface, rho_surface, urban_surface, uv_exposure, & 225 230 varnamelength … … 323 328 lwp_av = 0.0_wp 324 329 325 CASE ( 'nc' )326 IF ( .NOT. ALLOCATED( nc_av ) ) THEN327 ALLOCATE( nc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )328 ENDIF329 nc_av = 0.0_wp330 331 CASE ( 'nr' )332 IF ( .NOT. ALLOCATED( nr_av ) ) THEN333 ALLOCATE( nr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )334 ENDIF335 nr_av = 0.0_wp336 337 330 CASE ( 'ol*' ) 338 331 IF ( .NOT. ALLOCATED( ol_av ) ) THEN … … 359 352 pr_av = 0.0_wp 360 353 361 CASE ( 'prr' )362 IF ( .NOT. ALLOCATED( prr_av ) ) THEN363 ALLOCATE( prr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )364 ENDIF365 prr_av = 0.0_wp366 367 354 CASE ( 'pt' ) 368 355 IF ( .NOT. ALLOCATED( pt_av ) ) THEN … … 377 364 q_av = 0.0_wp 378 365 379 CASE ( 'qc' )380 IF ( .NOT. ALLOCATED( qc_av ) ) THEN381 ALLOCATE( qc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )382 ENDIF383 qc_av = 0.0_wp384 385 366 CASE ( 'ql' ) 386 367 IF ( .NOT. ALLOCATED( ql_av ) ) THEN … … 406 387 ENDIF 407 388 ql_vp_av = 0.0_wp 408 409 CASE ( 'qr' )410 IF ( .NOT. ALLOCATED( qr_av ) ) THEN411 ALLOCATE( qr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )412 ENDIF413 qr_av = 0.0_wp414 389 415 390 CASE ( 'qsws*' ) … … 532 507 !-- Turbulence closure module 533 508 CALL tcm_3d_data_averaging( 'allocate', doav(ii) ) 509 510 ! 511 !-- Microphysics module quantities 512 IF ( bulk_cloud_model ) THEN 513 CALL bcm_3d_data_averaging( 'allocate', doav(ii) ) 514 ENDIF 534 515 535 516 ! … … 654 635 ENDIF 655 636 656 CASE ( 'nc' )657 IF ( ALLOCATED( nc_av ) ) THEN658 DO i = nxlg, nxrg659 DO j = nysg, nyng660 DO k = nzb, nzt+1661 nc_av(k,j,i) = nc_av(k,j,i) + nc(k,j,i)662 ENDDO663 ENDDO664 ENDDO665 ENDIF666 667 CASE ( 'nr' )668 IF ( ALLOCATED( nr_av ) ) THEN669 DO i = nxlg, nxrg670 DO j = nysg, nyng671 DO k = nzb, nzt+1672 nr_av(k,j,i) = nr_av(k,j,i) + nr(k,j,i)673 ENDDO674 ENDDO675 ENDDO676 ENDIF677 678 637 CASE ( 'ol*' ) 679 638 IF ( ALLOCATED( ol_av ) ) THEN … … 758 717 ENDIF 759 718 760 CASE ( 'prr' )761 IF ( ALLOCATED( prr_av ) ) THEN762 DO i = nxlg, nxrg763 DO j = nysg, nyng764 DO k = nzb, nzt+1765 prr_av(k,j,i) = prr_av(k,j,i) + prr(k,j,i)766 ENDDO767 ENDDO768 ENDDO769 ENDIF770 771 719 CASE ( 'pt' ) 772 720 IF ( ALLOCATED( pt_av ) ) THEN 773 IF ( .NOT. cloud_physics) THEN721 IF ( .NOT. bulk_cloud_model ) THEN 774 722 DO i = nxlg, nxrg 775 723 DO j = nysg, nyng … … 783 731 DO j = nysg, nyng 784 732 DO k = nzb, nzt+1 785 pt_av(k,j,i) = pt_av(k,j,i) + pt(k,j,i) + l _d_cp * &786 pt_d_t(k) * ql(k,j,i)733 pt_av(k,j,i) = pt_av(k,j,i) + pt(k,j,i) + lv_d_cp * & 734 d_exner(k) * ql(k,j,i) 787 735 ENDDO 788 736 ENDDO … … 797 745 DO k = nzb, nzt+1 798 746 q_av(k,j,i) = q_av(k,j,i) + q(k,j,i) 799 ENDDO800 ENDDO801 ENDDO802 ENDIF803 804 CASE ( 'qc' )805 IF ( ALLOCATED( qc_av ) ) THEN806 DO i = nxlg, nxrg807 DO j = nysg, nyng808 DO k = nzb, nzt+1809 qc_av(k,j,i) = qc_av(k,j,i) + qc(k,j,i)810 747 ENDDO 811 748 ENDDO … … 862 799 ENDIF 863 800 ENDDO 864 ENDDO865 ENDDO866 ENDDO867 ENDIF868 869 CASE ( 'qr' )870 IF ( ALLOCATED( qr_av ) ) THEN871 DO i = nxlg, nxrg872 DO j = nysg, nyng873 DO k = nzb, nzt+1874 qr_av(k,j,i) = qr_av(k,j,i) + qr(k,j,i)875 801 ENDDO 876 802 ENDDO … … 1001 927 m = surf_lsm_h%end_index(j,i) 1002 928 shf_av(j,i) = shf_av(j,i) + & 1003 surf_lsm_h%shf(m) * c p929 surf_lsm_h%shf(m) * c_p 1004 930 ELSEIF ( match_usm ) THEN 1005 931 m = surf_usm_h%end_index(j,i) 1006 932 shf_av(j,i) = shf_av(j,i) + & 1007 surf_usm_h%shf(m) * c p933 surf_usm_h%shf(m) * c_p 1008 934 ENDIF 1009 935 ENDDO … … 1265 1191 1266 1192 ! 1193 !-- Microphysics module quantities 1194 IF ( bulk_cloud_model ) THEN 1195 CALL bcm_3d_data_averaging( 'sum', doav(ii) ) 1196 ENDIF 1197 1198 ! 1267 1199 !-- Land surface quantity 1268 1200 IF ( land_surface ) THEN -
palm/trunk/SOURCE/surface_coupler.f90
r3049 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3049 2018-05-29 13:52:36Z Giersch 27 30 ! Error messages revised 28 31 ! … … 101 104 ONLY: pt, rho_ocean, sa, total_2d_a, total_2d_o, u, v 102 105 103 USE cloud_parameters,&104 ONLY: c p, l_v106 USE basic_constants_and_equations_mod, & 107 ONLY: c_p, l_v 105 108 106 109 USE control_parameters, & … … 477 480 478 481 surf_def_h(2)%shf(m) = surf_def_h(2)%shf(m) + & 479 surf_def_h(2)%qsws(m) * l_v / c p482 surf_def_h(2)%qsws(m) * l_v / c_p 480 483 ! 481 484 !-- ...and convert it to a salinity flux at the sea surface (top) … … 498 501 j = surf_def_h(2)%j(m) 499 502 surf_def_h(2)%shf(m) = surf_def_h(2)%shf(m) / rho_ocean(nzt,j,i) * & 500 c p / cpw503 c_p / cpw 501 504 502 505 surf_def_h(2)%usws(m) = surf_def_h(2)%usws(m) / rho_ocean(nzt,j,i) -
palm/trunk/SOURCE/surface_layer_fluxes_mod.f90
r3271 r3274 26 26 ! ----------------- 27 27 ! $Id$ 28 ! Modularization of all bulk cloud physics code components 29 ! 30 ! 3271 2018-09-24 08:20:34Z suehring 28 31 ! Comment revised 29 32 ! … … 231 234 USE arrays_3d, & 232 235 ONLY: e, kh, nc, nr, pt, q, ql, qc, qr, s, u, v, vpt, w, zu, zw, & 233 drho_air_zw, rho_air_zw 236 drho_air_zw, rho_air_zw, d_exner 237 238 USE basic_constants_and_equations_mod, & 239 ONLY: g, kappa, lv_d_cp, pi 234 240 235 241 USE chem_modules, & 236 242 ONLY: constant_csflux, nvar 237 243 238 USE cloud_parameters, &239 ONLY: l_d_cp, pt_d_t240 241 USE constants, &242 ONLY: pi243 244 244 USE cpulog 245 245 246 246 USE control_parameters, & 247 ONLY: air_chemistry, cloud_droplets, cloud_physics,&248 constant_heatflux, constant_scalarflux, & 249 constant_waterflux, coupling_mode, g, humidity, ibc_e_b,&250 ibc_pt_b, initializing_actions, kappa,&247 ONLY: air_chemistry, cloud_droplets, & 248 constant_heatflux, constant_scalarflux, & 249 constant_waterflux, coupling_mode, humidity, ibc_e_b, & 250 ibc_pt_b, initializing_actions, & 251 251 intermediate_timestep_count, intermediate_timestep_count_max, & 252 land_surface, large_scale_forcing, lsf_surf, & 253 message_string, microphysics_morrison, microphysics_seifert, & 252 land_surface, large_scale_forcing, lsf_surf, message_string, & 254 253 most_method, neutral, passive_scalar, pt_surface, q_surface, & 255 254 run_coupled, surface_pressure, simulated_time, terminate_run, & … … 264 263 265 264 USE kinds 265 266 USE bulk_cloud_model_mod, & 267 ONLY: bulk_cloud_model, microphysics_morrison, microphysics_seifert 266 268 267 269 USE pegrid … … 1467 1469 1468 1470 ENDDO 1469 ELSEIF ( cloud_physics.OR. cloud_droplets ) THEN1471 ELSEIF ( bulk_cloud_model .OR. cloud_droplets ) THEN 1470 1472 !$OMP PARALLEL DO PRIVATE( i, j, k, z_mo ) 1471 1473 DO m = 1, surf%ns … … 1596 1598 k = surf%k(m) 1597 1599 1598 IF ( cloud_physics) THEN1599 surf%pt1(m) = pt(k,j,i) + l _d_cp * pt_d_t(k) * ql(k,j,i)1600 IF ( bulk_cloud_model ) THEN 1601 surf%pt1(m) = pt(k,j,i) + lv_d_cp * d_exner(k) * ql(k,j,i) 1600 1602 surf%qv1(m) = q(k,j,i) - ql(k,j,i) 1601 1603 ELSEIF( cloud_droplets ) THEN 1602 surf%pt1(m) = pt(k,j,i) + l _d_cp * pt_d_t(k) * ql(k,j,i)1604 surf%pt1(m) = pt(k,j,i) + lv_d_cp * d_exner(k) * ql(k,j,i) 1603 1605 surf%qv1(m) = q(k,j,i) 1604 1606 ELSE … … 1820 1822 ENDIF 1821 1823 1822 IF ( cloud_physics.OR. cloud_droplets ) THEN1824 IF ( bulk_cloud_model .OR. cloud_droplets ) THEN 1823 1825 !$OMP PARALLEL DO PRIVATE( i, j, k, z_mo ) 1824 1826 DO m = 1, surf%ns … … 1927 1929 ! 1928 1930 !-- If required compute qc* and nc* 1929 IF ( cloud_physics .AND. microphysics_morrison .AND.&1931 IF ( bulk_cloud_model .AND. microphysics_morrison .AND. & 1930 1932 .NOT. surf_vertical ) THEN 1931 1933 !$OMP PARALLEL DO PRIVATE( i, j, k, z_mo ) … … 1953 1955 ! 1954 1956 !-- If required compute qr* and nr* 1955 IF ( cloud_physics .AND. microphysics_seifert .AND.&1957 IF ( bulk_cloud_model .AND. microphysics_seifert .AND. & 1956 1958 .NOT. surf_vertical ) THEN 1957 1959 !$OMP PARALLEL DO PRIVATE( i, j, k, z_mo ) … … 2145 2147 ! 2146 2148 !-- Compute (turbulent) fluxes of cloud water content and cloud drop conc. 2147 IF ( cloud_physics .AND. microphysics_morrison .AND.&2149 IF ( bulk_cloud_model .AND. microphysics_morrison .AND. & 2148 2150 .NOT. downward) THEN 2149 2151 !$OMP PARALLEL DO PRIVATE( i, j ) … … 2159 2161 ! 2160 2162 !-- Compute (turbulent) fluxes of rain water content and rain drop conc. 2161 IF ( cloud_physics .AND. microphysics_seifert .AND.&2163 IF ( bulk_cloud_model .AND. microphysics_seifert .AND. & 2162 2164 .NOT. downward) THEN 2163 2165 !$OMP PARALLEL DO PRIVATE( i, j ) -
palm/trunk/SOURCE/surface_mod.f90
r3254 r3274 26 26 ! ----------------- 27 27 ! $Id$ 28 ! Modularization of all bulk cloud physics code components 29 ! 30 ! 3254 2018-09-17 10:53:57Z suehring 28 31 ! Remove redundant subroutine argument 29 32 ! … … 207 210 USE chem_modules 208 211 209 USE control_parameters 212 USE control_parameters 210 213 211 214 USE indices, & … … 505 508 !< in the domain (required to activiate RTM) 506 509 510 LOGICAL :: surf_bulk_cloud_model = .FALSE. !< use cloud microphysics 511 LOGICAL :: surf_microphysics_morrison = .FALSE. !< use 2-moment Morrison (add. prog. eq. for nc and qc) 512 LOGICAL :: surf_microphysics_seifert = .FALSE. !< use 2-moment Seifert and Beheng scheme 513 507 514 508 515 SAVE … … 543 550 PUBLIC bc_h, ind_pav_green, ind_veg_wall, ind_wat_win, ns_h_on_file, & 544 551 ns_v_on_file, surf_def_h, surf_def_v, surf_lsm_h, surf_lsm_v, & 545 surf_usm_h, surf_usm_v, surf_type, vertical_surfaces_exist 552 surf_usm_h, surf_usm_v, surf_type, vertical_surfaces_exist, & 553 surf_bulk_cloud_model, surf_microphysics_morrison, surf_microphysics_seifert 546 554 ! 547 555 !-- Public subroutines and functions … … 1090 1098 ! 1091 1099 !-- 1092 IF ( cloud_physics .AND.microphysics_morrison) THEN1100 IF ( surf_bulk_cloud_model .AND. surf_microphysics_morrison) THEN 1093 1101 DEALLOCATE ( surfaces%qcs ) 1094 1102 DEALLOCATE ( surfaces%ncs ) … … 1098 1106 ! 1099 1107 !-- 1100 IF ( cloud_physics .AND.microphysics_seifert) THEN1108 IF ( surf_bulk_cloud_model .AND. surf_microphysics_seifert) THEN 1101 1109 DEALLOCATE ( surfaces%qrs ) 1102 1110 DEALLOCATE ( surfaces%nrs ) … … 1217 1225 ! 1218 1226 !-- 1219 IF ( cloud_physics .AND.microphysics_morrison) THEN1227 IF ( surf_bulk_cloud_model .AND. surf_microphysics_morrison) THEN 1220 1228 ALLOCATE ( surfaces%qcs(1:surfaces%ns) ) 1221 1229 ALLOCATE ( surfaces%ncs(1:surfaces%ns) ) … … 1225 1233 ! 1226 1234 !-- 1227 IF ( cloud_physics .AND.microphysics_seifert) THEN1235 IF ( surf_bulk_cloud_model .AND. surf_microphysics_seifert) THEN 1228 1236 ALLOCATE ( surfaces%qrs(1:surfaces%ns) ) 1229 1237 ALLOCATE ( surfaces%nrs(1:surfaces%ns) ) … … 1286 1294 ! 1287 1295 !-- 1288 IF ( cloud_physics .AND.microphysics_morrison) THEN1296 IF ( surf_bulk_cloud_model .AND. surf_microphysics_morrison) THEN 1289 1297 DEALLOCATE ( surfaces%qcsws ) 1290 1298 DEALLOCATE ( surfaces%ncsws ) … … 1292 1300 ! 1293 1301 !-- 1294 IF ( cloud_physics .AND.microphysics_seifert) THEN1302 IF ( surf_bulk_cloud_model .AND. surf_microphysics_seifert) THEN 1295 1303 DEALLOCATE ( surfaces%qrsws ) 1296 1304 DEALLOCATE ( surfaces%nrsws ) … … 1358 1366 ! 1359 1367 !-- 1360 IF ( cloud_physics .AND.microphysics_morrison) THEN1368 IF ( surf_bulk_cloud_model .AND. surf_microphysics_morrison) THEN 1361 1369 ALLOCATE ( surfaces%qcsws(1:surfaces%ns) ) 1362 1370 ALLOCATE ( surfaces%ncsws(1:surfaces%ns) ) … … 1364 1372 ! 1365 1373 !-- 1366 IF ( cloud_physics .AND.microphysics_seifert) THEN1374 IF ( surf_bulk_cloud_model .AND. surf_microphysics_seifert) THEN 1367 1375 ALLOCATE ( surfaces%qrsws(1:surfaces%ns) ) 1368 1376 ALLOCATE ( surfaces%nrsws(1:surfaces%ns) ) … … 1473 1481 DEALLOCATE ( surfaces%vpt1 ) 1474 1482 1475 IF ( cloud_physics .AND.microphysics_seifert) THEN1483 IF ( surf_bulk_cloud_model .AND. surf_microphysics_seifert) THEN 1476 1484 DEALLOCATE ( surfaces%qcs ) 1477 1485 DEALLOCATE ( surfaces%ncs ) … … 1480 1488 ENDIF 1481 1489 1482 IF ( cloud_physics .AND.microphysics_seifert) THEN1490 IF ( surf_bulk_cloud_model .AND. surf_microphysics_seifert) THEN 1483 1491 DEALLOCATE ( surfaces%qrs ) 1484 1492 DEALLOCATE ( surfaces%nrs ) … … 1598 1606 ALLOCATE ( surfaces%vpt1(1:surfaces%ns) ) 1599 1607 1600 IF ( cloud_physics .AND.microphysics_seifert) THEN1608 IF ( surf_bulk_cloud_model .AND. surf_microphysics_seifert) THEN 1601 1609 ALLOCATE ( surfaces%qcs(1:surfaces%ns) ) 1602 1610 ALLOCATE ( surfaces%ncs(1:surfaces%ns) ) … … 1605 1613 ENDIF 1606 1614 1607 IF ( cloud_physics .AND.microphysics_seifert) THEN1615 IF ( surf_bulk_cloud_model .AND. surf_microphysics_seifert) THEN 1608 1616 ALLOCATE ( surfaces%qrs(1:surfaces%ns) ) 1609 1617 ALLOCATE ( surfaces%nrs(1:surfaces%ns) ) … … 2133 2141 IF ( humidity ) THEN 2134 2142 surf%qs(num_h) = 0.0_wp 2135 IF ( cloud_physics .AND.microphysics_morrison) THEN2143 IF ( surf_bulk_cloud_model .AND. surf_microphysics_morrison) THEN 2136 2144 surf%qcs(num_h) = 0.0_wp 2137 2145 surf%ncs(num_h) = 0.0_wp … … 2141 2149 2142 2150 ENDIF 2143 IF ( cloud_physics .AND.microphysics_seifert) THEN2151 IF ( surf_bulk_cloud_model .AND. surf_microphysics_seifert) THEN 2144 2152 surf%qrs(num_h) = 0.0_wp 2145 2153 surf%nrs(num_h) = 0.0_wp … … 2314 2322 IF ( humidity ) THEN 2315 2323 surf%qsws(num_h) = 0.0_wp 2316 IF ( cloud_physics .AND.microphysics_morrison ) THEN2324 IF ( surf_bulk_cloud_model .AND. surf_microphysics_morrison ) THEN 2317 2325 surf%ncsws(num_h) = 0.0_wp 2318 2326 surf%qcsws(num_h) = 0.0_wp 2319 2327 ENDIF 2320 IF ( cloud_physics .AND.microphysics_seifert ) THEN2328 IF ( surf_bulk_cloud_model .AND. surf_microphysics_seifert ) THEN 2321 2329 surf%nrsws(num_h) = 0.0_wp 2322 2330 surf%qrsws(num_h) = 0.0_wp … … 2449 2457 ! 2450 2458 !-- Following wall fluxes are assumed to be zero 2451 IF ( cloud_physics .AND.microphysics_morrison) THEN2459 IF ( surf_bulk_cloud_model .AND. surf_microphysics_morrison) THEN 2452 2460 surf%qcs(num_v) = 0.0_wp 2453 2461 surf%ncs(num_v) = 0.0_wp … … 2456 2464 surf%ncsws(num_v) = 0.0_wp 2457 2465 ENDIF 2458 IF ( cloud_physics .AND.microphysics_seifert) THEN2466 IF ( surf_bulk_cloud_model .AND. surf_microphysics_seifert) THEN 2459 2467 surf%qrs(num_v) = 0.0_wp 2460 2468 surf%nrs(num_v) = 0.0_wp -
palm/trunk/SOURCE/swap_timelevel.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 ! … … 138 141 #endif 139 142 143 USE bulk_cloud_model_mod, & 144 ONLY: bulk_cloud_model, bcm_swap_timelevel 145 140 146 USE chemistry_model_mod, & 141 147 ONLY: chem_swap_timelevel … … 148 154 149 155 USE control_parameters, & 150 ONLY: air_chemistry, cloud_physics, humidity, land_surface, & 151 microphysics_morrison, microphysics_seifert, neutral, ocean, & 152 passive_scalar, timestep_count, urban_surface 156 ONLY: air_chemistry, humidity, land_surface, & 157 neutral, ocean, passive_scalar, timestep_count, urban_surface 153 158 154 159 USE gust_mod, & … … 205 210 IF ( humidity ) THEN 206 211 q = q_p 207 IF ( cloud_physics .AND. microphysics_morrison ) THEN208 qc = qc_p209 nc = nc_p210 ENDIF211 IF ( cloud_physics .AND. microphysics_seifert ) THEN212 qr = qr_p213 nr = nr_p214 ENDIF215 212 ENDIF 216 213 217 214 IF ( passive_scalar ) s = s_p 215 216 IF ( humidity .AND. bulk_cloud_model ) THEN 217 CALL bcm_swap_timelevel ( 0 ) 218 ENDIF 218 219 219 220 IF ( land_surface ) THEN … … 249 250 IF ( humidity ) THEN 250 251 q => q_1; q_p => q_2 251 IF ( cloud_physics .AND. microphysics_morrison ) THEN252 qc => qc_1; qc_p => qc_2253 nc => nc_1; nc_p => nc_2254 ENDIF255 IF ( cloud_physics .AND. microphysics_seifert ) THEN256 qr => qr_1; qr_p => qr_2257 nr => nr_1; nr_p => nr_2258 ENDIF259 252 ENDIF 260 253 IF ( passive_scalar ) THEN … … 279 272 IF ( humidity ) THEN 280 273 q => q_2; q_p => q_1 281 IF ( cloud_physics .AND. microphysics_morrison ) THEN282 qc => qc_2; qc_p => qc_1283 nc => nc_2; nc_p => nc_1284 ENDIF285 IF ( cloud_physics .AND. microphysics_seifert ) THEN286 qr => qr_2; qr_p => qr_1287 nr => nr_2; nr_p => nr_1288 ENDIF289 274 ENDIF 290 275 IF ( passive_scalar ) THEN … … 300 285 CALL tcm_swap_timelevel ( MOD( timestep_count, 2) ) 301 286 287 IF ( humidity .AND. bulk_cloud_model ) THEN 288 CALL bcm_swap_timelevel ( MOD( timestep_count, 2) ) 289 ENDIF 290 302 291 IF ( land_surface ) THEN 303 292 CALL lsm_swap_timelevel ( MOD( timestep_count, 2) ) -
palm/trunk/SOURCE/synthetic_turbulence_generator_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 ! … … 145 148 ONLY: mean_inflow_profiles, u, v, w 146 149 147 USE constants,&150 USE basic_constants_and_equations_mod, & 148 151 ONLY: pi 149 152 -
palm/trunk/SOURCE/time_integration.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 ! … … 381 384 bc_lr_cyc, bc_ns_cyc, bc_pt_t_val, bc_q_t_val, & 382 385 call_psolver_at_all_substeps, child_domain, cloud_droplets, & 383 c loud_physics, constant_flux_layer, constant_heatflux,&386 constant_flux_layer, constant_heatflux, & 384 387 create_disturbances, dopr_n, constant_diffusion, coupling_mode, & 385 388 coupling_start_time, current_timestep_number, & … … 393 396 intermediate_timestep_count_max, & 394 397 land_surface, large_scale_forcing, & 395 loop_optimization, lsf_surf, lsf_vert, masks, & 396 microphysics_morrison, microphysics_seifert, mid, & 398 loop_optimization, lsf_surf, lsf_vert, masks, mid, & 397 399 multi_agent_system_end, multi_agent_system_start, & 398 400 nesting_offline, neutral, nr_timesteps_this_run, nudging, & … … 441 443 lsf_nesting_offline, lsf_nesting_offline_mass_conservation 442 444 443 USE microphysics_mod, & 444 ONLY: collision_turbulence 445 USE bulk_cloud_model_mod, & 446 ONLY: bulk_cloud_model, calc_liquid_water_content, & 447 collision_turbulence, microphysics_morrison, microphysics_seifert 445 448 446 449 USE netcdf_data_input_mod, & … … 757 760 IF ( humidity ) THEN 758 761 CALL exchange_horiz( q_p, nbgp ) 759 IF ( cloud_physics.AND. microphysics_morrison ) THEN762 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 760 763 CALL exchange_horiz( qc_p, nbgp ) 761 764 CALL exchange_horiz( nc_p, nbgp ) 762 765 ENDIF 763 IF ( cloud_physics.AND. microphysics_seifert ) THEN766 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 764 767 CALL exchange_horiz( qr_p, nbgp ) 765 768 CALL exchange_horiz( nr_p, nbgp ) … … 822 825 CALL exchange_horiz( q, nbgp ) 823 826 824 IF ( cloud_physics.AND. microphysics_morrison ) THEN827 IF ( bulk_cloud_model .AND. microphysics_morrison ) THEN 825 828 CALL exchange_horiz( qc, nbgp ) 826 829 CALL exchange_horiz( nc, nbgp ) 827 830 ENDIF 828 IF ( cloud_physics.AND. microphysics_seifert ) THEN831 IF ( bulk_cloud_model .AND. microphysics_seifert ) THEN 829 832 CALL exchange_horiz( qr, nbgp ) 830 833 CALL exchange_horiz( nr, nbgp ) … … 960 963 ! 961 964 !-- If required, compute liquid water content 962 IF ( cloud_physics) THEN965 IF ( bulk_cloud_model ) THEN 963 966 CALL calc_liquid_water_content 964 967 ENDIF -
palm/trunk/SOURCE/time_integration_spinup.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 ! … … 577 580 FUNCTION solar_angle( local_time ) 578 581 579 USE constants,&582 USE basic_constants_and_equations_mod, & 580 583 ONLY: pi 581 584 -
palm/trunk/SOURCE/timestep.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 ! … … 154 157 USE kinds 155 158 156 USE microphysics_mod,&159 USE bulk_cloud_model_mod, & 157 160 ONLY: dt_precipitation 158 161 -
palm/trunk/SOURCE/tridia_solver_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 ! … … 109 112 110 113 114 USE basic_constants_and_equations_mod, & 115 ONLY: pi 116 111 117 USE indices, & 112 118 ONLY: nx, ny, nz … … 145 151 USE arrays_3d, & 146 152 ONLY: ddzu_pres, ddzw, rho_air_zw 147 148 USE kinds149 153 150 154 IMPLICIT NONE … … 186 190 ONLY: tric, rho_air 187 191 188 USE constants, &189 ONLY: pi190 191 192 USE control_parameters, & 192 193 ONLY: ibc_p_b, ibc_p_t … … 195 196 ONLY: dx, dy 196 197 197 198 USE kinds199 198 200 199 IMPLICIT NONE … … 282 281 ONLY: ibc_p_b, ibc_p_t 283 282 284 USE kinds285 286 283 IMPLICIT NONE 287 284 … … 358 355 ONLY: ibc_p_b, ibc_p_t 359 356 360 USE kinds361 362 357 IMPLICIT NONE 363 358 … … 431 426 USE arrays_3d, & 432 427 ONLY: tri, tric 433 434 USE kinds435 428 436 429 IMPLICIT NONE … … 482 475 ONLY: ibc_p_b, ibc_p_t 483 476 484 USE kinds485 486 477 IMPLICIT NONE 487 478 … … 533 524 !------------------------------------------------------------------------------! 534 525 SUBROUTINE maketri_1dd( j ) 535 536 USE constants, &537 ONLY: pi538 539 USE kinds540 526 541 527 IMPLICIT NONE -
palm/trunk/SOURCE/turbulence_closure_mod.f90
r3245 r3274 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Modularization of all bulk cloud physics code components 28 ! 29 ! 3245 2018-09-13 14:08:16Z knoop 27 30 ! unused variables removed, shortest_distance has wp now 28 31 ! … … 154 157 #endif 155 158 159 USE basic_constants_and_equations_mod, & 160 ONLY: g, kappa, lv_d_cp, lv_d_rd 161 156 162 USE control_parameters, & 157 163 ONLY: constant_diffusion, dt_3d, e_init, humidity, & 158 164 initializing_actions, intermediate_timestep_count, & 159 intermediate_timestep_count_max, k appa, km_constant,&165 intermediate_timestep_count_max, km_constant, & 160 166 les_dynamic, les_mw, ocean, plant_canopy, prandtl_number, & 161 167 prho_reference, pt_reference, rans_mode, rans_tke_e, rans_tke_l,& … … 950 956 SUBROUTINE tcm_init_arrays 951 957 952 USE microphysics_mod,&958 USE bulk_cloud_model_mod, & 953 959 ONLY: collision_turbulence 954 960 … … 2598 2604 2599 2605 USE arrays_3d, & 2600 ONLY: ddzw, dd2zu, drho_air_zw, q, ql 2601 2602 USE cloud_parameters, & 2603 ONLY: l_d_cp, l_d_r, pt_d_t, t_d_pt 2606 ONLY: ddzw, dd2zu, drho_air_zw, q, ql, d_exner, exner 2604 2607 2605 2608 USE control_parameters, & 2606 ONLY: cloud_droplets, c loud_physics, constant_flux_layer, g, neutral,&2609 ONLY: cloud_droplets, constant_flux_layer, neutral, & 2607 2610 rho_reference, use_single_reference_value, use_surface_fluxes, & 2608 2611 use_top_fluxes … … 2610 2613 USE grid_variables, & 2611 2614 ONLY: ddx, dx, ddy, dy 2615 2616 USE bulk_cloud_model_mod, & 2617 ONLY: bulk_cloud_model 2612 2618 2613 2619 USE surface_mod, & … … 3067 3073 !-- Flag 9 is used to mask top fluxes, flag 30 to mask 3068 3074 !-- surface fluxes 3069 IF ( .NOT. cloud_physics.AND. .NOT. cloud_droplets ) THEN3075 IF ( .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets ) THEN 3070 3076 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3071 3077 k2 = 0.61_wp * pt(k,j,i) … … 3083 3089 BTEST( wall_flags_0(k,j,i), 9 ) & 3084 3090 ) 3085 ELSE IF ( cloud_physics) THEN3091 ELSE IF ( bulk_cloud_model ) THEN 3086 3092 IF ( ql(k,j,i) == 0.0_wp ) THEN 3087 3093 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3088 3094 k2 = 0.61_wp * pt(k,j,i) 3089 3095 ELSE 3090 theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)3091 temp = theta * t_d_pt(k)3096 theta = pt(k,j,i) + d_exner(k) * lv_d_cp * ql(k,j,i) 3097 temp = theta * exner(k) 3092 3098 k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp * & 3093 3099 ( q(k,j,i) - ql(k,j,i) ) * & 3094 ( 1.0_wp + 0.622_wp * l _d_r / temp ) ) /&3095 ( 1.0_wp + 0.622_wp * l _d_r * l_d_cp *&3100 ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) / & 3101 ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp * & 3096 3102 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) ) 3097 k2 = theta * ( l _d_cp / temp * k1 - 1.0_wp )3103 k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp ) 3098 3104 ENDIF 3099 3105 tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * & … … 3144 3150 k = surf_def_h(l)%k(m) 3145 3151 3146 IF ( .NOT. cloud_physics.AND. .NOT. cloud_droplets ) THEN3152 IF ( .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets ) THEN 3147 3153 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3148 3154 k2 = 0.61_wp * pt(k,j,i) 3149 ELSE IF ( cloud_physics) THEN3155 ELSE IF ( bulk_cloud_model ) THEN 3150 3156 IF ( ql(k,j,i) == 0.0_wp ) THEN 3151 3157 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3152 3158 k2 = 0.61_wp * pt(k,j,i) 3153 3159 ELSE 3154 theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)3155 temp = theta * t_d_pt(k)3160 theta = pt(k,j,i) + d_exner(k) * lv_d_cp * ql(k,j,i) 3161 temp = theta * exner(k) 3156 3162 k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp * & 3157 3163 ( q(k,j,i) - ql(k,j,i) ) * & 3158 ( 1.0_wp + 0.622_wp * l _d_r / temp ) ) /&3159 ( 1.0_wp + 0.622_wp * l _d_r * l_d_cp *&3164 ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) / & 3165 ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp * & 3160 3166 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) ) 3161 k2 = theta * ( l _d_cp / temp * k1 - 1.0_wp )3167 k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp ) 3162 3168 ENDIF 3163 3169 ELSE IF ( cloud_droplets ) THEN … … 3181 3187 k = surf_lsm_h%k(m) 3182 3188 3183 IF ( .NOT. cloud_physics.AND. .NOT. cloud_droplets ) THEN3189 IF ( .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets ) THEN 3184 3190 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3185 3191 k2 = 0.61_wp * pt(k,j,i) 3186 ELSE IF ( cloud_physics) THEN3192 ELSE IF ( bulk_cloud_model ) THEN 3187 3193 IF ( ql(k,j,i) == 0.0_wp ) THEN 3188 3194 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3189 3195 k2 = 0.61_wp * pt(k,j,i) 3190 3196 ELSE 3191 theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)3192 temp = theta * t_d_pt(k)3197 theta = pt(k,j,i) + d_exner(k) * lv_d_cp * ql(k,j,i) 3198 temp = theta * exner(k) 3193 3199 k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp * & 3194 3200 ( q(k,j,i) - ql(k,j,i) ) * & 3195 ( 1.0_wp + 0.622_wp * l _d_r / temp ) ) /&3196 ( 1.0_wp + 0.622_wp * l _d_r * l_d_cp *&3201 ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) / & 3202 ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp * & 3197 3203 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) ) 3198 k2 = theta * ( l _d_cp / temp * k1 - 1.0_wp )3204 k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp ) 3199 3205 ENDIF 3200 3206 ELSE IF ( cloud_droplets ) THEN … … 3217 3223 k = surf_usm_h%k(m) 3218 3224 3219 IF ( .NOT. cloud_physics.AND. .NOT. cloud_droplets ) THEN3225 IF ( .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets ) THEN 3220 3226 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3221 3227 k2 = 0.61_wp * pt(k,j,i) 3222 ELSE IF ( cloud_physics) THEN3228 ELSE IF ( bulk_cloud_model ) THEN 3223 3229 IF ( ql(k,j,i) == 0.0_wp ) THEN 3224 3230 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3225 3231 k2 = 0.61_wp * pt(k,j,i) 3226 3232 ELSE 3227 theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)3228 temp = theta * t_d_pt(k)3233 theta = pt(k,j,i) + d_exner(k) * lv_d_cp * ql(k,j,i) 3234 temp = theta * exner(k) 3229 3235 k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp * & 3230 3236 ( q(k,j,i) - ql(k,j,i) ) * & 3231 ( 1.0_wp + 0.622_wp * l _d_r / temp ) ) /&3232 ( 1.0_wp + 0.622_wp * l _d_r * l_d_cp *&3237 ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) / & 3238 ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp * & 3233 3239 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) ) 3234 k2 = theta * ( l _d_cp / temp * k1 - 1.0_wp )3240 k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp ) 3235 3241 ENDIF 3236 3242 ELSE IF ( cloud_droplets ) THEN … … 3260 3266 k = surf_def_h(2)%k(m) 3261 3267 3262 IF ( .NOT. cloud_physics.AND. .NOT. cloud_droplets ) THEN3268 IF ( .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets ) THEN 3263 3269 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3264 3270 k2 = 0.61_wp * pt(k,j,i) 3265 ELSE IF ( cloud_physics) THEN3271 ELSE IF ( bulk_cloud_model ) THEN 3266 3272 IF ( ql(k,j,i) == 0.0_wp ) THEN 3267 3273 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3268 3274 k2 = 0.61_wp * pt(k,j,i) 3269 3275 ELSE 3270 theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)3271 temp = theta * t_d_pt(k)3276 theta = pt(k,j,i) + d_exner(k) * lv_d_cp * ql(k,j,i) 3277 temp = theta * exner(k) 3272 3278 k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp * & 3273 3279 ( q(k,j,i) - ql(k,j,i) ) * & 3274 ( 1.0_wp + 0.622_wp * l _d_r / temp ) ) /&3275 ( 1.0_wp + 0.622_wp * l _d_r * l_d_cp *&3280 ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) / & 3281 ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp * & 3276 3282 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) ) 3277 k2 = theta * ( l _d_cp / temp * k1 - 1.0_wp )3283 k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp ) 3278 3284 ENDIF 3279 3285 ELSE IF ( cloud_droplets ) THEN … … 3316 3322 3317 3323 USE arrays_3d, & 3318 ONLY: ddzw, dd2zu, drho_air_zw, q, ql 3319 3320 USE cloud_parameters, & 3321 ONLY: l_d_cp, l_d_r, pt_d_t, t_d_pt 3324 ONLY: ddzw, dd2zu, drho_air_zw, q, ql, d_exner, exner 3322 3325 3323 3326 USE control_parameters, & 3324 ONLY: cloud_droplets, c loud_physics, constant_flux_layer, g, neutral,&3327 ONLY: cloud_droplets, constant_flux_layer, neutral, & 3325 3328 rho_reference, use_single_reference_value, use_surface_fluxes, & 3326 3329 use_top_fluxes … … 3328 3331 USE grid_variables, & 3329 3332 ONLY: ddx, dx, ddy, dy 3333 3334 USE bulk_cloud_model_mod, & 3335 ONLY: bulk_cloud_model 3330 3336 3331 3337 USE surface_mod, & … … 3864 3870 ! 3865 3871 !-- Flag 9 is used to mask top fluxes, flag 30 to mask surface fluxes 3866 IF ( .NOT. cloud_physics.AND. .NOT. cloud_droplets ) THEN3872 IF ( .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets ) THEN 3867 3873 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3868 3874 k2 = 0.61_wp * pt(k,j,i) … … 3880 3886 ) 3881 3887 3882 ELSE IF ( cloud_physics) THEN3888 ELSE IF ( bulk_cloud_model ) THEN 3883 3889 IF ( ql(k,j,i) == 0.0_wp ) THEN 3884 3890 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3885 3891 k2 = 0.61_wp * pt(k,j,i) 3886 3892 ELSE 3887 theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)3888 temp = theta * t_d_pt(k)3893 theta = pt(k,j,i) + d_exner(k) * lv_d_cp * ql(k,j,i) 3894 temp = theta * exner(k) 3889 3895 k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp * & 3890 3896 ( q(k,j,i) - ql(k,j,i) ) * & 3891 ( 1.0_wp + 0.622_wp * l _d_r / temp ) ) /&3892 ( 1.0_wp + 0.622_wp * l _d_r * l_d_cp *&3897 ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) / & 3898 ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp * & 3893 3899 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) ) 3894 k2 = theta * ( l _d_cp / temp * k1 - 1.0_wp )3900 k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp ) 3895 3901 ENDIF 3896 3902 tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / & … … 3934 3940 k = surf_def_h(l)%k(m) 3935 3941 3936 IF ( .NOT. cloud_physics.AND. .NOT. cloud_droplets ) THEN3942 IF ( .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets ) THEN 3937 3943 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3938 3944 k2 = 0.61_wp * pt(k,j,i) 3939 ELSE IF ( cloud_physics) THEN3945 ELSE IF ( bulk_cloud_model ) THEN 3940 3946 IF ( ql(k,j,i) == 0.0_wp ) THEN 3941 3947 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3942 3948 k2 = 0.61_wp * pt(k,j,i) 3943 3949 ELSE 3944 theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)3945 temp = theta * t_d_pt(k)3950 theta = pt(k,j,i) + d_exner(k) * lv_d_cp * ql(k,j,i) 3951 temp = theta * exner(k) 3946 3952 k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp * & 3947 3953 ( q(k,j,i) - ql(k,j,i) ) * & 3948 ( 1.0_wp + 0.622_wp * l _d_r / temp ) ) /&3949 ( 1.0_wp + 0.622_wp * l _d_r * l_d_cp * &3954 ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) / & 3955 ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp * & 3950 3956 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) ) 3951 k2 = theta * ( l _d_cp / temp * k1 - 1.0_wp )3957 k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp ) 3952 3958 ENDIF 3953 3959 ELSE IF ( cloud_droplets ) THEN … … 3971 3977 k = surf_lsm_h%k(m) 3972 3978 3973 IF ( .NOT. cloud_physics.AND. .NOT. cloud_droplets ) THEN3979 IF ( .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets ) THEN 3974 3980 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3975 3981 k2 = 0.61_wp * pt(k,j,i) 3976 ELSE IF ( cloud_physics) THEN3982 ELSE IF ( bulk_cloud_model ) THEN 3977 3983 IF ( ql(k,j,i) == 0.0_wp ) THEN 3978 3984 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 3979 3985 k2 = 0.61_wp * pt(k,j,i) 3980 3986 ELSE 3981 theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)3982 temp = theta * t_d_pt(k)3987 theta = pt(k,j,i) + d_exner(k) * lv_d_cp * ql(k,j,i) 3988 temp = theta * exner(k) 3983 3989 k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp * & 3984 3990 ( q(k,j,i) - ql(k,j,i) ) * & 3985 ( 1.0_wp + 0.622_wp * l _d_r / temp ) ) /&3986 ( 1.0_wp + 0.622_wp * l _d_r * l_d_cp *&3991 ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) / & 3992 ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp * & 3987 3993 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) ) 3988 k2 = theta * ( l _d_cp / temp * k1 - 1.0_wp )3994 k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp ) 3989 3995 ENDIF 3990 3996 ELSE IF ( cloud_droplets ) THEN … … 4007 4013 k = surf_usm_h%k(m) 4008 4014 4009 IF ( .NOT. cloud_physics.AND. .NOT. cloud_droplets ) THEN4015 IF ( .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets ) THEN 4010 4016 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 4011 4017 k2 = 0.61_wp * pt(k,j,i) 4012 ELSE IF ( cloud_physics) THEN4018 ELSE IF ( bulk_cloud_model ) THEN 4013 4019 IF ( ql(k,j,i) == 0.0_wp ) THEN 4014 4020 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 4015 4021 k2 = 0.61_wp * pt(k,j,i) 4016 4022 ELSE 4017 theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)4018 temp = theta * t_d_pt(k)4023 theta = pt(k,j,i) + d_exner(k) * lv_d_cp * ql(k,j,i) 4024 temp = theta * exner(k) 4019 4025 k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp * & 4020 4026 ( q(k,j,i) - ql(k,j,i) ) * & 4021 ( 1.0_wp + 0.622_wp * l _d_r / temp ) ) /&4022 ( 1.0_wp + 0.622_wp * l _d_r * l_d_cp *&4027 ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) / & 4028 ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp * & 4023 4029 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) ) 4024 k2 = theta * ( l _d_cp / temp * k1 - 1.0_wp )4030 k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp ) 4025 4031 ENDIF 4026 4032 ELSE IF ( cloud_droplets ) THEN … … 4047 4053 4048 4054 4049 IF ( .NOT. cloud_physics.AND. .NOT. cloud_droplets ) THEN4055 IF ( .NOT. bulk_cloud_model .AND. .NOT. cloud_droplets ) THEN 4050 4056 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 4051 4057 k2 = 0.61_wp * pt(k,j,i) 4052 ELSE IF ( cloud_physics) THEN4058 ELSE IF ( bulk_cloud_model ) THEN 4053 4059 IF ( ql(k,j,i) == 0.0_wp ) THEN 4054 4060 k1 = 1.0_wp + 0.61_wp * q(k,j,i) 4055 4061 k2 = 0.61_wp * pt(k,j,i) 4056 4062 ELSE 4057 theta = pt(k,j,i) + pt_d_t(k) * l_d_cp * ql(k,j,i)4058 temp = theta * t_d_pt(k)4063 theta = pt(k,j,i) + d_exner(k) * lv_d_cp * ql(k,j,i) 4064 temp = theta * exner(k) 4059 4065 k1 = ( 1.0_wp - q(k,j,i) + 1.61_wp * & 4060 4066 ( q(k,j,i) - ql(k,j,i) ) * & 4061 ( 1.0_wp + 0.622_wp * l _d_r / temp ) ) /&4062 ( 1.0_wp + 0.622_wp * l _d_r * l_d_cp *&4067 ( 1.0_wp + 0.622_wp * lv_d_rd / temp ) ) / & 4068 ( 1.0_wp + 0.622_wp * lv_d_rd * lv_d_cp * & 4063 4069 ( q(k,j,i) - ql(k,j,i) ) / ( temp * temp ) ) 4064 k2 = theta * ( l _d_cp / temp * k1 - 1.0_wp )4070 k2 = theta * ( lv_d_cp / temp * k1 - 1.0_wp ) 4065 4071 ENDIF 4066 4072 ELSE IF ( cloud_droplets ) THEN … … 4100 4106 ONLY: ddx2, ddy2 4101 4107 4102 USE microphysics_mod,&4108 USE bulk_cloud_model_mod, & 4103 4109 ONLY: collision_turbulence 4104 4110 … … 4237 4243 ONLY: ddx2, ddy2 4238 4244 4239 USE microphysics_mod,&4245 USE bulk_cloud_model_mod, & 4240 4246 ONLY: collision_turbulence 4241 4247 … … 4476 4482 4477 4483 USE control_parameters, & 4478 ONLY: atmos_ocean_sign, g, use_single_reference_value,&4484 ONLY: atmos_ocean_sign, use_single_reference_value, & 4479 4485 wall_adjustment, wall_adjustment_factor 4480 4486 … … 4533 4539 4534 4540 USE control_parameters, & 4535 ONLY: atmos_ocean_sign, g,use_single_reference_value4541 ONLY: atmos_ocean_sign, use_single_reference_value 4536 4542 4537 4543 IMPLICIT NONE -
palm/trunk/SOURCE/urban_surface_mod.f90
r3248 r3274 28 28 ! ----------------- 29 29 ! $Id$ 30 ! Modularization of all bulk cloud physics code components 31 ! 32 ! 3248 2018-09-14 09:42:06Z sward 30 33 ! Minor formating changes 31 34 ! … … 331 334 #if ! defined( __nopointer ) 332 335 USE arrays_3d, & 333 ONLY: dzu, hyp, zu, pt, pt_1, pt_2, p, u, v, w, hyp, tend 336 ONLY: dzu, hyp, zu, pt, pt_1, pt_2, p, u, v, w, hyp, tend, exner 334 337 #endif 335 338 336 USE cloud_parameters, & 337 ONLY: cp, r_d 338 339 USE constants, & 340 ONLY: pi 341 339 USE basic_constants_and_equations_mod, & 340 ONLY: c_p, g, kappa, pi, r_d 341 342 342 USE control_parameters, & 343 343 ONLY: coupling_start_time, topography, dt_3d, humidity, & … … 346 346 timestep_scheme, tsc, coupling_char, io_blocks, io_group, & 347 347 message_string, time_since_reference_point, surface_pressure, & 348 g, pt_surface, large_scale_forcing, lsf_surf, spinup,&348 pt_surface, large_scale_forcing, lsf_surf, spinup, & 349 349 spinup_pt_mean, spinup_time, time_do3d, dt_do3d, & 350 average_count_3d, varnamelength, urban_surface, kappa,&350 average_count_3d, varnamelength, urban_surface, & 351 351 plant_canopy 352 352 … … 376 376 ONLY: albedo_type, radiation_interaction, calc_zenith, zenith, & 377 377 radiation, rad_sw_in, rad_lw_in, rad_sw_out, rad_lw_out, & 378 sigma_sb, solar_constant, sun_direction, sun_dir_lat, & 379 sun_dir_lon, & 378 sigma_sb, sun_direction, sun_dir_lat, sun_dir_lon, & 380 379 force_radiation_call, surfinsw, surfinlw, surfinswdir, & 381 380 surfinswdif, surfoutsw, surfoutlw, surfins,nsvfl, svf, svfsurf, & … … 3603 3602 REAL(wp) :: ground_floor_level_l !< local height of ground floor level 3604 3603 REAL(wp) :: z_agl !< height above ground 3605 REAL(wp), DIMENSION(nzb:nzt) :: exn !< value of the Exner function in layers3606 3604 3607 3605 ! … … 4690 4688 IF ( TRIM( initializing_actions ) /= 'read_restart_data' .AND. & 4691 4689 TRIM( initializing_actions ) /= 'cyclic_fill' ) THEN 4692 4693 !-- Calculate initial surface temperature from pt of adjacent gridbox4694 #if ! defined( __nopointer )4695 exn(nzb:nzt) = (hyp(nzb:nzt) / 100000.0_wp )**0.286_wp !< Exner function4696 #endif4697 4690 4698 4691 ! … … 4705 4698 k = surf_usm_h%k(m) 4706 4699 4707 t_surf_h(m) = pt(k,j,i) * exn (k)4708 t_surf_window_h(m) = pt(k,j,i) * exn (k)4709 t_surf_green_h(m) = pt(k,j,i) * exn (k)4710 surf_usm_h%pt_surface(m) = pt(k,j,i) * exn (k)4700 t_surf_h(m) = pt(k,j,i) * exner(k) 4701 t_surf_window_h(m) = pt(k,j,i) * exner(k) 4702 t_surf_green_h(m) = pt(k,j,i) * exner(k) 4703 surf_usm_h%pt_surface(m) = pt(k,j,i) * exner(k) 4711 4704 ENDDO 4712 4705 ! … … 4718 4711 k = surf_usm_v(l)%k(m) 4719 4712 4720 t_surf_v(l)%t(m) = pt(k,j,i) * exn (k)4721 t_surf_window_v(l)%t(m) = pt(k,j,i) * exn (k)4722 t_surf_green_v(l)%t(m) = pt(k,j,i) * exn (k)4723 surf_usm_v(l)%pt_surface(m) = pt(k,j,i) * exn (k)4713 t_surf_v(l)%t(m) = pt(k,j,i) * exner(k) 4714 t_surf_window_v(l)%t(m) = pt(k,j,i) * exner(k) 4715 t_surf_green_v(l)%t(m) = pt(k,j,i) * exner(k) 4716 surf_usm_v(l)%pt_surface(m) = pt(k,j,i) * exner(k) 4724 4717 ENDDO 4725 4718 ENDDO … … 7338 7331 REAL(wp) :: lambda_surface_window !< current value of lambda_surface (heat conductivity between air and window) 7339 7332 REAL(wp) :: lambda_surface_green !< current value of lambda_surface (heat conductivity between air and greeb wall) 7340 REAL(wp), DIMENSION(nzb:nzt) :: exn !< value of the Exner function in layers7341 7333 7342 7334 REAL(wp) :: dtime !< simulated time of day (in UTC) … … 7345 7337 7346 7338 7347 #if ! defined( __nopointer )7348 exn(nzb:nzt) = (hyp(nzb:nzt) / 100000.0_wp )**0.286_wp !< Exner function7349 #endif7350 7339 ! 7351 7340 !-- First, treat horizontal surface elements … … 7371 7360 #if ! defined( __nopointer ) 7372 7361 ! 7373 !-- calculate rho * c p coefficient at surface layer7374 rho_cp = c p * hyp(k) / ( r_d * surf_usm_h%pt1(m) * exn(k) )7362 !-- calculate rho * c_p coefficient at surface layer 7363 rho_cp = c_p * hyp(k) / ( r_d * surf_usm_h%pt1(m) * exner(k) ) 7375 7364 #endif 7376 7365 ! … … 7387 7376 surf_usm_h%r_a_green(m) = surf_usm_h%r_a(m) 7388 7377 7389 ! r_a = ( surf_usm_h%pt1(m) - t_surf_h(m) / exn (k) ) / &7378 ! r_a = ( surf_usm_h%pt1(m) - t_surf_h(m) / exner(k) ) / & 7390 7379 ! ( surf_usm_h%ts(m) * surf_usm_h%us(m) + 1.0E-20_wp ) 7391 ! r_a_window = ( surf_usm_h%pt1(m) - t_surf_window_h(m) / exn (k) ) / &7380 ! r_a_window = ( surf_usm_h%pt1(m) - t_surf_window_h(m) / exner(k) ) / & 7392 7381 ! ( surf_usm_h%ts(m) * surf_usm_h%us(m) + 1.0E-20_wp ) 7393 ! r_a_green = ( surf_usm_h%pt1(m) - t_surf_green_h(m) / exn (k) ) / &7382 ! r_a_green = ( surf_usm_h%pt1(m) - t_surf_green_h(m) / exner(k) ) / & 7394 7383 ! ( surf_usm_h%ts(m) * surf_usm_h%us(m) + 1.0E-20_wp ) 7395 7384 … … 7446 7435 coef_2 = 4.0_wp * surf_usm_h%emissivity(ind_veg_wall,m) * & 7447 7436 sigma_sb * t_surf_h(m) ** 3 & 7448 + lambda_surface + f_shf / exn (k)7437 + lambda_surface + f_shf / exner(k) 7449 7438 coef_window_2 = 4.0_wp * surf_usm_h%emissivity(ind_wat_win,m) * & 7450 7439 sigma_sb * t_surf_window_h(m) ** 3 & 7451 + lambda_surface_window + f_shf_window / exn (k)7440 + lambda_surface_window + f_shf_window / exner(k) 7452 7441 coef_green_2 = 4.0_wp * surf_usm_h%emissivity(ind_pav_green,m) * & 7453 7442 sigma_sb * t_surf_green_h(m) ** 3 & 7454 + lambda_surface_green + f_shf_green / exn (k)7443 + lambda_surface_green + f_shf_green / exner(k) 7455 7444 7456 7445 !-- implicit solution when the surface layer has no heat capacity, … … 7480 7469 + surf_usm_h%frac(ind_wat_win,m) * t_surf_window_h_p(m) & 7481 7470 + surf_usm_h%frac(ind_pav_green,m) * t_surf_green_h_p(m) ) & 7482 / exn (k)7471 / exner(k) 7483 7472 7484 7473 IF ( humidity ) surf_usm_h%vpt_surface(m) = & … … 7540 7529 ! 7541 7530 !-- ground/wall/roof surface heat flux 7542 surf_usm_h%wshf_eb(m) = - f_shf * ( surf_usm_h%pt1(m) - t_surf_h_p(m) / exn (k) ) * &7531 surf_usm_h%wshf_eb(m) = - f_shf * ( surf_usm_h%pt1(m) - t_surf_h_p(m) / exner(k) ) * & 7543 7532 surf_usm_h%frac(ind_veg_wall,m) & 7544 - f_shf_window * ( surf_usm_h%pt1(m) - t_surf_window_h_p(m) / exn (k) ) * &7533 - f_shf_window * ( surf_usm_h%pt1(m) - t_surf_window_h_p(m) / exner(k) ) * & 7545 7534 surf_usm_h%frac(ind_wat_win,m) & 7546 - f_shf_green * ( surf_usm_h%pt1(m) - t_surf_green_h_p(m) / exn (k) ) * &7535 - f_shf_green * ( surf_usm_h%pt1(m) - t_surf_green_h_p(m) / exner(k) ) * & 7547 7536 surf_usm_h%frac(ind_pav_green,m) 7548 7537 ! 7549 7538 !-- store kinematic surface heat fluxes for utilization in other processes 7550 7539 !-- diffusion_s, surface_layer_fluxes,... 7551 surf_usm_h%shf(m) = surf_usm_h%wshf_eb(m) / c p7540 surf_usm_h%shf(m) = surf_usm_h%wshf_eb(m) / c_p 7552 7541 7553 7542 ENDDO … … 7573 7562 #if ! defined( __nopointer ) 7574 7563 ! 7575 !-- calculate rho * c p coefficient at surface layer7576 rho_cp = c p * hyp(k) / ( r_d * surf_usm_v(l)%pt1(m) * exn(k) )7564 !-- calculate rho * c_p coefficient at surface layer 7565 rho_cp = c_p * hyp(k) / ( r_d * surf_usm_v(l)%pt1(m) * exner(k) ) 7577 7566 #endif 7578 7567 … … 7647 7636 coef_2 = 4.0_wp * surf_usm_v(l)%emissivity(ind_veg_wall,m) * & 7648 7637 sigma_sb * t_surf_v(l)%t(m) ** 3 & 7649 + lambda_surface + f_shf / exn (k)7638 + lambda_surface + f_shf / exner(k) 7650 7639 coef_window_2 = 4.0_wp * surf_usm_v(l)%emissivity(ind_wat_win,m) *& 7651 7640 sigma_sb * t_surf_window_v(l)%t(m) ** 3 & 7652 + lambda_surface_window + f_shf / exn (k)7641 + lambda_surface_window + f_shf / exner(k) 7653 7642 coef_green_2 = 4.0_wp * surf_usm_v(l)%emissivity(ind_pav_green,m) *& 7654 7643 sigma_sb * t_surf_green_v(l)%t(m) ** 3 & 7655 + lambda_surface_green + f_shf / exn (k)7644 + lambda_surface_green + f_shf / exner(k) 7656 7645 7657 7646 !-- implicit solution when the surface layer has no heat capacity, … … 7684 7673 + surf_usm_v(l)%frac(ind_wat_win,m) * t_surf_window_v_p(l)%t(m) & 7685 7674 + surf_usm_v(l)%frac(ind_pav_green,m) * t_surf_green_v_p(l)%t(m) ) & 7686 / exn (k)7675 / exner(k) 7687 7676 7688 7677 IF ( humidity ) surf_usm_v(l)%vpt_surface(m) = & … … 7751 7740 surf_usm_v(l)%wshf_eb(m) = & 7752 7741 - f_shf * ( surf_usm_v(l)%pt1(m) - & 7753 t_surf_v_p(l)%t(m) / exn (k) ) * surf_usm_v(l)%frac(ind_veg_wall,m) &7742 t_surf_v_p(l)%t(m) / exner(k) ) * surf_usm_v(l)%frac(ind_veg_wall,m) & 7754 7743 - f_shf_window * ( surf_usm_v(l)%pt1(m) - & 7755 t_surf_window_v_p(l)%t(m) / exn (k) ) * surf_usm_v(l)%frac(ind_wat_win,m)&7744 t_surf_window_v_p(l)%t(m) / exner(k) ) * surf_usm_v(l)%frac(ind_wat_win,m)& 7756 7745 - f_shf_green * ( surf_usm_v(l)%pt1(m) - & 7757 t_surf_green_v_p(l)%t(m) / exn (k) ) * surf_usm_v(l)%frac(ind_pav_green,m)7746 t_surf_green_v_p(l)%t(m) / exner(k) ) * surf_usm_v(l)%frac(ind_pav_green,m) 7758 7747 7759 7748 ! 7760 7749 !-- store kinematic surface heat fluxes for utilization in other processes 7761 7750 !-- diffusion_s, surface_layer_fluxes,... 7762 surf_usm_v(l)%shf(m) = surf_usm_v(l)%wshf_eb(m) / c p7751 surf_usm_v(l)%shf(m) = surf_usm_v(l)%wshf_eb(m) / c_p 7763 7752 7764 7753 ENDDO … … 7790 7779 (dtime/3600.0_wp-REAL(dhour,wp))*aheatprof(k,dhour+1) 7791 7780 IF ( aheat(k,j,i) > 0.0_wp ) THEN 7792 pt(k,j,i) = pt(k,j,i) + aheat(k,j,i)*acoef*dt_3d/(exn (k)*rho_cp*dzu(k))7781 pt(k,j,i) = pt(k,j,i) + aheat(k,j,i)*acoef*dt_3d/(exner(k)*rho_cp*dzu(k)) 7793 7782 ENDIF 7794 7783 ENDIF -
palm/trunk/SOURCE/uv_exposure_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 ! … … 77 80 !------------------------------------------------------------------------------! 78 81 MODULE uv_exposure_model_mod 79 82 83 84 USE basic_constants_and_equations_mod, & 85 ONLY: pi 80 86 81 87 USE kinds … … 640 646 !> Module-specific routine for new module 641 647 !------------------------------------------------------------------------------! 642 SUBROUTINE uvem_solar_position 643 644 USE constants, & 645 ONLY: pi 648 SUBROUTINE uvem_solar_position 646 649 647 650 USE date_and_time_mod, & … … 713 716 !------------------------------------------------------------------------------! 714 717 SUBROUTINE uvem_calc_exposure 715 716 USE constants, &717 ONLY: pi718 718 719 719 USE indices, & -
palm/trunk/SOURCE/virtual_flight_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 ! … … 311 314 SUBROUTINE flight_init 312 315 313 USE constants,&316 USE basic_constants_and_equations_mod, & 314 317 ONLY: pi 315 318 … … 410 413 411 414 USE control_parameters, & 412 ONLY: cloud_droplets, cloud_physics, humidity, neutral, & 413 passive_scalar 414 415 ONLY: cloud_droplets, humidity, neutral, passive_scalar 416 417 USE bulk_cloud_model_mod, & 418 ONLY: bulk_cloud_model 419 415 420 USE netcdf_interface 416 421 … … 441 446 id_q = num_var_fl 442 447 ENDIF 443 IF ( cloud_physics.OR. cloud_droplets ) THEN448 IF ( bulk_cloud_model .OR. cloud_droplets ) THEN 444 449 num_var_fl = num_var_fl + 1 445 450 id_ql = num_var_fl … … 533 538 534 539 USE control_parameters, & 535 ONLY: cloud_droplets, cloud_physics, dt_3d, humidity, neutral,&540 ONLY: cloud_droplets, dt_3d, humidity, neutral, & 536 541 passive_scalar, simulated_time 537 542 … … 544 549 USE indices, & 545 550 ONLY: nx, nxl, nxr, ny, nys, nyn 551 552 USE bulk_cloud_model_mod, & 553 ONLY: bulk_cloud_model 546 554 547 555 USE pegrid … … 712 720 ! 713 721 !-- Liquid water content 714 IF ( cloud_physics.OR. cloud_droplets ) THEN722 IF ( bulk_cloud_model .OR. cloud_droplets ) THEN 715 723 CALL interpolate_xyz( ql, zu, ddzu, 1.0_wp, x, y, var_index, j, i ) 716 724 var_index = var_index + 1 -
palm/trunk/SOURCE/wind_turbine_model_mod.f90
r3248 r3274 26 26 ! ----------------- 27 27 ! $Id$ 28 ! Modularization of all bulk cloud physics code components 29 ! 30 ! 3248 2018-09-14 09:42:06Z sward 28 31 ! Minor formating changes 29 32 ! … … 175 178 ONLY: tend, u, v, w, zu, zw 176 179 177 USE constants,&180 USE basic_constants_and_equations_mod, & 178 181 ONLY: pi 179 182 -
palm/trunk/SOURCE/write_restart_data_mod.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 ! New parameters concerning vertical grid stretching have been added 28 31 ! … … 109 112 ONLY: nx, ny, nz 110 113 111 USE microphysics_mod, & 112 ONLY: c_sedimentation, cloud_water_sedimentation, & 113 collision_turbulence, limiter_sedimentation, nc_const, & 114 ventilation_effect 114 USE bulk_cloud_model_mod, & 115 ONLY: bulk_cloud_model, bcm_wrd_global 115 116 116 117 USE model_1d_mod, & … … 264 265 WRITE ( 14 ) building_wall_south 265 266 266 CALL wrd_write_string( 'c_sedimentation' )267 WRITE ( 14 ) c_sedimentation268 269 267 CALL wrd_write_string( 'call_psolver_at_all_substeps' ) 270 268 WRITE ( 14 ) call_psolver_at_all_substeps … … 291 289 WRITE ( 14 ) cloud_droplets 292 290 293 CALL wrd_write_string( 'cloud_physics' )294 WRITE ( 14 ) cloud_physics295 296 CALL wrd_write_string( 'cloud_scheme' )297 WRITE ( 14 ) cloud_scheme298 299 291 CALL wrd_write_string( 'cloud_top_radiation' ) 300 292 WRITE ( 14 ) cloud_top_radiation 301 293 302 CALL wrd_write_string( 'cloud_water_sedimentation' )303 WRITE ( 14 ) cloud_water_sedimentation304 305 294 CALL wrd_write_string( 'collective_wait' ) 306 295 WRITE ( 14 ) collective_wait 307 308 CALL wrd_write_string( 'collision_turbulence' )309 WRITE ( 14 ) collision_turbulence310 296 311 297 CALL wrd_write_string( 'conserve_volume_flow' ) … … 455 441 WRITE ( 14 ) latitude 456 442 457 CALL wrd_write_string( 'limiter_sedimentation' )458 WRITE ( 14 ) limiter_sedimentation459 460 443 CALL wrd_write_string( 'longitude' ) 461 444 WRITE ( 14 ) longitude … … 487 470 WRITE ( 14 ) most_method 488 471 489 CALL wrd_write_string( 'nc_const' )490 WRITE ( 14 ) nc_const491 492 472 CALL wrd_write_string( 'netcdf_precision' ) 493 473 WRITE ( 14 ) netcdf_precision … … 537 517 CALL wrd_write_string( 'prandtl_number' ) 538 518 WRITE ( 14 ) prandtl_number 539 540 CALL wrd_write_string( 'precipitation' )541 WRITE ( 14 ) precipitation542 519 543 520 CALL wrd_write_string( 'psolver' ) … … 848 825 WRITE ( 14 ) v_max_ijk 849 826 850 CALL wrd_write_string( 'ventilation_effect' )851 WRITE ( 14 ) ventilation_effect852 853 827 CALL wrd_write_string( 'vg' ) 854 828 WRITE ( 14 ) vg … … 927 901 !-- The order of the calls can be different as in read_restart_data_mod where 928 902 !-- the restart data will be read 903 904 ! 905 !-- If required, write restart data for gust module. 906 IF ( bulk_cloud_model ) CALL bcm_wrd_global 929 907 ! 930 908 !-- If required, write restart data for wind turbine model. … … 962 940 963 941 USE arrays_3d, & 964 ONLY: e, kh, km, p, pt, q, ql, qc, nc, nr, prr, & 965 precipitation_amount, qr, s, sa, u, u_m_l, u_m_n, u_m_r, & 942 ONLY: e, kh, km, p, pt, q, ql, s, sa, u, u_m_l, u_m_n, u_m_r, & 966 943 u_m_s, v, v_m_l, v_m_n, v_m_r, v_m_s, vpt, w, w_m_l, w_m_n, & 967 944 w_m_r, w_m_s 968 945 969 946 USE averaging 947 948 USE bulk_cloud_model_mod, & 949 ONLY: bulk_cloud_model, bcm_wrd_local 970 950 971 951 USE chemistry_model_mod, & … … 980 960 USE land_surface_model_mod, & 981 961 ONLY: lsm_wrd_local 982 962 983 963 USE particle_attributes, & 984 964 ONLY: iran_part … … 1078 1058 ENDIF 1079 1059 1080 IF ( ALLOCATED( prr ) ) THEN1081 CALL wrd_write_string( 'prr' )1082 WRITE ( 14 ) prr1083 ENDIF1084 1085 IF ( ALLOCATED( prr_av ) ) THEN1086 CALL wrd_write_string( 'prr_av' )1087 WRITE ( 14 ) prr_av1088 ENDIF1089 1090 IF ( ALLOCATED( precipitation_amount ) ) THEN1091 CALL wrd_write_string( 'precipitation_amount' )1092 WRITE ( 14 ) precipitation_amount1093 ENDIF1094 1095 1060 CALL wrd_write_string( 'pt' ) 1096 1061 WRITE ( 14 ) pt … … 1111 1076 ENDIF 1112 1077 1113 IF ( cloud_ physics .OR. cloud_droplets ) THEN1114 1115 CALL wrd_write_string( 'ql' ) 1078 IF ( cloud_droplets ) THEN 1079 1080 CALL wrd_write_string( 'ql' ) 1116 1081 WRITE ( 14 ) ql 1117 1082 1118 1083 IF ( ALLOCATED( ql_av ) ) THEN 1119 CALL wrd_write_string( 'ql_av' ) 1084 CALL wrd_write_string( 'ql_av' ) 1120 1085 WRITE ( 14 ) ql_av 1121 1086 ENDIF 1122 1087 1123 IF ( .NOT. cloud_droplets ) THEN1124 1125 CALL wrd_write_string( 'qc' )1126 WRITE ( 14 ) qc1127 1128 IF ( ALLOCATED( qc_av ) ) THEN1129 CALL wrd_write_string( 'qc_av' )1130 WRITE ( 14 ) qc_av1131 ENDIF1132 1133 IF ( microphysics_morrison ) THEN1134 1135 CALL wrd_write_string( 'nc' )1136 WRITE ( 14 ) nc1137 1138 IF ( ALLOCATED( nc_av ) ) THEN1139 CALL wrd_write_string( 'nc_av' )1140 WRITE ( 14 ) nc_av1141 ENDIF1142 1143 ENDIF1144 1145 IF ( microphysics_seifert ) THEN1146 1147 CALL wrd_write_string( 'nr' )1148 WRITE ( 14 ) nr1149 1150 IF ( ALLOCATED( nr_av ) ) THEN1151 CALL wrd_write_string( 'nr_av' )1152 WRITE ( 14 ) nr_av1153 ENDIF1154 1155 CALL wrd_write_string( 'qr' )1156 WRITE ( 14 ) qr1157 1158 IF ( ALLOCATED( qr_av ) ) THEN1159 CALL wrd_write_string( 'qr_av' )1160 WRITE ( 14 ) qr_av1161 ENDIF1162 1163 ENDIF1164 ENDIF1165 1088 ENDIF 1166 1089 … … 1387 1310 1388 1311 ! 1312 !-- If required, write restart data for microphysics module. 1313 IF ( bulk_cloud_model ) THEN 1314 CALL bcm_wrd_local 1315 ENDIF 1316 1317 ! 1389 1318 !-- Write surface-related restart data. 1390 1319 CALL surface_wrd_local
Note: See TracChangeset
for help on using the changeset viewer.