Ignore:
Timestamp:
Aug 19, 2009 4:56:44 PM (15 years ago)
Author:
letzel
Message:
  • Bugfix for extended NetCDF files: In order to avoid 'data mode' errors if updated attributes are larger than their original size, NF90_PUT_ATT is called in 'define mode' enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible performance loss; an alternative strategy would be to ensure equal attribute size in a job chain. (netcdf)
  • Changed: For extended NetCDF files, the updated title attribute includes an update of time_average_text where appropriate. (netcdf)
  • Bugfix: correction of initial volume flow for non-flat topography (init_3d_model)
  • Bugfix: zero initialization of arrays within buildings for 'cyclic_fill' (init_3d_model)
  • New: MPI debug option (mrun)
  • Documentation updates:
    • topography file format (chapter 3.5.4)
    • NC identifier range expanded to 444 (appendix_a)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/init_3d_model.f90

    r333 r359  
    77! Current revisions:
    88! -----------------
     9! bugfix: correction of initial volume flow for non-flat topography
     10! bugfix: zero initialization of arrays within buildings for 'cyclic_fill'
    911! bugfix: avoid that ngp_2dh_s_inner becomes zero
    1012! initializing_actions='read_data_for_recycling' renamed to 'cyclic_fill', now
     
    485487                   DO  j = nys, nyn
    486488                      DO  k = nzb + 1, nzb_u_inner(j,nx)
    487                          u_nzb_p1_for_vfc(j) = u1d(k) * dzu(k)
     489                         u_nzb_p1_for_vfc(j) = u_nzb_p1_for_vfc(j) + &
     490                                               u1d(k) * dzu(k)
    488491                      ENDDO
    489492                   ENDDO
     
    492495                   DO  i = nxl, nxr
    493496                      DO  k = nzb + 1, nzb_v_inner(ny,i)
    494                          v_nzb_p1_for_vfc(i) = v1d(k) * dzu(k)
     497                         v_nzb_p1_for_vfc(i) = v_nzb_p1_for_vfc(i) + &
     498                                               v1d(k) * dzu(k)
    495499                      ENDDO
    496500                   ENDDO
     
    558562                DO  j = nys, nyn
    559563                   DO  k = nzb + 1, nzb_u_inner(j,nx) + 1
    560                       u_nzb_p1_for_vfc(j) = u_init(k) * dzu(k)
     564                      u_nzb_p1_for_vfc(j) = u_nzb_p1_for_vfc(j) + &
     565                                            u_init(k) * dzu(k)
    561566                   ENDDO
    562567                ENDDO
     
    565570                DO  i = nxl, nxr
    566571                   DO  k = nzb + 1, nzb_v_inner(ny,i) + 1
    567                       v_nzb_p1_for_vfc(i) = v_init(k) * dzu(k)
     572                      v_nzb_p1_for_vfc(i) = v_nzb_p1_for_vfc(i) + &
     573                                            v_init(k) * dzu(k)
    568574                   ENDDO
    569575                ENDDO
     
    10281034
    10291035!
     1036!--    Inside buildings set velocities and TKE back to zero
     1037       IF ( TRIM( initializing_actions ) == 'cyclic_fill' .AND.  &
     1038            topography /= 'flat' )  THEN
     1039!
     1040!--       Correction of initial volume flow
     1041          IF ( conserve_volume_flow )  THEN
     1042             IF ( nxr == nx )  THEN
     1043                DO  j = nys, nyn
     1044                   DO  k = nzb + 1, nzb_u_inner(j,nx)
     1045                      u_nzb_p1_for_vfc(j) = u_nzb_p1_for_vfc(j) + &
     1046                                            u(k,j,nx) * dzu(k)
     1047                   ENDDO
     1048                ENDDO
     1049             ENDIF
     1050             IF ( nyn == ny )  THEN
     1051                DO  i = nxl, nxr
     1052                   DO  k = nzb + 1, nzb_v_inner(ny,i)
     1053                      v_nzb_p1_for_vfc(i) = v_nzb_p1_for_vfc(i) + &
     1054                                            v(k,ny,i) * dzu(k)
     1055                   ENDDO
     1056                ENDDO
     1057             ENDIF
     1058          ENDIF
     1059
     1060!
     1061!--       Inside buildings set velocities and TKE back to zero.
     1062!--       Other scalars (pt, q, s, km, kh, p, sa, ...) are ignored at present,
     1063!--       maybe revise later.
     1064          IF ( timestep_scheme(1:5) == 'runge' )  THEN
     1065             DO  i = nxl-1, nxr+1
     1066                DO  j = nys-1, nyn+1
     1067                   u  (nzb:nzb_u_inner(j,i),j,i) = 0.0
     1068                   v  (nzb:nzb_v_inner(j,i),j,i) = 0.0
     1069                   w  (nzb:nzb_w_inner(j,i),j,i) = 0.0
     1070                   e  (nzb:nzb_w_inner(j,i),j,i) = 0.0
     1071                   u_m(nzb:nzb_u_inner(j,i),j,i) = 0.0
     1072                   v_m(nzb:nzb_v_inner(j,i),j,i) = 0.0
     1073                   w_m(nzb:nzb_w_inner(j,i),j,i) = 0.0
     1074                   e_m(nzb:nzb_w_inner(j,i),j,i) = 0.0
     1075                   tu_m(nzb:nzb_u_inner(j,i),j,i) = 0.0
     1076                   tv_m(nzb:nzb_v_inner(j,i),j,i) = 0.0
     1077                   tw_m(nzb:nzb_w_inner(j,i),j,i) = 0.0
     1078                   te_m(nzb:nzb_w_inner(j,i),j,i) = 0.0
     1079                   tpt_m(nzb:nzb_w_inner(j,i),j,i) = 0.0
     1080                ENDDO
     1081             ENDDO
     1082          ELSE
     1083             DO  i = nxl-1, nxr+1
     1084                DO  j = nys-1, nyn+1
     1085                   u  (nzb:nzb_u_inner(j,i),j,i) = 0.0
     1086                   v  (nzb:nzb_v_inner(j,i),j,i) = 0.0
     1087                   w  (nzb:nzb_w_inner(j,i),j,i) = 0.0
     1088                   e  (nzb:nzb_w_inner(j,i),j,i) = 0.0
     1089                   u_m(nzb:nzb_u_inner(j,i),j,i) = 0.0
     1090                   v_m(nzb:nzb_v_inner(j,i),j,i) = 0.0
     1091                   w_m(nzb:nzb_w_inner(j,i),j,i) = 0.0
     1092                   e_m(nzb:nzb_w_inner(j,i),j,i) = 0.0
     1093                   u_p(nzb:nzb_u_inner(j,i),j,i) = 0.0
     1094                   v_p(nzb:nzb_v_inner(j,i),j,i) = 0.0
     1095                   w_p(nzb:nzb_w_inner(j,i),j,i) = 0.0
     1096                   e_p(nzb:nzb_w_inner(j,i),j,i) = 0.0
     1097                ENDDO
     1098             ENDDO
     1099          ENDIF
     1100
     1101       ENDIF
     1102
     1103!
    10301104!--    Calculate the initial volume flow at the right and north boundary
    10311105       IF ( conserve_volume_flow  .AND.  &
     
    10431117                ENDDO
    10441118!
    1045 !--             Correction if velocity at nzb+1 has been set zero further above
    1046 !--             Note: at present, u_nzb_p1_for_vfc is zero (maybe revise later)
     1119!--             Correction if velocity inside buildings has been set to zero
     1120!--             further above
    10471121                volume_flow_initial_l(1) = volume_flow_initial_l(1) + &
    10481122                                           u_nzb_p1_for_vfc(j)
     
    10581132                ENDDO
    10591133!
    1060 !--             Correction if velocity at nzb+1 has been set zero further above
    1061 !--             Note: at present, v_nzb_p1_for_vfc is zero (maybe revise later)
     1134!--             Correction if velocity inside buildings has been set to zero
     1135!--             further above
    10621136                volume_flow_initial_l(2) = volume_flow_initial_l(2) + &
    10631137                                           v_nzb_p1_for_vfc(i)
Note: See TracChangeset for help on using the changeset viewer.