Ignore:
Timestamp:
Apr 27, 2018 12:33:25 PM (3 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/turbulence_closure_mod.f90

    r2938 r3004  
    2525! -----------------
    2626! $Id$
     27! Further allocation checks implemented
     28!
     29! 2938 2018-03-27 15:52:42Z suehring
    2730! Further todo's
    2831!
     
    510513
    511514          CASE ( 'diss' )
    512              DO  i = nxlg, nxrg
    513                 DO  j = nysg, nyng
    514                    DO  k = nzb, nzt+1
    515                       diss_av(k,j,i) = diss_av(k,j,i) + diss(k,j,i)
     515             IF ( ALLOCATED( diss_av ) ) THEN             
     516                DO  i = nxlg, nxrg
     517                   DO  j = nysg, nyng
     518                      DO  k = nzb, nzt+1
     519                         diss_av(k,j,i) = diss_av(k,j,i) + diss(k,j,i)
     520                      ENDDO
    516521                   ENDDO
    517522                ENDDO
    518              ENDDO
     523             ENDIF
    519524
    520525          CASE ( 'kh' )
    521              DO  i = nxlg, nxrg
    522                 DO  j = nysg, nyng
    523                    DO  k = nzb, nzt+1
    524                       kh_av(k,j,i) = kh_av(k,j,i) + kh(k,j,i)
     526             IF ( ALLOCATED( kh_av ) ) THEN
     527                DO  i = nxlg, nxrg
     528                   DO  j = nysg, nyng
     529                      DO  k = nzb, nzt+1
     530                         kh_av(k,j,i) = kh_av(k,j,i) + kh(k,j,i)
     531                      ENDDO
    525532                   ENDDO
    526533                ENDDO
    527              ENDDO
     534             ENDIF
    528535
    529536          CASE ( 'km' )
    530              DO  i = nxlg, nxrg
    531                 DO  j = nysg, nyng
    532                    DO  k = nzb, nzt+1
    533                       km_av(k,j,i) = km_av(k,j,i) + km(k,j,i)
     537             IF ( ALLOCATED( km_av ) ) THEN
     538                DO  i = nxlg, nxrg
     539                   DO  j = nysg, nyng
     540                      DO  k = nzb, nzt+1
     541                         km_av(k,j,i) = km_av(k,j,i) + km(k,j,i)
     542                      ENDDO
    534543                   ENDDO
    535544                ENDDO
    536              ENDDO
     545             ENDIF
    537546
    538547          CASE DEFAULT
     
    546555
    547556          CASE ( 'diss' )
    548              DO  i = nxlg, nxrg
    549                 DO  j = nysg, nyng
    550                    DO  k = nzb, nzt+1
    551                       diss_av(k,j,i) = diss_av(k,j,i)                          &
    552                                      / REAL( average_count_3d, KIND=wp )
     557             IF ( ALLOCATED( diss_av ) ) THEN
     558                DO  i = nxlg, nxrg
     559                   DO  j = nysg, nyng
     560                      DO  k = nzb, nzt+1
     561                         diss_av(k,j,i) = diss_av(k,j,i)                       &
     562                                        / REAL( average_count_3d, KIND=wp )
     563                      ENDDO
    553564                   ENDDO
    554565                ENDDO
    555              ENDDO
     566             ENDIF
    556567
    557568          CASE ( 'kh' )
    558              DO  i = nxlg, nxrg
    559                 DO  j = nysg, nyng
    560                    DO  k = nzb, nzt+1
    561                       kh_av(k,j,i) = kh_av(k,j,i)                              &
    562                                      / REAL( average_count_3d, KIND=wp )
     569             IF ( ALLOCATED( kh_av ) ) THEN
     570                DO  i = nxlg, nxrg
     571                   DO  j = nysg, nyng
     572                      DO  k = nzb, nzt+1
     573                         kh_av(k,j,i) = kh_av(k,j,i)                           &
     574                                        / REAL( average_count_3d, KIND=wp )
     575                      ENDDO
    563576                   ENDDO
    564577                ENDDO
    565              ENDDO
     578             ENDIF
    566579
    567580          CASE ( 'km' )
    568              DO  i = nxlg, nxrg
    569                 DO  j = nysg, nyng
    570                    DO  k = nzb, nzt+1
    571                       km_av(k,j,i) = km_av(k,j,i)                              &
    572                                      / REAL( average_count_3d, KIND=wp )
     581             IF ( ALLOCATED( km_av ) ) THEN
     582                DO  i = nxlg, nxrg
     583                   DO  j = nysg, nyng
     584                      DO  k = nzb, nzt+1
     585                         km_av(k,j,i) = km_av(k,j,i)                           &
     586                                        / REAL( average_count_3d, KIND=wp )
     587                      ENDDO
    573588                   ENDDO
    574589                ENDDO
    575              ENDDO
     590             ENDIF
    576591
    577592       END SELECT
     
    608623    LOGICAL ::  found   !<
    609624    LOGICAL ::  two_d   !< flag parameter that indicates 2D variables (horizontal cross sections)
     625
     626    REAL(wp) ::  fill_value = -999.0_wp  !< value for the _FillValue attribute
    610627
    611628    REAL(wp), DIMENSION(nxl:nxr,nys:nyn,nzb:nzt+1) ::  local_pf !< local
     
    627644             ENDDO
    628645          ELSE
     646             IF ( .NOT. ALLOCATED( diss_av ) ) THEN
     647                ALLOCATE( diss_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     648                diss_av = REAL( fill_value, KIND = wp )
     649             ENDIF
    629650             DO  i = nxl, nxr
    630651                DO  j = nys, nyn
     
    648669             ENDDO
    649670          ELSE
     671             IF ( .NOT. ALLOCATED( diss_av ) ) THEN
     672                ALLOCATE( diss_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     673                diss_av = REAL( fill_value, KIND = wp )
     674             ENDIF
    650675             DO  i = nxl, nxr
    651676                DO  j = nys, nyn
     
    669694             ENDDO
    670695          ELSE
     696             IF ( .NOT. ALLOCATED( diss_av ) ) THEN
     697                ALLOCATE( diss_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     698                diss_av = REAL( fill_value, KIND = wp )
     699             ENDIF
    671700             DO  i = nxl, nxr
    672701                DO  j = nys, nyn
     
    710739
    711740    LOGICAL ::  found   !<
     741
     742    REAL(wp) ::  fill_value = -999.0_wp  !< value for the _FillValue attribute
    712743
    713744    REAL(sp), DIMENSION(nxl:nxr,nys:nyn,nzb:nzt+1) ::  local_pf   !< local
     
    731762             ENDDO
    732763          ELSE
     764             IF ( .NOT. ALLOCATED( diss_av ) ) THEN
     765                ALLOCATE( diss_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     766                diss_av = REAL( fill_value, KIND = wp )
     767             ENDIF
    733768             DO  i = nxl, nxr
    734769                DO  j = nys, nyn
     
    750785             ENDDO
    751786          ELSE
     787             IF ( .NOT. ALLOCATED( kh_av ) ) THEN
     788                ALLOCATE( kh_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     789                kh_av = REAL( fill_value, KIND = wp )
     790             ENDIF
    752791             DO  i = nxl, nxr
    753792                DO  j = nys, nyn
     
    769808             ENDDO
    770809          ELSE
     810             IF ( .NOT. ALLOCATED( km_av ) ) THEN
     811                ALLOCATE( km_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     812                km_av = REAL( fill_value, KIND = wp )
     813             ENDIF
    771814             DO  i = nxl, nxr
    772815                DO  j = nys, nyn
Note: See TracChangeset for help on using the changeset viewer.