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

    r2967 r3004  
    2525! -----------------
    2626! $Id$
     27! Allocation checks implemented (averaged data will be assigned to fill values
     28! if no allocation happened so far)
     29!
     30! 2967 2018-04-13 11:22:08Z raasch
    2731! bugfix: missing parallel cpp-directives added
    2832!
     
    214218       
    215219    USE indices,                                                               &
    216         ONLY:  nbgp, nx, nxl, nxr, ny, nyn, nys, nzb, wall_flags_0
     220        ONLY:  nbgp, nx, nxl, nxlg, nxr, nxrg, ny, nyn, nyng, nys, nysg, nzb,  &
     221               nzt, wall_flags_0
    217222       
    218223    USE kinds
     
    366371                to_be_resorted => e
    367372             ELSE
     373                IF ( .NOT. ALLOCATED( e_av ) ) THEN
     374                   ALLOCATE( e_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     375                   e_av = REAL( fill_value, KIND = wp )
     376                ENDIF
    368377                to_be_resorted => e_av
    369378             ENDIF
     
    373382                to_be_resorted => pt
    374383             ELSE
     384                IF ( .NOT. ALLOCATED( lpt_av ) ) THEN
     385                   ALLOCATE( lpt_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     386                   lpt_av = REAL( fill_value, KIND = wp )
     387                ENDIF
    375388                to_be_resorted => lpt_av
    376389             ENDIF
     
    380393                to_be_resorted => nc
    381394             ELSE
     395                IF ( .NOT. ALLOCATED( nc_av ) ) THEN
     396                   ALLOCATE( nc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     397                   nc_av = REAL( fill_value, KIND = wp )
     398                ENDIF
    382399                to_be_resorted => nc_av
    383400             ENDIF
     
    387404                to_be_resorted => nr
    388405             ELSE
     406                IF ( .NOT. ALLOCATED( nr_av ) ) THEN
     407                   ALLOCATE( nr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     408                   nr_av = REAL( fill_value, KIND = wp )
     409                ENDIF
    389410                to_be_resorted => nr_av
    390411             ENDIF
     
    395416                to_be_resorted => p
    396417             ELSE
     418                IF ( .NOT. ALLOCATED( p_av ) ) THEN
     419                   ALLOCATE( p_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     420                   p_av = REAL( fill_value, KIND = wp )
     421                ENDIF
    397422                IF ( psolver /= 'sor' )  CALL exchange_horiz( p_av, nbgp )
    398423                to_be_resorted => p_av
     
    415440                resorted = .TRUE.
    416441             ELSE
     442                IF ( .NOT. ALLOCATED( pc_av ) ) THEN
     443                   ALLOCATE( pc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     444                   pc_av = REAL( fill_value, KIND = wp )
     445                ENDIF
    417446                to_be_resorted => pc_av
    418447             ENDIF
     
    458487                resorted = .TRUE.
    459488             ELSE
     489                IF ( .NOT. ALLOCATED( pr_av ) ) THEN
     490                   ALLOCATE( pr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     491                   pr_av = REAL( fill_value, KIND = wp )
     492                ENDIF
    460493                to_be_resorted => pr_av
    461494             ENDIF
     
    471504                ENDDO
    472505             ELSE
     506                IF ( .NOT. ALLOCATED( prr_av ) ) THEN
     507                   ALLOCATE( prr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     508                   prr_av = REAL( fill_value, KIND = wp )
     509                ENDIF
    473510                DO  i = nxl, nxr
    474511                   DO  j = nys, nyn
     
    498535                ENDIF
    499536             ELSE
     537                IF ( .NOT. ALLOCATED( pt_av ) ) THEN
     538                   ALLOCATE( pt_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     539                   pt_av = REAL( fill_value, KIND = wp )
     540                ENDIF
    500541                to_be_resorted => pt_av
    501542             ENDIF
     
    505546                to_be_resorted => q
    506547             ELSE
     548                IF ( .NOT. ALLOCATED( q_av ) ) THEN
     549                   ALLOCATE( q_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     550                   q_av = REAL( fill_value, KIND = wp )
     551                ENDIF
    507552                to_be_resorted => q_av
    508553             ENDIF
     
    512557                to_be_resorted => qc
    513558             ELSE
     559                IF ( .NOT. ALLOCATED( qc_av ) ) THEN
     560                   ALLOCATE( qc_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     561                   qc_av = REAL( fill_value, KIND = wp )
     562                ENDIF
    514563                to_be_resorted => qc_av
    515564             ENDIF
     
    519568                to_be_resorted => ql
    520569             ELSE
     570                IF ( .NOT. ALLOCATED( ql_av ) ) THEN
     571                   ALLOCATE( ql_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     572                   ql_av = REAL( fill_value, KIND = wp )
     573                ENDIF
    521574                to_be_resorted => ql_av
    522575             ENDIF
     
    526579                to_be_resorted => ql_c
    527580             ELSE
     581                IF ( .NOT. ALLOCATED( ql_c_av ) ) THEN
     582                   ALLOCATE( ql_c_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     583                   ql_c_av = REAL( fill_value, KIND = wp )
     584                ENDIF
    528585                to_be_resorted => ql_c_av
    529586             ENDIF
     
    533590                to_be_resorted => ql_v
    534591             ELSE
     592                IF ( .NOT. ALLOCATED( ql_v_av ) ) THEN
     593                   ALLOCATE( ql_v_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     594                   ql_v_av = REAL( fill_value, KIND = wp )
     595                ENDIF
    535596                to_be_resorted => ql_v_av
    536597             ENDIF
     
    567628                resorted = .TRUE.
    568629             ELSE
     630                IF ( .NOT. ALLOCATED( ql_vp_av ) ) THEN
     631                   ALLOCATE( ql_vp_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     632                   ql_vp_av = REAL( fill_value, KIND = wp )
     633                ENDIF
    569634                to_be_resorted => ql_vp_av
    570635             ENDIF
     
    574639                to_be_resorted => qr
    575640             ELSE
     641                IF ( .NOT. ALLOCATED( qr_av ) ) THEN
     642                   ALLOCATE( qr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     643                   qr_av = REAL( fill_value, KIND = wp )
     644                ENDIF
    576645                to_be_resorted => qr_av
    577646             ENDIF
     
    588657                resorted = .TRUE.
    589658             ELSE
     659                IF ( .NOT. ALLOCATED( qv_av ) ) THEN
     660                   ALLOCATE( qv_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     661                   qv_av = REAL( fill_value, KIND = wp )
     662                ENDIF
    590663                to_be_resorted => qv_av
    591664             ENDIF
     
    595668                to_be_resorted => rho_ocean
    596669             ELSE
     670                IF ( .NOT. ALLOCATED( rho_ocean_av ) ) THEN
     671                   ALLOCATE( u_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     672                   u_av = REAL( fill_value, KIND = wp )
     673                ENDIF
    597674                to_be_resorted => rho_ocean_av
    598675             ENDIF
     
    602679                to_be_resorted => s
    603680             ELSE
     681                IF ( .NOT. ALLOCATED( s_av ) ) THEN
     682                   ALLOCATE( s_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     683                   s_av = REAL( fill_value, KIND = wp )
     684                ENDIF
    604685                to_be_resorted => s_av
    605686             ENDIF
     
    609690                to_be_resorted => sa
    610691             ELSE
     692                IF ( .NOT. ALLOCATED( sa_av ) ) THEN
     693                   ALLOCATE( sa_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     694                   sa_av = REAL( fill_value, KIND = wp )
     695                ENDIF
    611696                to_be_resorted => sa_av
    612697             ENDIF
     
    617702                to_be_resorted => u
    618703             ELSE
     704                IF ( .NOT. ALLOCATED( u_av ) ) THEN
     705                   ALLOCATE( u_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     706                   u_av = REAL( fill_value, KIND = wp )
     707                ENDIF
    619708                to_be_resorted => u_av
    620709             ENDIF
     
    625714                to_be_resorted => v
    626715             ELSE
     716                IF ( .NOT. ALLOCATED( v_av ) ) THEN
     717                   ALLOCATE( v_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     718                   v_av = REAL( fill_value, KIND = wp )
     719                ENDIF
    627720                to_be_resorted => v_av
    628721             ENDIF
     
    632725                to_be_resorted => vpt
    633726             ELSE
     727                IF ( .NOT. ALLOCATED( vpt_av ) ) THEN
     728                   ALLOCATE( vpt_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     729                   vpt_av = REAL( fill_value, KIND = wp )
     730                ENDIF
    634731                to_be_resorted => vpt_av
    635732             ENDIF
     
    640737                to_be_resorted => w
    641738             ELSE
     739                IF ( .NOT. ALLOCATED( w_av ) ) THEN
     740                   ALLOCATE( w_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
     741                   w_av = REAL( fill_value, KIND = wp )
     742                ENDIF
    642743                to_be_resorted => w_av
    643744             ENDIF
Note: See TracChangeset for help on using the changeset viewer.