diff --git a/src/MNH/write_les_sv_budgetn.f90 b/src/MNH/write_les_sv_budgetn.f90 index 7acd1ed9796df48735ec8203f64fdca4babce6ab..aa364d42d4d4e38db5ac2fcab393d0e29241aeac 100644 --- a/src/MNH/write_les_sv_budgetn.f90 +++ b/src/MNH/write_les_sv_budgetn.f90 @@ -1,33 +1,26 @@ -!MNH_LIC Copyright 2002-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2002-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!###################### -MODULE MODI_WRITE_LES_SV_BUDGET_n -!###################### -! -INTERFACE -! - SUBROUTINE WRITE_LES_SV_BUDGET_n(TPDIAFILE,HLES_AVG) -! -USE MODD_IO, ONLY: TFILEDATA -! -TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write -CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages -! ! or normalizations -END SUBROUTINE WRITE_LES_SV_BUDGET_n -! -END INTERFACE -! -END MODULE MODI_WRITE_LES_SV_BUDGET_n +!################################ +module mode_write_les_sv_budget_n +!################################ + +implicit none + +private + +public :: Write_les_sv_budget_n + +contains -! ###################### - SUBROUTINE WRITE_LES_SV_BUDGET_n(TPDIAFILE,HLES_AVG) -! ###################### +!############################################ +subroutine Write_les_sv_budget_n( tpdiafile ) +!############################################ ! ! -!!**** *WRITE_LES_n* writes the LES final diagnostics for model _n +!!**** *Write_les_sv_budget_n* writes the LES final diagnostics for model _n !! !! !! PURPOSE @@ -49,36 +42,46 @@ END MODULE MODI_WRITE_LES_SV_BUDGET_n !! MODIFICATIONS !! ------------- !! Original 06/11/02 -!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O -!! -!! -------------------------------------------------------------------------- +! P. Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! P. Wautelet 14/10/2020: restructure Les_diachro calls to use tfield_metadata_base type +! -------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! -USE MODD_CST -USE MODD_IO, ONLY: TFILEDATA -USE MODD_LES -USE MODD_LES_n -USE MODD_CONF_n -USE MODD_LES_BUDGET -USE MODD_NSV -! -USE MODE_ll -! -USE MODE_LES_DIACHRO -! +use modd_conf_n, only: luserv +USE MODD_CST, only: xg +use modd_field, only: NMNHDIM_BUDGET_LES_LEVEL, NMNHDIM_BUDGET_LES_TIME, NMNHDIM_BUDGET_LES_SV, & + NMNHDIM_BUDGET_TERM, NMNHDIM_UNUSED, & + tfield_metadata_base, TYPEREAL +use modd_io, only: tfiledata +use modd_les, only: cles_norm_type, nles_k, xles_temp_mean_start, xles_temp_mean_end, xles_temp_sampling +use modd_les_n, only: nles_times, & + xles_bu_res_sv2, xles_bu_res_wsv, & + xles_mean_dsvdz, xles_mean_dwdz, xles_mean_th, xles_mean_thv, xles_mean_w, & + xles_res_ddxa_sv_sbg_uasv, xles_res_ddxa_sv_sbg_uaw, xles_res_ddxa_w_sbg_uasv, & + xles_res_ddz_sv_sbg_w2, xles_res_w_sbg_wsv, xles_res_w_sbg_sv2, & + xles_subgrid_diss_sv2, xles_subgrid_sv2, xles_subgrid_svpz, xles_subgrid_svthv, & + xles_subgrid_w2, xles_subgrid_wsv, xles_subgrid_wsv2, xles_subgrid_w2sv, & + xles_z +USE MODD_LES_BUDGET, only: NLES_RELA, NLES_GRAV, NLES_COR, NLES_HTURB, NLES_VTURB, NLES_FORC, NLES_PRES, & + NLES_DIFF, NLES_DP, NLES_TR, NLES_TEND, NLES_ADVM, NLES_NEST, NLES_MISC +USE MODD_NSV, only: nsv +use modd_parameters, only: XUNDEF + +use mode_les_diachro, only: Les_diachro + IMPLICIT NONE ! ! !* 0.1 declarations of arguments ! TYPE(TFILEDATA), INTENT(IN) :: TPDIAFILE ! file to write -CHARACTER(LEN=1), INTENT(IN) :: HLES_AVG ! flag to perform the averages -! ! or normalizations ! !* 0.2 declaration of local variables ! +integer, parameter :: NMAX_ILES = 50 + INTEGER :: ILES INTEGER :: ILES_STA INTEGER :: JLES @@ -89,20 +92,21 @@ INTEGER :: JT ! temporal loop counter INTEGER :: JSV! scalar loop counter INTEGER :: JP ! process loop counter ! -CHARACTER(len=9), DIMENSION(:), ALLOCATABLE :: YSUBTITLE +CHARACTER(len=9), DIMENSION(NMAX_ILES) :: YSUBTITLE CHARACTER(len=8) :: YGROUP CHARACTER(len=20) :: YTITLE ! REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZLES_BUDGET -REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZSV_BUDGET ! +logical :: gdoavg ! Compute and store time average +logical :: gdonorm ! Compute and store normalized field +type(tfield_metadata_base) :: tzfield !------------------------------------------------------------------------------- ! !* Initializations ! --------------- ! -ALLOCATE(ZLES_BUDGET(NLES_K,NLES_TIMES,50,NSV)) -ALLOCATE(YSUBTITLE(50)) +ALLOCATE(ZLES_BUDGET(NLES_K,NLES_TIMES,NMAX_ILES,NSV)) ! ZLES_BUDGET(:,:,:,:) = XUNDEF !------------------------------------------------------------------------------- @@ -374,17 +378,29 @@ END DO !* 2.16 writing ! ------- ! -ALLOCATE(ZSV_BUDGET(NLES_K,NLES_TIMES,ILES,NSV)) -DO JSV=1,NSV - DO JP=1,ILES - ZSV_BUDGET(:,:,JP,JSV) = ZLES_BUDGET(:,:,JP,JSV) - END DO -END DO - YTITLE = "Sv variance budget " -CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,YGROUP,YSUBTITLE(:ILES),YTITLE//YSUBTITLE(:ILES),"kg2 kg-2 s-1",ZSV_BUDGET,HLES_AVG) -! -DEALLOCATE(ZSV_BUDGET) + +tzfield%ngrid = 0 !Not on the Arakawa grid +tzfield%ntype = TYPEREAL + +tzfield%cmnhname = ygroup +tzfield%cstdname = '' +tzfield%clongname = ygroup +tzfield%ccomment = ytitle +tzfield%cunits = 'kg2 kg-2 s-1' + +tzfield%ndims = 4 +tzfield%ndimlist(1) = NMNHDIM_BUDGET_LES_LEVEL +tzfield%ndimlist(2) = NMNHDIM_BUDGET_LES_TIME +tzfield%ndimlist(3) = NMNHDIM_BUDGET_TERM +tzfield%ndimlist(4) = NMNHDIM_BUDGET_LES_SV +tzfield%ndimlist(5:) = NMNHDIM_UNUSED + +gdoavg = xles_temp_mean_start /= XUNDEF .and. xles_temp_mean_end /= XUNDEF +gdonorm = trim(cles_norm_type) /= 'NONE' + +call Les_diachro( tpdiafile, tzfield, gdoavg, gdonorm, zles_budget(:, :, :iles, :), ysubtitle(:iles) ) + !------------------------------------------------------------------------------- ! !* 3. total water flux budget @@ -744,22 +760,35 @@ END DO !* 3.22 writing ! ------- ! -ALLOCATE(ZSV_BUDGET(NLES_K,NLES_TIMES,ILES,NSV)) -DO JSV=1,NSV - DO JP=1,ILES - ZSV_BUDGET(:,:,JP,JSV) = ZLES_BUDGET(:,:,JP,JSV) - END DO -END DO - YTITLE = "Sv flux budget " -CALL LES_DIACHRO_SV_MASKS(TPDIAFILE,YGROUP,YSUBTITLE(:ILES),YTITLE//YSUBTITLE(:ILES),"m kg kg-1 s-2",ZSV_BUDGET,HLES_AVG) -! -DEALLOCATE(ZSV_BUDGET) + +tzfield%ngrid = 0 !Not on the Arakawa grid +tzfield%ntype = TYPEREAL + +tzfield%cmnhname = ygroup +tzfield%cstdname = '' +tzfield%clongname = ygroup +tzfield%ccomment = ytitle +tzfield%cunits = 'm kg kg-1 s-2' + +tzfield%ndims = 4 +tzfield%ndimlist(1) = NMNHDIM_BUDGET_LES_LEVEL +tzfield%ndimlist(2) = NMNHDIM_BUDGET_LES_TIME +tzfield%ndimlist(3) = NMNHDIM_BUDGET_TERM +tzfield%ndimlist(4) = NMNHDIM_BUDGET_LES_SV +tzfield%ndimlist(5:) = NMNHDIM_UNUSED + +gdoavg = xles_temp_mean_start /= XUNDEF .and. xles_temp_mean_end /= XUNDEF +gdonorm = trim(cles_norm_type) /= 'NONE' + +call Les_diachro( tpdiafile, tzfield, gdoavg, gdonorm, zles_budget(:, :, :iles, :), ysubtitle(:iles) ) + !------------------------------------------------------------------------------- ! DEALLOCATE(ZLES_BUDGET) -DEALLOCATE(YSUBTITLE) ! !------------------------------------------------------------------------------- ! -END SUBROUTINE WRITE_LES_SV_BUDGET_n +end subroutine Write_les_sv_budget_n + +end module mode_write_les_sv_budget_n diff --git a/src/MNH/write_lesn.f90 b/src/MNH/write_lesn.f90 index d325a93269c95c365cfd6d6ae68a55f54e3d1d0e..146c344834fdd42ca0a0083f9091c2a7c54c89fc 100644 --- a/src/MNH/write_lesn.f90 +++ b/src/MNH/write_lesn.f90 @@ -81,12 +81,12 @@ USE MODD_PARAM_C2R2, ONLY : LDEPOC USE MODE_ll ! USE MODE_LES_DIACHRO -USE MODE_LES_SPEC_N +use mode_les_spec_n, only: Les_spec_n USE MODE_MODELN_HANDLER +use mode_write_les_sv_budget_n, only: Write_les_sv_budget_n ! USE MODI_WRITE_LES_BUDGET_n USE MODI_WRITE_LES_RT_BUDGET_n -USE MODI_WRITE_LES_SV_BUDGET_n ! IMPLICIT NONE ! @@ -1409,9 +1409,10 @@ END IF ! CALL WRITE_LES_BUDGET_n(TPDIAFILE,HLES_AVG) IF (LUSERV) CALL WRITE_LES_RT_BUDGET_n(TPDIAFILE,HLES_AVG) -IF (NSV>0) CALL WRITE_LES_SV_BUDGET_n(TPDIAFILE,HLES_AVG) -! end do AVG + +if ( nsv > 0 ) call Write_les_sv_budget_n( tpdiafile ) +! !------------------------------------------------------------------------------- ! !* 5. (ni,z,t) and (nj,z,t) 2points correlations