From 53fa98811cd3e25d5b514e8fcea638f5252c9389 Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Tue, 17 Mar 2020 12:35:31 +0100 Subject: [PATCH] Maud L. 17/03/2020: LIMA minor corrections, suppress unused actived coated IN (immersion) source --- src/MNH/lima_cold.f90 | 3 +-- src/MNH/lima_cold_hom_nucl.f90 | 18 +++--------------- src/MNH/lima_nucleation_procs.f90 | 5 ++++- src/MNH/read_field.f90 | 10 ++++++---- src/MNH/write_lfifm1_for_diag.f90 | 22 +++++++++++----------- src/MNH/write_lfin.f90 | 8 +++++--- 6 files changed, 30 insertions(+), 36 deletions(-) diff --git a/src/MNH/lima_cold.f90 b/src/MNH/lima_cold.f90 index 28b88ca60..debd6a9de 100644 --- a/src/MNH/lima_cold.f90 +++ b/src/MNH/lima_cold.f90 @@ -349,8 +349,7 @@ IF (LNUCL) THEN PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & PTHS, PRVS, PRCS, PRRS, PRIS, PRGS, & PCCT, & - PCCS, PCRS, PNFS, & - PCIS, PNIS, PNHS ) + PCCS, PCRS, PNFS, PCIS, PNHS ) END IF ! END IF diff --git a/src/MNH/lima_cold_hom_nucl.f90 b/src/MNH/lima_cold_hom_nucl.f90 index 12242d7b7..5ca60306b 100644 --- a/src/MNH/lima_cold_hom_nucl.f90 +++ b/src/MNH/lima_cold_hom_nucl.f90 @@ -14,8 +14,7 @@ INTERFACE PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & PTHS, PRVS, PRCS, PRRS, PRIS, PRGS, & PCCT, & - PCCS, PCRS, PNFS, & - PCIS, PNIS, PNHS ) + PCCS, PCRS, PNFS, PCIS, PNHS ) ! LOGICAL, INTENT(IN) :: OHHONI ! enable haze freezing REAL, INTENT(IN) :: PTSTEP ! Time step @@ -53,8 +52,6 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNFS ! CCN C. available source !HOMOGENEOUS nucleation of haze ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PCIS ! Ice crystal C. source -REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNIS ! Activated ice nuclei C. source - !for IMMERSION REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PNHS ! haze homogeneous freezing ! END SUBROUTINE LIMA_COLD_HOM_NUCL @@ -68,8 +65,7 @@ END MODULE MODI_LIMA_COLD_HOM_NUCL PTHT, PRVT, PRCT, PRRT, PRIT, PRST, PRGT, & PTHS, PRVS, PRCS, PRRS, PRIS, PRGS, & PCCT, & - PCCS, PCRS, PNFS, & - PCIS, PNIS, PNHS ) + PCCS, PCRS, PNFS, PCIS, PNHS ) ! ###################################################################### ! !! PURPOSE @@ -91,6 +87,7 @@ END MODULE MODI_LIMA_COLD_HOM_NUCL !! C. Barthe * LACy* jan. 2014 add budgets !! B.Vie 10/2016 Bug zero division !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +!! M. Leriche May 2019 suppress unused actived coated IN (immersion) source !! B.Vie 03/2020 Correction of budgets parallelization !------------------------------------------------------------------------------- ! @@ -155,8 +152,6 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNFS ! CCN C. available source !HOMOGENEOUS nucleation of haze ! REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PCIS ! Ice crystal C. source -REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PNIS ! Activated ice nuclei C. source - !for IMMERSION REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PNHS ! haze homogeneous freezing ! !* 0.2 Declarations of local variables : @@ -182,8 +177,6 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZCCS ! Cloud water conc. source REAL, DIMENSION(:), ALLOCATABLE :: ZCRS ! Rain water conc. source REAL, DIMENSION(:,:), ALLOCATABLE :: ZNFS ! available nucleus conc. source REAL, DIMENSION(:), ALLOCATABLE :: ZCIS ! Pristine ice conc. source -REAL, DIMENSION(:,:), ALLOCATABLE :: ZNIS ! Nucleated Ice nuclei conc. source - !by Immersion REAL, DIMENSION(:), ALLOCATABLE :: ZZNHS ! Nucleated Ice nuclei conc. source !by Homogeneous freezing ! @@ -281,7 +274,6 @@ IF (INEGT.GT.0) THEN ALLOCATE(ZCIS(INEGT)) ! ALLOCATE(ZNFS(INEGT,NMOD_CCN)) - ALLOCATE(ZNIS(INEGT,NMOD_IMM)) ALLOCATE(ZZNHS(INEGT)) ! ALLOCATE(ZRHODREF(INEGT)) @@ -314,9 +306,6 @@ IF (INEGT.GT.0) THEN DO JMOD_CCN = 1, NMOD_CCN ZNFS(JL,JMOD_CCN) = PNFS(I1(JL),I2(JL),I3(JL),JMOD_CCN) ENDDO - DO JMOD_IMM = 1, NMOD_IMM - ZNIS(JL,JMOD_IMM) = PNIS(I1(JL),I2(JL),I3(JL),JMOD_IMM) - ENDDO ZZNHS(JL) = ZNHS(I1(JL),I2(JL),I3(JL)) ZRHODREF(JL) = PRHODREF(I1(JL),I2(JL),I3(JL)) ZZT(JL) = ZT(I1(JL),I2(JL),I3(JL)) @@ -599,7 +588,6 @@ IF (INEGT.GT.0) THEN DEALLOCATE(ZCIS) ! DEALLOCATE(ZNFS) - DEALLOCATE(ZNIS) DEALLOCATE(ZZNHS) ! DEALLOCATE(ZRHODREF) diff --git a/src/MNH/lima_nucleation_procs.f90 b/src/MNH/lima_nucleation_procs.f90 index eaf244e26..04f4f9009 100644 --- a/src/MNH/lima_nucleation_procs.f90 +++ b/src/MNH/lima_nucleation_procs.f90 @@ -69,6 +69,7 @@ SUBROUTINE LIMA_NUCLEATION_PROCS (PTSTEP, TPFILE, OCLOSE_OUT, PRHODJ, !! MODIFICATIONS !! ------------- !! Original 15/03/2018 +!! M. Leriche (06/19) : missing update of PNFT after CCN hom. ncl. ! P. Wautelet 27/02/2020: bugfix: PNFT was not updated after LIMA_CCN_HOM_FREEZING ! P. Wautelet 27/02/2020: add Z_TH_HINC variable (for budgets) !! B.Vié 03/03/2020 : use DTHRAD instead of dT/dt in Smax diagnostic computation @@ -290,7 +291,9 @@ PTHT(:,:,:) = ZTHT(:,:,:) PRVT(:,:,:) = ZRVT(:,:,:) PRIT(:,:,:) = ZRIT(:,:,:) PCIT(:,:,:) = ZCIT(:,:,:) -PNFT(:,:,:,:) = ZNFT(:,:,:,:) +DO JL=1, NMOD_CCN + PNFT(:,:,:,JL) = ZNFT(:,:,:,JL) +ENDDO PNHT(:,:,:) = ZNHT(:,:,:) ENDIF ! diff --git a/src/MNH/read_field.f90 b/src/MNH/read_field.f90 index 32672d22f..cd5b98626 100644 --- a/src/MNH/read_field.f90 +++ b/src/MNH/read_field.f90 @@ -240,6 +240,7 @@ END MODULE MODI_READ_FIELD ! P. Wautelet 13/02/2019: removed PPABSM and PTSTEP dummy arguments (bugfix: PPABSM was intent(OUT)) !! Bielli S. 02/2019 Sea salt : significant sea wave height influences salt emission; 5 salt modes ! P. Wautelet 14/03/2019: correct ZWS when variable not present in file +!! M. Leriche 10/06/2019: in restart case read all immersion modes for LIMA !!------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -714,11 +715,12 @@ DO JSV = NSV_LIMA_BEG,NSV_LIMA_END TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(3))//INDICE//'T' END IF ! N IMM nucl - I = 0 IF (JSV .GE. NSV_LIMA_IMM_NUCL .AND. JSV .LT. NSV_LIMA_IMM_NUCL + NMOD_IMM) THEN - I = I + 1 - WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(I)) - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(4))//INDICE//'T' + DO I= 1, NMOD_IMM ! to be supressed + WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(I)) ! to be supressed +! WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(JSV - NSV_LIMA_BEG - NSV_LIMA_IMM_NUCL + 1)) + TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(4))//INDICE//'T' + ENDDO END IF ! Hom. freez. of CCN IF (JSV .EQ. NSV_LIMA_HOM_HAZE) THEN diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90 index 235aa1ec2..1112c7191 100644 --- a/src/MNH/write_lfifm1_for_diag.f90 +++ b/src/MNH/write_lfifm1_for_diag.f90 @@ -1148,11 +1148,12 @@ IF (LLIMA_DIAG) THEN TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_CONC(3))//INDICE//'T' END IF ! N IMM nucl - I = 0 IF (JSV .GE. NSV_LIMA_IMM_NUCL .AND. JSV .LT. NSV_LIMA_IMM_NUCL + NMOD_IMM) THEN - I = I + 1 - WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(I)) - TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_CONC(4))//INDICE//'T' + DO I = 1, NMOD_IMM ! to be supressed +! WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(JSV - NSV_LIMA_BEG - NSV_LIMA_IMM_NUCL + 1)) + WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(I)) ! to be supressed + TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_CONC(4))//INDICE//'T' + ENDDO END IF ! Hom. freez. of CCN IF (JSV .EQ. NSV_LIMA_HOM_HAZE) THEN @@ -1196,7 +1197,7 @@ IF (LLIMA_DIAG) THEN ! END IF ! -! chemical scalar variables in gas phase PPBV +! chemical scalar variables in gas phase ppbv IF (LCHEMDIAG) THEN DO JSV = NSV_CHGSBEG,NSV_CHGSEND TZFIELD%CMNHNAME = TRIM(UPCASE(CNAMES(JSV-NSV_CHGSBEG+1)))//'T' @@ -1214,8 +1215,7 @@ IF (LCHEMDIAG) THEN END IF IF (LCHAQDIAG) THEN !aqueous concentration in M TZFIELD%CSTDNAME = '' - !PW TODO: check units - TZFIELD%CUNITS = '' + TZFIELD%CUNITS = 'M' TZFIELD%CDIR = 'XY' TZFIELD%NGRID = 1 TZFIELD%NTYPE = TYPEREAL @@ -1224,9 +1224,9 @@ IF (LCHAQDIAG) THEN !aqueous concentration in M ! ZWORK31(:,:,:)=0. DO JSV = NSV_CHACBEG, NSV_CHACBEG-1+NEQAQ/2 !cloud water - TZFIELD%CMNHNAME = TRIM(CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1))//'M' + TZFIELD%CMNHNAME = TRIM(CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1))//'T' TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) - WRITE(TZFIELD%CCOMMENT,'(A6,A4,I3.3,A4)')'X_Y_Z_','CHAQ',JSV,' (M)' + WRITE(TZFIELD%CCOMMENT,'(A6,A4,I3.3)')'X_Y_Z_','CHAQ',JSV WHERE(((XRT(:,:,:,2)*XRHODREF(:,:,:))/1.e3) .GE. XRTMIN_AQ) ZWORK31(:,:,:)=(XSVT(:,:,:,JSV)*1000.)/(XMD*1.E+3*XRT(:,:,:,2)) ENDWHERE @@ -1235,9 +1235,9 @@ IF (LCHAQDIAG) THEN !aqueous concentration in M ! ZWORK31(:,:,:)=0. DO JSV = NSV_CHACBEG+NEQAQ/2, NSV_CHACEND !rain water - TZFIELD%CMNHNAME = TRIM(CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1))//'M' + TZFIELD%CMNHNAME = TRIM(CNAMES(JSV-NSV_CHACBEG+NSV_CHGS+1))//'T' TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) - WRITE(TZFIELD%CCOMMENT,'(A6,A4,I3.3,A4)')'X_Y_Z_','CHAQ',JSV,' (M)' + WRITE(TZFIELD%CCOMMENT,'(A6,A4,I3.3)')'X_Y_Z_','CHAQ',JSV WHERE(((XRT(:,:,:,3)*XRHODREF(:,:,:))/1.e3) .GE. XRTMIN_AQ) ZWORK31(:,:,:)=(XSVT(:,:,:,JSV)*1000.)/(XMD*1.E+3*XRT(:,:,:,3)) ENDWHERE diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index fb87a7412..3978a24d0 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -762,11 +762,13 @@ IF (NSV >=1) THEN TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(3))//INDICE//'T' END IF ! N IMM nucl - I = 0 IF (JSV .GE. NSV_LIMA_IMM_NUCL .AND. JSV .LT. NSV_LIMA_IMM_NUCL + NMOD_IMM) THEN - I = I + 1 - WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(I)) + DO I = 1, NMOD_IMM ! to be supressed +! ML start to 1 to get the CCN mode indice acting as IN by immersion +! WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(JSV - NSV_LIMA_BEG - NSV_LIMA_IMM_NUCL + 1)) + WRITE(INDICE,'(I2.2)')(NINDICE_CCN_IMM(I)) ! to be supresses TZFIELD%CMNHNAME = TRIM(CLIMA_COLD_NAMES(4))//INDICE//'T' + ENDDO END IF ! Hom. freez. of CCN IF (JSV .EQ. NSV_LIMA_HOM_HAZE) THEN -- GitLab