Ignore:
Timestamp:
Jul 27, 2016 1:28:04 PM (5 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/read_3d_binary.f90

    r1973 r1976  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! Bugfix: read of land surface data only when module is switched on.
     22! Radiation parts are now done in the respective module.
     23! Binary version increased to 4.5.
    2224!
    2325! Former revisions:
     
    138140
    139141    USE radiation_model_mod,                                                   &
    140         ONLY: rad_net, rad_net_av, rad_lw_in, rad_lw_in_av, rad_lw_out,        &
    141               rad_lw_cs_hr, rad_lw_cs_hr_av, rad_lw_hr, rad_lw_hr_av,          &
    142               rad_lw_out_av, rad_lw_out_change_0, rad_sw_in, rad_sw_in_av,     &
    143               rad_sw_out, rad_sw_out_av, rad_sw_cs_hr, rad_sw_cs_hr_av,        &
    144               rad_sw_hr, rad_sw_hr_av
     142        ONLY: radiation, radiation_read_restart_data
    145143
    146144    USE random_function_mod,                                                   &
     
    328326!--    First compare the version numbers
    329327       READ ( 13 )  version_on_file
    330        binary_version = '4.4'
     328       binary_version = '4.5'
    331329       IF ( TRIM( version_on_file ) /= TRIM( binary_version ) )  THEN
    332330          WRITE( message_string, * ) 'version mismatch concerning data ',      &
     
    698696                   qv_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    699697                             tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    700 
    701                 CASE ( 'rad_net' )
    702                    IF ( .NOT. ALLOCATED( rad_net ) )  THEN
    703                       ALLOCATE( rad_net(nysg:nyng,nxlg:nxrg) )
    704                    ENDIF 
    705                    IF ( k == 1 )  READ ( 13 )  tmp_2d
    706                    rad_net(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
    707                                           tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    708 
    709                 CASE ( 'rad_net_av' )
    710                    IF ( .NOT. ALLOCATED( rad_net_av ) )  THEN
    711                       ALLOCATE( rad_net_av(nysg:nyng,nxlg:nxrg) )
    712                    ENDIF 
    713                    IF ( k == 1 )  READ ( 13 )  tmp_2d
    714                    rad_net_av(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)  = &
    715                                           tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    716                 CASE ( 'rad_lw_in' )
    717                    IF ( .NOT. ALLOCATED( rad_lw_in ) )  THEN
    718                       ALLOCATE( rad_lw_in(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    719                    ENDIF 
    720                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    721                    rad_lw_in(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    722                              tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    723 
    724                 CASE ( 'rad_lw_in_av' )
    725                    IF ( .NOT. ALLOCATED( rad_lw_in_av ) )  THEN
    726                       ALLOCATE( rad_lw_in_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    727                    ENDIF 
    728                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    729                    rad_lw_in_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    730                              tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    731 
    732                 CASE ( 'rad_lw_out' )
    733                    IF ( .NOT. ALLOCATED( rad_lw_out ) )  THEN
    734                       ALLOCATE( rad_lw_out(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    735                    ENDIF 
    736                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    737                    rad_lw_out(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    738                              tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    739 
    740                 CASE ( 'rad_lw_out_av' )
    741                    IF ( .NOT. ALLOCATED( rad_lw_out_av ) )  THEN
    742                       ALLOCATE( rad_lw_out_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    743                    ENDIF 
    744                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    745                    rad_lw_out_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    746                              tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    747 
    748                 CASE ( 'rad_lw_out_change_0' )
    749                    IF ( .NOT. ALLOCATED( rad_lw_out_change_0 ) )  THEN
    750                       ALLOCATE( rad_lw_out_change_0(nysg:nyng,nxlg:nxrg) )
    751                    ENDIF
    752                    IF ( k == 1 )  READ ( 13 )  tmp_2d
    753                    rad_lw_out_change_0(nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp)&
    754                               = tmp_2d(nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    755 
    756                 CASE ( 'rad_lw_cs_hr' )
    757                    IF ( .NOT. ALLOCATED( rad_lw_cs_hr ) )  THEN
    758                       ALLOCATE( rad_lw_cs_hr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    759                    ENDIF
    760                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    761                    rad_lw_cs_hr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    762                            tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    763 
    764                 CASE ( 'rad_lw_cs_hr_av' )
    765                    IF ( .NOT. ALLOCATED( rad_lw_cs_hr_av ) )  THEN
    766                       ALLOCATE( rad_lw_cs_hr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    767                    ENDIF
    768                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    769                    rad_lw_cs_hr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    770                            tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    771 
    772                 CASE ( 'rad_lw_hr' )
    773                    IF ( .NOT. ALLOCATED( rad_lw_hr ) )  THEN
    774                       ALLOCATE( rad_lw_hr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    775                    ENDIF
    776                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    777                    rad_lw_hr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    778                            tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    779 
    780                 CASE ( 'rad_lw_hr_av' )
    781                    IF ( .NOT. ALLOCATED( rad_lw_hr_av ) )  THEN
    782                       ALLOCATE( rad_lw_hr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    783                    ENDIF
    784                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    785                    rad_lw_hr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    786                            tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    787 
    788                 CASE ( 'rad_sw_in' )
    789                    IF ( .NOT. ALLOCATED( rad_sw_in ) )  THEN
    790                       ALLOCATE( rad_sw_in(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    791                    ENDIF 
    792                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    793                    rad_sw_in(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    794                              tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    795 
    796                 CASE ( 'rad_sw_in_av' )
    797                    IF ( .NOT. ALLOCATED( rad_sw_in_av ) )  THEN
    798                       ALLOCATE( rad_sw_in_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    799                    ENDIF 
    800                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    801                    rad_sw_in_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    802                              tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    803 
    804                 CASE ( 'rad_sw_out' )
    805                    IF ( .NOT. ALLOCATED( rad_sw_out ) )  THEN
    806                       ALLOCATE( rad_sw_out(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    807                    ENDIF 
    808                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    809                    rad_sw_out(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    810                              tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    811 
    812                 CASE ( 'rad_sw_out_av' )
    813                    IF ( .NOT. ALLOCATED( rad_sw_out_av ) )  THEN
    814                       ALLOCATE( rad_sw_out_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    815                    ENDIF 
    816                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    817                    rad_sw_out_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    818                              tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    819 
    820                 CASE ( 'rad_sw_cs_hr' )
    821                    IF ( .NOT. ALLOCATED( rad_sw_cs_hr ) )  THEN
    822                       ALLOCATE( rad_sw_cs_hr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    823                    ENDIF
    824                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    825                    rad_sw_cs_hr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    826                            tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    827 
    828                 CASE ( 'rad_sw_cs_hr_av' )
    829                    IF ( .NOT. ALLOCATED( rad_sw_cs_hr_av ) )  THEN
    830                       ALLOCATE( rad_sw_cs_hr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    831                    ENDIF
    832                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    833                    rad_sw_cs_hr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    834                            tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    835 
    836                 CASE ( 'rad_sw_hr' )
    837                    IF ( .NOT. ALLOCATED( rad_sw_hr ) )  THEN
    838                       ALLOCATE( rad_sw_hr(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    839                    ENDIF
    840                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    841                    rad_sw_hr(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    842                            tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    843 
    844                 CASE ( 'rad_sw_hr_av' )
    845                    IF ( .NOT. ALLOCATED( rad_sw_hr_av ) )  THEN
    846                       ALLOCATE( rad_sw_hr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    847                    ENDIF
    848                    IF ( k == 1 )  READ ( 13 )  tmp_3d
    849                    rad_lw_hr_av(:,nysc-nbgp:nync+nbgp,nxlc-nbgp:nxrc+nbgp) = &
    850                            tmp_3d(:,nysf-nbgp:nynf+nbgp,nxlf-nbgp:nxrf+nbgp)
    851698
    852699                CASE ( 'random_iv' )  ! still unresolved issue
     
    12741121!
    12751122!--    Read land surface restart data
    1276        CALL lsm_read_restart_data( i, nxlfa, nxl_on_file, nxrfa, nxr_on_file,  &
    1277                                     nynfa, nyn_on_file, nysfa, nys_on_file,    &
    1278                                     offset_xa, offset_ya, overlap_count(i),    &
    1279                                     tmp_2d )
     1123       IF ( land_surface )  THEN
     1124          CALL lsm_read_restart_data( i, nxlfa, nxl_on_file, nxrfa,            &
     1125                                      nxr_on_file, nynfa, nyn_on_file, nysfa,  &
     1126                                      nys_on_file, offset_xa, offset_ya,       &
     1127                                      overlap_count(i), tmp_2d )
     1128       ENDIF
     1129
     1130!
     1131!--    Read radiation restart data
     1132       IF ( radiation )  THEN
     1133          CALL radiation_read_restart_data( i, nxlfa, nxl_on_file, nxrfa,      &
     1134                                            nxr_on_file, nynfa, nyn_on_file,   &
     1135                                            nysfa, nys_on_file, offset_xa,     &
     1136                                            offset_ya, overlap_count(i),       &
     1137                                            tmp_2d, tmp_3d )
     1138       ENDIF
    12801139
    12811140!
Note: See TracChangeset for help on using the changeset viewer.