Changeset 1575
- Timestamp:
- Mar 27, 2015 9:56:27 AM (10 years ago)
- Location:
- palm/trunk
- Files:
-
- 1 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SCRIPTS/subjob
r1548 r1575 23 23 # Current revisions: 24 24 # ------------------ 25 # 25 # mpp2-queues added to lccrayh 26 26 # 27 27 # Former revisions: … … 417 417 esac;; 418 418 (lccrayh) case $ndq in 419 (dataq|mpp1q|mpp1testq| smp1q|smp1testq|specialm1q) error=false;;419 (dataq|mpp1q|mpp1testq|mpp2q|mpp2testq|smp1q|smp1testq|specialm1q) error=false;; 420 420 (*) error=true;; 421 421 esac;; -
palm/trunk/SOURCE/Makefile
r1552 r1575 20 20 # Current revisions: 21 21 # ------------------ 22 # 22 # +poismg_fast 23 23 # 24 24 # Former revisions: … … 220 220 init_pegrid.f90 init_pt_anomaly.f90 init_rankine.f90 init_slope.f90 \ 221 221 interaction_droplets_ptq.f90 land_surface_model.f90 local_flush.f90 \ 222 222 local_getenv.f90 local_stop.f90 local_system.f90 local_tremain.f90 \ 223 223 local_tremain_ini.f90 lpm.f90 lpm_advec.f90 lpm_boundary_conds.f90 \ 224 224 lpm_calc_liquid_water_content.f90 lpm_collision_kernels.f90 \ … … 231 231 lpm_write_exchange_statistics.f90 lpm_write_restart_file.f90 \ 232 232 ls_forcing.f90 message.f90 microphysics.f90 modules.f90 mod_kinds.f90 \ 233 mod_particle_attributes.f90 netcdf.f90 nudging.f90 \234 pa ckage_parin.f90 palm.f90 parin.f90 plant_canopy_model.f90 poisfft.f90 \235 poismg .f90 prandtl_fluxes.f90 pres.f90 print_1d.f90 production_e.f90 \233 mod_particle_attributes.f90 netcdf.f90 nudging.f90 package_parin.f90 \ 234 palm.f90 parin.f90 plant_canopy_model.f90 poisfft.f90 poismg.f90 \ 235 poismg_fast.f90 prandtl_fluxes.f90 pres.f90 print_1d.f90 production_e.f90 \ 236 236 prognostic_equations.f90 progress_bar.f90 radiation_model.f90 \ 237 237 random_function.f90 random_gauss.f90 random_generator_parallel.f90 \ … … 249 249 user_data_output_mask.f90 user_define_netcdf_grid.f90 \ 250 250 user_dvrp_coltab.f90 user_header.f90 user_init.f90 \ 251 user_init_3d_model.f90 user_init_grid.f90 \ 252 user_init_land_surface.f90 \ 251 user_init_3d_model.f90 user_init_grid.f90 user_init_land_surface.f90 \ 253 252 user_init_plant_canopy.f90 user_last_actions.f90 user_lpm_advec.f90 \ 254 253 user_lpm_init.f90 user_lpm_set_attributes.f90 user_module.f90 \ … … 413 412 poisfft.o: modules.o cpulog.o fft_xy.o mod_kinds.o tridia_solver.o 414 413 poismg.o: modules.o cpulog.o mod_kinds.o 414 poismg_fast.o: modules.o cpulog.o mod_kinds.o 415 415 prandtl_fluxes.o: modules.o mod_kinds.o 416 pres.o: modules.o cpulog.o mod_kinds.o poisfft.o 416 pres.o: modules.o cpulog.o mod_kinds.o poisfft.o poismg_fast.o 417 417 print_1d.o: modules.o cpulog.o mod_kinds.o 418 418 production_e.o: modules.o mod_kinds.o wall_fluxes.o -
palm/trunk/SOURCE/calc_spectra.f90
r1512 r1575 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! adjustments for psolver-queries 23 23 ! 24 24 ! Former revisions: … … 113 113 ! 114 114 !-- Reallocate array d in required size 115 IF ( psolver == 'multigrid' ) THEN115 IF ( psolver(1:9) == 'multigrid' ) THEN 116 116 DEALLOCATE( d ) 117 117 ALLOCATE( d(nzb+1:nzt,nys:nyn,nxl:nxr) ) -
palm/trunk/SOURCE/check_parameters.f90
r1574 r1575 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! multigrid_fast added as allowed pressure solver 23 23 ! 24 24 ! Former revisions: … … 716 716 !-- Check whether there are any illegal values 717 717 !-- Pressure solver: 718 IF ( psolver /= 'poisfft' .AND. &719 psolver /= ' sor' .AND. psolver /= 'multigrid' ) THEN718 IF ( psolver /= 'poisfft' .AND. psolver /= 'sor' .AND. & 719 psolver /= 'multigrid' .AND. psolver /= 'multigrid_fast' ) THEN 720 720 message_string = 'unknown solver for perturbation pressure: psolver' // & 721 721 ' = "' // TRIM( psolver ) // '"' … … 723 723 ENDIF 724 724 725 IF ( psolver == 'multigrid' ) THEN725 IF ( psolver(1:9) == 'multigrid' ) THEN 726 726 IF ( cycle_mg == 'w' ) THEN 727 727 gamma_mg = 2 … … 1715 1715 !-- and tools do not work with non-cyclic boundary conditions. 1716 1716 IF ( bc_lr /= 'cyclic' .OR. bc_ns /= 'cyclic' ) THEN 1717 IF ( psolver /= 'multigrid' ) THEN1717 IF ( psolver(1:9) /= 'multigrid' ) THEN 1718 1718 message_string = 'non-cyclic lateral boundaries do not allow ' // & 1719 1719 'psolver = "' // TRIM( psolver ) // '"' -
palm/trunk/SOURCE/header.f90
r1561 r1575 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! adjustments for psolver-queries, output of seed_follows_topography 23 23 ! 24 24 ! Former revisions: … … 227 227 particles_per_point, pdx, pdy, pdz, psb, psl, psn, psr, pss, & 228 228 pst, radius, radius_classes, random_start_position, & 229 seed_follows_topography, & 229 230 total_number_of_particles, use_particle_tails, & 230 231 use_sgs_for_particles, total_number_of_tails, & … … 424 425 ELSEIF ( psolver == 'sor' ) THEN 425 426 WRITE ( io, 112 ) nsor_ini, nsor, omega_sor 426 ELSEIF ( psolver == 'multigrid' ) THEN427 WRITE ( io, 135 ) cycle_mg, maximum_grid_level, ngsrb427 ELSEIF ( psolver(1:9) == 'multigrid' ) THEN 428 WRITE ( io, 135 ) TRIM(psolver), cycle_mg, maximum_grid_level, ngsrb 428 429 IF ( mg_cycles == -1 ) THEN 429 430 WRITE ( io, 140 ) residual_limit … … 1788 1789 IF ( use_sgs_for_particles ) WRITE ( io, 488 ) dt_min_part 1789 1790 IF ( random_start_position ) WRITE ( io, 481 ) 1791 IF ( seed_follows_topography ) WRITE ( io, 496 ) 1790 1792 IF ( particles_per_point > 1 ) WRITE ( io, 489 ) particles_per_point 1791 1793 WRITE ( io, 495 ) total_number_of_particles … … 1907 1909 133 FORMAT (' Precipitation parameterization via Kessler-Scheme') 1908 1910 134 FORMAT (' --> Additional prognostic equation for a passive scalar') 1909 135 FORMAT (' --> Solve perturbation pressure via multigridmethod (', &1911 135 FORMAT (' --> Solve perturbation pressure via ',A,' method (', & 1910 1912 A,'-cycle)'/ & 1911 1913 ' number of grid levels: ',I2/ & … … 2326 2328 F8.2,' s'/) 2327 2329 495 FORMAT (' Number of particles in total domain: ',I10/) 2330 496 FORMAT (' Initial vertical particle positions are interpreted ', & 2331 'as relative to the given topography') 2328 2332 500 FORMAT (//' 1D-Model parameters:'/ & 2329 2333 ' -------------------'// & -
palm/trunk/SOURCE/init_3d_model.f90
r1552 r1575 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! adjustments for psolver-queries 23 23 ! 24 24 ! Former revisions: … … 356 356 IF ( psolver == 'sor' ) THEN 357 357 ALLOCATE( p_loc(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 358 ELSEIF ( psolver == 'multigrid' ) THEN358 ELSEIF ( psolver(1:9) == 'multigrid' ) THEN 359 359 ! 360 360 !-- For performance reasons, multigrid is using one ghost layer only … … 1135 1135 ! 1136 1136 !-- In case of iterative solvers, p must get an initial value 1137 IF ( psolver == 'multigrid' .OR. psolver == 'sor' ) p = 0.0_wp1137 IF ( psolver(1:9) == 'multigrid' .OR. psolver == 'sor' ) p = 0.0_wp 1138 1138 1139 1139 ! -
palm/trunk/SOURCE/init_grid.f90
r1558 r1575 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! adjustments for psolver-queries 23 23 ! 24 24 ! Former revisions: … … 332 332 !-- containing with appropriate grid information is created for these 333 333 !-- solvers. 334 IF ( psolver /= 'multigrid' ) THEN334 IF ( psolver(1:9) /= 'multigrid' ) THEN 335 335 ALLOCATE( ddzu_pres(1:nzt+1) ) 336 336 ddzu_pres = ddzu … … 341 341 !-- In case of multigrid method, compute grid lengths and grid factors for the 342 342 !-- grid levels 343 IF ( psolver == 'multigrid' ) THEN343 IF ( psolver(1:9) == 'multigrid' ) THEN 344 344 345 345 ALLOCATE( ddx2_mg(maximum_grid_level), ddy2_mg(maximum_grid_level), & … … 1047 1047 ! 1048 1048 !-- Calculate wall flag arrays for the multigrid method 1049 IF ( psolver == 'multigrid' ) THEN1049 IF ( psolver(1:9) == 'multigrid' ) THEN 1050 1050 ! 1051 1051 !-- Gridpoint increment of the current level -
palm/trunk/SOURCE/init_pegrid.f90
r1566 r1575 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! adjustments for psolver-queries, calculation of ngp_xz added 23 23 ! 24 24 ! Former revisions: … … 761 761 !-- Calculate number of grid levels necessary for the multigrid poisson solver 762 762 !-- as well as the gridpoint indices on each level 763 IF ( psolver == 'multigrid' ) THEN763 IF ( psolver(1:9) == 'multigrid' ) THEN 764 764 765 765 ! … … 977 977 !-- Do these calculations for the model grid and (if necessary) also 978 978 !-- for the coarser grid levels used in the multigrid method 979 ALLOCATE ( ngp_ yz(0:maximum_grid_level), type_xz(0:maximum_grid_level),&980 type_ yz(0:maximum_grid_level) )979 ALLOCATE ( ngp_xz(0:maximum_grid_level), ngp_yz(0:maximum_grid_level), & 980 type_xz(0:maximum_grid_level), type_yz(0:maximum_grid_level) ) 981 981 982 982 nxl_l = nxl; nxr_l = nxr; nys_l = nys; nyn_l = nyn; nzb_l = nzb; nzt_l = nzt … … 1007 1007 ! 1008 1008 !-- Definition of MPI-datatypes for multigrid method (coarser level grids) 1009 IF ( psolver == 'multigrid' ) THEN1009 IF ( psolver(1:9) == 'multigrid' ) THEN 1010 1010 ! 1011 1011 !-- Definition of MPI-datatyoe as above, but only 1 ghost level is used 1012 1012 DO i = maximum_grid_level, 1 , -1 1013 1013 1014 ngp_xz(i) = (nzt_l - nzb_l + 2) * (nxr_l - nxl_l + 3) 1014 1015 ngp_yz(i) = (nzt_l - nzb_l + 2) * (nyn_l - nys_l + 3) 1015 1016 … … 1129 1130 ! 1130 1131 !-- Allocate wall flag arrays used in the multigrid solver 1131 IF ( psolver == 'multigrid' ) THEN1132 IF ( psolver(1:9) == 'multigrid' ) THEN 1132 1133 1133 1134 DO i = maximum_grid_level, 1, -1 -
palm/trunk/SOURCE/lpm_init.f90
r1360 r1575 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! initial vertical particle position is allowed to follow the topography 23 23 ! 24 24 ! Former revisions: … … 101 101 102 102 USE indices, & 103 ONLY: nx, nxl, nxlg, nxrg, nxr, ny, nyn, nys, nyng, nysg, nz, nzb, nzt 103 ONLY: nx, nxl, nxlg, nxrg, nxr, ny, nyn, nys, nyng, nysg, nz, nzb, & 104 nzb_w_inner, nzt 104 105 105 106 USE kinds … … 126 127 prt_count, psb, psl, psn, psr, pss, pst, & 127 128 radius, random_start_position, read_particles_from_restartfile,& 128 s kip_particles_for_tail, sort_count,&129 seed_follows_topography, skip_particles_for_tail, sort_count, & 129 130 tail_mask, total_number_of_particles, total_number_of_tails, & 130 131 use_particle_tails, use_sgs_for_particles, & … … 649 650 pos_x = psl(i) 650 651 651 652 xloop: DO WHILE ( pos_x <= psr(i) ) 652 653 653 654 IF ( pos_x >= ( nxl - 0.5_wp ) * dx .AND. & … … 738 739 tmp_particle%tail_id = 0 739 740 ENDIF 741 ! 742 !-- Determine the grid indices of the particle position 740 743 ip = ( tmp_particle%x + 0.5_wp * dx ) * ddx 741 744 jp = ( tmp_particle%y + 0.5_wp * dy ) * ddy 742 745 kp = tmp_particle%z / dz + 1 + offset_ocean_nzt_m1 746 747 IF ( seed_follows_topography ) THEN 748 ! 749 !-- Particle height is given relative to topography 750 kp = kp + nzb_w_inner(jp,ip) 751 tmp_particle%z = tmp_particle%z + zw(kp) 752 IF ( kp > nzt ) THEN 753 pos_x = pos_x + pdx(i) 754 CYCLE xloop 755 ENDIF 756 ENDIF 743 757 744 758 local_count(kp,jp,ip) = local_count(kp,jp,ip) + 1 … … 758 772 pos_x = pos_x + pdx(i) 759 773 760 ENDDO 774 ENDDO xloop 761 775 762 776 ENDIF -
palm/trunk/SOURCE/mod_particle_attributes.f90
r1360 r1575 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! +seed_follows_topography 23 23 ! 24 24 ! Former revisions: … … 69 69 particle_advection = .FALSE., random_start_position = .FALSE., & 70 70 read_particles_from_restartfile = .TRUE., & 71 seed_follows_topography = .FALSE., & 71 72 uniform_particles = .TRUE., use_kernel_tables = .FALSE., & 72 73 use_particle_tails = .FALSE., use_sgs_for_particles = .FALSE., & -
palm/trunk/SOURCE/modules.f90
r1561 r1575 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! +ngp_xz 23 23 ! 24 24 ! Former revisions: … … 1304 1304 1305 1305 1306 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: ngp_ yz, type_xz, type_yz1306 INTEGER(iwp), DIMENSION(:), ALLOCATABLE :: ngp_xz, ngp_yz, type_xz, type_yz 1307 1307 1308 1308 LOGICAL :: left_border_pe = .FALSE., north_border_pe = .FALSE., & -
palm/trunk/SOURCE/package_parin.f90
r1554 r1575 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! +seed_follows_topography in particles_par 23 23 ! 24 24 ! Former revisions: … … 129 129 psb, psl, psn, psr, pss, pst, radius, radius_classes, & 130 130 random_start_position, read_particles_from_restartfile, & 131 s kip_particles_for_tail, use_particle_tails,&132 use_ sgs_for_particles, vertical_particle_advection,&133 write_particle_statistics131 seed_follows_topography, skip_particles_for_tail, & 132 use_particle_tails, use_sgs_for_particles, & 133 vertical_particle_advection, write_particle_statistics 134 134 135 135 USE plant_canopy_model_mod, & … … 212 212 radius_classes, random_start_position, & 213 213 read_particles_from_restartfile, & 214 seed_follows_topography, & 214 215 skip_particles_for_tail, & 215 216 use_particle_tails, use_sgs_for_particles, & -
palm/trunk/SOURCE/pres.f90
r1343 r1575 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! poismg_fast + respective module added, adjustments for psolver-queries 23 23 ! 24 24 ! Former revisions: … … 114 114 ONLY: poisfft 115 115 116 USE poismg_mod 117 116 118 USE statistics, & 117 119 ONLY: statistic_regions, sums_divnew_l, sums_divold_l, weight_pres, & … … 144 146 !-- Multigrid method expects array d to have one ghost layer. 145 147 !-- 146 IF ( psolver == 'multigrid' ) THEN148 IF ( psolver(1:9) == 'multigrid' ) THEN 147 149 148 150 DEALLOCATE( d ) … … 293 295 CALL cpu_log( log_point_s(1), 'divergence', 'start' ) 294 296 295 IF ( psolver == 'multigrid' ) THEN297 IF ( psolver(1:9) == 'multigrid' ) THEN 296 298 !$OMP PARALLEL DO SCHEDULE( STATIC ) 297 299 DO i = nxl-1, nxr+1 … … 388 390 ! 389 391 !-- Compute the pressure perturbation solving the Poisson equation 390 IF ( psolver (1:7)== 'poisfft' ) THEN392 IF ( psolver == 'poisfft' ) THEN 391 393 392 394 ! 393 395 !-- Solve Poisson equation via FFT and solution of tridiagonal matrices 394 IF ( psolver == 'poisfft' ) THEN 395 396 CALL poisfft( d ) 397 398 ENDIF 396 CALL poisfft( d ) 399 397 400 398 ! … … 492 490 tend = p_loc 493 491 494 ELSEIF ( psolver == 'multigrid' ) THEN492 ELSEIF ( psolver(1:9) == 'multigrid' ) THEN 495 493 496 494 ! … … 511 509 ENDIF 512 510 513 CALL poismg( tend ) 511 IF ( psolver == 'multigrid' ) THEN 512 CALL poismg( tend ) 513 ELSE 514 CALL poismg_fast( tend ) 515 ENDIF 514 516 515 517 IF ( gathered_size > subdomain_size ) THEN
Note: See TracChangeset
for help on using the changeset viewer.