Changeset 132 for palm/trunk/SOURCE/init_3d_model.f90
- Timestamp:
- Nov 20, 2007 9:46:11 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/init_3d_model.f90
r110 r132 7 7 ! Actual revisions: 8 8 ! ----------------- 9 ! 9 ! New counter ngp_2dh_s_inner. 10 ! Allow new case bc_uv_t = 'dirichlet_0' for channel flow. 11 ! Corrected calculation of initial volume flow for 'set_1d-model_profiles' and 12 ! 'set_constant_profiles' in case of buildings in the reference cross-sections. 10 13 ! 11 14 ! Former revisions: … … 80 83 INTEGER, DIMENSION(:), ALLOCATABLE :: ngp_2dh_l, ngp_3d_inner_l 81 84 82 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ngp_2dh_outer_l 85 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ngp_2dh_outer_l, & 86 ngp_2dh_s_inner_l 83 87 84 88 REAL, DIMENSION(1:2) :: volume_flow_area_l, volume_flow_initial_l … … 97 101 ngp_2dh_outer(nzb:nzt+1,0:statistic_regions), & 98 102 ngp_2dh_outer_l(nzb:nzt+1,0:statistic_regions), & 103 ngp_2dh_s_inner(nzb:nzt+1,0:statistic_regions), & 104 ngp_2dh_s_inner_l(nzb:nzt+1,0:statistic_regions), & 99 105 rmask(nys-1:nyn+1,nxl-1:nxr+1,0:statistic_regions), & 100 106 sums(nzb:nzt+1,pr_palm+max_pr_user), & … … 426 432 ENDDO 427 433 ENDDO 434 IF ( conserve_volume_flow ) THEN 435 IF ( nxr == nx ) THEN 436 DO j = nys, nyn 437 DO k = nzb + 1, nzb_u_inner(j,nx) 438 u_nzb_p1_for_vfc(j) = u1d(k) * dzu(k) 439 ENDDO 440 ENDDO 441 ENDIF 442 IF ( nyn == ny ) THEN 443 DO i = nxl, nxr 444 DO k = nzb + 1, nzb_v_inner(ny,i) 445 v_nzb_p1_for_vfc(i) = v1d(k) * dzu(k) 446 ENDDO 447 ENDDO 448 ENDIF 449 ENDIF 428 450 ! 429 451 !-- WARNING: The extra boundary conditions set after running the … … 486 508 IF ( nxr == nx ) THEN 487 509 DO j = nys, nyn 488 k = nzb_u_inner(j,nx) + 1 489 u_nzb_p1_for_vfc(j) = u_init(k) * dzu(k) 510 DO k = nzb + 1, nzb_u_inner(j,nx) + 1 511 u_nzb_p1_for_vfc(j) = u_init(k) * dzu(k) 512 ENDDO 490 513 ENDDO 491 514 ENDIF 492 515 IF ( nyn == ny ) THEN 493 516 DO i = nxl, nxr 494 k = nzb_v_inner(ny,i) + 1 495 v_nzb_p1_for_vfc(i) = v_init(k) * dzu(k) 517 DO k = nzb + 1, nzb_v_inner(ny,i) + 1 518 v_nzb_p1_for_vfc(i) = v_init(k) * dzu(k) 519 ENDDO 496 520 ENDDO 497 521 ENDIF … … 561 585 562 586 ! 587 !-- apply channel flow boundary condition 588 IF ( TRIM( bc_uv_t ) == 'dirichlet_0' ) THEN 589 590 u(nzt+1,:,:) = 0.0 591 v(nzt+1,:,:) = 0.0 592 593 !-- for the Dirichlet condition to be correctly applied at the top, set 594 !-- ug and vg to zero there 595 ug(nzt+1) = 0.0 596 vg(nzt+1) = 0.0 597 598 ENDIF 599 600 ! 563 601 !-- Calculate virtual potential temperature 564 602 IF ( humidity ) vpt = pt * ( 1.0 + 0.61 * q ) … … 1036 1074 !-- total domain 1037 1075 !-- ngp_3d: number of grid points of the total domain 1038 !-- Note: The lower vertical index nzb_s_outer imposes a small error on the 2D 1039 !-- ---- averages of staggered variables such as u and v due to the topography 1040 !-- arrangement on the staggered grid. Maybe revise later. 1041 ngp_2dh_outer_l = 0 1042 ngp_2dh_outer = 0 1043 ngp_2dh_l = 0 1044 ngp_2dh = 0 1045 ngp_3d_inner_l = 0 1046 ngp_3d_inner = 0 1047 ngp_3d = 0 1048 ngp_sums = ( nz + 2 ) * ( pr_palm + max_pr_user ) 1076 ngp_2dh_outer_l = 0 1077 ngp_2dh_outer = 0 1078 ngp_2dh_s_inner_l = 0 1079 ngp_2dh_s_inner = 0 1080 ngp_2dh_l = 0 1081 ngp_2dh = 0 1082 ngp_3d_inner_l = 0 1083 ngp_3d_inner = 0 1084 ngp_3d = 0 1085 ngp_sums = ( nz + 2 ) * ( pr_palm + max_pr_user ) 1049 1086 1050 1087 DO sr = 0, statistic_regions … … 1059 1096 DO k = nzb_s_outer(j,i), nz + 1 1060 1097 ngp_2dh_outer_l(k,sr) = ngp_2dh_outer_l(k,sr) + 1 1098 ENDDO 1099 DO k = nzb_s_inner(j,i), nz + 1 1100 ngp_2dh_s_inner_l(k,sr) = ngp_2dh_s_inner_l(k,sr) + 1 1061 1101 ENDDO 1062 1102 ! … … 1075 1115 CALL MPI_ALLREDUCE( ngp_2dh_outer_l(0,0), ngp_2dh_outer(0,0), (nz+2)*sr, & 1076 1116 MPI_INTEGER, MPI_SUM, comm2d, ierr ) 1117 CALL MPI_ALLREDUCE( ngp_2dh_s_inner_l(0,0), ngp_2dh_s_inner(0,0), & 1118 (nz+2)*sr, MPI_INTEGER, MPI_SUM, comm2d, ierr ) 1077 1119 CALL MPI_ALLREDUCE( ngp_3d_inner_l(0), ngp_3d_inner(0), sr, MPI_INTEGER, & 1078 1120 MPI_SUM, comm2d, ierr ) 1079 1121 #else 1080 ngp_2dh = ngp_2dh_l 1081 ngp_2dh_outer = ngp_2dh_outer_l 1082 ngp_3d_inner = ngp_3d_inner_l 1122 ngp_2dh = ngp_2dh_l 1123 ngp_2dh_outer = ngp_2dh_outer_l 1124 ngp_2dh_s_inner = ngp_2dh_s_inner_l 1125 ngp_3d_inner = ngp_3d_inner_l 1083 1126 #endif 1084 1127
Note: See TracChangeset
for help on using the changeset viewer.