Changeset 4122 for palm/trunk/SOURCE/lagrangian_particle_model_mod.f90
- Timestamp:
- Jul 26, 2019 1:11:56 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/lagrangian_particle_model_mod.f90
r4121 r4122 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Implement reset method as bottom boundary condition 28 ! 29 ! 4121 2019-07-26 10:01:22Z schwenkel 27 30 ! Implementation of an simple method for interpolating the velocities to 28 31 ! particle position … … 173 176 ! Description: 174 177 ! ------------ 178 !> The embedded LPM allows for studying transport and dispersion processes within 179 !> turbulent flows. This model including passive particles that do not show any 180 !> feedback on the turbulent flow. Further also particles with inertia and 181 !> cloud droplets ca be simulated explicitly. 175 182 !> 183 !> @todo test lcm 184 !> implement simple interpolation method for subgrid scale velocites 185 !> @note <Enter notes on the module> 186 !> @bug <Enter bug on the module> 176 187 !------------------------------------------------------------------------------! 177 188 MODULE lagrangian_particle_model_mod … … 253 264 USE NETCDF 254 265 #endif 255 256 257 USE arrays_3d, &258 ONLY:259 260 USE indices, &261 ONLY: nxl, nxr, nyn, nys, nzb, nzt, wall_flags_0262 263 USE kinds264 265 USE pegrid266 266 267 267 IMPLICIT NONE … … 1074 1074 CASE ( 'reflect' ) 1075 1075 ibc_par_b = 2 1076 1077 CASE ( 'reset' ) 1078 ibc_par_b = 3 1076 1079 1077 1080 CASE DEFAULT … … 4371 4374 INTEGER(iwp) :: i2 !< grid index (x) of current particle position 4372 4375 INTEGER(iwp) :: i3 !< grid index (x) of intermediate particle position 4376 INTEGER(iwp) :: index_reset !< index reset height 4373 4377 INTEGER(iwp) :: jr !< dummy for sorting algorithmus 4374 4378 INTEGER(iwp) :: j1 !< grid index (y) of old particle position … … 4379 4383 INTEGER(iwp) :: k3 !< grid index (z) of intermediate particle position 4380 4384 INTEGER(iwp) :: n !< particle number 4385 INTEGER(iwp) :: particles_top !< maximum reset height 4381 4386 INTEGER(iwp) :: t_index !< running index for intermediate particle timesteps in reflection algorithmus 4382 4387 INTEGER(iwp) :: t_index_number !< number of intermediate particle timesteps in reflection algorithmus … … 4417 4422 REAL(wp) :: prt_y !< current particle position (y) 4418 4423 REAL(wp) :: prt_z !< current particle position (z) 4424 REAL(wp) :: ran_val !< location of wall in z 4425 REAL(wp) :: reset_top !< location of wall in z 4419 4426 REAL(wp) :: t_old !< previous reflection time 4420 4427 REAL(wp) :: tmp_t !< dummy for sorting algorithmus … … 4487 4494 particles(n)%rvar3 < 0.0_wp ) THEN 4488 4495 particles(n)%rvar3 = -particles(n)%rvar3 4496 ENDIF 4497 ELSEIF ( ibc_par_b == 3 ) THEN 4498 ! 4499 !-- Find reset height. @note this works only in non-strechted cases 4500 particles_top = INT( pst(1) / dz(1) ) 4501 index_reset = MINLOC( prt_count(nzb+1:particles_top,j,i), DIM = 1 ) 4502 reset_top = zu(index_reset) 4503 iran_part = iran_part + myid 4504 ran_val = random_function( iran_part ) 4505 particles(n)%z = reset_top * ( 1.0 + ( ran_val / 10.0_wp) ) 4506 particles(n)%speed_z = 0.0_wp 4507 IF ( curvature_solution_effects ) THEN 4508 particles(n)%radius = particles(n)%aux1 4509 ELSE 4510 particles(n)%radius = 1.0E-8 4489 4511 ENDIF 4490 4512 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.