From 9e7ae5bd8b8e870949e8ea0418ff4840fd9d200a Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Wed, 10 Mar 2021 15:46:11 +0100 Subject: [PATCH] Philippe 10/03/2021: budgets: use csvnames for name of scalar variables groups + name + comment --- src/MNH/ini_budget.f90 | 15 ++++++--------- src/MNH/modd_budget.f90 | 1 + src/MNH/write_budget.f90 | 6 ++++-- src/MNH/write_diachro.f90 | 4 ++++ 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90 index bf86f65d3..22303fd0c 100644 --- a/src/MNH/ini_budget.f90 +++ b/src/MNH/ini_budget.f90 @@ -22,11 +22,10 @@ use modd_budget, only: nbudgets, tbudgets, NBUDGET_U, NBUDGET_V, NBUDGET_W, NBUDGET_TH, NBUDGET_TKE, & NBUDGET_RV, NBUDGET_RC, NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, & NBUDGET_RG, NBUDGET_RH, NBUDGET_SV1 -use modd_nsv, only: nsv +use modd_nsv, only: csvnames, nsv use mode_msg -character(len=3) :: ybudgetnum integer :: ibudget integer :: jsv @@ -90,9 +89,8 @@ tbudgets(NBUDGET_RH)%nid = NBUDGET_RH do jsv = 1, nsv ibudget = NBUDGET_SV1 - 1 + jsv - write ( ybudgetnum, '( i3.3 )' ) jsv - tbudgets(ibudget)%cname = 'BU_RSV_' // ybudgetnum - tbudgets(ibudget)%ccomment = 'Budget for scalar variable ' // ybudgetnum + tbudgets(ibudget)%cname = Trim( csvnames(jsv) ) + tbudgets(ibudget)%ccomment = 'Budget for scalar variable ' // Trim( csvnames(jsv) ) tbudgets(ibudget)%nid = ibudget end do @@ -224,7 +222,8 @@ use modd_dyn, only: lcorio, xseglen use modd_dyn_n, only: xtstep use modd_elec_descr, only: linductive, lrelax2fw_ion use modd_field, only: TYPEREAL -use modd_nsv, only: nsv_aerbeg, nsv_aerend, nsv_aerdepbeg, nsv_aerdepend, nsv_c2r2beg, nsv_c2r2end, & +use modd_nsv, only: csvnames, & + nsv_aerbeg, nsv_aerend, nsv_aerdepbeg, nsv_aerdepend, nsv_c2r2beg, nsv_c2r2end, & nsv_chembeg, nsv_chemend, nsv_chicbeg, nsv_chicend, nsv_csbeg, nsv_csend, & nsv_dstbeg, nsv_dstend, nsv_dstdepbeg, nsv_dstdepend, nsv_elecbeg, nsv_elecend, & #ifdef MNH_FOREFIRE @@ -320,7 +319,6 @@ INTEGER :: IBUDIM2 ! second dimension of INTEGER :: IBUDIM3 ! third dimension of the budget arrays ! = NBUKMAX in CART case ! = NBUMASK in MASK case -character(len=3) :: ybudgetnum INTEGER :: JSV ! loop indice for the SVs INTEGER :: IINFO_ll ! return status of the interface routine integer :: ibudget @@ -2751,7 +2749,6 @@ if ( ksv > 999 ) call Print_msg( NVERB_FATAL, 'BUD', 'Ini_budget', 'number of sc SV_BUDGETS: do jsv = 1, ksv ibudget = NBUDGET_SV1 - 1 + jsv - write ( ybudgetnum, '( i3.3 )' ) jsv tbudgets(ibudget)%lenabled = lbu_rsv @@ -2768,7 +2765,7 @@ SV_BUDGETS: do jsv = 1, ksv tbudgets(ibudget)%tsources(:)%ngroup = 0 - tzsource%ccomment = 'Budget of scalar variable ' // ybudgetnum + tzsource%ccomment = 'Budget of scalar variable ' // csvnames(jsv) tzsource%ngrid = 1 tzsource%cunits = '1' diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90 index cd64563ae..344de27dd 100644 --- a/src/MNH/modd_budget.f90 +++ b/src/MNH/modd_budget.f90 @@ -147,6 +147,7 @@ type :: tbudiachrometadata integer :: njh = -1 integer :: nkl = -1 integer :: nkh = -1 + integer :: nsv = -1 !Reference number of the corresponding scalar variable end type tbudiachrometadata type(tbudgetdata), dimension(:), allocatable, save :: tbudgets type(tburhodata), pointer, save :: tburhodj => null() ! Budget array for rhodj used inside some tbudgets diff --git a/src/MNH/write_budget.f90 b/src/MNH/write_budget.f90 index 266d0125d..72a9ec46f 100644 --- a/src/MNH/write_budget.f90 +++ b/src/MNH/write_budget.f90 @@ -592,6 +592,7 @@ subroutine Store_one_budget( tpdiafile, tpdates, tpbudget, prhodjn, knocompress, TYPEREAL use modd_io, only: tfiledata use modd_lunit_n, only: tluout + use modd_nsv, only: csvnames use modd_parameters, only: NBUNAMELGTMAX use modd_type_date, only: date_time @@ -674,6 +675,7 @@ subroutine Store_one_budget( tpdiafile, tpdates, tpbudget, prhodjn, knocompress, deallocate(zconvert) + jsv = -1 select case( tpbudget%nid ) case ( NBUDGET_U ) ygroup_name = 'UU' @@ -713,8 +715,7 @@ subroutine Store_one_budget( tpdiafile, tpdates, tpbudget, prhodjn, knocompress, case ( NBUDGET_SV1 : ) jsv = tpbudget%nid - NBUDGET_SV1 + 1 - Allocate( character(len=5) :: ygroup_name ) - write( ygroup_name, fmt = "('SV',I3.3)") jsv + ygroup_name = csvnames(jsv) case default call Print_msg( NVERB_ERROR, 'BUD', 'Store_one_budget', 'unknown budget type' ) @@ -813,6 +814,7 @@ subroutine Store_one_budget( tpdiafile, tpdates, tpbudget, prhodjn, knocompress, tzbudiachro%njh = nbujh tzbudiachro%nkl = nbukl tzbudiachro%nkh = nbukh + tzbudiachro%nsv = jsv call Write_diachro( tpdiafile, tzbudiachro, tzfields, tpdates, zworkt, osplit = .true. ) diff --git a/src/MNH/write_diachro.f90 b/src/MNH/write_diachro.f90 index cc4e2625f..c55511e3b 100644 --- a/src/MNH/write_diachro.f90 +++ b/src/MNH/write_diachro.f90 @@ -208,6 +208,7 @@ tzfile%cformat = 'LFI' YCOMMENT='NOTHING' +!Set ygroup to preserve backward compatibility of LFI files if ( Any( tpbudiachro%cgroupname == [ 'RJS', 'RJX', 'RJY', 'RJZ'] ) & .or. Any( tpbudiachro%cgroupname == [ 'UU', 'VV', 'WW', 'TH', 'TK', 'RV', 'RC', 'RR', 'RI', 'RS', 'RG', 'RH' ] ) & .or. ( tpbudiachro%cgroupname(1:2) == 'SV' .and. Len_trim( tpbudiachro%cgroupname ) == 5 ) ) then @@ -217,6 +218,9 @@ if ( Any( tpbudiachro%cgroupname == [ 'RJS', 'RJX', 'RJY', 'RJZ'] ) ygroup(ji : ji) = '_' end do Write( ygroup(6:9), '( i4.4 )' ) nbutshift +else if ( tpbudiachro%nsv > 0 ) then + Allocate( character(len=9) :: ygroup ) + Write( ygroup, '( "SV", i3.3, i4.4 )' ) tpbudiachro%nsv, nbutshift else ygroup = Trim( tpbudiachro%cgroupname ) end if -- GitLab