- Timestamp:
- Nov 20, 2007 9:46:11 AM (17 years ago)
- Location:
- palm/trunk
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/DOC/app/chapter_3.5.3.html
r62 r132 1 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 2 2 <html><head> 3 <meta http-equiv="CONTENT-TYPE" content="text/html; charset=windows-1252"><title>PALM 4 chapter 3.5.3</title> <meta name="GENERATOR" content="StarOffice 7 (Win32)"> <meta name="AUTHOR" content="Siegfried Raasch"> <meta name="CREATED" content="20040802;14001660"> <meta name="CHANGED" content="20041112;14483720"> <meta name="KEYWORDS" content="parallel LES model"> <style> 3 <meta http-equiv="CONTENT-TYPE" content="text/html; charset=windows-1252"><title>PALM chapter 3.5.3</title> <meta name="GENERATOR" content="StarOffice 7 (Win32)"> <meta name="AUTHOR" content="Siegfried Raasch"> <meta name="CREATED" content="20040802;14001660"> <meta name="CHANGED" content="20041112;14483720"> <meta name="KEYWORDS" content="parallel LES model"> <style> 5 4 <!-- 6 5 @page { size: 21cm 29.7cm } … … 33 32 declared as: </p> 34 33 <ul> <p style="line-height: 100%;"><tt><font style="font-size: 10pt;" size="2">REAL :: rmask 35 (nys-1:nyn+1,nxl-1 ,nxr+1,0:9) .</font></tt></p>34 (nys-1:nyn+1,nxl-1:nxr+1,0:9) .</font></tt></p> 36 35 </ul><p style="line-height: 100%;">The first two 37 36 indices are the grid point -
palm/trunk/DOC/app/chapter_4.1.html
r116 r132 20 20 21 21 <title>PALM chapter 4.1</title></head> 22 23 22 <body> 24 23 … … 1736 1735 1737 1736 <p>Allowed 1738 values are <span style="font-style: italic;">'dirichlet'</span> 1737 values are <span style="font-style: italic;">'dirichlet'</span>, <span style="font-style: italic;">'dirichlet_0'</span> 1739 1738 and <span style="font-style: italic;">'neumann'</span>. 1740 1739 The … … 1743 1742 Neumann condition yields the free-slip condition with u(k=nz+1) = 1744 1743 u(k=nz) and v(k=nz+1) = v(k=nz) (up to k=nz the prognostic equations 1745 for the velocities are solved).</p> 1744 for the velocities are solved). The special condition <span style="font-style: italic;">'dirichlet_0'</span> can be used for channel flow, it yields the no-slip condition u(k=nz+1) = ug(nz+1) = 0 and v(k=nz+1) = 1745 vg(nz+1) = 0.</p> 1746 1746 1747 1747 -
palm/trunk/DOC/misc/Tsubame.html
r130 r132 21 21 Tsubame is located behind a firewall, the usual address <a class="fixed" href="svn://130.75.105.45" target="_blank">svn://130.75.105.45</a> is unreachable from Tsubame. Instead, please login to media-o 22 22 and use <a class="fixed" href="svn://p9c.cc.titech.ac.jp:36900" target="_blank">svn://p9c.cc.titech.ac.jp:36900</a>. 23 This port works in both directions, i.e. for <code>svn update</code> as well as <code>svn commit</code> commands.</p><h4> Combine plot fields</h4><p>Please add the following line to the output command (<code>OC:</code>) section of your <code>.mrun.config</code> to ensure correct output of 2D and 3D data for PALM runs on more than one CPU :</p><code>OC:[[ \$( echo \$localhost | cut -c1-3 ) = lct ]] && combine_plot_fields.x</code><br><h4>Batch system<br></h4><p>The implementation of the <span style="font-weight: bold;">n1ge</span> command on23 This port works in both directions, i.e. for <code>svn update</code> as well as <code>svn commit</code> commands.</p><h4>Batch system<br></h4><p>The implementation of the <span style="font-weight: bold;">n1ge</span> command on 24 24 Tsubame requires modifications to <span style="font-weight: bold;">mrun</span> and <span style="font-weight: bold;">subjob</span> for PALM to 25 25 run on Tsubame. Since <span style="font-weight: bold;">mrun</span> … … 42 42 not always be the best choice. For code development, debugging or short 43 43 test runs the value "novice" for both options may be suitable. 44 Production runs should use the respective production queues (see <a href="http://www.gsic.titech.ac.jp/%7Eccwww/tgc/q_e.html">http://www.gsic.titech.ac.jp/~ccwww/tgc/q_e.html</a> for details). </p><p>The44 Production runs should use the respective production queues (see <a href="http://www.gsic.titech.ac.jp/%7Eccwww/tgc/q_e.html">http://www.gsic.titech.ac.jp/~ccwww/tgc/q_e.html</a> for details). In the past the queueing system on Tsubame has undergone several changes, so this information may change.</p><p>The 45 45 computer center advised us that due to restrictions of the batch system 46 46 the value "novice" should not be mixed with the other queues. Please … … 53 53 option <code><span style="font-family: Courier New,Courier,monospace;">-m</span></code> 54 54 contains the memory demand for the main job <span style="font-weight: bold;">in MB</span> which will be 55 automatically converted into GB for the <span style="font-weight: bold;">n1ge</span> command.</p><p>Finally, PALM batch jobs on Tsubame require the <span style="font-weight: bold;">mrun</span> option <code>-b</code>.</p><h4>NetCDF</h4><p>In order to use NetCDF commands like <code>ncdump</code> and the graphical NetCDF tools <a href="http://www.ncl.ucar.edu" target="_top">NCL</a> and <a href="http://meteora.ucsd.edu/%7Epierce/ncview_home_page.html" target="_top">Ncview</a>, please add the following lines to <code><span style="font-family: Courier New,Courier,monospace;">~/.profile</span></code> (for ksh users) or <code>~/.bashrc</code> (for bash users):</p><p><code># NetCDF<br>export PATH=$PATH:~mkanda/netcdf-3.6.2/bin:~mkanda/netcdf-3.6.2/include<br><br></code><code># NCL<br>export NCARG_ROOT=~mkanda/ncl<br>PATH=~mkanda/ncl/bin:$PATH<br><br># Ncview<br>export PATH=$PATH:~mkanda/ncview/bin<br>export XAPPLRESDIR=~mkanda/.app-defaults</code></p><i><br>Last55 automatically converted into GB for the <span style="font-weight: bold;">n1ge</span> command.</p><p>Finally, PALM batch jobs on Tsubame require the <span style="font-weight: bold;">mrun</span> option <code>-b</code>.</p><h4>NetCDF</h4><p>In order to use <a href="http://www.unidata.ucar.edu/software/netcdf" target="_top">NetCDF</a> commands like <code>ncdump</code> and the graphical NetCDF tools <a href="http://www.ncl.ucar.edu" target="_top">NCL</a>, <a href="http://meteora.ucsd.edu/%7Epierce/ncview_home_page.html" target="_top">Ncview</a> and <a href="http://ferret.pmel.noaa.gov/Ferret" target="_top">Ferret</a>, please add the following lines to <code><span style="font-family: Courier New,Courier,monospace;">~/.profile</span></code> (for ksh users) or <code>~/.bashrc</code> (for bash users):</p><p><code># NetCDF<br>export PATH=$PATH:~mkanda/netcdf-3.6.2/bin:~mkanda/netcdf-3.6.2/include<br><br></code><code># NCL<br>export NCARG_ROOT=~mkanda/ncl<br>PATH=~mkanda/ncl/bin:$PATH<br><br># Ncview<br>export PATH=$PATH:~mkanda/ncview/bin<br>export XAPPLRESDIR=~mkanda/.app-defaults</code></p><p><code># Ferret<br>export FER_DIR=~mkanda/ferret<br>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$FER_DIR/lib<br>export PATH=$PATH:$FER_DIR:$FER_DIR/bin<br>export FER_DSETS=$FER_DIR<br>export FER_WEB_BROWSER=firefox<br>export FER_EXTERNAL_FUNCTIONS="$FER_DIR/lib"<br>export FER_GO=". $FER_DIR/go $FER_DIR/examples $FER_DIR/contrib"<br>export FER_DATA="."<br>export FER_DESCR="."<br>export FER_GRIDS=". $FER_DSETS/grids"<br>export TMAP="$FER_DIR/fmt"<br>export PLOTFONTS="$FER_DIR/ppl/fonts"<br>export SPECTRA="$FER_DIR/ppl" # for old ferret versions<br>export FER_PALETTE=". $FER_DIR/ppl" # palette search list<br></code></p><i><br>Last 56 56 change:</i> $Id$</body></html> -
palm/trunk/SOURCE/CURRENT_MODIFICATIONS
r130 r132 1 1 New: 2 2 --- 3 4 Allow new case bc_uv_t = 'dirichlet_0' for channel flow. 3 5 4 6 For unknown variables (CASE DEFAULT) call new subroutine user_data_output_dvrp … … 13 15 advec_particles after the end of this loop. 14 16 15 advec_particles, check_parameters, data_output_dvrp, header, init_ grid, init_particles, init_pegrid, modules, package_parin, read_var_list, user_interface, write_var_list17 advec_particles, check_parameters, data_output_dvrp, header, init_3d_model, init_grid, init_particles, init_pegrid, modules, package_parin, read_var_list, user_interface, write_var_list 16 18 17 19 18 20 Changed: 19 21 ------- 22 23 Vertical profiles now based on nzb_s_inner; they are divided by 24 ngp_2dh_s_inner (scalars, procucts of scalars and velocity components) and 25 ngp_2dh (staggered velocity components and their products), respectively. 20 26 21 27 Allow two instead of one digit to specify isosurface and slicer variables. … … 33 39 humidity/scalar/salinity in a future release. 34 40 35 check_open, data_output_dvrp, diffusion_s, header, init_dvrp, modules, prognostic_equations41 buoyancy, check_open, data_output_dvrp, diffusion_s, diffusivities, flow_statistics, header, init_3d_model, init_dvrp, modules, prognostic_equations 36 42 37 43 -
palm/trunk/SOURCE/buoyancy.f90
r110 r132 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! Vertical scalar profiles now based on nzb_s_inner and ngp_2dh_s_inner. 7 7 ! 8 8 ! Former revisions: … … 258 258 DO i = nxl, nxr 259 259 DO j = nys, nyn 260 DO k = nzb_s_ outer(j,i), nzt+1260 DO k = nzb_s_inner(j,i), nzt+1 261 261 sums_l(k,pr,tn) = sums_l(k,pr,tn) + var(k,j,i) 262 262 ENDDO … … 280 280 #endif 281 281 282 hom(:,1,pr,0) = sums(:,pr) / ngp_2dh_ outer(:,0)282 hom(:,1,pr,0) = sums(:,pr) / ngp_2dh_s_inner(:,0) 283 283 284 284 ENDIF -
palm/trunk/SOURCE/check_parameters.f90
r121 r132 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! Allow new case bc_uv_t = 'dirichlet_0' for channel flow. 6 7 ! Multigrid solver allows topography, checking of dt_sort_particles 7 8 ! Bugfix: initializing u_init and v_init in case of ocean runs … … 1397 1398 ibc_uv_t = 1 1398 1399 ELSE 1399 IF ( bc_uv_t == 'dirichlet' ) THEN1400 IF ( bc_uv_t == 'dirichlet' .OR. bc_uv_t == 'dirichlet_0' ) THEN 1400 1401 ibc_uv_t = 0 1401 1402 ELSEIF ( bc_uv_t == 'neumann' ) THEN -
palm/trunk/SOURCE/diffusivities.f90
r98 r132 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! Vertical scalar profiles now based on nzb_s_inner and ngp_2dh_s_inner. 6 7 ! 7 8 ! … … 141 142 DO sr = 0, statistic_regions 142 143 IF ( rmask(j,i,sr) /= 0.0 ) THEN 143 DO k = nzb_s_ outer(j,i)+1, nzt144 DO k = nzb_s_inner(j,i)+1, nzt 144 145 sums_l_l(k,sr,tn) = sums_l_l(k,sr,tn) + l(k) 145 146 ENDDO -
palm/trunk/SOURCE/flow_statistics.f90
r110 r132 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! Vertical profiles now based on nzb_s_inner; they are divided by 7 ! ngp_2dh_s_inner (scalars, procucts of scalars and velocity components) and 8 ! ngp_2dh (staggered velocity components and their products), respectively. 6 9 ! 7 10 ! … … 49 52 ! user-defined (sub-)regions. The region indexed 0 is the total model domain. 50 53 ! 51 ! NOTE: For simplicity, nzb_s_outer and nzb_diff_s_outer are being used as a 52 ! ---- lower vertical index for k-loops for all variables so that regardless 53 ! of the variable and its respective staggered grid always the same number of 54 ! grid points is used for 2D averages. The disadvantage: depending on the 55 ! variable, up to one grid layer adjacent to the (vertical walls of the) 56 ! topography is missed out by this simplification. 54 ! NOTE: For simplicity, nzb_s_inner and nzb_diff_s_inner are being used as a 55 ! ---- lower vertical index for k-loops for all variables, although strictly 56 ! speaking the k-loops would have to be split up according to the staggered 57 ! grid. However, this implies no error since staggered velocity components are 58 ! zero at the walls and inside buildings. 57 59 !------------------------------------------------------------------------------! 58 60 … … 124 126 DO i = nxl, nxr 125 127 DO j = nys, nyn 126 DO k = nzb_s_ outer(j,i), nzt+1128 DO k = nzb_s_inner(j,i), nzt+1 127 129 sums_l(k,1,tn) = sums_l(k,1,tn) + u(k,j,i) * rmask(j,i,sr) 128 130 sums_l(k,2,tn) = sums_l(k,2,tn) + v(k,j,i) * rmask(j,i,sr) … … 138 140 DO i = nxl, nxr 139 141 DO j = nys, nyn 140 DO k = nzb_s_ outer(j,i), nzt+1142 DO k = nzb_s_inner(j,i), nzt+1 141 143 sums_l(k,23,tn) = sums_l(k,23,tn) + & 142 144 sa(k,j,i) * rmask(j,i,sr) … … 154 156 DO i = nxl, nxr 155 157 DO j = nys, nyn 156 DO k = nzb_s_ outer(j,i), nzt+1158 DO k = nzb_s_inner(j,i), nzt+1 157 159 sums_l(k,44,tn) = sums_l(k,44,tn) + & 158 160 vpt(k,j,i) * rmask(j,i,sr) … … 166 168 DO i = nxl, nxr 167 169 DO j = nys, nyn 168 DO k = nzb_s_ outer(j,i), nzt+1170 DO k = nzb_s_inner(j,i), nzt+1 169 171 sums_l(k,42,tn) = sums_l(k,42,tn) + & 170 172 ( q(k,j,i) - ql(k,j,i) ) * rmask(j,i,sr) … … 184 186 DO i = nxl, nxr 185 187 DO j = nys, nyn 186 DO k = nzb_s_ outer(j,i), nzt+1188 DO k = nzb_s_inner(j,i), nzt+1 187 189 sums_l(k,41,tn) = sums_l(k,41,tn) + q(k,j,i) * rmask(j,i,sr) 188 190 ENDDO … … 265 267 !-- Final values are obtained by division by the total number of grid points 266 268 !-- used for summation. After that store profiles. 267 sums(:,1) = sums(:,1) / ngp_2dh _outer(:,sr)268 sums(:,2) = sums(:,2) / ngp_2dh _outer(:,sr)269 sums(:,4) = sums(:,4) / ngp_2dh_ outer(:,sr)269 sums(:,1) = sums(:,1) / ngp_2dh(sr) 270 sums(:,2) = sums(:,2) / ngp_2dh(sr) 271 sums(:,4) = sums(:,4) / ngp_2dh_s_inner(:,sr) 270 272 hom(:,1,1,sr) = sums(:,1) ! u 271 273 hom(:,1,2,sr) = sums(:,2) ! v … … 275 277 !-- Salinity 276 278 IF ( ocean ) THEN 277 sums(:,23) = sums(:,23) / ngp_2dh_ outer(:,sr)279 sums(:,23) = sums(:,23) / ngp_2dh_s_inner(:,sr) 278 280 hom(:,1,23,sr) = sums(:,23) ! sa 279 281 ENDIF … … 282 284 !-- Humidity and cloud parameters 283 285 IF ( humidity ) THEN 284 sums(:,44) = sums(:,44) / ngp_2dh_ outer(:,sr)285 sums(:,41) = sums(:,41) / ngp_2dh_ outer(:,sr)286 sums(:,44) = sums(:,44) / ngp_2dh_s_inner(:,sr) 287 sums(:,41) = sums(:,41) / ngp_2dh_s_inner(:,sr) 286 288 hom(:,1,44,sr) = sums(:,44) ! vpt 287 289 hom(:,1,41,sr) = sums(:,41) ! qv (q) 288 290 IF ( cloud_physics ) THEN 289 sums(:,42) = sums(:,42) / ngp_2dh_ outer(:,sr)290 sums(:,43) = sums(:,43) / ngp_2dh_ outer(:,sr)291 sums(:,42) = sums(:,42) / ngp_2dh_s_inner(:,sr) 292 sums(:,43) = sums(:,43) / ngp_2dh_s_inner(:,sr) 291 293 hom(:,1,42,sr) = sums(:,42) ! qv 292 294 hom(:,1,43,sr) = sums(:,43) ! pt … … 296 298 ! 297 299 !-- Passive scalar 298 IF ( passive_scalar ) hom(:,1,41,sr) = sums(:,41) / ngp_2dh_outer(:,sr) 300 IF ( passive_scalar ) hom(:,1,41,sr) = sums(:,41) / & 301 ngp_2dh_s_inner(:,sr) ! s (q) 299 302 300 303 ! … … 302 305 !-- variances, the total and the perturbation energy (single values in last 303 306 !-- column of sums_l) and some diagnostic quantities. 304 !-- NOTE: for simplicity, nzb_s_ outer is used below, although strictly307 !-- NOTE: for simplicity, nzb_s_inner is used below, although strictly 305 308 !-- ---- speaking the following k-loop would have to be split up and 306 309 !-- rearranged according to the staggered grid. 310 !-- However, this implies no error since staggered velocity components 311 !-- are zero at the walls and inside buildings. 307 312 tn = 0 308 313 #if defined( __intel_openmp_bug ) … … 319 324 sums_l_etot = 0.0 320 325 sums_l_eper = 0.0 321 DO k = nzb_s_ outer(j,i), nzt+1326 DO k = nzb_s_inner(j,i), nzt+1 322 327 u2 = u(k,j,i)**2 323 328 v2 = v(k,j,i)**2 … … 382 387 !-- Subgridscale fluxes (without Prandtl layer from k=nzb, 383 388 !-- oterwise from k=nzb+1) 384 !-- NOTE: for simplicity, nzb_diff_s_ outer is used below, although389 !-- NOTE: for simplicity, nzb_diff_s_inner is used below, although 385 390 !-- ---- strictly speaking the following k-loop would have to be 386 391 !-- split up according to the staggered grid. 387 DO k = nzb_diff_s_outer(j,i)-1, nzt_diff 392 !-- However, this implies no error since staggered velocity 393 !-- components are zero at the walls and inside buildings. 394 395 DO k = nzb_diff_s_inner(j,i)-1, nzt_diff 388 396 ! 389 397 !-- Momentum flux w"u" … … 528 536 ! 529 537 !-- Resolved fluxes (can be computed for all horizontal points) 530 !-- NOTE: for simplicity, nzb_s_ outer is used below, although strictly538 !-- NOTE: for simplicity, nzb_s_inner is used below, although strictly 531 539 !-- ---- speaking the following k-loop would have to be split up and 532 540 !-- rearranged according to the staggered grid. 533 DO k = nzb_s_ outer(j,i), nzt541 DO k = nzb_s_inner(j,i), nzt 534 542 ust = 0.5 * ( u(k,j,i) - hom(k,1,1,sr) + & 535 543 u(k+1,j,i) - hom(k+1,1,1,sr) ) … … 634 642 DO i = nxl, nxr 635 643 DO j = nys, nyn 636 DO k = nzb_s_ outer(j,i)+1, nzt644 DO k = nzb_s_inner(j,i)+1, nzt 637 645 638 646 sums_ll(k,1) = sums_ll(k,1) + 0.5 * w(k,j,i) * ( & … … 656 664 sums_ll(nzt+1,2) = 0.0 657 665 658 DO k = nzb_s_ outer(j,i)+1, nzt666 DO k = nzb_s_inner(j,i)+1, nzt 659 667 sums_l(k,55,tn) = ( sums_ll(k,1) - sums_ll(k-1,1) ) * ddzw(k) 660 668 sums_l(k,56,tn) = ( sums_ll(k,2) - sums_ll(k-1,2) ) * ddzw(k) … … 674 682 DO i = nxl, nxr 675 683 DO j = nys, nyn 676 DO k = nzb_s_ outer(j,i)+1, nzt684 DO k = nzb_s_inner(j,i)+1, nzt 677 685 678 686 sums_l(k,57,tn) = sums_l(k,57,tn) - 0.5 * ( & … … 701 709 DO i = nxl, nxr 702 710 DO j = nys, nyn 703 DO k = nzb_s_ outer(j,i)+1, nzt711 DO k = nzb_s_inner(j,i)+1, nzt 704 712 ! 705 713 !-- Subgrid horizontal heat fluxes u"pt", v"pt" … … 773 781 !-- Profiles: 774 782 DO k = nzb, nzt+1 775 sums(k,:pr_palm-2) = sums(k,:pr_palm-2) / ngp_2dh_outer(k,sr) 783 sums(k,3) = sums(k,3) / ngp_2dh(sr) 784 sums(k,9:11) = sums(k,9:11) / ngp_2dh_s_inner(k,sr) 785 sums(k,12:22) = sums(k,12:22) / ngp_2dh(sr) 786 sums(k,23:29) = sums(k,23:29) / ngp_2dh_s_inner(k,sr) 787 sums(k,30:32) = sums(k,30:32) / ngp_2dh(sr) 788 sums(k,33) = sums(k,33) / ngp_2dh_s_inner(k,sr) 789 sums(k,34:39) = sums(k,34:39) / ngp_2dh(sr) 790 sums(k,40) = sums(k,40) / ngp_2dh_s_inner(k,sr) 791 sums(k,45:53) = sums(k,45:53) / ngp_2dh(sr) 792 sums(k,54) = sums(k,54) / ngp_2dh_s_inner(k,sr) 793 sums(k,55:63) = sums(k,55:63) / ngp_2dh(sr) 794 sums(k,64) = sums(k,64) / ngp_2dh_s_inner(k,sr) 795 sums(k,65:69) = sums(k,65:69) / ngp_2dh(sr) 796 sums(k,70:pr_palm-2) = sums(k,70:pr_palm-2)/ ngp_2dh_s_inner(k,sr) 776 797 ENDDO 777 798 !-- Upstream-parts … … 785 806 !-- eges, e* 786 807 sums(nzb+4:nzb+5,pr_palm) = sums(nzb+4:nzb+5,pr_palm) / & 787 ngp_3d _inner(sr)808 ngp_3d(sr) 788 809 !-- Old and new divergence 789 810 sums(nzb+9:nzb+10,pr_palm) = sums(nzb+9:nzb+10,pr_palm) / & … … 795 816 sums(k,pr_palm+1:pr_palm+max_pr_user) = & 796 817 sums(k,pr_palm+1:pr_palm+max_pr_user) / & 797 ngp_2dh_ outer(k,sr)818 ngp_2dh_s_inner(k,sr) 798 819 ENDDO 799 820 ENDIF -
palm/trunk/SOURCE/header.f90
r130 r132 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! allow two instead of one digit to specify isosurface and slicer variables 6 ! Allow new case bc_uv_t = 'dirichlet_0' for channel flow. 7 ! Allow two instead of one digit to specify isosurface and slicer variables. 7 8 ! Output of sorting frequency of particles 8 9 ! … … 384 385 runten = TRIM( runten ) // ' uv(0) = uv(1) |' 385 386 ENDIF 386 IF ( ibc_uv_t == 0 ) THEN 387 IF ( TRIM( bc_uv_t ) == 'dirichlet_0' ) THEN 388 roben = TRIM( roben ) // ' uv(nzt+1) = 0 |' 389 ELSEIF ( ibc_uv_t == 0 ) THEN 387 390 roben = TRIM( roben ) // ' uv(nzt+1) = ug(nzt+1), vg(nzt+1) |' 388 391 ELSE -
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 -
palm/trunk/SOURCE/modules.f90
r129 r132 5 5 ! Actual revisions: 6 6 ! ----------------- 7 ! +dt_sort_particles, time_sort_particles, flags, wall_flags_1..108 ! wall_ humidityflux(0:4), wall_qflux(0:4), wall_salinityflux(0:4),9 ! wall_s calarflux(0:4)7 ! +dt_sort_particles, ngp_2dh_s_inner, time_sort_particles, flags, 8 ! wall_flags_1..10, wall_humidityflux(0:4), wall_qflux(0:4), 9 ! wall_salinityflux(0:4), wall_scalarflux(0:4) 10 10 ! 11 11 ! Former revisions: … … 588 588 589 589 INTEGER, DIMENSION(:,:), ALLOCATABLE :: & 590 ngp_2dh_outer, mg_loc_ind, nzb_diff_s_inner, nzb_diff_s_outer,&591 nzb_diff_ u, nzb_diff_v, nzb_inner, nzb_outer, nzb_s_inner,&592 nzb_s_ outer, nzb_u_inner, nzb_u_outer, nzb_v_inner, &593 nzb_v_ outer, nzb_w_inner, nzb_w_outer, nzb_2d590 ngp_2dh_outer, ngp_2dh_s_inner, mg_loc_ind, nzb_diff_s_inner, & 591 nzb_diff_s_outer, nzb_diff_u, nzb_diff_v, nzb_inner, nzb_outer,& 592 nzb_s_inner, nzb_s_outer, nzb_u_inner, nzb_u_outer, & 593 nzb_v_inner, nzb_v_outer, nzb_w_inner, nzb_w_outer, nzb_2d 594 594 595 595 INTEGER, DIMENSION(:,:,:), POINTER :: flags
Note: See TracChangeset
for help on using the changeset viewer.