diff --git a/src/MNH/shallow_mf_pack.f90 b/src/MNH/shallow_mf_pack.f90 index 1f76d9759fc4562c5ae5835d9bb994c750ea5f3a..26950060eaf7503be5bf5db30878f044231a8bca 100644 --- a/src/MNH/shallow_mf_pack.f90 +++ b/src/MNH/shallow_mf_pack.f90 @@ -108,6 +108,7 @@ END MODULE MODI_SHALLOW_MF_PACK ! S. Riette 11/2016: support for CFRAC_ICE_SHALLOW_MF ! P. Wautelet 28/03/2019: use MNHTIME for time measurement variables ! P. Wautelet 02/2020: use the new data structures and subroutines for budgets +! C. Barthe 23/11/2023: allow negative values for the tendencies of electric charges ! -------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -126,7 +127,7 @@ USE MODD_BUDGET, ONLY: TBUDGETS,TBUCONF,lbudget_th,nbudget_th USE MODD_CONF USE MODD_IO, ONLY: TFILEDATA use modd_field, ONLY: tfieldmetadata, TYPEREAL -USE MODD_NSV, ONLY: XSVMIN, NSV_LGBEG, NSV_LGEND +USE MODD_NSV, ONLY: XSVMIN, NSV_LGBEG, NSV_LGEND, NSV_ELECBEG, NSV_ELECEND USE MODD_PARAMETERS USE MODD_PARAM_MFSHALL_n USE modd_precision, ONLY: MNHTIME @@ -286,8 +287,13 @@ PRVS(:,:,:) = PRVS(:,:,:) +MYM( & ! DO JSV=1,ISV IF (LNOMIXLG .AND. JSV >= NSV_LGBEG .AND. JSV<= NSV_LGEND) CYCLE - PRSVS(:,:,:,JSV) = MAX((PRSVS(:,:,:,JSV) + & - PRHODJ(:,:,:)*ZDSVDT_MF(:,:,:,JSV)),XSVMIN(JSV)) + IF (JSV > NSV_ELECBEG .AND. JSV < NSV_ELECEND) THEN + ! electric charges carried by hydrometeors can be negative !!! + PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) + PRHODJ(:,:,:) * ZDSVDT_MF(:,:,:,JSV) + ELSE + PRSVS(:,:,:,JSV) = MAX((PRSVS(:,:,:,JSV) + & + PRHODJ(:,:,:)*ZDSVDT_MF(:,:,:,JSV)),XSVMIN(JSV)) + END IF END DO ! !!! 4. Prints the fluxes in output file