Changeset 4586


Ignore:
Timestamp:
Jul 1, 2020 4:16:43 PM (4 years ago)
Author:
gronemeier
Message:

renamed Richardson flux number into gradient Richardson number (model_1d_mod.f90, turbulence_closure_mod.f90, header.f90, surface_mod.f90) and zeta (header.f90);
do not add whitespaces at current-revision section (document_changes)

Location:
palm/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SCRIPTS/document_changes

    r4481 r4586  
    33# This file is part of the PALM model system.
    44#
    5 # PALM is free software: you can redistribute it and/or modify it under the 
    6 # terms of the GNU General Public License as published by the Free Software 
    7 # Foundation, either version 3 of the License, or (at your option) any later 
     5# PALM is free software: you can redistribute it and/or modify it under the
     6# terms of the GNU General Public License as published by the Free Software
     7# Foundation, either version 3 of the License, or (at your option) any later
    88# version.
    99#
     
    2020# Current revisions:
    2121# -----------------
    22 # 
    23 # 
     22#
     23#
    2424# Former revisions:
    2525# -----------------
    2626# $Id$
     27# Do not add whitespaces at current-revision section
     28#
     29# 4481 2020-03-31 18:55:54Z maronga
    2730# Bugfix for copyright updates
    28 # 
     31#
    2932# 4370 2020-01-10 14:00:44Z raasch
    3033# script made bash compatible
    31 # 
     34#
    3235# 3665 2019-01-10 08:28:24Z raasch
    3336# Corrected "Former revisions" section
    34 # 
     37#
    3538# 2696 2017-12-14 17:12:51Z kanani
    3639# Change in file header (GPL part)
     
    3942# Changed the submission procedure in order to reduce the number of required
    4043# commits to one per change.
    41 # 
     44#
    4245# 2117 2017-01-16 16:28:44Z maronga
    43 # 
     46#
    4447# 1827 2016-04-07 12:12:23Z maronga
    4548# Added note that the script does not work on MAC OS
    46 # 
     49#
    4750# 1813 2016-04-06 09:38:56Z maronga
    4851# Added update of the copyright statements in the file headers.
    49 # 
     52#
    5053# 1810 2016-04-05 20:25:29Z maronga
    5154# document_changes now checks all subdirectories. Modified printing to screen.
    52 # 
     55#
    5356# 1804 2016-04-05 16:30:18Z maronga
    5457# Removed printing of "this is an alpha version"
    55 # 
     58#
    5659# 1326 2014-03-21 10:44:31Z maronga
    5760# Initial revision
    58 # 
     61#
    5962# Description:
    6063# ------------
     
    105108       input_dir=`pwd`
    106109    fi
    107    
     110
    108111    printf "\n"
    109112    printf "#------------------------------------------------------------------------# \n"
     
    111114    printf "|                                                                        | \n"
    112115    printf "| This tool moves the change comments in the all PALM file headers from  | \n"
    113     printf "| 'Current revisions' to 'Former revisions' and saves the time stamp.    | \n" 
     116    printf "| 'Current revisions' to 'Former revisions' and saves the time stamp.    | \n"
    114117    printf "#------------------------------------------------------------------------# \n"
    115    
     118
    116119    printf "\n  *** Checking files in $input_dir and all recursive subdirectories...\n"
    117120
    118    
     121
    119122#
    120123#-- scan all (sub-)directories for files.
     
    134137          continue
    135138       fi
    136        
     139
    137140       (( count_files = count_files + 1 ))
    138141
     
    179182             then
    180183
    181              
    182                 printf "\r%$(tput cols)s" " "   
     184
     185                printf "\r%$(tput cols)s" " "
    183186                printf "\r  \e[1;92m*** Comments found in $fn\e[0m\n"
    184              
     187
    185188                found_comment=true
    186189                cp $fn $fn~
     
    195198             fi
    196199          fi
    197          
     200
    198201#
    199202#--       get the timestamp from the current revision
     
    204207            timestamp_string="$comment_char $timestamp"
    205208          fi
    206          
     209
    207210       done <"$fn"
    208211
     
    210213#
    211214#--    check for updates of the copyright statement
    212        while read line 
    213        do 
     215       while read line
     216       do
    214217
    215218          line_tmp=""
    216           line_tmp2=""     
     219          line_tmp2=""
    217220          line_tmp=${line:22:29}
    218221          line_tmp2=${line:2:10}
     
    226229             if  [[ "$year_in_file2" != "$current_year" ]]
    227230             then
    228                 printf "\r%$(tput cols)s" " "   
     231                printf "\r%$(tput cols)s" " "
    229232                printf "\r  \e[1;33m*** Copyright update required in $fn\e[0m\n"
    230233
     
    240243       done <"$fn"
    241244
    242        printf "\r%$(tput cols)s" " "   
     245       printf "\r%$(tput cols)s" " "
    243246       printf "\r\e[1m  *** Searched files: $count_files. Comments found: $count_changes. Copyright updates found: $count_updates\e[0m"
    244247
     
    257260#--       fix old time stamp
    258261          (( line_time = line_stop + 2 ))
    259           sed -i "${line_time}d" $fn     
     262          sed -i "${line_time}d" $fn
    260263          sed -i "${line_time}i$timestamp_string" $fn
    261264
     
    273276          list_delete=${list_delete#?}
    274277          sed -i "$list_delete" $fn
    275           sed -i "${line_start}i${comment_char} " $fn
    276           sed -i "${line_start}i${comment_char} " $fn
     278          sed -i "${line_start}i${comment_char}" $fn
     279          sed -i "${line_start}i${comment_char}" $fn
    277280
    278281       fi
     
    288291    then
    289292       printf "  *** You can now proceed with\n      \e[0;91msvn commit -m 'your commit message' trunk\e[0m\n"
    290        printf "  *** Please do not forget to commit your changes in the changelog at\n      \e[0;91mhttps://palm.muk.uni-hannover.de/trac/wiki/doc/tec/changelog\e[0m!\n"   
     293       printf "  *** Please do not forget to commit your changes in the changelog at\n      \e[0;91mhttps://palm.muk.uni-hannover.de/trac/wiki/doc/tec/changelog\e[0m!\n"
    291294    else
    292         printf "  *** No comments found in files!\n"   
    293    
     295        printf "  *** No comments found in files!\n"
     296
    294297    fi
  • palm/trunk/SOURCE/header.f90

    r4573 r4586  
    2020! Current revisions:
    2121! -----------------
    22 ! 
    23 ! 
     22!
     23!
    2424! Former revisions:
    2525! -----------------
    2626! $Id$
     27! Renamed rif to Ri (gradient Richardson number, 1D model)
     28! and zeta (= z_mo / ol, stability parameter, 3D model)
     29!
     30! 4573 2020-06-24 13:08:47Z oliver.maas
    2731! added statement for pt_surface_heating_rate
    28 ! 
     32!
    2933! 4536 2020-05-17 17:24:13Z raasch
    3034! output of restart data format added
    31 ! 
     35!
    3236! 4473 2020-03-25 21:04:07Z gronemeier
    3337! revised message if wall_adjustment is used
    34 ! 
     38!
    3539! 4444 2020-03-05 15:59:50Z raasch
    3640! bugfix: cpp-directives for serial mode added
    37 ! 
     41!
    3842! 4360 2020-01-07 11:25:50Z suehring
    3943! Bugfix, character length too short, caused crash on NEC.
    40 ! 
     44!
    4145! 4309 2019-11-26 18:49:59Z suehring
    4246! replaced recycling_yshift by y_shift
    43 ! 
     47!
    4448! 4301 2019-11-22 12:09:09Z oliver.maas
    4549!
    4650! 4297 2019-11-21 10:37:50Z oliver.maas
    4751! Adjusted format for simulated time and related quantities
    48 ! 
     52!
    4953! 4297 2019-11-21 10:37:50Z oliver.maas
    5054! adjusted message to the changed parameter recycling_yshift
    51 ! 
     55!
    5256! 4227 2019-09-10 18:04:34Z gronemeier
    5357! implement new palm_date_time_mod
    54 ! 
     58!
    5559! 4223 2019-09-10 09:20:47Z gronemeier
    5660! Write information about rotation angle
    57 ! 
     61!
    5862! 4182 2019-08-22 15:20:23Z scharf
    5963! Corrected "Former revisions" section
    60 ! 
     64!
    6165! 4168 2019-08-16 13:50:17Z suehring
    6266! Replace function get_topography_top_index by topo_top_ind
    63 ! 
     67!
    6468! 4069 2019-07-01 14:05:51Z Giersch
    65 ! Masked output running index mid has been introduced as a local variable to 
    66 ! avoid runtime error (Loop variable has been modified) in time_integration 
    67 ! 
     69! Masked output running index mid has been introduced as a local variable to
     70! avoid runtime error (Loop variable has been modified) in time_integration
     71!
    6872! 4023 2019-06-12 13:20:01Z maronga
    6973! Renamed "coupling start time" to "spinup time"
    70 ! 
     74!
    7175! 4017 2019-06-06 12:16:46Z schwenkel
    7276! unused variable removed
    73 ! 
     77!
    7478! 3655 2019-01-07 16:51:22Z knoop
    7579! Implementation of the PALM module interface
     
    8286! ------------
    8387!> Writing a header with all important information about the current run.
    84 !> This subroutine is called three times, two times at the beginning 
     88!> This subroutine is called three times, two times at the beginning
    8589!> (writing information on files RUN_CONTROL and HEADER) and one time at the
    8690!> end of the run, then writing additional information about CPU-usage on file
     
    8892!-----------------------------------------------------------------------------!
    8993 SUBROUTINE header
    90  
     94
    9195
    9296    USE arrays_3d,                                                             &
     
    148152    IMPLICIT NONE
    149153
    150    
     154
    151155    CHARACTER (LEN=2)  ::  do2d_mode           !< mode of 2D data output (xy, xz, yz)
    152    
     156
    153157    CHARACTER (LEN=5)  ::  section_chr         !< string indicating grid information where to output 2D slices
    154    
     158
    155159    CHARACTER (LEN=10) ::  host_chr            !< string for hostname
    156    
     160
    157161    CHARACTER (LEN=16) ::  begin_chr           !< string indication start time for the data output
    158162    CHARACTER (LEN=16) ::  coor_chr            !< dummy string
    159    
     163
    160164    CHARACTER (LEN=26) ::  ver_rev             !< string for run identification
    161165
    162166#if defined( __parallel )
    163     CHARACTER (LEN=32) ::  cpl_name            !< name of child domain (nesting mode only) 
     167    CHARACTER (LEN=32) ::  cpl_name            !< name of child domain (nesting mode only)
    164168#endif
    165    
     169
    166170    CHARACTER (LEN=40) ::  output_format       !< netcdf format
    167        
     171
    168172    CHARACTER (LEN=70) ::  char1               !< dummy varialbe used for various strings
    169173    CHARACTER (LEN=70) ::  char2               !< string containing informating about the advected distance in case of Galilei transformation
     
    175179    CHARACTER (LEN=70) ::  do3d_chr            !< string indicating 3D output variables
    176180    CHARACTER (LEN=70) ::  domask_chr          !< string indicating masked output variables
    177     CHARACTER (LEN=70) ::  run_classification  !< string classifying type of run, e.g. nested, coupled, etc. 
    178    
     181    CHARACTER (LEN=70) ::  run_classification  !< string classifying type of run, e.g. nested, coupled, etc.
     182
    179183    CHARACTER (LEN=85) ::  r_upper             !< string indicating model top boundary condition for various quantities
    180184    CHARACTER (LEN=85) ::  r_lower             !< string indicating bottom boundary condition for various quantities
    181    
     185
    182186    CHARACTER (LEN=86) ::  coordinates         !< string indicating height coordinates for profile-prescribed variables
    183187    CHARACTER (LEN=86) ::  gradients           !< string indicating gradients of profile-prescribed variables between the prescribed height coordinates
     
    218222    INTEGER(iwp) ::  npe_total      !< number of total PEs in a coupler (parent + child)
    219223#endif
    220    
     224
    221225
    222226    REAL(wp) ::  cpuseconds_per_simulated_second  !< CPU time (in s) per simulated second
     
    506510    IF ( .NOT. ocean_mode )  THEN
    507511       WRITE ( io, 250 )  dx, dy
    508        
     512
    509513       DO i = 1, number_stretch_level_start+1
    510514          WRITE ( io, 253 )  i, dz(i)
    511515       ENDDO
    512        
     516
    513517       WRITE( io, 251 ) (nx+1)*dx, (ny+1)*dy, zu(nzt+1)
    514        
     518
    515519       IF ( ANY( dz_stretch_level_start_index < nzt+1 ) )  THEN
    516520          WRITE( io, '(A)', advance='no') ' Vertical stretching starts at height:'
     
    535539          ENDDO
    536540       ENDIF
    537        
     541
    538542    ELSE
    539543       WRITE ( io, 250 )  dx, dy
     
    541545          WRITE ( io, 253 )  i, dz(i)
    542546       ENDDO
    543        
     547
    544548       WRITE ( io, 251 ) (nx+1)*dx, (ny+1)*dy, zu(0)
    545        
     549
    546550       IF ( ANY( dz_stretch_level_start_index > 0 ) )  THEN
    547551          WRITE( io, '(A)', advance='no') ' Vertical stretching starts at height:'
     
    603607       ENDDO
    604608
    605  
     609
    606610       IF ( .NOT. large_scale_forcing )  THEN
    607611          WRITE ( io, 426 )  TRIM( coordinates ), TRIM( temperatures ), &
     
    620624    i = 1
    621625    DO  WHILE ( ug_vertical_gradient_level_ind(i) /= -9999 )
    622      
     626
    623627       WRITE (coor_chr,'(F6.2,1X)')  ug(ug_vertical_gradient_level_ind(i))
    624628       ugcomponent = TRIM( ugcomponent ) // '  ' // TRIM( coor_chr )
     
    672676          i = i + 1
    673677       ENDIF
    674  
     678
    675679    ENDDO
    676680
     
    782786!-- Complex terrain
    783787    IF ( complex_terrain )  THEN
    784        WRITE( io, 280 ) 
     788       WRITE( io, 280 )
    785789       IF ( turbulent_inflow )  THEN
    786790          WRITE( io, 281 )  zu(topo_top_ind(0,0,0))
     
    846850       r_upper = 'e(nzt+1) = e(nzt) = e(nzt-1)'
    847851
    848        WRITE ( io, 301 )  'e', r_lower, r_upper       
     852       WRITE ( io, 301 )  'e', r_lower, r_upper
    849853
    850854    ENDIF
     
    953957    WRITE ( io, 317 )  bc_lr, bc_ns
    954958    IF ( .NOT. bc_lr_cyc  .OR.  .NOT. bc_ns_cyc )  THEN
    955        WRITE ( io, 318 )  use_cmax, pt_damping_width, pt_damping_factor       
     959       WRITE ( io, 318 )  use_cmax, pt_damping_width, pt_damping_factor
    956960       IF ( turbulent_inflow )  THEN
    957961          IF ( y_shift == 0 ) THEN
     
    10091013                          TRIM( gradients ), TRIM( slices )
    10101014    ELSE
    1011        WRITE ( io, 428 ) 
     1015       WRITE ( io, 428 )
    10121016    ENDIF
    10131017
     
    10221026       i = 1
    10231027       DO  WHILE ( q_vertical_gradient_level_ind(i) /= -9999 )
    1024          
     1028
    10251029          WRITE (coor_chr,'(E8.1,4X)')  q_init(q_vertical_gradient_level_ind(i))
    10261030          temperatures = TRIM( temperatures ) // '  ' // TRIM( coor_chr )
     
    10281032          WRITE (coor_chr,'(E8.1,4X)')  q_vertical_gradient(i)
    10291033          gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
    1030          
     1034
    10311035          WRITE (coor_chr,'(I8,4X)')  q_vertical_gradient_level_ind(i)
    10321036          slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
    1033          
     1037
    10341038          WRITE (coor_chr,'(F8.1,4X)')  q_vertical_gradient_level(i)
    10351039          coordinates = TRIM( coordinates ) // '  '  // TRIM( coor_chr )
     
    10581062       i = 1
    10591063       DO  WHILE ( s_vertical_gradient_level_ind(i) /= -9999 )
    1060          
     1064
    10611065          WRITE (coor_chr,'(E8.1,4X)')  s_init(s_vertical_gradient_level_ind(i))
    10621066          temperatures = TRIM( temperatures ) // '  ' // TRIM( coor_chr )
     
    10641068          WRITE (coor_chr,'(E8.1,4X)')  s_vertical_gradient(i)
    10651069          gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
    1066          
     1070
    10671071          WRITE (coor_chr,'(I8,4X)')  s_vertical_gradient_level_ind(i)
    10681072          slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
    1069          
     1073
    10701074          WRITE (coor_chr,'(F8.1,4X)')  s_vertical_gradient_level(i)
    10711075          coordinates = TRIM( coordinates ) // '  '  // TRIM( coor_chr )
     
    10811085       WRITE ( io, 422 )  TRIM( coordinates ), TRIM( temperatures ),           &
    10821086                          TRIM( gradients ), TRIM( slices )
    1083     ENDIF   
     1087    ENDIF
    10841088
    10851089!
     
    15861590    ENDIF
    15871591    IF ( humidity  .AND.  q_surface_initial_change /= 0.0_wp )  THEN
    1588        WRITE ( io, 477 )  q_surface_initial_change       
     1592       WRITE ( io, 477 )  q_surface_initial_change
    15891593    ENDIF
    15901594    IF ( passive_scalar  .AND.  q_surface_initial_change /= 0.0_wp )  THEN
    1591        WRITE ( io, 478 )  q_surface_initial_change       
     1595       WRITE ( io, 478 )  q_surface_initial_change
    15921596    ENDIF
    15931597
     
    17271731              ' Tunnel width: ', F6.2 )
    17281732274 FORMAT (  ' Tunnel in ', A, ' direction.' / &
    1729               ' Tunnel height: ', F6.2, / &   
     1733              ' Tunnel height: ', F6.2, / &
    17301734              ' Tunnel-wall depth: ', F6.2      / &
    17311735              ' Tunnel width: ', F6.2, / &
     
    17561760             '       z_mo = ',F6.2,' m   z0 =',F7.4,' m   z0h =',F8.5,&
    17571761             ' m   kappa =',F5.2/ &
    1758              '       Rif value range:   ',F8.2,' <= rif <=',F6.2)
     1762             '       zeta value range:   ',F8.2,' <= zeta <=',F6.2)
    17591763306 FORMAT ('       Predefined constant heatflux:   ',F9.6,' K m/s')
    17601764307 FORMAT ('       Heatflux has a random normal distribution')
     
    17621766309 FORMAT ('       Predefined constant salinityflux:   ',F9.6,' psu m/s')
    17631767310 FORMAT (//'    1D-Model:'// &
    1764              '       Rif value range:   ',F6.2,' <= rif <=',F6.2)
     1768             '       Ri value range:   ',F6.2,' <= Ri <=',F6.2)
    17651769311 FORMAT ('       Predefined constant humidity flux: ',E10.3,' kg/kg m/s')
    17661770312 FORMAT ('       Predefined surface humidity')
  • palm/trunk/SOURCE/model_1d_mod.f90

    r4449 r4586  
    2020! Current revisions:
    2121! -----------------
    22 ! 
    23 ! 
     22!
     23!
    2424! Former revisions:
    2525! -----------------
    2626! $Id$
     27! renamed Richardson flux number into gradient Richardson number
     28!
     29! 4449 2020-03-09 14:43:16Z suehring
    2730! Set intermediate_timestep_count back to zero after 1D-model integration.
    2831! This is required e.g. for initial calls of calc_mean_profile.
     
    120123    REAL(wp), DIMENSION(:), ALLOCATABLE ::  l1d_init !< initial mixing length (1d-model)
    121124    REAL(wp), DIMENSION(:), ALLOCATABLE ::  l1d_diss !< mixing length for dissipation (1d-model)
    122     REAL(wp), DIMENSION(:), ALLOCATABLE ::  rif1d    !< Richardson flux number (1d-model)
     125    REAL(wp), DIMENSION(:), ALLOCATABLE ::  ri1d    !< gradient Richardson number (1d-model)
    123126    REAL(wp), DIMENSION(:), ALLOCATABLE ::  te_diss  !< tendency of diss (1d-model)
    124127    REAL(wp), DIMENSION(:), ALLOCATABLE ::  te_dissm !< weighted tendency of diss for previous sub-timestep (1d-model)
     
    174177!-- Public variables
    175178    PUBLIC  damp_level_1d, damp_level_ind_1d, diss1d, dt_pr_1d,                &
    176             dt_run_control_1d, e1d, end_time_1d, kh1d, km1d, l1d, rif1d, u1d,  &
     179            dt_run_control_1d, e1d, end_time_1d, kh1d, km1d, l1d, ri1d, u1d,   &
    177180            us1d, usws1d, v1d, vsws1d
    178181
     
    196199              e1d(nzb:nzt+1), e1d_p(nzb:nzt+1), kh1d(nzb:nzt+1),               &
    197200              km1d(nzb:nzt+1), l1d(nzb:nzt+1), l1d_init(nzb:nzt+1),            &
    198               l1d_diss(nzb:nzt+1), rif1d(nzb:nzt+1), te_diss(nzb:nzt+1),       &
     201              l1d_diss(nzb:nzt+1), ri1d(nzb:nzt+1), te_diss(nzb:nzt+1),        &
    199202              te_dissm(nzb:nzt+1), te_e(nzb:nzt+1),                            &
    200203              te_em(nzb:nzt+1), te_u(nzb:nzt+1), te_um(nzb:nzt+1),             &
     
    211214       e1d = 0.0_wp; e1d_p = 0.0_wp
    212215       kh1d = 0.0_wp; km1d = 0.0_wp
    213        rif1d = 0.0_wp
     216       ri1d = 0.0_wp
    214217!
    215218!--    Compute the mixing length
     
    414417!
    415418!--                dissipation rate
    416                    IF ( rif1d(k) >= 0.0_wp )  THEN
     419                   IF ( ri1d(k) >= 0.0_wp )  THEN
    417420                      alpha_buoyancy = 1.0_wp - l1d(k) / lambda
    418421                   ELSE
     
    604607             IF ( constant_flux_layer )  THEN
    605608!
    606 !--             Compute theta* using Rif numbers of the previous time step
    607                 IF ( rif1d(nzb+1) >= 0.0_wp )  THEN
     609!--             Compute theta* using Ri numbers of the previous time step
     610                IF ( ri1d(nzb+1) >= 0.0_wp )  THEN
    608611!
    609612!--                Stable stratification
    610613                   ts1d = kappa * ( pt_init(nzb+1) - pt_init(nzb) ) /          &
    611                           ( LOG( zu(nzb+1) / z0h1d ) + 5.0_wp * rif1d(nzb+1) * &
     614                          ( LOG( zu(nzb+1) / z0h1d ) + 5.0_wp * ri1d(nzb+1) * &
    612615                                          ( zu(nzb+1) - z0h1d ) / zu(nzb+1)    &
    613616                          )
     
    615618!
    616619!--                Unstable stratification
    617                    a = SQRT( 1.0_wp - 16.0_wp * rif1d(nzb+1) )
    618                    b = SQRT( 1.0_wp - 16.0_wp * rif1d(nzb+1) /                 &
     620                   a = SQRT( 1.0_wp - 16.0_wp * ri1d(nzb+1) )
     621                   b = SQRT( 1.0_wp - 16.0_wp * ri1d(nzb+1) /                  &
    619622                       zu(nzb+1) * z0h1d )
    620623
     
    630633             !>   2018-04-23, gronemeier
    631634!
    632 !--          Compute the Richardson-flux numbers,
     635!--          Compute the gradient Richardson numbers,
    633636!--          first at the top of the constant-flux layer using u* of the
    634637!--          previous time step (+1E-30, if u* = 0), then in the remaining area.
    635 !--          There the rif-numbers of the previous time step are used.
     638!--          There, the Ri numbers of the previous time step are used.
    636639
    637640             IF ( constant_flux_layer )  THEN
     
    643646                   flux = ts1d + 0.61_wp * pt_init(k) * qs1d
    644647                ENDIF
    645                 rif1d(nzb+1) = zu(nzb+1) * kappa * g * flux / &
     648                ri1d(nzb+1) = zu(nzb+1) * kappa * g * flux /                  &
    646649                               ( pt_0 * ( us1d**2 + 1E-30_wp ) )
    647650             ENDIF
     
    659662                          ) * dd2zu(k)
    660663                ENDIF
    661                 IF ( rif1d(k) >= 0.0_wp )  THEN
    662                    rif1d(k) = g / pt_0 * flux /                                &
     664                IF ( ri1d(k) >= 0.0_wp )  THEN
     665                   ri1d(k) = g / pt_0 * flux /                                 &
    663666                              (  ( ( u1d(k+1) - u1d(k-1) ) * dd2zu(k) )**2     &
    664667                               + ( ( v1d(k+1) - v1d(k-1) ) * dd2zu(k) )**2     &
     
    666669                              )
    667670                ELSE
    668                    rif1d(k) = g / pt_0 * flux /                                &
     671                   ri1d(k) = g / pt_0 * flux /                                 &
    669672                              (  ( ( u1d(k+1) - u1d(k-1) ) * dd2zu(k) )**2     &
    670673                               + ( ( v1d(k+1) - v1d(k-1) ) * dd2zu(k) )**2     &
    671674                               + 1E-30_wp                                      &
    672                               ) * ( 1.0_wp - 16.0_wp * rif1d(k) )**0.25_wp
     675                              ) * ( 1.0_wp - 16.0_wp * ri1d(k) )**0.25_wp
    673676                ENDIF
    674677             ENDDO
    675678!
    676 !--          Richardson-numbers must remain restricted to a realistic value
     679!--          Richardson numbers must remain restricted to a realistic value
    677680!--          range. It is exceeded excessively for very small velocities
    678681!--          (u,v --> 0).
    679              WHERE ( rif1d < -5.0_wp )  rif1d = -5.0_wp
    680              WHERE ( rif1d > 1.0_wp )  rif1d = 1.0_wp
     682             WHERE ( ri1d < -5.0_wp )  ri1d = -5.0_wp
     683             WHERE ( ri1d > 1.0_wp )  ri1d = 1.0_wp
    681684
    682685!
     
    685688                uv_total = SQRT( u1d(nzb+1)**2 + v1d(nzb+1)**2 )
    686689
    687                 IF ( rif1d(nzb+1) >= 0.0_wp )  THEN
     690                IF ( ri1d(nzb+1) >= 0.0_wp )  THEN
    688691!
    689692!--                Stable stratification
    690693                   us1d = kappa * uv_total / (                                 &
    691                              LOG( zu(nzb+1) / z01d ) + 5.0_wp * rif1d(nzb+1) * &
     694                             LOG( zu(nzb+1) / z01d ) + 5.0_wp * ri1d(nzb+1) * &
    692695                                              ( zu(nzb+1) - z01d ) / zu(nzb+1) &
    693696                                             )
     
    695698!
    696699!--                Unstable stratification
    697                    a = 1.0_wp / SQRT( SQRT( 1.0_wp - 16.0_wp * rif1d(nzb+1) ) )
    698                    b = 1.0_wp / SQRT( SQRT( 1.0_wp - 16.0_wp * rif1d(nzb+1) /  &
     700                   a = 1.0_wp / SQRT( SQRT( 1.0_wp - 16.0_wp * ri1d(nzb+1) ) )
     701                   b = 1.0_wp / SQRT( SQRT( 1.0_wp - 16.0_wp * ri1d(nzb+1) /   &
    699702                                                     zu(nzb+1) * z01d ) )
    700703                   us1d = kappa * uv_total / (                                 &
     
    728731!
    729732!--                Compute q*
    730                    IF ( rif1d(nzb+1) >= 0.0_wp )  THEN
     733                   IF ( ri1d(nzb+1) >= 0.0_wp )  THEN
    731734!
    732735!--                   Stable stratification
    733736                      qs1d = kappa * ( q_init(nzb+1) - q_init(nzb) ) /         &
    734                           ( LOG( zu(nzb+1) / z0h1d ) + 5.0_wp * rif1d(nzb+1) * &
     737                          ( LOG( zu(nzb+1) / z0h1d ) + 5.0_wp * ri1d(nzb+1) * &
    735738                                          ( zu(nzb+1) - z0h1d ) / zu(nzb+1)    &
    736739                          )
     
    738741!
    739742!--                   Unstable stratification
    740                       a = SQRT( 1.0_wp - 16.0_wp * rif1d(nzb+1) )
    741                       b = SQRT( 1.0_wp - 16.0_wp * rif1d(nzb+1) /              &
     743                      a = SQRT( 1.0_wp - 16.0_wp * ri1d(nzb+1) )
     744                      b = SQRT( 1.0_wp - 16.0_wp * ri1d(nzb+1) /               &
    742745                                         zu(nzb+1) * z0h1d )
    743746                      qs1d = kappa * ( q_init(nzb+1) - q_init(nzb) ) /         &
     
    759762                IF ( mixing_length_1d == 'blackadar' )  THEN
    760763                   DO  k = nzb+1, nzt
    761                       IF ( rif1d(k) >= 0.0_wp )  THEN
    762                          l1d(k) = l1d_init(k) / ( 1.0_wp + 5.0_wp * rif1d(k) )
     764                      IF ( ri1d(k) >= 0.0_wp )  THEN
     765                         l1d(k) = l1d_init(k) / ( 1.0_wp + 5.0_wp * ri1d(k) )
    763766                         l1d_diss(k) = l1d(k)
    764767                      ELSE
    765768                         l1d(k) = l1d_init(k)
    766769                         l1d_diss(k) = l1d_init(k) *                           &
    767                                        SQRT( 1.0_wp - 16.0_wp * rif1d(k) )
     770                                       SQRT( 1.0_wp - 16.0_wp * ri1d(k) )
    768771                      ENDIF
    769772                   ENDDO
     
    793796!--          Prandtl-Kolmogorov, respectively
    794797             IF ( constant_flux_layer )  THEN
    795                 IF ( rif1d(nzb+1) >= 0.0_wp )  THEN
     798                IF ( ri1d(nzb+1) >= 0.0_wp )  THEN
    796799                   km1d(nzb+1) = us1d * kappa * zu(nzb+1) /                    &
    797                                  ( 1.0_wp + 5.0_wp * rif1d(nzb+1) )
     800                                 ( 1.0_wp + 5.0_wp * ri1d(nzb+1) )
    798801                ELSE
    799802                   km1d(nzb+1) = us1d * kappa * zu(nzb+1) *                    &
    800                                  ( 1.0_wp - 16.0_wp * rif1d(nzb+1) )**0.25_wp
     803                                 ( 1.0_wp - 16.0_wp * ri1d(nzb+1) )**0.25_wp
    801804                ENDIF
    802805             ENDIF
     
    823826!--          kh = phim / phih * km
    824827             DO  k = nzb+1, nzt
    825                 IF ( rif1d(k) >= 0.0_wp )  THEN
     828                IF ( ri1d(k) >= 0.0_wp )  THEN
    826829                   kh1d(k) = km1d(k)
    827830                ELSE
    828                    kh1d(k) = km1d(k) * ( 1.0_wp - 16.0_wp * rif1d(k) )**0.25_wp
     831                   kh1d(k) = km1d(k) * ( 1.0_wp - 16.0_wp * ri1d(k) )**0.25_wp
    829832                ENDIF
    830833             ENDDO
     
    10261029       WRITE ( 17, 101 )
    10271030       DO  k = nzt+1, nzb, -1
    1028           WRITE ( 17, 103)  k, zu(k), u1d(k), v1d(k), pt_init(k), e1d(k), &
    1029                             rif1d(k), km1d(k), kh1d(k), l1d(k), diss1d(k)
     1031          WRITE ( 17, 103)  k, zu(k), u1d(k), v1d(k), pt_init(k), e1d(k),      &
     1032                            ri1d(k), km1d(k), kh1d(k), l1d(k), diss1d(k)
    10301033       ENDDO
    10311034       WRITE ( 17, 101 )
     
    10451048101 FORMAT ('#',111('-'))
    10461049102 FORMAT ('#  k     zu      u          v          pt         e          ',   &
    1047             'rif        Km         Kh         l          diss   ')
     1050            'Ri         Km         Kh         l          diss   ')
    10481051103 FORMAT (1X,I4,1X,F7.1,9(1X,E10.3))
    10491052
  • palm/trunk/SOURCE/surface_mod.f90

    r4559 r4586  
    2020! Current revisions:
    2121! -----------------
    22 ! 
    23 ! 
     22!
     23!
    2424! Former revisions:
    2525! -----------------
    2626! $Id$
     27! renamed Richardson flux number into gradient Richardson number (1D model)
     28!
     29! 4559 2020-06-11 08:51:48Z raasch
    2730! File re-formatted to follow the PALM coding standard
    2831!
     
    166169
    167170    USE model_1d_mod,                                                                              &
    168         ONLY:  rif1d,                                                                              &
     171        ONLY:  ri1d,                                                                               &
    169172               us1d,                                                                               &
    170173               usws1d,                                                                             &
     
    25352538       IF ( .NOT. constant_diffusion )  THEN
    25362539          IF ( constant_flux_layer )  THEN
    2537              surf%ol(num_h)   = surf%z_mo(num_h) / ( rif1d(nzb+1) + 1.0E-20_wp )
     2540             surf%ol(num_h)   = surf%z_mo(num_h) / ( ri1d(nzb+1) + 1.0E-20_wp )
    25382541             surf%us(num_h)   = us1d
    25392542             surf%usws(num_h) = usws1d
  • palm/trunk/SOURCE/turbulence_closure_mod.f90

    r4510 r4586  
    2020! Current revisions:
    2121! -----------------
    22 ! 
    23 ! 
     22!
     23!
    2424! Former revisions:
    2525! -----------------
    2626! $Id$
     27! Renamed rif to richardson_number (Richardson Flux Number to Gradient Richardson Number)
     28!
     29! 4510 2020-04-29 14:19:18Z raasch
    2730! file re-formatted to follow the PALM coding standard
    2831!
     
    40104013
    40114014    REAL(wp), DIMENSION(nzb+1:nzt) ::  ml_stratification  !< mixing length according to stratification
    4012     REAL(wp), DIMENSION(nzb+1:nzt) ::  rif                !< Richardson flux number
     4015    REAL(wp), DIMENSION(nzb+1:nzt) ::  richardson_number  !< gradient Richardson number
    40134016
    40144017    REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg), INTENT(IN) ::  var  !< temperature
     
    41114114
    41124115      !$ACC PARALLEL LOOP COLLAPSE(2) PRIVATE(i, j) &
    4113       !$ACC PRIVATE(ml_stratification, duv2_dz2, rif, dvar_dz) &
     4116      !$ACC PRIVATE(ml_stratification, duv2_dz2, richardson_number, dvar_dz) &
    41144117      !$ACC PRESENT(diss, e, u, v, var, wall_flags_total_0) &
    41154118      !$ACC PRESENT(dd2zu, ml_blackadar, delta)
     
    41174120          DO  j = nys, nyn
    41184121!
    4119 !--          Calculate Richardson-flux number
     4122!--          Calculate Richardson number
    41204123             IF ( use_single_reference_value )  THEN
    41214124
     
    41284131                            + ( ( v(k+1,j,i) - v(k-1,j,i) ) * dd2zu(k) )**2 + 1E-30_wp
    41294132
    4130                    rif(k) = MIN( MAX( g / var_reference * dvar_dz / duv2_dz2, -5.0_wp ),  1.0_wp )
     4133                   richardson_number(k) = MIN( MAX( g / var_reference * dvar_dz / duv2_dz2,        &
     4134                                                    -5.0_wp ),                                     &
     4135                                               1.0_wp )
    41314136                ENDDO
    41324137             ELSE
     
    41434148                            + ( ( v(k+1,j,i) - v(k-1,j,i) ) * dd2zu(k) )**2 + 1E-30_wp
    41444149
    4145                    rif(k) = MIN( MAX( g / var(k,j,i) * dvar_dz / duv2_dz2, -5.0_wp ),  1.0_wp )
     4150                   richardson_number(k) = MIN( MAX( g / var(k,j,i) * dvar_dz / duv2_dz2,           &
     4151                                                    -5.0_wp ),                                     &
     4152                                               1.0_wp )
    41464153                ENDDO
    41474154             ENDIF
     
    41504157             !$ACC LOOP PRIVATE(k)
    41514158             DO  k = nzb+1, nzt
    4152                 IF ( rif(k) >= 0.0_wp )  THEN
    4153                    ml_stratification(k) = ml_blackadar(k) / ( 1.0_wp + 5.0_wp * rif(k) )
     4159                IF ( richardson_number(k) >= 0.0_wp )  THEN
     4160                   ml_stratification(k) = ml_blackadar(k)                                          &
     4161                                        / ( 1.0_wp + 5.0_wp * richardson_number(k) )
    41544162                ELSE
    4155                    ml_stratification(k) = ml_blackadar(k) * SQRT( 1.0_wp - 16.0_wp * rif(k) )
     4163                   ml_stratification(k) = ml_blackadar(k)                                          &
     4164                                        * SQRT( 1.0_wp - 16.0_wp * richardson_number(k) )
    41564165                ENDIF
    41574166             ENDDO
     
    42744283
    42754284    REAL(wp), DIMENSION(nzb+1:nzt) ::  ml_stratification  !< mixing length according to stratification
    4276     REAL(wp), DIMENSION(nzb+1:nzt) ::  rif                !< Richardson flux number
     4285    REAL(wp), DIMENSION(nzb+1:nzt) ::  richardson_number  !< gradient Richardson number
    42774286
    42784287    REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg), INTENT(IN) ::  var  !< temperature
     
    43484357
    43494358!
    4350 !--    Calculate Richardson-flux number
     4359!--    Calculate Richardson number
    43514360       IF ( use_single_reference_value )  THEN
    43524361          DO  k = nzb+1, nzt
     
    43564365                      + ( ( v(k+1,j,i) - v(k-1,j,i) ) * dd2zu(k) )**2 + 1E-30_wp
    43574366
    4358              rif(k) = MIN( MAX( g / var_reference * dvar_dz / duv2_dz2, -5.0_wp ),  1.0_wp )
     4367             richardson_number(k) = MIN( MAX( g / var_reference * dvar_dz / duv2_dz2, -5.0_wp ),   &
     4368                                         1.0_wp )
    43594369          ENDDO
    43604370       ELSE
     
    43654375                      + ( ( v(k+1,j,i) - v(k-1,j,i) ) * dd2zu(k) )**2 + 1E-30_wp
    43664376
    4367              rif(k) = MIN( MAX( g / var(k,j,i) * dvar_dz / duv2_dz2, -5.0_wp ), 1.0_wp )
     4377             richardson_number(k) = MIN( MAX( g / var(k,j,i) * dvar_dz / duv2_dz2, -5.0_wp ),      &
     4378                                         1.0_wp )
    43684379          ENDDO
    43694380       ENDIF
     
    43714382!--    Calculate diabatic mixing length using Dyer-profile functions
    43724383       DO  k = nzb+1, nzt
    4373           IF ( rif(k) >= 0.0_wp )  THEN
    4374              ml_stratification(k) = ml_blackadar(k) / ( 1.0_wp + 5.0_wp * rif(k) )
     4384          IF ( richardson_number(k) >= 0.0_wp )  THEN
     4385             ml_stratification(k) = ml_blackadar(k) / ( 1.0_wp + 5.0_wp * richardson_number(k) )
    43754386          ELSE
    4376              ml_stratification(k) = ml_blackadar(k) * SQRT( 1.0_wp - 16.0_wp * rif(k) )
     4387             ml_stratification(k) = ml_blackadar(k)                                                &
     4388                                  * SQRT( 1.0_wp - 16.0_wp * richardson_number(k) )
    43774389          ENDIF
    43784390
     
    47724784    REAL(wp)     ::  var_reference       !< reference temperature
    47734785
    4774     !DIR$ ATTRIBUTES ALIGN:64:: ml_local_profile, ml_stratification, rif
     4786    !DIR$ ATTRIBUTES ALIGN:64:: ml_local_profile, ml_stratification, richardson_number
    47754787    REAL(wp), DIMENSION(nzb+1:nzt) ::  ml_local_profile   !< mixing length (all heights)
    47764788    REAL(wp), DIMENSION(nzb+1:nzt) ::  ml_stratification  !< mixing length according to stratification
    4777     REAL(wp), DIMENSION(nzb+1:nzt) ::  rif                !< Richardson flux number
     4789    REAL(wp), DIMENSION(nzb+1:nzt) ::  richardson_number  !< gradient Richardson number
    47784790
    47794791    REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg), INTENT(IN) ::  var  !< temperature
     
    49374949       !$OMP DO
    49384950       !$ACC PARALLEL LOOP COLLAPSE(2) PRIVATE(i, j) &
    4939        !$ACC PRIVATE(dvar_dz, duv2_dz2, ml_stratification, ml_local_profile, rif) &
     4951       !$ACC PRIVATE(dvar_dz, duv2_dz2, ml_stratification, ml_local_profile, richardson_number) &
    49404952       !$ACC PRESENT(wall_flags_total_0, var, dd2zu, e, u, v, delta, ml_blackadar) &
    49414953       !$ACC PRESENT(kh, km, sums_l_l, rmask)
     
    49434955          DO  j = nysg, nyng
    49444956!
    4945 !--          Calculate Richardson-flux number
     4957!--          Calculate Richardson number
    49464958             IF ( use_single_reference_value )  THEN
    49474959                !$ACC LOOP PRIVATE(k)
     
    49534965                            + ( ( v(k+1,j,i) - v(k-1,j,i) ) * dd2zu(k) )**2 + 1E-30_wp
    49544966
    4955                    rif(k) = MIN( MAX( g / var_reference * dvar_dz / duv2_dz2, -5.0_wp ),  1.0_wp )
     4967                   richardson_number(k) = MIN( MAX( g / var_reference * dvar_dz / duv2_dz2,        &
     4968                                                    -5.0_wp ),                                     &
     4969                                               1.0_wp )
    49564970                ENDDO
    49574971             ELSE
     
    49644978                            + ( ( v(k+1,j,i) - v(k-1,j,i) ) * dd2zu(k) )**2 + 1E-30_wp
    49654979
    4966                    rif(k) = MIN( MAX( g / var(k,j,i) * dvar_dz / duv2_dz2, -5.0_wp ),  1.0_wp )
     4980                   richardson_number(k) = MIN( MAX( g / var(k,j,i) * dvar_dz / duv2_dz2,           &
     4981                                                    -5.0_wp ),                                     &
     4982                                               1.0_wp )
    49674983                ENDDO
    49684984             ENDIF
     
    49724988             !$ACC LOOP PRIVATE(k)
    49734989             DO  k = nzb+1, nzt
    4974                 IF ( rif(k) >= 0.0_wp )  THEN
    4975                    ml_stratification(k) = ml_blackadar(k) / ( 1.0_wp + 5.0_wp * rif(k) )
     4990                IF ( richardson_number(k) >= 0.0_wp )  THEN
     4991                   ml_stratification(k) = ml_blackadar(k)                                          &
     4992                                        / ( 1.0_wp + 5.0_wp * richardson_number(k) )
    49764993                ELSE
    49774994                   ml_stratification(k) = ml_blackadar(k)
Note: See TracChangeset for help on using the changeset viewer.