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/sum_up_3d_data.f90

    r1973 r1976  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! Radiation actions are now done directly in the respective module
    2222!
    2323! Former revisions:
     
    138138
    139139    USE radiation_model_mod,                                                   &
    140         ONLY:  rad_net, rad_net_av, rad_sw_in, rad_sw_in_av, rad_sw_out,       &
    141                rad_sw_out_av, rad_sw_cs_hr, rad_sw_cs_hr_av, rad_sw_hr,        &
    142                rad_sw_hr_av, rad_lw_in, rad_lw_in_av, rad_lw_out,              &
    143                rad_lw_out_av, rad_lw_cs_hr, rad_lw_cs_hr_av, rad_lw_hr,        &
    144                rad_lw_hr_av
     140        ONLY:  radiation, radiation_3d_data_averaging
    145141
    146142
     
    291287                qv_av = 0.0_wp
    292288
    293              CASE ( 'rad_net*' )
    294                 IF ( .NOT. ALLOCATED( rad_net_av ) )  THEN
    295                    ALLOCATE( rad_net_av(nysg:nyng,nxlg:nxrg) )
    296                 ENDIF
    297                 rad_net_av = 0.0_wp
    298 
    299              CASE ( 'rad_lw_in' )
    300                 IF ( .NOT. ALLOCATED( rad_lw_in_av ) )  THEN
    301                    ALLOCATE( rad_lw_in_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    302                 ENDIF
    303                 rad_lw_in_av = 0.0_wp
    304 
    305              CASE ( 'rad_lw_out' )
    306                 IF ( .NOT. ALLOCATED( rad_lw_out_av ) )  THEN
    307                    ALLOCATE( rad_lw_in_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    308                 ENDIF
    309                 rad_lw_out_av = 0.0_wp
    310 
    311              CASE ( 'rad_lw_cs_hr' )
    312                 IF ( .NOT. ALLOCATED( rad_lw_cs_hr_av ) )  THEN
    313                    ALLOCATE( rad_lw_cs_hr_av(nzb+1:nzt+1,nysg:nyng,nxlg:nxrg) )
    314                 ENDIF
    315                 rad_lw_cs_hr_av = 0.0_wp
    316 
    317              CASE ( 'rad_lw_hr' )
    318                 IF ( .NOT. ALLOCATED( rad_lw_hr_av ) )  THEN
    319                    ALLOCATE( rad_lw_hr_av(nzb+1:nzt+1,nysg:nyng,nxlg:nxrg) )
    320                 ENDIF
    321                 rad_lw_hr_av = 0.0_wp
    322 
    323              CASE ( 'rad_sw_in' )
    324                 IF ( .NOT. ALLOCATED( rad_sw_in_av ) )  THEN
    325                    ALLOCATE( rad_sw_in_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    326                 ENDIF
    327                 rad_sw_in_av = 0.0_wp
    328 
    329              CASE ( 'rad_sw_out' )
    330                 IF ( .NOT. ALLOCATED( rad_sw_out_av ) )  THEN
    331                    ALLOCATE( rad_sw_out_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    332                 ENDIF
    333                 rad_sw_out_av = 0.0_wp
    334 
    335              CASE ( 'rad_sw_cs_hr' )
    336                 IF ( .NOT. ALLOCATED( rad_sw_cs_hr_av ) )  THEN
    337                    ALLOCATE( rad_sw_cs_hr_av(nzb+1:nzt+1,nysg:nyng,nxlg:nxrg) )
    338                 ENDIF
    339                 rad_sw_cs_hr_av = 0.0_wp
    340 
    341              CASE ( 'rad_sw_hr' )
    342                 IF ( .NOT. ALLOCATED( rad_sw_hr_av ) )  THEN
    343                    ALLOCATE( rad_sw_hr_av(nzb+1:nzt+1,nysg:nyng,nxlg:nxrg) )
    344                 ENDIF
    345                 rad_sw_hr_av = 0.0_wp
    346 
    347289             CASE ( 'rho' )
    348290                IF ( .NOT. ALLOCATED( rho_av ) )  THEN
     
    429371                IF ( land_surface )  THEN
    430372                   CALL lsm_3d_data_averaging( 'allocate', doav(ii) )
     373                ENDIF
     374
     375!
     376!--             Radiation quantity
     377                IF ( radiation )  THEN
     378                   CALL radiation_3d_data_averaging( 'allocate', doav(ii) )
    431379                ENDIF
    432380
     
    655603             ENDDO
    656604
    657           CASE ( 'rad_net*' )
    658              DO  i = nxlg, nxrg
    659                 DO  j = nysg, nyng
    660                    rad_net_av(j,i) = rad_net_av(j,i) + rad_net(j,i)
    661                 ENDDO
    662              ENDDO
    663 
    664           CASE ( 'rad_lw_in' )
    665              DO  i = nxlg, nxrg
    666                 DO  j = nysg, nyng
    667                    DO  k = nzb, nzt+1
    668                       rad_lw_in_av(k,j,i) = rad_lw_in_av(k,j,i) + rad_lw_in(k,j,i)
    669                    ENDDO
    670                 ENDDO
    671              ENDDO
    672 
    673           CASE ( 'rad_lw_out' )
    674              DO  i = nxlg, nxrg
    675                 DO  j = nysg, nyng
    676                    DO  k = nzb, nzt+1
    677                       rad_lw_out_av(k,j,i) = rad_lw_out_av(k,j,i) + rad_lw_out(k,j,i)
    678                    ENDDO
    679                 ENDDO
    680              ENDDO
    681 
    682           CASE ( 'rad_lw_cs_hr' )
    683              DO  i = nxlg, nxrg
    684                 DO  j = nysg, nyng
    685                    DO  k = nzb, nzt+1
    686                       rad_lw_cs_hr_av(k,j,i) = rad_lw_cs_hr_av(k,j,i) + rad_lw_cs_hr(k,j,i)
    687                    ENDDO
    688                 ENDDO
    689              ENDDO
    690 
    691           CASE ( 'rad_lw_hr' )
    692              DO  i = nxlg, nxrg
    693                 DO  j = nysg, nyng
    694                    DO  k = nzb, nzt+1
    695                       rad_lw_hr_av(k,j,i) = rad_lw_hr_av(k,j,i) + rad_lw_hr(k,j,i)
    696                    ENDDO
    697                 ENDDO
    698              ENDDO
    699 
    700           CASE ( 'rad_sw_in' )
    701              DO  i = nxlg, nxrg
    702                 DO  j = nysg, nyng
    703                    DO  k = nzb, nzt+1
    704                       rad_sw_in_av(k,j,i) = rad_sw_in_av(k,j,i) + rad_sw_in(k,j,i)
    705                    ENDDO
    706                 ENDDO
    707              ENDDO
    708 
    709           CASE ( 'rad_sw_out' )
    710              DO  i = nxlg, nxrg
    711                 DO  j = nysg, nyng
    712                    DO  k = nzb, nzt+1
    713                       rad_sw_out_av(k,j,i) = rad_sw_out_av(k,j,i) + rad_sw_out(k,j,i)
    714                    ENDDO
    715                 ENDDO
    716              ENDDO
    717 
    718           CASE ( 'rad_sw_cs_hr' )
    719              DO  i = nxlg, nxrg
    720                 DO  j = nysg, nyng
    721                    DO  k = nzb, nzt+1
    722                       rad_sw_cs_hr_av(k,j,i) = rad_sw_cs_hr_av(k,j,i) + rad_sw_cs_hr(k,j,i)
    723                    ENDDO
    724                 ENDDO
    725              ENDDO
    726 
    727           CASE ( 'rad_sw_hr' )
    728              DO  i = nxlg, nxrg
    729                 DO  j = nysg, nyng
    730                    DO  k = nzb, nzt+1
    731                       rad_sw_hr_av(k,j,i) = rad_sw_hr_av(k,j,i) + rad_sw_hr(k,j,i)
    732                    ENDDO
    733                 ENDDO
    734              ENDDO
    735 
    736605          CASE ( 'rho' )
    737606             DO  i = nxlg, nxrg
     
    854723
    855724!
     725!--          Radiation quantity
     726             IF ( radiation )  THEN
     727                CALL radiation_3d_data_averaging( 'sum', doav(ii) )
     728             ENDIF
     729
     730!
    856731!--          User-defined quantity
    857732             CALL user_3d_data_averaging( 'sum', doav(ii) )
Note: See TracChangeset for help on using the changeset viewer.