!> @file lpm_release_set.f90 !--------------------------------------------------------------------------------! ! This file is part of PALM. ! ! PALM is free software: you can redistribute it and/or modify it under the terms ! of the GNU General Public License as published by the Free Software Foundation, ! either version 3 of the License, or (at your option) any later version. ! ! PALM is distributed in the hope that it will be useful, but WITHOUT ANY ! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR ! A PARTICULAR PURPOSE. See the GNU General Public License for more details. ! ! You should have received a copy of the GNU General Public License along with ! PALM. If not, see . ! ! Copyright 1997-2014 Leibniz Universitaet Hannover !--------------------------------------------------------------------------------! ! ! Current revisions: ! ------------------ ! ! ! Former revisions: ! ----------------- ! $Id: lpm_release_set.f90 1683 2015-10-07 23:57:51Z boeske $ ! ! 1682 2015-10-07 23:56:08Z knoop ! Code annotations made doxygen readable ! ! 1359 2014-04-11 17:15:14Z hoffmann ! New particle structure integrated. ! Kind definition added to all floating point numbers. ! lpm_init changed form a subroutine to a module. ! ! 1327 2014-03-21 11:00:16Z raasch ! -netcdf output queries ! ! 1320 2014-03-20 08:40:49Z raasch ! ONLY-attribute added to USE-statements, ! kind-parameters added to all INTEGER and REAL declaration statements, ! kinds are defined in new module kinds, ! comment fields (!:) to be used for variable explanations added to ! all variable declaration statements ! ! 1036 2012-10-22 13:43:42Z raasch ! code put under GPL (PALM 3.9) ! ! 849 2012-03-15 10:35:09Z raasch ! initial revision (former part of advec_particles) ! ! ! Description: ! ------------ !> Release a new set of particles and, if required, particle tails. These !> particles/tails are added at the end of the existing arrays. Extend the !> respective particle and tail arrays, if neccessary. !------------------------------------------------------------------------------! SUBROUTINE lpm_release_set USE control_parameters, & ONLY: iran, message_string, netcdf_data_format USE lpm_init_mod, & ONLY: lpm_create_particle, PHASE_RELEASE USE grid_variables, & ONLY: dx, dy USE indices, & ONLY: nxl, nxr, nyn, nys USE kinds USE particle_attributes, & ONLY: minimum_tailpoint_distance, number_of_tails, particles, & particle_tail_coordinates, use_particle_tails IMPLICIT NONE INTEGER(iwp) :: ie !< INTEGER(iwp) :: is !< INTEGER(iwp) :: n !< INTEGER(iwp) :: nn !< CALL lpm_create_particle(PHASE_RELEASE) ! !-- particle tails currently not available ! ! ! !-- Set the beginning of the new particle tails and their age ! IF ( use_particle_tails ) THEN ! ! DO n = is, ie ! ! ! !-- New particles which should have a tail, already have got a ! !-- provisional tail id unequal zero (see lpm_init) ! IF ( particles(n)%tail_id /= 0 ) THEN ! ! number_of_tails = number_of_tails + 1 ! nn = number_of_tails ! particles(n)%tail_id = nn ! set the final tail id ! particle_tail_coordinates(1,1,nn) = particles(n)%x ! particle_tail_coordinates(1,2,nn) = particles(n)%y ! particle_tail_coordinates(1,3,nn) = particles(n)%z ! particle_tail_coordinates(1,4,nn) = particles(n)%class ! particles(n)%tailpoints = 1 ! ! IF ( minimum_tailpoint_distance /= 0.0 ) THEN ! particle_tail_coordinates(2,1,nn) = particles(n)%x ! particle_tail_coordinates(2,2,nn) = particles(n)%y ! particle_tail_coordinates(2,3,nn) = particles(n)%z ! particle_tail_coordinates(2,4,nn) = particles(n)%class ! particle_tail_coordinates(1:2,5,nn) = 0.0_wp ! particles(n)%tailpoints = 2 ! ENDIF ! ! ENDIF ! ! ENDDO ! ! ENDIF END SUBROUTINE lpm_release_set