Ignore:
Timestamp:
Mar 5, 2019 11:13:35 AM (5 years ago)
Author:
eckhard
Message:

inifor: bugfix: Fixes issue #815 with geostrophic wind profiles

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/UTIL/inifor/src/inifor_grid.f90

    r3765 r3779  
    1515! PALM. If not, see <http://www.gnu.org/licenses/>.
    1616!
    17 ! Copyright 2017-2018 Leibniz Universitaet Hannover
    18 ! Copyright 2017-2018 Deutscher Wetterdienst Offenbach
     17! Copyright 2017-2019 Leibniz Universitaet Hannover
     18! Copyright 2017-2019 Deutscher Wetterdienst Offenbach
    1919!------------------------------------------------------------------------------!
    2020!
     
    2626! -----------------
    2727! $Id$
     28! Assigned names to averaging grids
     29! Improved variable naming and minor clean-up
     30!
     31!
     32! 3765 2019-02-26 13:45:46Z eckhard
    2833! Removed dependency on radiation input files
    2934!
     
    411416!--    Overwrite defaults with user configuration
    412417       CALL parse_command_line_arguments( cfg )
     418       CALL report('main_loop', 'Running INIFOR version ' // VERSION)
    413419
    414420       flow_prefix = TRIM(cfg % input_prefix)
     
    444450       CALL validate_config( cfg )
    445451
    446        CALL report('main_loop', 'Running INIFOR version ' // VERSION)
    447452       CALL report('setup_parameters', "initialization mode: " // TRIM(cfg % ic_mode))
    448453       CALL report('setup_parameters', "       forcing mode: " // TRIM(cfg % bc_mode))
    449454       CALL report('setup_parameters', "     averaging mode: " // TRIM(cfg % averaging_mode))
     455       CALL report('setup_parameters', "    averaging angle: " // real_to_str(cfg % averaging_angle))
    450456       CALL report('setup_parameters', "          data path: " // TRIM(cfg % input_path))
    451457       CALL report('setup_parameters', "           hhl file: " // TRIM(cfg % hhl_file))
     
    10511057               lonmin = lonmin_palm, lonmax = lonmax_palm,                     &
    10521058               latmin = latmin_palm, latmax = latmax_palm,                     &
    1053                kind='scalar')
     1059               kind='scalar', name='averaged initial scalar')
    10541060
    10551061       CALL init_averaging_grid(averaged_initial_w_profile, cosmo_grid,        &
     
    10571063               lonmin = lonmin_palm, lonmax = lonmax_palm,                     &
    10581064               latmin = latmin_palm, latmax = latmax_palm,                     &
    1059                kind='w')
     1065               kind='w', name='averaged initial w')
    10601066
    10611067       CALL init_averaging_grid(averaged_scalar_profile, cosmo_grid,           &
     
    10631069               lonmin = lam_west, lonmax = lam_east,                           &
    10641070               latmin = phi_south, latmax = phi_north,                         &
    1065                kind='scalar')
     1071               kind='scalar', name='centre geostrophic scalar')
    10661072
    10671073       CALL init_averaging_grid(averaged_w_profile, cosmo_grid,                &
     
    10691075               lonmin = lam_west, lonmax = lam_east,                           &
    10701076               latmin = phi_south, latmax = phi_north,                         &
    1071                kind='w')
     1077               kind='w', name='centre geostrophic w')
    10721078
    10731079       CALL init_averaging_grid(south_averaged_scalar_profile, cosmo_grid,     &
     
    10761082               latmin = phi_centre - averaging_angle,                          &
    10771083               latmax = phi_centre,                                            &
    1078                kind='scalar')
     1084               kind='scalar', name='south geostrophic scalar')
    10791085
    10801086       CALL init_averaging_grid(north_averaged_scalar_profile, cosmo_grid,     &
     
    10831089               latmin = phi_centre,                                            &
    10841090               latmax = phi_centre + averaging_angle,                          &
    1085                kind='scalar')
     1091               kind='scalar', name='north geostrophic scalar')
    10861092
    10871093       CALL init_averaging_grid(west_averaged_scalar_profile, cosmo_grid,      &
     
    10901096               lonmax = lam_centre,                                            &
    10911097               latmin = phi_south, latmax = phi_north,                         &
    1092                kind='scalar')
     1098               kind='scalar', name='west geostrophic scalar')
    10931099
    10941100       CALL init_averaging_grid(east_averaged_scalar_profile, cosmo_grid,      &
     
    10971103               lonmax = lam_centre + averaging_angle,                          &
    10981104               latmin = phi_south, latmax = phi_north,                         &
    1099                kind='scalar')
     1105               kind='scalar', name='east geostrophic scalar')
    11001106
    11011107!                                                                             
     
    13041310        grid % z0 = z0
    13051311
    1306         SELECT CASE( TRIM (kind) )
     1312        SELECT CASE( TRIM(kind) )
    13071313
    13081314        CASE('boundary')
     
    15291535!------------------------------------------------------------------------------!
    15301536    SUBROUTINE init_averaging_grid(avg_grid, cosmo_grid, x, y, z, z0,          &
    1531        lonmin, lonmax, latmin, latmax, kind)
     1537       lonmin, lonmax, latmin, latmax, kind, name)
    15321538
    15331539       TYPE(grid_definition), INTENT(INOUT) ::  avg_grid
     
    15411547
    15421548       CHARACTER(LEN=*), INTENT(IN)         ::  kind
    1543 
    1544        LOGICAL                              :: level_based_averaging
     1549       CHARACTER(LEN=*), INTENT(IN)         ::  name
     1550
     1551       LOGICAL                              ::  level_based_averaging
    15451552
    15461553       ALLOCATE( avg_grid % x(1) )
     
    15591566
    15601567       avg_grid % kind = TRIM(kind)
     1568       avg_grid % name(1) = TRIM(name)
    15611569
    15621570!
     
    15861594!
    15871595!--    For level-besed averaging, compute average heights
     1596       !level_based_averaging = ( TRIM(mode) == 'level' )
    15881597       level_based_averaging = ( TRIM(cfg % averaging_mode) == 'level' )
    15891598       IF (level_based_averaging)  THEN
     
    15921601          CALL average_2d(avg_grid % cosmo_h, avg_grid % h(1,1,:),             &
    15931602                          avg_grid % iii, avg_grid % jjj)
     1603
    15941604       END IF
    15951605
     
    16451655       jmax = CEILING( (avg_grid % lat(2) - cosmo_lat(0)) / dlat )
    16461656       
    1647        message = "Averaging '" // TRIM(avg_grid % kind) // "' over "//        &
     1657       message = "Grid " // TRIM(avg_grid % name(1)) // " averages over " // &
    16481658                 TRIM(str(imin)) // " <= i <= " // TRIM(str(imax)) //          &
    16491659                 " and " //                                                    &
     
    31673177       )
    31683178       output_var_table(57) % averaging_grid => north_averaged_scalar_profile
    3169        output_var_table(57) % to_be_processed = .NOT. cfg % ug_is_set
     3179       output_var_table(57) % to_be_processed = .NOT. cfg % ug_defined_by_user
    31703180
    31713181
     
    31823192       )
    31833193       output_var_table(58) % averaging_grid => south_averaged_scalar_profile
    3184        output_var_table(58) % to_be_processed = .NOT. cfg % ug_is_set
     3194       output_var_table(58) % to_be_processed = .NOT. cfg % ug_defined_by_user
    31853195
    31863196
     
    31973207       )
    31983208       output_var_table(59) % averaging_grid => east_averaged_scalar_profile
    3199        output_var_table(59) % to_be_processed = .NOT. cfg % ug_is_set
     3209       output_var_table(59) % to_be_processed = .NOT. cfg % ug_defined_by_user
    32003210
    32013211
     
    32123222       )
    32133223       output_var_table(60) % averaging_grid => west_averaged_scalar_profile
    3214        output_var_table(60) % to_be_processed = .NOT. cfg % ug_is_set
     3224       output_var_table(60) % to_be_processed = .NOT. cfg % ug_defined_by_user
    32153225
    32163226       output_var_table(61) = init_nc_var(                                     &
     
    32263236       )
    32273237       output_var_table(61) % averaging_grid => north_averaged_scalar_profile
    3228        output_var_table(61) % to_be_processed = .NOT. cfg % ug_is_set
     3238       output_var_table(61) % to_be_processed = .NOT. cfg % ug_defined_by_user
    32293239
    32303240
     
    32413251       )
    32423252       output_var_table(62) % averaging_grid => south_averaged_scalar_profile
    3243        output_var_table(62) % to_be_processed = .NOT. cfg % ug_is_set
     3253       output_var_table(62) % to_be_processed = .NOT. cfg % ug_defined_by_user
    32443254
    32453255
     
    32563266       )
    32573267       output_var_table(63) % averaging_grid => east_averaged_scalar_profile
    3258        output_var_table(63) % to_be_processed = .NOT. cfg % ug_is_set
     3268       output_var_table(63) % to_be_processed = .NOT. cfg % ug_defined_by_user
    32593269
    32603270
     
    32713281       )
    32723282       output_var_table(64) % averaging_grid => west_averaged_scalar_profile
    3273        output_var_table(64) % to_be_processed = .NOT. cfg % ug_is_set
     3283       output_var_table(64) % to_be_processed = .NOT. cfg % ug_defined_by_user
    32743284
    32753285!
     
    34163426          var % task            = "interpolate_2d"
    34173427
    3418        CASE( 'left scalar', 'right scalar') ! same as right
     3428       CASE( 'left scalar', 'right scalar')
    34193429          var % lod             = -1
    34203430          var % ndim            = 3
     
    34293439          var % task            = "interpolate_3d"
    34303440
    3431        CASE( 'north scalar', 'south scalar') ! same as south
     3441       CASE( 'north scalar', 'south scalar')
    34323442          var % lod             = -1
    34333443          var % ndim            = 3
Note: See TracChangeset for help on using the changeset viewer.