Ignore:
Timestamp:
Jul 26, 2016 7:52:02 AM (8 years ago)
Author:
maronga
Message:

further modularization of land surface model (2D/3D output and restart data)

File:
1 edited

Legend:

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

    r1961 r1972  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! Land surface actions are now done directly in the respective module
    2222!
    2323! Former revisions:
     
    129129
    130130    USE land_surface_model_mod,                                                &
    131         ONLY:  c_liq, c_liq_av, c_soil_av, c_veg, c_veg_av, ghf_eb,            &
    132                ghf_eb_av, lai, lai_av, m_liq_eb, m_liq_eb_av, m_soil,          &
    133                m_soil_av, nzb_soil, nzt_soil, qsws_eb, qsws_eb_av,             &
    134                qsws_liq_eb, qsws_liq_eb_av, qsws_soil_eb, qsws_soil_eb_av,     &
    135                qsws_veg_eb, qsws_veg_eb_av, shf_eb, shf_eb_av, r_a, r_a_av,    &
    136                r_s, r_s_av, t_soil, t_soil_av
     131        ONLY:  land_surface, lsm_3d_data_averaging
    137132
    138133    USE particle_attributes,                                                   &
     
    173168          SELECT CASE ( TRIM( doav(ii) ) )
    174169
    175              CASE ( 'c_liq*' )
    176                 IF ( .NOT. ALLOCATED( c_liq_av ) )  THEN
    177                    ALLOCATE( c_liq_av(nysg:nyng,nxlg:nxrg) )
    178                 ENDIF
    179                 c_liq_av = 0.0_wp
    180 
    181              CASE ( 'c_soil*' )
    182                 IF ( .NOT. ALLOCATED( c_soil_av ) )  THEN
    183                    ALLOCATE( c_soil_av(nysg:nyng,nxlg:nxrg) )
    184                 ENDIF
    185                 c_soil_av = 0.0_wp
    186 
    187              CASE ( 'c_veg*' )
    188                 IF ( .NOT. ALLOCATED( c_veg_av ) )  THEN
    189                    ALLOCATE( c_veg_av(nysg:nyng,nxlg:nxrg) )
    190                 ENDIF
    191                 c_veg_av = 0.0_wp
    192 
    193170             CASE ( 'e' )
    194171                IF ( .NOT. ALLOCATED( e_av ) )  THEN
     
    197174                e_av = 0.0_wp
    198175
    199              CASE ( 'ghf_eb*' )
    200                 IF ( .NOT. ALLOCATED( ghf_eb_av ) )  THEN
    201                    ALLOCATE( ghf_eb_av(nysg:nyng,nxlg:nxrg) )
    202                 ENDIF
    203                 ghf_eb_av = 0.0_wp
    204 
    205              CASE ( 'lai*' )
    206                 IF ( .NOT. ALLOCATED( lai_av ) )  THEN
    207                    ALLOCATE( lai_av(nysg:nyng,nxlg:nxrg) )
    208                 ENDIF
    209                 lai_av = 0.0_wp
    210 
    211176             CASE ( 'lpt' )
    212177                IF ( .NOT. ALLOCATED( lpt_av ) )  THEN
     
    221186                lwp_av = 0.0_wp
    222187
    223              CASE ( 'm_liq_eb*' )
    224                 IF ( .NOT. ALLOCATED( m_liq_eb_av ) )  THEN
    225                    ALLOCATE( m_liq_eb_av(nysg:nyng,nxlg:nxrg) )
    226                 ENDIF
    227                 m_liq_eb_av = 0.0_wp
    228 
    229              CASE ( 'm_soil' )
    230                 IF ( .NOT. ALLOCATED( m_soil_av ) )  THEN
    231                    ALLOCATE( m_soil_av(nzb_soil:nzt_soil,nysg:nyng,nxlg:nxrg) )
    232                 ENDIF
    233                 m_soil_av = 0.0_wp
    234 
    235188             CASE ( 'nr' )
    236189                IF ( .NOT. ALLOCATED( nr_av ) )  THEN
     
    329282                qsws_av = 0.0_wp
    330283
    331              CASE ( 'qsws_eb*' )
    332                 IF ( .NOT. ALLOCATED( qsws_eb_av ) )  THEN
    333                    ALLOCATE( qsws_eb_av(nysg:nyng,nxlg:nxrg) )
    334                 ENDIF
    335                 qsws_eb_av = 0.0_wp
    336 
    337              CASE ( 'qsws_liq_eb*' )
    338                 IF ( .NOT. ALLOCATED( qsws_liq_eb_av ) )  THEN
    339                    ALLOCATE( qsws_liq_eb_av(nysg:nyng,nxlg:nxrg) )
    340                 ENDIF
    341                 qsws_liq_eb_av = 0.0_wp
    342 
    343              CASE ( 'qsws_soil_eb*' )
    344                 IF ( .NOT. ALLOCATED( qsws_soil_eb_av ) )  THEN
    345                    ALLOCATE( qsws_soil_eb_av(nysg:nyng,nxlg:nxrg) )
    346                 ENDIF
    347                 qsws_soil_eb_av = 0.0_wp
    348 
    349              CASE ( 'qsws_veg_eb*' )
    350                 IF ( .NOT. ALLOCATED( qsws_veg_eb_av ) )  THEN
    351                    ALLOCATE( qsws_veg_eb_av(nysg:nyng,nxlg:nxrg) )
    352                 ENDIF
    353                 qsws_veg_eb_av = 0.0_wp
    354 
    355284             CASE ( 'qv' )
    356285                IF ( .NOT. ALLOCATED( qv_av ) )  THEN
     
    419348                rho_av = 0.0_wp
    420349
    421              CASE ( 'r_a*' )
    422                 IF ( .NOT. ALLOCATED( r_a_av ) )  THEN
    423                    ALLOCATE( r_a_av(nysg:nyng,nxlg:nxrg) )
    424                 ENDIF
    425                 r_a_av = 0.0_wp
    426 
    427              CASE ( 'r_s*' )
    428                 IF ( .NOT. ALLOCATED( r_s_av ) )  THEN
    429                    ALLOCATE( r_s_av(nysg:nyng,nxlg:nxrg) )
    430                 ENDIF
    431                 r_s_av = 0.0_wp
    432 
    433350             CASE ( 's' )
    434351                IF ( .NOT. ALLOCATED( s_av ) )  THEN
     
    449366                shf_av = 0.0_wp
    450367
    451              CASE ( 'shf_eb*' )
    452                 IF ( .NOT. ALLOCATED( shf_eb_av ) )  THEN
    453                    ALLOCATE( shf_eb_av(nysg:nyng,nxlg:nxrg) )
    454                 ENDIF
    455                 shf_eb_av = 0.0_wp
    456 
    457              CASE ( 't_soil' )
    458                 IF ( .NOT. ALLOCATED( t_soil_av ) )  THEN
    459                    ALLOCATE( t_soil_av(nzb_soil:nzt_soil,nysg:nyng,nxlg:nxrg) )
    460                 ENDIF
    461                 t_soil_av = 0.0_wp
    462 
    463368             CASE ( 't*' )
    464369                IF ( .NOT. ALLOCATED( ts_av ) )  THEN
     
    516421
    517422             CASE DEFAULT
     423
     424!
     425!--             Land surface quantity
     426                IF ( land_surface )  THEN
     427                   CALL lsm_3d_data_averaging( 'allocate', doav(ii) )
     428                ENDIF
     429
    518430!
    519431!--             User-defined quantity
     
    534446       SELECT CASE ( TRIM( doav(ii) ) )
    535447
    536           CASE ( 'c_liq*' )
    537              DO  i = nxlg, nxrg
    538                 DO  j = nysg, nyng
    539                    c_liq_av(j,i) = c_liq_av(j,i) + c_liq(j,i)
    540                 ENDDO
    541              ENDDO
    542 
    543           CASE ( 'c_soil*' )
    544              DO  i = nxlg, nxrg
    545                 DO  j = nysg, nyng
    546                    c_soil_av(j,i) = c_soil_av(j,i) + (1.0 - c_veg(j,i))
    547                 ENDDO
    548              ENDDO
    549 
    550           CASE ( 'c_veg*' )
    551              DO  i = nxlg, nxrg
    552                 DO  j = nysg, nyng
    553                    c_veg_av(j,i) = c_veg_av(j,i) + c_veg(j,i)
    554                 ENDDO
    555              ENDDO
    556 
    557448          CASE ( 'e' )
    558449             DO  i = nxlg, nxrg
     
    561452                      e_av(k,j,i) = e_av(k,j,i) + e(k,j,i)
    562453                   ENDDO
    563                 ENDDO
    564              ENDDO
    565 
    566           CASE ( 'ghf_eb*' )
    567              DO  i = nxlg, nxrg
    568                 DO  j = nysg, nyng
    569                    ghf_eb_av(j,i) = ghf_eb_av(j,i) + ghf_eb(j,i)
    570                 ENDDO
    571              ENDDO
    572 
    573           CASE ( 'lai*' )
    574              DO  i = nxlg, nxrg
    575                 DO  j = nysg, nyng
    576                    lai_av(j,i) = lai_av(j,i) + lai(j,i)
    577454                ENDDO
    578455             ENDDO
     
    592469                   lwp_av(j,i) = lwp_av(j,i) + SUM( ql(nzb:nzt,j,i)            &
    593470                                               * dzw(1:nzt+1) ) * rho_surface
    594                 ENDDO
    595              ENDDO
    596 
    597           CASE ( 'm_liq_eb*' )
    598              DO  i = nxlg, nxrg
    599                 DO  j = nysg, nyng
    600                    m_liq_eb_av(j,i) = m_liq_eb_av(j,i) + m_liq_eb(j,i)
    601                 ENDDO
    602              ENDDO
    603 
    604           CASE ( 'm_soil' )
    605              DO  i = nxlg, nxrg
    606                 DO  j = nysg, nyng
    607                    DO  k = nzb_soil, nzt_soil
    608                       m_soil_av(k,j,i) = m_soil_av(k,j,i) + m_soil(k,j,i)
    609                    ENDDO
    610471                ENDDO
    611472             ENDDO
     
    782643             ENDDO
    783644
    784           CASE ( 'qsws_eb*' )
    785              DO  i = nxlg, nxrg
    786                 DO  j = nysg, nyng
    787                    qsws_eb_av(j,i) = qsws_eb_av(j,i) + qsws_eb(j,i)
    788                 ENDDO
    789              ENDDO
    790 
    791           CASE ( 'qsws_liq_eb*' )
    792              DO  i = nxlg, nxrg
    793                 DO  j = nysg, nyng
    794                    qsws_liq_eb_av(j,i) = qsws_liq_eb_av(j,i) + qsws_liq_eb(j,i)
    795                 ENDDO
    796              ENDDO
    797 
    798           CASE ( 'qsws_soil_eb*' )
    799              DO  i = nxlg, nxrg
    800                 DO  j = nysg, nyng
    801                    qsws_soil_eb_av(j,i) = qsws_soil_eb_av(j,i) + qsws_soil_eb(j,i)
    802                 ENDDO
    803              ENDDO
    804 
    805           CASE ( 'qsws_veg_eb*' )
    806              DO  i = nxlg, nxrg
    807                 DO  j = nysg, nyng
    808                    qsws_veg_eb_av(j,i) = qsws_veg_eb_av(j,i) + qsws_veg_eb(j,i)
    809                 ENDDO
    810              ENDDO
    811 
    812645          CASE ( 'qv' )
    813646             DO  i = nxlg, nxrg
     
    898731             ENDDO
    899732
    900           CASE ( 'r_a*' )
    901              DO  i = nxlg, nxrg
    902                 DO  j = nysg, nyng
    903                    r_a_av(j,i) = r_a_av(j,i) + r_a(j,i)
    904                 ENDDO
    905              ENDDO
    906 
    907           CASE ( 'r_s*' )
    908              DO  i = nxlg, nxrg
    909                 DO  j = nysg, nyng
    910                    r_s_av(j,i) = r_s_av(j,i) + r_s(j,i)
    911                 ENDDO
    912              ENDDO
    913 
    914733          CASE ( 'rho' )
    915734             DO  i = nxlg, nxrg
     
    946765             ENDDO
    947766
    948           CASE ( 'shf_eb*' )
    949              DO  i = nxlg, nxrg
    950                 DO  j = nysg, nyng
    951                    shf_eb_av(j,i) = shf_eb_av(j,i) + shf_eb(j,i)
    952                 ENDDO
    953              ENDDO
    954 
    955767          CASE ( 'ssws*' )
    956768             DO  i = nxlg, nxrg
     
    967779             ENDDO
    968780
    969           CASE ( 't_soil' )
    970              DO  i = nxlg, nxrg
    971                 DO  j = nysg, nyng
    972                    DO  k = nzb_soil, nzt_soil
    973                       t_soil_av(k,j,i) = t_soil_av(k,j,i) + t_soil(k,j,i)
    974                    ENDDO
    975                 ENDDO
    976              ENDDO
    977 
    978781          CASE ( 'u' )
    979782             DO  i = nxlg, nxrg
     
    1041844
    1042845          CASE DEFAULT
     846!
     847!--          Land surface quantity
     848             IF ( land_surface )  THEN
     849                CALL lsm_3d_data_averaging( 'sum', doav(ii) )
     850             ENDIF
     851
    1043852!
    1044853!--          User-defined quantity
Note: See TracChangeset for help on using the changeset viewer.