Ignore:
Timestamp:
Jul 27, 2016 1:28:04 PM (8 years ago)
Author:
maronga
Message:

further modularization of land surface model (2D/3D output and restart data). Bugfix for restart runs without land surface model

File:
1 edited

Legend:

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

    r1973 r1976  
    1919! Current revisions:
    2020! ------------------
    21 !
     21! Removed remaining 2D land surface quantities. Definition of radiation
     22! quantities is now done directly in the respective module
    2223!
    2324! Former revisions:
     
    148149!> @todo calculation of output time levels for parallel NetCDF still does not
    149150!>       cover every exception (change of dt_do, end_time in restart)
     151!> @todo timeseries and profile output still needs to be rewritten to allow
     152!>       modularization
    150153!------------------------------------------------------------------------------!
    151154 MODULE netcdf_interface
     
    414417    USE profil_parameter,                                                      &
    415418        ONLY:  crmax, cross_profiles, dopr_index, profile_columns, profile_rows
     419
     420    USE radiation_model_mod,                                                   &
     421        ONLY: radiation, radiation_define_netcdf_grid
    416422
    417423    USE spectra_mod,                                                           &
     
    735741                CASE ( 'e', 'lpt', 'nr', 'p', 'pc', 'pr', 'prr', 'pt', 'q',    &
    736742                       'qc', 'ql', 'ql_c', 'ql_v', 'ql_vp', 'qr', 'qv',        &
    737                        'rad_lw_cs_hr', 'rad_lw_hr', 'rad_sw_cs_hr',            &
    738                        'rad_sw_hr', 'rho', 's', 'sa', 'vpt'  )
     743                       'rho', 's', 'sa', 'vpt'  )
    739744
    740745                   grid_x = 'x'
     
    757762!
    758763!--             w grid
    759                 CASE ( 'rad_lw_in', 'rad_lw_out', 'rad_sw_in', 'rad_sw_out',   &
    760                        'w' )
     764                CASE ( 'w' )
    761765
    762766                   grid_x = 'x'
     
    772776                      CALL lsm_define_netcdf_grid( domask(mid,av,i), found,    &
    773777                                                   grid_x, grid_y, grid_z )
     778                   ENDIF
     779
     780!
     781!--                Check for radiation quantities
     782                   IF ( .NOT. found  .AND.  radiation )  THEN
     783                      CALL radiation_define_netcdf_grid( domask(mid,av,i),     &
     784                                                         found, grid_x, grid_y,&
     785                                                         grid_z )
    774786                   ENDIF
    775787
     
    12391251                CASE ( 'e', 'lpt', 'nr', 'p', 'pc', 'pr', 'prr', 'pt', 'q',    &
    12401252                       'qc', 'ql', 'ql_c', 'ql_v', 'ql_vp', 'qr', 'qv', 'rho', &
    1241                        's', 'sa', 'vpt' , 'rad_lw_cs_hr', 'rad_lw_hr',         &
    1242                        'rad_sw_cs_hr', 'rad_sw_hr' )
     1253                       's', 'sa', 'vpt' )
    12431254
    12441255                   grid_x = 'x'
     
    12611272!
    12621273!--             w grid
    1263                 CASE ( 'rad_lw_in', 'rad_lw_out', 'rad_sw_in', 'rad_sw_out',   &
    1264                        'w' )
     1274                CASE ( 'w' )
    12651275
    12661276                   grid_x = 'x'
     
    12751285                   IF ( land_surface )  THEN
    12761286                      CALL lsm_define_netcdf_grid( do3d(av,i), found, grid_x,  &
    1277                                                     grid_y, grid_z )
     1287                                                   grid_y, grid_z )
     1288                   ENDIF
     1289
     1290!
     1291!--                Check for radiation quantities
     1292                   IF ( .NOT. found  .AND.  radiation )  THEN
     1293                      CALL radiation_define_netcdf_grid( do3d(av,i), found,    &
     1294                                                         grid_x, grid_y,       &
     1295                                                         grid_z )
    12781296                   ENDIF
    12791297                   
     
    18371855                             'pr_xy', 'prr_xy', 'pt_xy', 'q_xy', 'qc_xy',      &
    18381856                             'ql_xy', 'ql_c_xy', 'ql_v_xy', 'ql_vp_xy',        &
    1839                              'qr_xy', 'qv_xy', 'rad_lw_cs_hr_xy',              &
    1840                              'rad_lw_hr_xy', 'rad_sw_cs_hr_xy', 'rad_sw_hr_xy',&
    1841                              'rho_xy', 's_xy', 'sa_xy', 'vpt_xy' )
     1857                             'qr_xy', 'qv_xy', 'rho_xy', 's_xy', 'sa_xy',      &
     1858                             'vpt_xy' )
    18421859
    18431860                         grid_x = 'x'
     
    18601877!
    18611878!--                   w grid
    1862                       CASE ( 'rad_lw_in_xy', 'rad_lw_out_xy', 'rad_sw_in_xy',  &
    1863                              'rad_sw_out_xy' , 'w_xy' )
     1879                      CASE ( 'w_xy' )
    18641880
    18651881                         grid_x = 'x'
    18661882                         grid_y = 'y'
    18671883                         grid_z = 'zw'
    1868 !
    1869 !--                   soil grid
    1870                       CASE ( 'm_soil_xy', 't_soil_xy' )
    1871                          grid_x = 'x'
    1872                          grid_y = 'y'
    1873                          grid_z = 'zs'
     1884
    18741885
    18751886                      CASE DEFAULT
    18761887!
     1888!--                      Check for land surface quantities
     1889                         IF ( land_surface )  THEN
     1890                            CALL lsm_define_netcdf_grid( do2d(av,i), found,    &
     1891                                                   grid_x, grid_y, grid_z )
     1892                         ENDIF
     1893
     1894!
     1895!--                      Check for radiation quantities
     1896                         IF ( .NOT. found  .AND.  radiation )  THEN
     1897                            CALL radiation_define_netcdf_grid( do2d(av,i),     &
     1898                                                         found, grid_x, grid_y,&
     1899                                                         grid_z )
     1900                         ENDIF
     1901
     1902!
    18771903!--                      Check for user-defined quantities
    1878                          CALL user_define_netcdf_grid( do2d(av,i), found, &
    1879                                                        grid_x, grid_y, grid_z )
     1904                         IF ( .NOT. found )  THEN
     1905                            CALL user_define_netcdf_grid( do2d(av,i), found,   &
     1906                                                          grid_x, grid_y,      &
     1907                                                          grid_z )
     1908                         ENDIF
    18801909
    18811910                         IF ( .NOT. found )  THEN
     
    24912520                          'prr_xz', 'pt_xz', 'q_xz', 'qc_xz', 'ql_xz',         &
    24922521                          'ql_c_xz', 'ql_v_xz', 'ql_vp_xz', 'qr_xz', 'qv_xz',  &
    2493                           'rad_lw_cs_hr_xz', 'rad_lw_hr_xz',                   &
    2494                           'rad_sw_cs_hr_xz', 'rad_sw_hr_xz''rho_xz', 's_xz',   &
    2495                           'sa_xz', 'vpt_xz' )
     2522                          'rho_xz', 's_xz', 'sa_xz', 'vpt_xz' )
    24962523
    24972524                      grid_x = 'x'
     
    25142541!
    25152542!--                w grid
    2516                    CASE ( 'rad_lw_in_xz', 'rad_lw_out_xz', 'rad_sw_in_xz',     &
    2517                           'rad_sw_out_xz', 'w_xz' )
     2543                   CASE ( 'w_xz' )
    25182544
    25192545                      grid_x = 'x'
     
    25212547                      grid_z = 'zw'
    25222548
    2523 !
    2524 !--                soil grid
    2525                    CASE ( 'm_soil_xz', 't_soil_xz' )
    2526 
    2527                       grid_x = 'x'
    2528                       grid_y = 'y'
    2529                       grid_z = 'zs'
    2530 
    25312549                   CASE DEFAULT
     2550
     2551!
     2552!--                   Check for land surface quantities
     2553                      IF ( land_surface )  THEN
     2554                         CALL lsm_define_netcdf_grid( do2d(av,i), found,       &
     2555                                                      grid_x, grid_y, grid_z )
     2556                      ENDIF
     2557
     2558!
     2559!--                   Check for radiation quantities
     2560                      IF ( .NOT. found  .AND.  radiation )  THEN
     2561                         CALL radiation_define_netcdf_grid( do2d(av,i), found, &
     2562                                                            grid_x, grid_y,    &
     2563                                                            grid_z )
     2564                      ENDIF
     2565
    25322566!
    25332567!--                   Check for user-defined quantities
    2534                       CALL user_define_netcdf_grid( do2d(av,i), found, &
    2535                                                     grid_x, grid_y, grid_z )
     2568                      IF ( .NOT. found )  THEN
     2569                         CALL user_define_netcdf_grid( do2d(av,i), found,      &
     2570                                                       grid_x, grid_y, grid_z )
     2571                      ENDIF
     2572
    25362573                      IF ( .NOT. found )  THEN
    25372574                         WRITE ( message_string, * ) 'no grid defined for', &
     
    31373174                          'prr_yz', 'pt_yz', 'q_yz', 'qc_yz', 'ql_yz',         &
    31383175                          'ql_c_yz', 'ql_v_yz', 'ql_vp_yz', 'qr_yz', 'qv_yz',  &
    3139                           'rad_lw_cs_hr_yz', 'rad_lw_hr_yz',                   &
    3140                           'rad_sw_cs_hr_yz', 'rad_sw_hr_yz''rho_yz', 's_yz',   &
    3141                           'sa_yz', 'vpt_yz' )
     3176                          'rho_yz', 's_yz', 'sa_yz', 'vpt_yz' )
    31423177
    31433178                      grid_x = 'x'
     
    31603195!
    31613196!--                w grid
    3162                    CASE ( 'rad_lw_in_yz', 'rad_lw_out_yz', 'rad_sw_in_yz',     &
    3163                           'rad_sw_out_yz', 'w_yz' )
     3197                   CASE ( 'w_yz' )
    31643198
    31653199                      grid_x = 'x'
    31663200                      grid_y = 'y'
    31673201                      grid_z = 'zw'
    3168 !
    3169 !--                soil grid
    3170                    CASE ( 'm_soil_yz', 't_soil_yz' )
    3171 
    3172                       grid_x = 'x'
    3173                       grid_y = 'y'
    3174                       grid_z = 'zs'
     3202
    31753203
    31763204                   CASE DEFAULT
    31773205!
     3206!--                   Check for land surface quantities
     3207                      IF ( land_surface )  THEN
     3208                         CALL lsm_define_netcdf_grid( do2d(av,i), found,       &
     3209                                                      grid_x, grid_y, grid_z )
     3210                      ENDIF
     3211
     3212!
     3213!--                   Check for radiation quantities
     3214                      IF ( .NOT. found  .AND.  radiation )  THEN
     3215                         CALL radiation_define_netcdf_grid( do2d(av,i), found, &
     3216                                                            grid_x, grid_y,    &
     3217                                                            grid_z )
     3218                      ENDIF
     3219
     3220!
    31783221!--                   Check for user-defined quantities
    3179                       CALL user_define_netcdf_grid( do2d(av,i), found, &
    3180                                                     grid_x, grid_y, grid_z )
     3222                      IF ( .NOT. found )  THEN
     3223                         CALL user_define_netcdf_grid( do2d(av,i), found,      &
     3224                                                       grid_x, grid_y, grid_z )
     3225                      ENDIF
    31813226
    31823227                      IF ( .NOT. found )  THEN
     
    43134358!--                Check for user-defined quantities (found, grid_x and grid_y
    43144359!--                are dummies)
    4315                    CALL user_define_netcdf_grid( data_output_sp(i), found,  &
     4360                   CALL user_define_netcdf_grid( data_output_sp(i), found,     &
    43164361                                                 grid_x, grid_y, grid_z )
    43174362
Note: See TracChangeset for help on using the changeset viewer.