Ignore:
Timestamp:
Sep 11, 2020 10:00:26 AM (4 years ago)
Author:
eckhard
Message:

Support for homogeneous (domain-averaged) boundary conditions and soil profile initialization

File:
1 edited

Legend:

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

    r4659 r4675  
    2626! -----------------
    2727! $Id$
     28! Support for soil profile initialization
     29! Improved code formatting
     30!
     31!
     32! 4659 2020-08-31 11:21:17Z eckhard
    2833! List all warnings after successful run
    2934! Only define netCDF variables in enabled IO groups
     
    202207!-- Set up the tables containing the input and output variables and set
    203208!-- the corresponding netCDF dimensions for each output variable
    204     CALL setup_variable_tables( cfg%ic_mode )
     209    CALL setup_variable_tables
    205210    CALL setup_io_groups
    206211    CALL log_runtime( 'time', 'init' )
     
    273278                         CASE( 'init soil' )
    274279   
    275                             ALLOCATE( output_arr(0:output_var%grid%nx,            &
    276                                                  0:output_var%grid%ny,            &
     280                            ALLOCATE( output_arr(0:output_var%grid%nx,         &
     281                                                 0:output_var%grid%ny,         &
    277282                                                 SIZE( output_var%grid%depths )) )
    278283   
    279284                         CASE ( 'surface forcing' )
    280285   
    281                             ALLOCATE( output_arr(0:output_var%grid%nx,            &
     286                            ALLOCATE( output_arr(0:output_var%grid%nx,         &
    282287                                                 0:output_var%grid%ny, 1) )
    283288   
     
    299304                      CASE ( 'interpolate_3d' )
    300305   
    301                          ALLOCATE( output_arr(0:output_var%grid % nx,           &
    302                                               0:output_var%grid % ny,           &
     306                         ALLOCATE( output_arr(0:output_var%grid % nx,          &
     307                                              0:output_var%grid % ny,          &
    303308                                              1:output_var%grid % nz) )
    304309   
    305310                         CALL log_runtime( 'time', 'alloc' )
    306                          CALL interpolate_3d(                                     &
    307                             input_buffer(output_var%input_id)%array(:,:,:),       &
    308                             output_arr(:,:,:),                                    &
    309                             output_var%intermediate_grid,                         &
     311                         CALL interpolate_3d(                                  &
     312                            input_buffer(output_var%input_id)%array(:,:,:),    &
     313                            output_arr(:,:,:),                                 &
     314                            output_var%intermediate_grid,                      &
    310315                            output_var%grid)
    311316                         CALL log_runtime( 'time', 'comp' )
     
    315320                      CASE ( 'average profile' )
    316321   
    317                          ALLOCATE( output_arr(0:output_var%grid%nx,               &
    318                                               0:output_var%grid%ny,               &
    319                                               1:output_var%grid%nz) )
     322                         ALLOCATE( output_arr(0:0, 0:0, 1:output_var%averaging_grid%nz) )
    320323                         CALL log_runtime( 'time', 'alloc' )
    321                          
    322                          CALL interp_average_profile(                             &
    323                             input_buffer(output_var%input_id)%array(:,:,:),     &
    324                             output_arr(0,0,:),                                    &
     324                         CALL interp_average_profile(                          &
     325                            input_buffer(output_var%input_id)%array(:,:,:),    &
     326                            output_arr(0,0,:),                                 &
    325327                            output_var%averaging_grid )
    326328   
    327                          IF ( TRIM( output_var%name ) ==                          &
     329                         IF ( TRIM( output_var%name ) ==                       &
    328330                              'surface_forcing_surface_pressure' )  THEN
    329331   
     
    331333                               output_arr(0,0,1) = p0
    332334                            ELSE
    333                                CALL get_surface_pressure(                         &
    334                                   output_arr(0,0,:), rho_centre,                  &
     335                               CALL get_surface_pressure(                      &
     336                                  output_arr(0,0,:), rho_centre,               &
    335337                                  output_var%averaging_grid )
    336338                            ENDIF
    337339   
    338340                         ENDIF
     341                         CALL log_runtime( 'time', 'comp' )
     342
     343                      CASE ( 'average levels' )
     344
     345                         ALLOCATE( output_arr(0:0, 0:0, 1:output_var%averaging_grid%nz) )
     346                         CALL log_runtime( 'time', 'alloc' )
     347                         CALL average_profile(                                 &
     348                            input_buffer(output_var%input_id)%array(:,:,:),    &
     349                            output_arr(0,0,:),                                 &
     350                            output_var%averaging_grid                          &
     351                         )
    339352                         CALL log_runtime( 'time', 'comp' )
    340353   
     
    393406                         SELECT CASE( TRIM( output_var%name ) )
    394407   
    395                          CASE( 'internal_pressure_north',                         &
    396                                'internal_pressure_south',                         &
    397                                'internal_pressure_east',                          &
     408                         CASE( 'internal_pressure_north',                      &
     409                               'internal_pressure_south',                      &
     410                               'internal_pressure_east',                       &
    398411                               'internal_pressure_west' )
    399412   
    400                             CALL average_pressure_perturbation(                   &
    401                                input_buffer(output_var%input_id) % array(:,:,:),&
    402                                internal_arr(:),                                   &
    403                                cosmo_grid, output_var%averaging_grid            &
     413                            CALL average_pressure_perturbation(                &
     414                               input_buffer(output_var%input_id)%array(:,:,:), &
     415                               internal_arr(:),                                &
     416                               cosmo_grid, output_var%averaging_grid           &
    404417                            )
    405418   
    406419                         CASE DEFAULT
    407420   
    408                             CALL average_profile(                                 &
    409                                input_buffer(output_var%input_id) % array(:,:,:),&
    410                                internal_arr(:),                                   &
    411                                output_var%averaging_grid                        &
     421                            CALL average_profile(                              &
     422                               input_buffer(output_var%input_id)%array(:,:,:), &
     423                               internal_arr(:),                                &
     424                               output_var%averaging_grid                       &
    412425                            )
    413426
    414427                      END SELECT
    415428
    416 
    417 !
    418 !--                   Output of geostrophic pressure profiles (with --debug
    419 !--                   option) is currently deactivated, since they are now
    420 !--                   defined on averaged COSMO levels instead of PALM levels
    421 !--                   (requires definiton of COSMO levels in netCDF output.)
    422                       !IF (.TRUE.)  THEN
    423                       !   ALLOCATE( output_arr(1,1,1:output_var%grid % nz) )
    424                       !   output_arr(1,1,:) = internal_arr(:)
    425                       !ENDIF
    426429                      CALL log_runtime( 'time', 'comp' )
    427430
     
    450453                                                    ug_cosmo, vg_cosmo )
    451454
    452                             CALL interpolate_1d( ug_cosmo, ug_palm,             &
     455                            CALL interpolate_1d( ug_cosmo, ug_palm,            &
    453456                                                 output_var%grid )
    454457
    455                             CALL interpolate_1d( vg_cosmo, vg_palm,             &
     458                            CALL interpolate_1d( vg_cosmo, vg_palm,            &
    456459                                                 output_var%grid )
    457460                         ENDIF
Note: See TracChangeset for help on using the changeset viewer.