Changeset 4020


Ignore:
Timestamp:
Jun 6, 2019 2:57:48 PM (5 years ago)
Author:
schwenkel
Message:

removing submodules

File:
1 edited

Legend:

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

    r4018 r4020  
    2525! -----------------
    2626! $Id$
     27! Removing submodules
     28!
     29! 4018 2019-06-06 13:41:50Z eckhard
    2730! Bugfix for former revision
    2831!
     
    301304    REAL(wp) ::  z0_av_global                              !< horizontal mean value of z0
    302305   
     306    REAL(wp) ::  rclass_lbound !<
     307    REAL(wp) ::  rclass_ubound !<
     308
     309    REAL(wp), PARAMETER ::  c_0 = 3.0_wp         !< parameter for lagrangian timescale
     310   
    303311    REAL(wp), DIMENSION(max_number_of_particle_groups) ::  density_ratio = 9999999.9_wp  !< namelist parameter (see documentation)
    304312    REAL(wp), DIMENSION(max_number_of_particle_groups) ::  pdx = 9999999.9_wp            !< namelist parameter (see documentation)
     
    315323    REAL(wp), DIMENSION(:), ALLOCATABLE     ::  log_z_z0   !< Precalculate LOG(z/z0) 
    316324   
     325    INTEGER(iwp), PARAMETER ::  NR_2_direction_move = 10000 !<
     326    INTEGER(iwp)            ::  nr_move_north               !<
     327    INTEGER(iwp)            ::  nr_move_south               !<
     328
     329    TYPE(particle_type), DIMENSION(:), ALLOCATABLE ::  move_also_north
     330    TYPE(particle_type), DIMENSION(:), ALLOCATABLE ::  move_also_south
    317331   
     332    REAL(wp) ::  epsilon       !<
     333    REAL(wp) ::  urms          !<
     334
     335    REAL(wp), DIMENSION(:),   ALLOCATABLE ::  epsclass  !< dissipation rate class
     336    REAL(wp), DIMENSION(:),   ALLOCATABLE ::  radclass  !< radius class
     337    REAL(wp), DIMENSION(:),   ALLOCATABLE ::  winf      !<
    318338   
    319    
    320     INTEGER(iwp) :: ip
    321     INTEGER(iwp) :: jp
    322     INTEGER(iwp) :: kp
    323    
     339    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  ec        !<
     340    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  ecf       !<
     341    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  gck       !<
     342    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  hkernel   !<
     343    REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  hwratio   !<
     344       
     345    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  ckernel !<       
     346       
    324347    INTEGER(iwp), PARAMETER         :: PHASE_INIT    = 1  !<
    325348    INTEGER(iwp), PARAMETER, PUBLIC :: PHASE_RELEASE = 2  !<
     
    340363           lpm_rrd_local, &
    341364           lpm_check_parameters
    342 !            lpm_check_data_output
    343365
    344366    PUBLIC lagrangian_particle_model, &
    345            ip, &
    346            jp, &                       
    347            kp, &
    348367           max_number_particles_per_gridbox, &
    349368           radius_merge, &
     
    358377       MODULE PROCEDURE lpm_check_parameters
    359378    END INTERFACE lpm_check_parameters
    360 !     
    361 !     INTERFACE lpm_check_data_output
    362 !        MODULE PROCEDURE lpm_check_data_output
    363 !     END INTERFACE lpm_check_data_output   
    364379
    365380    INTERFACE lpm_parin
     
    403418    END INTERFACE lpm_wrd_global   
    404419       
    405     INTERFACE 
    406        MODULE SUBROUTINE lpm_advec(ip,jp,kp)
    407        END SUBROUTINE
     420    INTERFACE lpm_advec
     421       MODULE PROCEDURE lpm_advec
     422    END INTERFACE lpm_advec
     423   
     424    INTERFACE lpm_calc_liquid_water_content
     425       MODULE PROCEDURE lpm_calc_liquid_water_content
    408426    END INTERFACE
    409427   
    410     INTERFACE 
    411        MODULE SUBROUTINE lpm_calc_liquid_water_content
    412        END SUBROUTINE
     428    INTERFACE lpm_boundary_conds
     429       MODULE PROCEDURE lpm_boundary_conds
     430    END INTERFACE lpm_boundary_conds
     431   
     432    INTERFACE lpm_droplet_condensation
     433       MODULE PROCEDURE lpm_droplet_condensation
    413434    END INTERFACE
    414435   
    415     INTERFACE 
    416        MODULE SUBROUTINE lpm_boundary_conds(location_bc, i,j,k)
    417            CHARACTER (LEN=*), INTENT(IN) ::  location_bc !< case statement for boundary conditions
    418             INTEGER(iwp), INTENT(IN) ::  i !< grid index of particle box along x
    419             INTEGER(iwp), INTENT(IN) ::  j !< grid index of particle box along y
    420             INTEGER(iwp), INTENT(IN) ::  k !< grid index of particle box along z
    421 
    422        END SUBROUTINE
    423     END INTERFACE
     436    INTERFACE lpm_droplet_collision
     437       MODULE PROCEDURE lpm_droplet_collision
     438    END INTERFACE lpm_droplet_collision
    424439   
    425     INTERFACE 
    426        MODULE SUBROUTINE lpm_droplet_condensation(i,j,k)
    427             INTEGER(iwp), INTENT(IN) ::  i !< grid index of particle box along x
    428             INTEGER(iwp), INTENT(IN) ::  j !< grid index of particle box along y
    429             INTEGER(iwp), INTENT(IN) ::  k !< grid index of particle box along z
    430        END SUBROUTINE
    431     END INTERFACE
     440    INTERFACE lpm_init_kernels
     441       MODULE PROCEDURE lpm_init_kernels
     442    END INTERFACE lpm_init_kernels
    432443   
    433     INTERFACE 
    434        MODULE SUBROUTINE lpm_droplet_collision(i,j,k)
    435             INTEGER(iwp), INTENT(IN) ::  i !< grid index of particle box along x
    436             INTEGER(iwp), INTENT(IN) ::  j !< grid index of particle box along y
    437             INTEGER(iwp), INTENT(IN) ::  k !< grid index of particle box along z
    438        END SUBROUTINE
    439     END INTERFACE
     444    INTERFACE lpm_splitting
     445       MODULE PROCEDURE lpm_splitting
     446    END INTERFACE lpm_splitting
    440447   
    441     INTERFACE 
    442        MODULE SUBROUTINE lpm_init_kernels
    443        END SUBROUTINE
    444     END INTERFACE
     448    INTERFACE lpm_merging
     449       MODULE PROCEDURE lpm_merging
     450    END INTERFACE lpm_merging
    445451   
    446     INTERFACE 
    447        MODULE SUBROUTINE lpm_splitting
    448        END SUBROUTINE
    449     END INTERFACE
     452    INTERFACE lpm_exchange_horiz
     453       MODULE PROCEDURE lpm_exchange_horiz
     454    END INTERFACE lpm_exchange_horiz
     455
     456    INTERFACE lpm_move_particle
     457       MODULE PROCEDURE lpm_move_particle
     458    END INTERFACE lpm_move_particle
     459
     460    INTERFACE realloc_particles_array
     461       MODULE PROCEDURE realloc_particles_array
     462    END INTERFACE realloc_particles_array
     463
     464    INTERFACE dealloc_particles_array
     465       MODULE PROCEDURE dealloc_particles_array
     466    END INTERFACE dealloc_particles_array
    450467   
    451     INTERFACE 
    452        MODULE SUBROUTINE lpm_merging
    453        END SUBROUTINE
    454     END INTERFACE   
     468    INTERFACE lpm_sort_in_subboxes
     469       MODULE PROCEDURE lpm_sort_in_subboxes
     470    END INTERFACE lpm_sort_in_subboxes
     471
     472    INTERFACE lpm_sort_timeloop_done
     473       MODULE PROCEDURE lpm_sort_timeloop_done
     474    END INTERFACE lpm_sort_timeloop_done
    455475   
    456     INTERFACE
    457        MODULE SUBROUTINE lpm_exchange_horiz
    458        END SUBROUTINE
    459     END INTERFACE
    460 
    461     INTERFACE
    462        MODULE SUBROUTINE lpm_move_particle
    463        END SUBROUTINE
    464     END INTERFACE
    465 
    466     INTERFACE
    467        MODULE SUBROUTINE realloc_particles_array(i,j,k,size_in)
    468           INTEGER(iwp), INTENT(IN) ::  i !< grid index of particle box along x
    469           INTEGER(iwp), INTENT(IN) ::  j !< grid index of particle box along y
    470           INTEGER(iwp), INTENT(IN) ::  k !< grid index of particle box along z
    471           INTEGER(iwp), INTENT(IN), OPTIONAL ::  size_in !< grid index of particle box along z
    472         END SUBROUTINE 
    473     END INTERFACE
    474 
    475     INTERFACE
    476        MODULE SUBROUTINE dealloc_particles_array
    477        END SUBROUTINE
    478     END INTERFACE
    479    
    480     INTERFACE 
    481        MODULE SUBROUTINE lpm_sort_in_subboxes
    482        END SUBROUTINE
    483     END INTERFACE
    484 
    485     INTERFACE 
    486        MODULE SUBROUTINE lpm_sort_timeloop_done
    487        END SUBROUTINE
    488     END INTERFACE
    489    
    490     INTERFACE 
    491        MODULE SUBROUTINE lpm_pack
    492        END SUBROUTINE
    493     END INTERFACE
     476    INTERFACE lpm_pack
     477       MODULE PROCEDURE lpm_pack
     478    END INTERFACE lpm_pack
    494479   
    495480   
     
    31083093 END SUBROUTINE lpm_rrd_global
    31093094
    3110  
    3111 END MODULE lagrangian_particle_model_mod
    3112 
    31133095
    31143096!------------------------------------------------------------------------------!
     
    31193101!> grid scale) as well as the boundary conditions of particles. As a next step
    31203102!> this submodule should be excluded as an own file.
    3121 !------------------------------------------------------------------------------!
    3122 SUBMODULE (lagrangian_particle_model_mod) lpm_dynamics
    3123 
    3124   REAL(wp), PARAMETER ::  c_0 = 3.0_wp         !< parameter for lagrangian timescale
    3125  
    3126  CONTAINS
    3127    
    3128  MODULE SUBROUTINE lpm_advec (ip,jp,kp)
     3103!------------------------------------------------------------------------------!   
     3104 SUBROUTINE lpm_advec (ip,jp,kp)
    31293105
    31303106    LOGICAL ::  subbox_at_wall !< flag to see if the current subgridbox is adjacent to a wall
     
    41214097!> (see offset_ocean_*)
    41224098!------------------------------------------------------------------------------!
    4123  MODULE SUBROUTINE lpm_boundary_conds( location_bc , i, j, k )
     4099 SUBROUTINE lpm_boundary_conds( location_bc , i, j, k )
    41244100
    41254101    CHARACTER (LEN=*), INTENT(IN) ::  location_bc !< general mode: boundary conditions at bottom/top of the model domain
     
    46244600 
    46254601 
    4626 END SUBMODULE
    4627  
    4628 
    4629 !------------------------------------------------------------------------------!
    4630 ! Description:
    4631 ! ------------
    4632 !> This is a submodule of the lagrangian particle model. It contains all
    4633 !> microphysical processes of the lpm. This includes activation, condensation
    4634 !> and collision of cloud and rain droplets. 
    4635 !> As a next step this submodule should be excluded as an own file.
    4636 !------------------------------------------------------------------------------!
    4637 SUBMODULE (lagrangian_particle_model_mod) lpm_microphysics
    4638 
    4639     REAL(wp) ::  epsilon       !<
    4640     REAL(wp) ::  urms          !<
    4641 
    4642     REAL(wp), DIMENSION(:),   ALLOCATABLE ::  epsclass  !< dissipation rate class
    4643     REAL(wp), DIMENSION(:),   ALLOCATABLE ::  radclass  !< radius class
    4644     REAL(wp), DIMENSION(:),   ALLOCATABLE ::  winf      !<
    4645    
    4646     REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  ec        !<
    4647     REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  ecf       !<
    4648     REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  gck       !<
    4649     REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  hkernel   !<
    4650     REAL(wp), DIMENSION(:,:), ALLOCATABLE ::  hwratio   !<
    4651    
    4652     REAL(wp) ::  rclass_lbound !<
    4653     REAL(wp) ::  rclass_ubound !<   
    4654     REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  ckernel !<   
    4655  
    4656  CONTAINS
    4657  
    4658  MODULE SUBROUTINE lpm_droplet_condensation (i,j,k)
     4602 SUBROUTINE lpm_droplet_condensation (i,j,k)
    46594603
    46604604    INTEGER(iwp), INTENT(IN) :: i              !<
     
    49254869!> Calculate the liquid water content for each grid box.
    49264870!------------------------------------------------------------------------------!
    4927  MODULE SUBROUTINE lpm_calc_liquid_water_content
     4871 SUBROUTINE lpm_calc_liquid_water_content
    49284872
    49294873
     
    49954939!>              collision efficiencies.
    49964940!------------------------------------------------------------------------------!
    4997  MODULE SUBROUTINE lpm_droplet_collision (i,j,k)
     4941 SUBROUTINE lpm_droplet_collision (i,j,k)
    49984942   
    49994943    INTEGER(iwp), INTENT(IN) ::  i        !<
     
    52225166!> dissipation classes, calculated at simulation start only.
    52235167!------------------------------------------------------------------------------!
    5224  MODULE SUBROUTINE lpm_init_kernels
     5168 SUBROUTINE lpm_init_kernels
    52255169
    52265170    INTEGER(iwp) ::  i !<
     
    60155959! Unterstrasser and Soelch, 2014.
    60165960!------------------------------------------------------------------------------!
    6017  MODULE SUBROUTINE lpm_splitting
     5961 SUBROUTINE lpm_splitting
    60185962
    60195963    INTEGER(iwp) ::  i                !<
     
    65416485! Unterstrasser and Soelch, 2014.
    65426486!------------------------------------------------------------------------------!
    6543  MODULE SUBROUTINE lpm_merging
     6487 SUBROUTINE lpm_merging
    65446488
    65456489    INTEGER(iwp) ::  i         !<     
     
    66066550
    66076551 
    6608 END SUBMODULE
    6609 
    6610 
    6611 !------------------------------------------------------------------------------!
    6612 ! Description:
    6613 ! ------------
    6614 !> Exchange of particles between the subdomains.
    6615 !------------------------------------------------------------------------------!
    6616 SUBMODULE(lagrangian_particle_model_mod) lpm_utilities
    6617 
    6618     INTEGER(iwp), PARAMETER ::  NR_2_direction_move = 10000 !<
    6619     INTEGER(iwp)            ::  nr_move_north               !<
    6620     INTEGER(iwp)            ::  nr_move_south               !<
    6621 
    6622     TYPE(particle_type), DIMENSION(:), ALLOCATABLE ::  move_also_north
    6623     TYPE(particle_type), DIMENSION(:), ALLOCATABLE ::  move_also_south
    6624 
    6625  CONTAINS
     6552
    66266553 
    66276554!------------------------------------------------------------------------------!
     
    66396566!> be adjusted.
    66406567!------------------------------------------------------------------------------!
    6641  MODULE SUBROUTINE lpm_exchange_horiz
     6568 SUBROUTINE lpm_exchange_horiz
    66426569
    66436570    INTEGER(iwp) ::  i                 !< grid index (x) of particle positition
     
    74547381!> cell.
    74557382!------------------------------------------------------------------------------!
    7456  MODULE SUBROUTINE lpm_move_particle
     7383 SUBROUTINE lpm_move_particle
    74577384 
    74587385    INTEGER(iwp)        ::  i           !< grid index (x) of particle position
     
    75877514!> particle array to assure enough memory is available.
    75887515!------------------------------------------------------------------------------!
    7589  MODULE SUBROUTINE realloc_particles_array ( i, j, k, size_in )
     7516 SUBROUTINE realloc_particles_array ( i, j, k, size_in )
    75907517
    75917518    INTEGER(iwp), INTENT(IN)                       ::  i              !<
     
    76457572!> Not needed but allocated space for particles is dealloced.
    76467573!------------------------------------------------------------------------------!
    7647  MODULE SUBROUTINE dealloc_particles_array
     7574 SUBROUTINE dealloc_particles_array
    76487575
    76497576 
     
    77237650!> Sort all particles into the 8 respective subgrid boxes
    77247651!------------------------------------------------------------------------------!
    7725    MODULE SUBROUTINE lpm_sort_in_subboxes
     7652   SUBROUTINE lpm_sort_in_subboxes
    77267653
    77277654       INTEGER(iwp) ::  i  !<
     
    78027729!> Move all particles not marked for deletion to lowest indices (packing)
    78037730!------------------------------------------------------------------------------!
    7804     MODULE SUBROUTINE lpm_pack
     7731    SUBROUTINE lpm_pack
    78057732   
    78067733       INTEGER(iwp) ::  n       !<
     
    78457772!> complete the LES timestep.
    78467773!------------------------------------------------------------------------------!
    7847     MODULE SUBROUTINE lpm_sort_timeloop_done
     7774    SUBROUTINE lpm_sort_timeloop_done
    78487775
    78497776       INTEGER(iwp) :: end_index     !< particle end index for each sub-box
     
    79247851
    79257852    END SUBROUTINE lpm_sort_timeloop_done
    7926  
    7927  
    7928 END SUBMODULE
     7853
     7854END MODULE lagrangian_particle_model_mod
Note: See TracChangeset for help on using the changeset viewer.