Changeset 1960 for palm/trunk/SOURCE/init_3d_model.f90
- Timestamp:
- Jul 12, 2016 4:34:24 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/init_3d_model.f90
r1958 r1960 19 19 ! Current revisions: 20 20 ! ------------------ 21 ! 21 ! Separate humidity and passive scalar 22 ! Increase dimension for mean_inflow_profiles 23 ! Remove inadvertent write-statement 24 ! Bugfix, large-scale forcing is still not implemented for passive scalars 22 25 ! 23 26 ! Former revisions: … … 469 472 ENDIF 470 473 471 IF ( humidity .OR. passive_scalar) THEN472 ! 473 !-- 2D-humidity /scalar arrays474 IF ( humidity ) THEN 475 ! 476 !-- 2D-humidity 474 477 ALLOCATE ( qs(nysg:nyng,nxlg:nxrg), & 475 478 qsws(nysg:nyng,nxlg:nxrg), & … … 477 480 478 481 ! 479 !-- 3D-humidity /scalar arrays482 !-- 3D-humidity 480 483 #if defined( __nopointer ) 481 484 ALLOCATE( q(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & … … 489 492 490 493 ! 491 !-- 3D-arrays needed for humidity only494 !-- 3D-arrays needed for humidity 492 495 IF ( humidity ) THEN 493 496 #if defined( __nopointer ) … … 570 573 ENDIF 571 574 575 ENDIF 576 577 578 IF ( passive_scalar ) THEN 579 ! 580 !-- 2D-scalar arrays 581 ALLOCATE ( ss(nysg:nyng,nxlg:nxrg), & 582 ssws(nysg:nyng,nxlg:nxrg), & 583 sswst(nysg:nyng,nxlg:nxrg) ) 584 585 ! 586 !-- 3D scalar arrays 587 #if defined( __nopointer ) 588 ALLOCATE( s(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 589 s_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 590 ts_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 591 #else 592 ALLOCATE( s_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 593 s_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 594 s_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 595 #endif 572 596 ENDIF 573 597 … … 678 702 w => w_1; w_p => w_2; tw_m => w_3 679 703 680 IF ( humidity .OR. passive_scalar) THEN704 IF ( humidity ) THEN 681 705 q => q_1; q_p => q_2; tq_m => q_3 682 706 IF ( humidity ) THEN … … 696 720 ENDIF 697 721 ENDIF 722 723 IF ( passive_scalar ) THEN 724 s => s_1; s_p => s_2; ts_m => s_3 725 ENDIF 698 726 699 727 IF ( ocean ) THEN … … 773 801 ENDDO 774 802 775 IF ( humidity .OR. passive_scalar) THEN803 IF ( humidity ) THEN 776 804 DO i = nxlg, nxrg 777 805 DO j = nysg, nyng … … 788 816 789 817 ENDIF 818 ENDIF 819 IF ( passive_scalar ) THEN 820 DO i = nxlg, nxrg 821 DO j = nysg, nyng 822 s(:,j,i) = s_init 823 ENDDO 824 ENDDO 790 825 ENDIF 791 826 … … 830 865 !-- This could actually be computed more accurately in the 1D model. 831 866 !-- Update when opportunity arises! 832 IF ( humidity .OR. passive_scalar) THEN867 IF ( humidity ) THEN 833 868 qs = 0.0_wp 834 869 IF ( cloud_physics .AND. microphysics_seifert ) THEN … … 837 872 ENDIF 838 873 ENDIF 874 ! 875 !-- Initialize scaling parameter for passive scalar 876 IF ( passive_scalar ) ss = 0.0_wp 839 877 840 878 ! … … 881 919 u_init = unudge(:,1) 882 920 v_init = vnudge(:,1) 883 IF ( humidity .OR. passive_scalar ) THEN921 IF ( humidity ) THEN ! is passive_scalar correct??? 884 922 q_init = qnudge(:,1) 885 923 ENDIF … … 915 953 ENDIF 916 954 917 IF ( humidity .OR. passive_scalar) THEN955 IF ( humidity ) THEN 918 956 DO i = nxlg, nxrg 919 957 DO j = nysg, nyng … … 931 969 932 970 ENDIF 971 ENDIF 972 973 IF ( passive_scalar ) THEN 974 DO i = nxlg, nxrg 975 DO j = nysg, nyng 976 s(:,j,i) = s_init 977 ENDDO 978 ENDDO 933 979 ENDIF 934 980 … … 975 1021 vsws = 0.0_wp 976 1022 vswst = top_momentumflux_v 977 IF ( humidity .OR. passive_scalar ) qs = 0.0_wp 1023 IF ( humidity ) qs = 0.0_wp 1024 IF ( passive_scalar ) ss = 0.0_wp 978 1025 979 1026 ! … … 1015 1062 ! 1016 1063 !-- Calculate virtual potential temperature 1017 IF ( humidity ) vpt = pt * ( 1.0_wp + 0.61_wp * q )1064 IF ( humidity ) vpt = pt * ( 1.0_wp + 0.61_wp * q ) 1018 1065 1019 1066 ! … … 1053 1100 ! 1054 1101 !-- Store initial scalar profile 1055 hom(:,1, 26,:) = SPREAD( q(:,nys,nxl), 2, statistic_regions+1 )1102 hom(:,1,115,:) = SPREAD( s(:,nys,nxl), 2, statistic_regions+1 ) 1056 1103 ENDIF 1057 1104 … … 1116 1163 ! 1117 1164 !-- Determine the near-surface water flux 1118 IF ( humidity .OR. passive_scalar) THEN1165 IF ( humidity ) THEN 1119 1166 IF ( cloud_physics .AND. microphysics_seifert ) THEN 1120 1167 qrsws = 0.0_wp … … 1138 1185 ENDIF 1139 1186 ENDIF 1187 ! 1188 !-- Initialize the near-surface scalar flux 1189 IF ( passive_scalar ) THEN 1190 IF ( constant_scalarflux ) THEN 1191 ssws = surface_scalarflux 1192 ! 1193 !-- Over topography surface_scalarflux is replaced by 1194 !-- wall_scalarflux(0) 1195 IF ( TRIM( topography ) /= 'flat' ) THEN 1196 wall_sflux = wall_scalarflux 1197 DO i = nxlg, nxrg 1198 DO j = nysg, nyng 1199 IF ( nzb_s_inner(j,i) /= 0 ) ssws(j,i) = wall_sflux(0) 1200 ENDDO 1201 ENDDO 1202 ENDIF 1203 ENDIF 1204 ENDIF 1140 1205 1141 1206 ENDIF … … 1152 1217 tswst = top_heatflux 1153 1218 1154 IF ( humidity .OR. passive_scalar) THEN1219 IF ( humidity ) THEN 1155 1220 qswst = 0.0_wp 1156 1221 IF ( cloud_physics .AND. microphysics_seifert ) THEN … … 1159 1224 ENDIF 1160 1225 ENDIF 1226 IF ( passive_scalar ) sswst = 0.0_wp 1161 1227 1162 1228 IF ( ocean ) THEN … … 1192 1258 ENDIF 1193 1259 1194 IF ( humidity .OR. passive_scalar) THEN1260 IF ( humidity ) THEN 1195 1261 IF ( .NOT. constant_waterflux ) qsws = 0.0_wp 1196 1262 IF ( cloud_physics .AND. microphysics_seifert ) THEN … … 1199 1265 ENDIF 1200 1266 ENDIF 1267 IF ( passive_scalar .AND. .NOT. constant_scalarflux ) ssws = 0.0_wp 1201 1268 1202 1269 ENDIF … … 1261 1328 !-- If required, change the surface humidity/scalar at the start of the 3D 1262 1329 !-- run 1263 IF ( ( humidity .OR. passive_scalar ) .AND. & 1264 q_surface_initial_change /= 0.0_wp ) THEN 1330 IF ( humidity .AND. q_surface_initial_change /= 0.0_wp ) & 1265 1331 q(nzb,:,:) = q(nzb,:,:) + q_surface_initial_change 1266 ENDIF 1332 1333 IF ( passive_scalar .AND. s_surface_initial_change /= 0.0_wp ) & 1334 s(nzb,:,:) = s(nzb,:,:) + s_surface_initial_change 1335 1267 1336 1268 1337 ! … … 1271 1340 e_p = e; pt_p = pt; u_p = u; v_p = v; w_p = w 1272 1341 1273 IF ( humidity .OR. passive_scalar) THEN1342 IF ( humidity ) THEN 1274 1343 tq_m = 0.0_wp 1275 1344 q_p = q … … 1281 1350 ENDIF 1282 1351 ENDIF 1352 1353 IF ( passive_scalar ) THEN 1354 ts_m = 0.0_wp 1355 s_p = s 1356 ENDIF 1283 1357 1284 1358 IF ( ocean ) THEN … … 1323 1397 #endif 1324 1398 ENDDO 1325 write(9,*) "EOF read binary"1326 flush(9)1327 1399 1328 1400 ! … … 1335 1407 !-- profiles from the prerun. Alternatively, prescribed profiles 1336 1408 !-- for u,v-components can be used. 1337 ALLOCATE( mean_inflow_profiles(nzb:nzt+1, 6) )1409 ALLOCATE( mean_inflow_profiles(nzb:nzt+1,7) ) 1338 1410 1339 1411 IF ( use_prescribed_profile_data ) THEN … … 1346 1418 mean_inflow_profiles(:,4) = hom_sum(:,4,0) ! pt 1347 1419 mean_inflow_profiles(:,5) = hom_sum(:,8,0) ! e 1348 mean_inflow_profiles(:,6) = hom_sum(:,41,0) ! q 1420 IF ( humidity ) & 1421 mean_inflow_profiles(:,6) = hom_sum(:,41,0) ! q 1422 IF ( passive_scalar ) & 1423 mean_inflow_profiles(:,7) = hom_sum(:,115,0) ! s 1349 1424 1350 1425 ! … … 1373 1448 pt(k,j,nxlg:-1) = mean_inflow_profiles(k,4) 1374 1449 e(k,j,nxlg:-1) = mean_inflow_profiles(k,5) 1375 IF ( humidity .OR. passive_scalar )&1450 IF ( humidity ) & 1376 1451 q(k,j,nxlg:-1) = mean_inflow_profiles(k,6) 1452 IF ( passive_scalar ) & 1453 s(k,j,nxlg:-1) = mean_inflow_profiles(k,7) 1377 1454 ENDDO 1378 1455 ENDDO … … 1459 1536 !-- including ghost points) 1460 1537 e_p = e; pt_p = pt; u_p = u; v_p = v; w_p = w 1461 IF ( humidity .OR. passive_scalar) THEN1538 IF ( humidity ) THEN 1462 1539 q_p = q 1463 1540 IF ( cloud_physics .AND. microphysics_seifert ) THEN … … 1466 1543 ENDIF 1467 1544 ENDIF 1468 IF ( ocean ) sa_p = sa 1545 IF ( passive_scalar ) s_p = s 1546 IF ( ocean ) sa_p = sa 1469 1547 1470 1548 ! … … 1473 1551 !-- there before they are set. 1474 1552 te_m = 0.0_wp; tpt_m = 0.0_wp; tu_m = 0.0_wp; tv_m = 0.0_wp; tw_m = 0.0_wp 1475 IF ( humidity .OR. passive_scalar) THEN1553 IF ( humidity ) THEN 1476 1554 tq_m = 0.0_wp 1477 1555 IF ( cloud_physics .AND. microphysics_seifert ) THEN … … 1480 1558 ENDIF 1481 1559 ENDIF 1482 IF ( ocean ) tsa_m = 0.0_wp 1560 IF ( passive_scalar ) ts_m = 0.0_wp 1561 IF ( ocean ) tsa_m = 0.0_wp 1483 1562 1484 1563 CALL location_message( 'finished', .TRUE. )
Note: See TracChangeset
for help on using the changeset viewer.