diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90 index 466aaceed1693de634ff1272199937cee6e7393d..83aa43896ad49b379f5ad513e45d4289d208b1e7 100644 --- a/src/MNH/modd_budget.f90 +++ b/src/MNH/modd_budget.f90 @@ -116,6 +116,7 @@ type, extends( tfield_metadata_base ) :: tburhodata end type tburhodata type(tbudgetdata), dimension(:), allocatable, save :: tbudgets +type(tburhodata), pointer, save :: tburhodj => null() ! Budget array for rhodj used inside some tbudgets ! General variables diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index bd89250169a983f88fb404b8f5902c9f0b2dd4e5..adba0be8503e43a83d9b60b1266101f64539f27e 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -266,7 +266,7 @@ END MODULE MODI_MODEL_n ! J. Escobar 09/07/2019: for bug in management of XLSZWSM variable, add/use specific 2D TLSFIELD2D_ll pointer ! P. Wautelet 13/09/2019: budget: simplify and modernize date/time management ! J. Escobar 27/09/2019: add missing report timing of RESOLVED_ELEC -! P. Wautelet 28/01/2020: use the new data structures and subroutines for budgets for U +! P. Wautelet 02-03/2020: use the new data structures and subroutines for budgets !!------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -280,7 +280,10 @@ USE MODD_BIKHARDT_n USE MODD_BLANK USE MODD_BLOWSNOW USE MODD_BLOWSNOW_n -USE MODD_BUDGET +use modd_budget, only: cbutype, lbu_ru, lbu_rv, lbu_rw, lbudget_u, lbudget_v, lbudget_w, lbu_enable, & + NBUDGET_U, NBUDGET_V, NBUDGET_W, nbumod, nbutime, & + tbudgets, tburhodj, & + xburhodj, xburhodju, xburhodjv, xburhodjw, xtime_bu, xtime_bu_process USE MODD_CH_AERO_n, ONLY: XSOLORG, XMI USE MODD_CH_MNHC_n, ONLY: LUSECHEM,LCH_CONV_LINOX,LUSECHAQ,LUSECHIC, & LCH_INIT_FIELD @@ -1001,6 +1004,15 @@ IF (NBUMOD==IMI .AND. CBUTYPE=='MASK' ) THEN tbudgets(NBUDGET_U)%trhodj%xdata(:, nbutime, :) = tbudgets(NBUDGET_U)%trhodj%xdata(:, nbutime, :) & + Mask_compress( Mxm( xrhodj(:, :, :) ) ) end if + if ( lbu_rv ) then + tbudgets(NBUDGET_V)%trhodj%xdata(:, nbutime, :) = tbudgets(NBUDGET_V)%trhodj%xdata(:, nbutime, :) & + + Mask_compress( Mym( xrhodj(:, :, :) ) ) + end if + if ( lbu_rw ) then + tbudgets(NBUDGET_W)%trhodj%xdata(:, nbutime, :) = tbudgets(NBUDGET_W)%trhodj%xdata(:, nbutime, :) & + + Mask_compress( Mzm( 1, iku, 1, xrhodj(:, :, :) ) ) + end if + if ( associated( tburhodj ) ) tburhodj%xdata(:, nbutime, :) = tburhodj%xdata(:, nbutime, :) + Mask_compress( xrhodj(:, :, :) ) END IF ! IF (NBUMOD==IMI .AND. CBUTYPE=='CART' ) THEN @@ -1016,6 +1028,14 @@ IF (NBUMOD==IMI .AND. CBUTYPE=='CART' ) THEN if ( lbu_ru ) then tbudgets(NBUDGET_U)%trhodj%xdata(:, :, :) = tbudgets(NBUDGET_U)%trhodj%xdata(:, :, :) + Cart_compress( Mxm( xrhodj(:, :, :) ) ) end if + if ( lbu_rv ) then + tbudgets(NBUDGET_V)%trhodj%xdata(:, :, :) = tbudgets(NBUDGET_V)%trhodj%xdata(:, :, :) + Cart_compress( Mym( xrhodj(:, :, :) ) ) + end if + if ( lbu_rw ) then + tbudgets(NBUDGET_W)%trhodj%xdata(:, :, :) = tbudgets(NBUDGET_W)%trhodj%xdata(:, :, :) & + + Cart_compress( Mzm( 1, iku, 1, xrhodj(:, :, :) ) ) + end if + if ( associated( tburhodj ) ) tburhodj%xdata(:, :, :) = tburhodj%xdata(:, :, :) + Cart_compress( xrhodj(:, :, :) ) END IF ! CALL BUDGET_FLAGS(LUSERV, LUSERC, LUSERR, &