Changeset 1431 for palm


Ignore:
Timestamp:
Jul 15, 2014 2:47:17 PM (10 years ago)
Author:
suehring
Message:

Spectra coincide with respective variance

Location:
palm/trunk/SOURCE
Files:
3 edited

Legend:

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

    r1343 r1431  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! Wavenumber-integrated spectra coincide with respective variance.
    2323!
    2424! Former revisions:
     
    198198
    199199    USE indices,                                                               &
    200         ONLY:  nxl, nxr, nyn, nys, nzb, nzt
     200        ONLY:  ngp_2dh, nxl, nxr, nyn, nys, nzb, nzt
    201201
    202202    USE kinds
     
    208208
    209209    USE statistics,                                                            &
    210         ONLY:  sums
     210        ONLY:  hom, var_d
    211211
    212212
     
    218218    INTEGER(iwp) :: m  !:
    219219    INTEGER(iwp) :: pr !:
     220
     221    REAL(wp), DIMENSION(nzb:nzt+1) :: var_d_l
    220222
    221223    SELECT CASE ( TRIM( data_output_sp(m) ) )
     
    254256!-- Subtract horizontal mean from the array, for which spectra have to be
    255257!-- calculated
     258    var_d_l(:) = 0.0_wp
    256259    DO  i = nxl, nxr
    257260       DO  j = nys, nyn
    258261          DO  k = nzb+1, nzt
    259              d(k,j,i) = d(k,j,i) - sums(k,pr)
     262             d(k,j,i)   = d(k,j,i) - hom(k,1,pr,0)
     263             var_d_l(k) = var_d_l(k) + d(k,j,i) * d(k,j,i)
    260264          ENDDO
    261265       ENDDO
    262266    ENDDO
     267!
     268!-- Compute total variance from local variances
     269    var_d(:) = 0.0_wp
     270#if defined( __parallel )
     271    IF ( collective_wait )  CALL MPI_BARRIER( comm2d, ierr )
     272    CALL MPI_ALLREDUCE( var_d_l(0), var_d(0), nzt+1-nzb, MPI_REAL,   &
     273                        MPI_SUM, comm2d, ierr )
     274#else
     275    var_d(:) = var_d_l(:)
     276#endif
     277    var_d(:) = var_d(:) / ngp_2dh(0)
    263278
    264279 END SUBROUTINE preprocess_spectra
     
    290305
    291306    USE statistics,                                                            &
    292         ONLY:  spectrum_x
     307        ONLY:  spectrum_x, var_d
    293308
    294309    USE transpose_indices,                                                     &
     
    306321    INTEGER(iwp) ::  pr        !:
    307322
    308     REAL(wp) ::  fac      !:
    309     REAL(wp) ::  exponent !:
     323    REAL(wp) ::  fac          !:
     324    REAL(wp) ::  exponent     !:
     325    REAL(wp) ::  sum_spec_dum !: wavenumber-integrated spectrum
    310326   
    311327    REAL(wp), DIMENSION(0:nx) ::  work !:
     
    373389       sums_spectra(:,n) = sums_spectra_l
    374390#endif
    375 
     391!
     392!--    Normalize spectra by variance
     393       sum_spec_dum = SUM( sums_spectra(:,n) )
     394       IF ( sum_spec_dum /= 0.0_wp )  THEN
     395          sums_spectra(:,n) = sums_spectra(:,n) * var_d(k) / sum_spec_dum
     396       ENDIF
    376397       n = n + 1
    377398
     
    390411       DO  i = 1, nx/2
    391412          DO k = 1, n
    392              spectrum_x(i,k,m) = spectrum_x(i,k,m) + sums_spectra(i,k) * fac
     413             spectrum_x(i,k,m) = spectrum_x(i,k,m) + sums_spectra(i,k) * fac 
    393414          ENDDO
    394415       ENDDO
    395416
    396417    ENDIF
    397 
    398418!
    399419!-- n_sp_x is needed by data_output_spectra_x
     
    428448
    429449    USE statistics,                                                            &
    430         ONLY:  spectrum_y
     450        ONLY:  spectrum_y, var_d
    431451
    432452    USE transpose_indices,                                                     &
     
    446466    REAL(wp) ::  fac      !:
    447467    REAL(wp) ::  exponent !:
     468    REAL(wp) ::  sum_spec_dum !: wavenumber-integrated spectrum
    448469   
    449470    REAL(wp), DIMENSION(0:ny) ::  work !:
     
    512533       sums_spectra(:,n) = sums_spectra_l
    513534#endif
    514 
     535!
     536!--    Normalize spectra by variance
     537       sum_spec_dum = SUM( sums_spectra(:,n) )
     538       IF ( SUM(sums_spectra(:,n)) /= 0.0_wp )  THEN
     539          sums_spectra(:,n) = sums_spectra(:,n) * var_d(k) / SUM(sums_spectra(:,n))
     540       ENDIF
    515541       n = n + 1
    516542
  • palm/trunk/SOURCE/init_3d_model.f90

    r1430 r1431  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! var_d added, in order to normalize spectra.
    2323!
    2424! Former revisions:
     
    224224               statistic_regions, sums, sums_divnew_l, sums_divold_l, sums_l,  &
    225225               sums_l_l, sums_up_fraction_l, sums_wsts_bc_l, ts_value,         &
    226                weight_pres, weight_substep
     226               var_d, weight_pres, weight_substep
    227227   
    228228    USE transpose_indices
     
    492492       spectrum_x = 0.0_wp
    493493       spectrum_y = 0.0_wp
     494
     495       ALLOCATE( var_d(nzb:nzt+1) )
     496       var_d = 0.0_wp
    494497    ENDIF
    495498
  • palm/trunk/SOURCE/modules.f90

    r1430 r1431  
    2020! Current revisions:
    2121! ------------------
    22 !
     22! +var_d
    2323!
    2424! Former revisions:
     
    14111411    REAL(wp) ::     u_max, v_max, w_max
    14121412    REAL(wp), DIMENSION(:), ALLOCATABLE       ::  sums_divnew_l, sums_divold_l,   &
    1413                                                   weight_substep, weight_pres
     1413                                                  var_d, weight_substep,          &
     1414                                                  weight_pres
    14141415    REAL(wp), DIMENSION(:,:), ALLOCATABLE     ::  sums, sums_wsts_bc_l, ts_value, &
    14151416                                                  sums_wsus_ws_l, sums_wsvs_ws_l, &
Note: See TracChangeset for help on using the changeset viewer.