Ignore:
Timestamp:
Apr 27, 2018 12:33:25 PM (6 years ago)
Author:
Giersch
Message:

precipitation_rate removed, further allocation checks for data output of averaged quantities implemented, double CALL of flow_statistics at the beginning of time_integration removed, further minor bugfixes, comments added

File:
1 edited

Legend:

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

    r2817 r3004  
    2525! -----------------
    2626! $Id$
     27! Further allocation checks implemented, case z0q* added
     28!
     29! 2885 2018-03-14 11:02:46Z Giersch
    2730! Preliminary gust module interface implemented
    2831!
     
    201204
    202205          CASE ( 'e' )
    203              DO  i = nxlg, nxrg
    204                 DO  j = nysg, nyng
    205                    DO  k = nzb, nzt+1
    206                       e_av(k,j,i) = e_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    207                    ENDDO
    208                 ENDDO
    209              ENDDO
     206             IF ( ALLOCATED( e_av ) ) THEN
     207                DO  i = nxlg, nxrg
     208                   DO  j = nysg, nyng
     209                      DO  k = nzb, nzt+1
     210                         e_av(k,j,i) = e_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     211                      ENDDO
     212                   ENDDO
     213                ENDDO
     214             ENDIF
    210215
    211216          CASE ( 'ghf*' )
    212              DO  i = nxl, nxr
    213                 DO  j = nys, nyn
    214                    ghf_av(j,i) = ghf_av(j,i)                                   &
    215                                  / REAL( average_count_3d, KIND=wp )
    216                 ENDDO
    217              ENDDO
    218              CALL exchange_horiz_2d( ghf_av, nbgp )
     217             IF ( ALLOCATED( ghf_av ) ) THEN
     218                DO  i = nxl, nxr
     219                   DO  j = nys, nyn
     220                      ghf_av(j,i) = ghf_av(j,i)                                   &
     221                                    / REAL( average_count_3d, KIND=wp )
     222                   ENDDO
     223                ENDDO
     224                CALL exchange_horiz_2d( ghf_av, nbgp )
     225             ENDIF
    219226
    220227          CASE ( 'qsws*' )
    221              DO  i = nxlg, nxrg
    222                 DO  j = nysg, nyng
    223                    qsws_av(j,i) = qsws_av(j,i) / REAL( average_count_3d, KIND=wp )
    224                 ENDDO
    225              ENDDO
    226              CALL exchange_horiz_2d( qsws_av, nbgp )
     228             IF ( ALLOCATED( qsws_av ) ) THEN
     229                DO  i = nxlg, nxrg
     230                   DO  j = nysg, nyng
     231                      qsws_av(j,i) = qsws_av(j,i) / REAL( average_count_3d, KIND=wp )
     232                   ENDDO
     233                ENDDO
     234                CALL exchange_horiz_2d( qsws_av, nbgp )
     235             ENDIF
    227236
    228237          CASE ( 'lpt' )
    229              DO  i = nxlg, nxrg
    230                 DO  j = nysg, nyng
    231                    DO  k = nzb, nzt+1
    232                       lpt_av(k,j,i) = lpt_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    233                    ENDDO
    234                 ENDDO
    235              ENDDO
     238             IF ( ALLOCATED( lpt_av ) ) THEN
     239                DO  i = nxlg, nxrg
     240                   DO  j = nysg, nyng
     241                      DO  k = nzb, nzt+1
     242                         lpt_av(k,j,i) = lpt_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     243                      ENDDO
     244                   ENDDO
     245                ENDDO
     246             ENDIF
    236247
    237248          CASE ( 'lwp*' )
    238              DO  i = nxlg, nxrg
    239                 DO  j = nysg, nyng
    240                    lwp_av(j,i) = lwp_av(j,i) / REAL( average_count_3d, KIND=wp )
    241                 ENDDO
    242              ENDDO
     249             IF ( ALLOCATED( lwp_av ) ) THEN
     250                DO  i = nxlg, nxrg
     251                   DO  j = nysg, nyng
     252                      lwp_av(j,i) = lwp_av(j,i) / REAL( average_count_3d, KIND=wp )
     253                   ENDDO
     254                ENDDO
     255             ENDIF
    243256
    244257          CASE ( 'nc' )
    245              DO  i = nxlg, nxrg
    246                 DO  j = nysg, nyng
    247                    DO  k = nzb, nzt+1
    248                       nc_av(k,j,i) = nc_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    249                    ENDDO
    250                 ENDDO
    251              ENDDO
     258             IF ( ALLOCATED( nc_av ) ) THEN
     259                DO  i = nxlg, nxrg
     260                   DO  j = nysg, nyng
     261                      DO  k = nzb, nzt+1
     262                         nc_av(k,j,i) = nc_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     263                      ENDDO
     264                   ENDDO
     265                ENDDO
     266             ENDIF
    252267
    253268          CASE ( 'nr' )
    254              DO  i = nxlg, nxrg
    255                 DO  j = nysg, nyng
    256                    DO  k = nzb, nzt+1
    257                       nr_av(k,j,i) = nr_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    258                    ENDDO
    259                 ENDDO
    260              ENDDO
     269             IF ( ALLOCATED( nr_av ) ) THEN
     270                DO  i = nxlg, nxrg
     271                   DO  j = nysg, nyng
     272                      DO  k = nzb, nzt+1
     273                         nr_av(k,j,i) = nr_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     274                      ENDDO
     275                   ENDDO
     276                ENDDO
     277             ENDIF
    261278
    262279         CASE ( 'ol*' )
    263              DO  i = nxlg, nxrg
    264                 DO  j = nysg, nyng
    265                    ol_av(j,i) = ol_av(j,i) / REAL( average_count_3d, KIND=wp )
    266                 ENDDO
    267              ENDDO
    268              CALL exchange_horiz_2d( ol_av, nbgp )
     280             IF ( ALLOCATED( ol_av ) ) THEN
     281                DO  i = nxlg, nxrg
     282                   DO  j = nysg, nyng
     283                      ol_av(j,i) = ol_av(j,i) / REAL( average_count_3d, KIND=wp )
     284                   ENDDO
     285                ENDDO
     286                CALL exchange_horiz_2d( ol_av, nbgp )
     287             ENDIF
    269288
    270289          CASE ( 'p' )
    271              DO  i = nxlg, nxrg
    272                 DO  j = nysg, nyng
    273                    DO  k = nzb, nzt+1
    274                       p_av(k,j,i) = p_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    275                    ENDDO
    276                 ENDDO
    277              ENDDO
     290             IF ( ALLOCATED( p_av ) ) THEN
     291                DO  i = nxlg, nxrg
     292                   DO  j = nysg, nyng
     293                      DO  k = nzb, nzt+1
     294                         p_av(k,j,i) = p_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     295                      ENDDO
     296                   ENDDO
     297                ENDDO
     298             ENDIF
    278299
    279300          CASE ( 'pc' )
    280              DO  i = nxl, nxr
    281                 DO  j = nys, nyn
    282                    DO  k = nzb, nzt+1
    283                       pc_av(k,j,i) = pc_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    284                    ENDDO
    285                 ENDDO
    286              ENDDO
     301             IF ( ALLOCATED( pc_av ) ) THEN
     302                DO  i = nxl, nxr
     303                   DO  j = nys, nyn
     304                      DO  k = nzb, nzt+1
     305                         pc_av(k,j,i) = pc_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     306                      ENDDO
     307                   ENDDO
     308                ENDDO
     309             ENDIF
    287310
    288311          CASE ( 'pr' )
    289              DO  i = nxl, nxr
    290                 DO  j = nys, nyn
    291                    DO  k = nzb, nzt+1
    292                       pr_av(k,j,i) = pr_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    293                    ENDDO
    294                 ENDDO
    295              ENDDO
    296 
    297           CASE ( 'prr*' )
    298              DO  i = nxlg, nxrg
    299                 DO  j = nysg, nyng
    300                    precipitation_rate_av(j,i) = precipitation_rate_av(j,i) /   &
    301                                                 REAL( average_count_3d, KIND=wp )
    302                 ENDDO
    303              ENDDO
     312             IF ( ALLOCATED( pr_av ) ) THEN
     313                DO  i = nxl, nxr
     314                   DO  j = nys, nyn
     315                      DO  k = nzb, nzt+1
     316                         pr_av(k,j,i) = pr_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     317                      ENDDO
     318                   ENDDO
     319                ENDDO
     320             ENDIF
     321
     322          CASE ( 'prr' )
     323             IF ( ALLOCATED( prr_av ) ) THEN
     324                DO  i = nxlg, nxrg
     325                   DO  j = nysg, nyng
     326                      DO  k = nzb, nzt+1
     327                         prr_av(k,j,i) = prr_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     328                      ENDDO
     329                   ENDDO
     330                ENDDO
     331             ENDIF
    304332
    305333          CASE ( 'pt' )
    306              DO  i = nxlg, nxrg
    307                 DO  j = nysg, nyng
    308                    DO  k = nzb, nzt+1
    309                       pt_av(k,j,i) = pt_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    310                    ENDDO
    311                 ENDDO
    312              ENDDO
     334             IF ( ALLOCATED( pt_av ) ) THEN
     335                DO  i = nxlg, nxrg
     336                   DO  j = nysg, nyng
     337                      DO  k = nzb, nzt+1
     338                         pt_av(k,j,i) = pt_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     339                      ENDDO
     340                   ENDDO
     341                ENDDO
     342             ENDIF
    313343
    314344          CASE ( 'q' )
    315              DO  i = nxlg, nxrg
    316                 DO  j = nysg, nyng
    317                    DO  k = nzb, nzt+1
    318                       q_av(k,j,i) = q_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    319                    ENDDO
    320                 ENDDO
    321              ENDDO
     345             IF ( ALLOCATED( q_av ) ) THEN
     346                DO  i = nxlg, nxrg
     347                   DO  j = nysg, nyng
     348                      DO  k = nzb, nzt+1
     349                         q_av(k,j,i) = q_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     350                      ENDDO
     351                   ENDDO
     352                ENDDO
     353             ENDIF
    322354
    323355          CASE ( 'qc' )
    324              DO  i = nxlg, nxrg
    325                 DO  j = nysg, nyng
    326                    DO  k = nzb, nzt+1
    327                       qc_av(k,j,i) = qc_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    328                    ENDDO
    329                 ENDDO
    330              ENDDO
     356             IF ( ALLOCATED( qc_av ) ) THEN
     357                DO  i = nxlg, nxrg
     358                   DO  j = nysg, nyng
     359                      DO  k = nzb, nzt+1
     360                         qc_av(k,j,i) = qc_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     361                      ENDDO
     362                   ENDDO
     363                ENDDO
     364             ENDIF
    331365
    332366          CASE ( 'ql' )
    333              DO  i = nxlg, nxrg
    334                 DO  j = nysg, nyng
    335                    DO  k = nzb, nzt+1
    336                       ql_av(k,j,i) = ql_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    337                    ENDDO
    338                 ENDDO
    339              ENDDO
     367             IF ( ALLOCATED( ql_av ) ) THEN
     368                DO  i = nxlg, nxrg
     369                   DO  j = nysg, nyng
     370                      DO  k = nzb, nzt+1
     371                         ql_av(k,j,i) = ql_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     372                      ENDDO
     373                   ENDDO
     374                ENDDO
     375             ENDIF
    340376
    341377          CASE ( 'ql_c' )
    342              DO  i = nxlg, nxrg
    343                 DO  j = nysg, nyng
    344                    DO  k = nzb, nzt+1
    345                       ql_c_av(k,j,i) = ql_c_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    346                    ENDDO
    347                 ENDDO
    348              ENDDO
     378             IF ( ALLOCATED( ql_c_av ) ) THEN
     379                DO  i = nxlg, nxrg
     380                   DO  j = nysg, nyng
     381                      DO  k = nzb, nzt+1
     382                         ql_c_av(k,j,i) = ql_c_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     383                      ENDDO
     384                   ENDDO
     385                ENDDO
     386             ENDIF
    349387
    350388          CASE ( 'ql_v' )
    351              DO  i = nxlg, nxrg
    352                 DO  j = nysg, nyng
    353                    DO  k = nzb, nzt+1
    354                       ql_v_av(k,j,i) = ql_v_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    355                    ENDDO
    356                 ENDDO
    357              ENDDO
     389             IF ( ALLOCATED( ql_v_av ) ) THEN
     390                DO  i = nxlg, nxrg
     391                   DO  j = nysg, nyng
     392                      DO  k = nzb, nzt+1
     393                         ql_v_av(k,j,i) = ql_v_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     394                      ENDDO
     395                   ENDDO
     396                ENDDO
     397             ENDIF
    358398
    359399          CASE ( 'ql_vp' )
    360              DO  i = nxlg, nxrg
    361                 DO  j = nysg, nyng
    362                    DO  k = nzb, nzt+1
    363                       ql_vp_av(k,j,i) = ql_vp_av(k,j,i) /                      &
    364                                         REAL( average_count_3d, KIND=wp )
    365                    ENDDO
    366                 ENDDO
    367              ENDDO
     400             IF ( ALLOCATED( ql_vp_av ) ) THEN
     401                DO  i = nxlg, nxrg
     402                   DO  j = nysg, nyng
     403                      DO  k = nzb, nzt+1
     404                         ql_vp_av(k,j,i) = ql_vp_av(k,j,i) /                      &
     405                                           REAL( average_count_3d, KIND=wp )
     406                      ENDDO
     407                   ENDDO
     408                ENDDO
     409             ENDIF
    368410
    369411          CASE ( 'qr' )
    370              DO  i = nxlg, nxrg
    371                 DO  j = nysg, nyng
    372                    DO  k = nzb, nzt+1
    373                       qr_av(k,j,i) = qr_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    374                    ENDDO
    375                 ENDDO
    376              ENDDO
     412             IF ( ALLOCATED( qr_av ) ) THEN
     413                DO  i = nxlg, nxrg
     414                   DO  j = nysg, nyng
     415                      DO  k = nzb, nzt+1
     416                         qr_av(k,j,i) = qr_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     417                      ENDDO
     418                   ENDDO
     419                ENDDO
     420             ENDIF
    377421
    378422          CASE ( 'qv' )
    379              DO  i = nxlg, nxrg
    380                 DO  j = nysg, nyng
    381                    DO  k = nzb, nzt+1
    382                       qv_av(k,j,i) = qv_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    383                    ENDDO
    384                 ENDDO
    385              ENDDO
     423             IF ( ALLOCATED( qv_av ) ) THEN
     424                DO  i = nxlg, nxrg
     425                   DO  j = nysg, nyng
     426                      DO  k = nzb, nzt+1
     427                         qv_av(k,j,i) = qv_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     428                      ENDDO
     429                   ENDDO
     430                ENDDO
     431             ENDIF
    386432
    387433         CASE ( 'r_a*' )
    388              DO  i = nxlg, nxrg
    389                 DO  j = nysg, nyng
    390                    r_a_av(j,i) = r_a_av(j,i) / REAL( average_count_3d, KIND=wp )
    391                 ENDDO
    392              ENDDO
    393              CALL exchange_horiz_2d( r_a_av, nbgp )
     434             IF ( ALLOCATED( r_a_av ) ) THEN
     435                DO  i = nxlg, nxrg
     436                   DO  j = nysg, nyng
     437                      r_a_av(j,i) = r_a_av(j,i) / REAL( average_count_3d, KIND=wp )
     438                   ENDDO
     439                ENDDO
     440                CALL exchange_horiz_2d( r_a_av, nbgp )
     441             ENDIF
    394442
    395443          CASE ( 'rho_ocean' )
    396              DO  i = nxlg, nxrg
    397                 DO  j = nysg, nyng
    398                    DO  k = nzb, nzt+1
    399                       rho_ocean_av(k,j,i) = rho_ocean_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    400                    ENDDO
    401                 ENDDO
    402              ENDDO
     444             IF ( ALLOCATED( rho_ocean_av ) ) THEN
     445                DO  i = nxlg, nxrg
     446                   DO  j = nysg, nyng
     447                      DO  k = nzb, nzt+1
     448                         rho_ocean_av(k,j,i) = rho_ocean_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     449                      ENDDO
     450                   ENDDO
     451                ENDDO
     452             ENDIF
    403453
    404454          CASE ( 's' )
    405              DO  i = nxlg, nxrg
    406                 DO  j = nysg, nyng
    407                    DO  k = nzb, nzt+1
    408                       s_av(k,j,i) = s_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    409                    ENDDO
    410                 ENDDO
    411              ENDDO
     455             IF ( ALLOCATED( s_av ) ) THEN
     456                DO  i = nxlg, nxrg
     457                   DO  j = nysg, nyng
     458                      DO  k = nzb, nzt+1
     459                         s_av(k,j,i) = s_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     460                      ENDDO
     461                   ENDDO
     462                ENDDO
     463             ENDIF
    412464
    413465          CASE ( 'sa' )
    414              DO  i = nxlg, nxrg
    415                 DO  j = nysg, nyng
    416                    DO  k = nzb, nzt+1
    417                       sa_av(k,j,i) = sa_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    418                    ENDDO
    419                 ENDDO
    420              ENDDO
     466             IF ( ALLOCATED( sa_av ) ) THEN
     467                DO  i = nxlg, nxrg
     468                   DO  j = nysg, nyng
     469                      DO  k = nzb, nzt+1
     470                         sa_av(k,j,i) = sa_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     471                      ENDDO
     472                   ENDDO
     473                ENDDO
     474             ENDIF
    421475
    422476         CASE ( 'shf*' )
    423              DO  i = nxlg, nxrg
    424                 DO  j = nysg, nyng
    425                    shf_av(j,i) = shf_av(j,i) / REAL( average_count_3d, KIND=wp )
    426                 ENDDO
    427              ENDDO
    428              CALL exchange_horiz_2d( shf_av, nbgp )
     477             IF ( ALLOCATED( shf_av ) ) THEN
     478                DO  i = nxlg, nxrg
     479                   DO  j = nysg, nyng
     480                      shf_av(j,i) = shf_av(j,i) / REAL( average_count_3d, KIND=wp )
     481                   ENDDO
     482                ENDDO
     483                CALL exchange_horiz_2d( shf_av, nbgp )
     484             ENDIF
    429485
    430486          CASE ( 'ssws*' )
    431              DO  i = nxlg, nxrg
    432                 DO  j = nysg, nyng
    433                    ssws_av(j,i) = ssws_av(j,i) / REAL( average_count_3d, KIND=wp )
    434                 ENDDO
    435              ENDDO
    436              CALL exchange_horiz_2d( ssws_av, nbgp )
     487             IF ( ALLOCATED( ssws_av ) ) THEN
     488                DO  i = nxlg, nxrg
     489                   DO  j = nysg, nyng
     490                      ssws_av(j,i) = ssws_av(j,i) / REAL( average_count_3d, KIND=wp )
     491                   ENDDO
     492                ENDDO
     493                CALL exchange_horiz_2d( ssws_av, nbgp )
     494             ENDIF
    437495
    438496          CASE ( 't*' )
    439              DO  i = nxlg, nxrg
    440                 DO  j = nysg, nyng
    441                    ts_av(j,i) = ts_av(j,i) / REAL( average_count_3d, KIND=wp )
    442                 ENDDO
    443              ENDDO
    444              CALL exchange_horiz_2d( ts_av, nbgp )
     497             IF ( ALLOCATED( ts_av ) ) THEN
     498                DO  i = nxlg, nxrg
     499                   DO  j = nysg, nyng
     500                      ts_av(j,i) = ts_av(j,i) / REAL( average_count_3d, KIND=wp )
     501                   ENDDO
     502                ENDDO
     503                CALL exchange_horiz_2d( ts_av, nbgp )
     504             ENDIF
    445505
    446506         CASE ( 'tsurf*' )
    447              DO  i = nxlg, nxrg
    448                 DO  j = nysg, nyng
    449                    tsurf_av(j,i) = tsurf_av(j,i) / REAL( average_count_3d, KIND=wp )
    450                 ENDDO
    451              ENDDO
    452              CALL exchange_horiz_2d( tsurf_av, nbgp )
     507             IF ( ALLOCATED( tsurf_av ) ) THEN
     508                DO  i = nxlg, nxrg
     509                   DO  j = nysg, nyng
     510                      tsurf_av(j,i) = tsurf_av(j,i) / REAL( average_count_3d, KIND=wp )
     511                   ENDDO
     512                ENDDO
     513                CALL exchange_horiz_2d( tsurf_av, nbgp )
     514             ENDIF
    453515
    454516          CASE ( 'u' )
    455              DO  i = nxlg, nxrg
    456                 DO  j = nysg, nyng
    457                    DO  k = nzb, nzt+1
    458                       u_av(k,j,i) = u_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    459                    ENDDO
    460                 ENDDO
    461              ENDDO
     517             IF ( ALLOCATED( u_av ) ) THEN
     518                DO  i = nxlg, nxrg
     519                   DO  j = nysg, nyng
     520                      DO  k = nzb, nzt+1
     521                         u_av(k,j,i) = u_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     522                      ENDDO
     523                   ENDDO
     524                ENDDO
     525             ENDIF
    462526
    463527          CASE ( 'u*' )
    464              DO  i = nxlg, nxrg
    465                 DO  j = nysg, nyng
    466                    us_av(j,i) = us_av(j,i) / REAL( average_count_3d, KIND=wp )
    467                 ENDDO
    468              ENDDO
    469              CALL exchange_horiz_2d( us_av, nbgp )
     528             IF ( ALLOCATED( us_av ) ) THEN
     529                DO  i = nxlg, nxrg
     530                   DO  j = nysg, nyng
     531                      us_av(j,i) = us_av(j,i) / REAL( average_count_3d, KIND=wp )
     532                   ENDDO
     533                ENDDO
     534                CALL exchange_horiz_2d( us_av, nbgp )
     535             ENDIF
    470536
    471537          CASE ( 'v' )
    472              DO  i = nxlg, nxrg
    473                 DO  j = nysg, nyng
    474                    DO  k = nzb, nzt+1
    475                       v_av(k,j,i) = v_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    476                    ENDDO
    477                 ENDDO
    478              ENDDO
     538             IF ( ALLOCATED( v_av ) ) THEN
     539                DO  i = nxlg, nxrg
     540                   DO  j = nysg, nyng
     541                      DO  k = nzb, nzt+1
     542                         v_av(k,j,i) = v_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     543                      ENDDO
     544                   ENDDO
     545                ENDDO
     546             ENDIF
    479547
    480548          CASE ( 'vpt' )
    481              DO  i = nxlg, nxrg
    482                 DO  j = nysg, nyng
    483                    DO  k = nzb, nzt+1
    484                       vpt_av(k,j,i) = vpt_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    485                    ENDDO
    486                 ENDDO
    487              ENDDO
     549             IF ( ALLOCATED( vpt_av ) ) THEN
     550                DO  i = nxlg, nxrg
     551                   DO  j = nysg, nyng
     552                      DO  k = nzb, nzt+1
     553                         vpt_av(k,j,i) = vpt_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     554                      ENDDO
     555                   ENDDO
     556                ENDDO
     557             ENDIF
    488558
    489559          CASE ( 'w' )
    490              DO  i = nxlg, nxrg
    491                 DO  j = nysg, nyng
    492                    DO  k = nzb, nzt+1
    493                       w_av(k,j,i) = w_av(k,j,i) / REAL( average_count_3d, KIND=wp )
    494                    ENDDO
    495                 ENDDO
    496              ENDDO
     560             IF ( ALLOCATED( w_av ) ) THEN
     561                DO  i = nxlg, nxrg
     562                   DO  j = nysg, nyng
     563                      DO  k = nzb, nzt+1
     564                         w_av(k,j,i) = w_av(k,j,i) / REAL( average_count_3d, KIND=wp )
     565                      ENDDO
     566                   ENDDO
     567                ENDDO
     568             ENDIF
    497569
    498570          CASE ( 'z0*' )
    499              DO  i = nxlg, nxrg
    500                 DO  j = nysg, nyng
    501                    z0_av(j,i) = z0_av(j,i) / REAL( average_count_3d, KIND=wp )
    502                 ENDDO
    503              ENDDO
    504              CALL exchange_horiz_2d( z0_av, nbgp )
     571             IF ( ALLOCATED( z0_av ) ) THEN
     572                DO  i = nxlg, nxrg
     573                   DO  j = nysg, nyng
     574                      z0_av(j,i) = z0_av(j,i) / REAL( average_count_3d, KIND=wp )
     575                   ENDDO
     576                ENDDO
     577                CALL exchange_horiz_2d( z0_av, nbgp )
     578             ENDIF
    505579
    506580          CASE ( 'z0h*' )
    507              DO  i = nxlg, nxrg
    508                 DO  j = nysg, nyng
    509                    z0h_av(j,i) = z0h_av(j,i) / REAL( average_count_3d, KIND=wp )
    510                 ENDDO
    511              ENDDO
    512              CALL exchange_horiz_2d( z0h_av, nbgp )
     581             IF ( ALLOCATED( z0h_av ) ) THEN
     582                DO  i = nxlg, nxrg
     583                   DO  j = nysg, nyng
     584                      z0h_av(j,i) = z0h_av(j,i) / REAL( average_count_3d, KIND=wp )
     585                   ENDDO
     586                ENDDO
     587                CALL exchange_horiz_2d( z0h_av, nbgp )
     588             ENDIF
     589
     590          CASE ( 'z0q*' )
     591             IF ( ALLOCATED( z0q_av ) ) THEN
     592                DO  i = nxlg, nxrg
     593                   DO  j = nysg, nyng
     594                      z0q_av(j,i) = z0q_av(j,i) / REAL( average_count_3d, KIND=wp )
     595                   ENDDO
     596                ENDDO
     597                CALL exchange_horiz_2d( z0q_av, nbgp )
     598             ENDIF
     599
    513600!             
    514601!--       Block of urban surface model outputs   
Note: See TracChangeset for help on using the changeset viewer.