From 889cf88806d60f836bb4be93195e643824cc9567 Mon Sep 17 00:00:00 2001 From: Gaelle Tanguy <gaelle.tanguy@meteo.fr> Date: Thu, 26 Nov 2015 14:55:02 +0000 Subject: [PATCH] P.Tulet (11/2015):new diagnostic for aerosol --- src/MNH/diag.f90 | 11 ++-- src/MNH/modd_diag_flag.f90 | 1 + src/MNH/write_lfifm1_for_diag_supp.f90 | 74 ++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 4 deletions(-) diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90 index 38e9a51b3..d7e3bdb0f 100644 --- a/src/MNH/diag.f90 +++ b/src/MNH/diag.f90 @@ -67,10 +67,11 @@ !! 03/2013 (O.Caumont) Modif call aircraft_balloon !! 03/2013 (C. Augros) Add variables for radar simulator in NAMELIST: !! NBAZIM,LSNRT,XSNRMIN -!! D.Ricard 2015 : add LMOIST_ES -!! July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for +!! D.Ricard 2015 : add LMOIST_ES +!! July, 2015 (O.Nuissier/F.Duffourg) Add microphysics diagnostic for !! aircraft, ballon and profiler -!! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 +!! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 +!! P.Tulet : 11/2015 : new diagnostic for aerosol !! !------------------------------------------------------------------------------- ! @@ -210,7 +211,7 @@ NAMELIST/NAM_DIAG/ CISO, LVAR_RS, LVAR_LS, & LAIRCRAFT_BALLOON,NTIME_AIRCRAFT_BALLOON,& XSTEP_AIRCRAFT_BALLOON,& XLAT_BALLOON,XLON_BALLOON,XALT_BALLOON,& - LC2R2, LC3R5, LELECDIAG,& + LC2R2, LC3R5, LELECDIAG, CAERDIAG, & NGPS,XLAT_GPS,XLON_GPS,XZS_GPS,CNAM_GPS,XDIFFORO, & NVERSION_RAD, NCURV_INTERPOL, LCART_RAD, CARF,LREFR,LDNDZ,& XLON_RAD,XLAT_RAD,XALT_RAD,CNAME_RAD,XLAM_RAD,XDT_RAD, & @@ -283,6 +284,7 @@ LRADAR=.FALSE. LBLTOP=.FALSE. LVAR_FRC=.FALSE. LCHEMDIAG=.FALSE. +CAERDIAG='CLIM' LCHAQDIAG=.FALSE. XCHEMLAT(:)=XUNDEF XCHEMLON(:)=XUNDEF @@ -646,6 +648,7 @@ END IF IF (NRAD_3D == -1) CRAD = 'NONE' ! IF (NRAD_3D >= 0) THEN + CAER=CAERDIAG IF (YRAD=='ECMW') THEN ! radiative fields are already initialized by INIT CRAD = 'NONE' diff --git a/src/MNH/modd_diag_flag.f90 b/src/MNH/modd_diag_flag.f90 index ceb12c23e..66f3c6f2b 100644 --- a/src/MNH/modd_diag_flag.f90 +++ b/src/MNH/modd_diag_flag.f90 @@ -93,6 +93,7 @@ LOGICAL :: LRADAR LOGICAL :: LBLTOP LOGICAL :: LTRAJ ! to compute trajectories LOGICAL :: LCHEMDIAG = .FALSE. ! flag for chemistry +CHARACTER (LEN=4) :: CAERDIAG ! aerosols optical thickness type LOGICAL :: LCHAQDIAG ! flag for aqueous phase chemistry REAL, DIMENSION(10) :: XCHEMLAT,XCHEMLON ! positions of vertical profiles written by routine write_ts1d LOGICAL :: LAIRCRAFT_BALLOON ! aircraft and balloon trajectories diff --git a/src/MNH/write_lfifm1_for_diag_supp.f90 b/src/MNH/write_lfifm1_for_diag_supp.f90 index 925f663b4..6f2963bb4 100644 --- a/src/MNH/write_lfifm1_for_diag_supp.f90 +++ b/src/MNH/write_lfifm1_for_diag_supp.f90 @@ -81,6 +81,7 @@ END MODULE MODI_WRITE_LFIFM1_FOR_DIAG_SUPP !! between 2 Meso-NH levels if 10m is above the first atmospheric level !! 2015 : D.Ricard add UM10/VM10 for LCARTESIAN=T cases !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 +!! P.Tulet : Diag for salt and orilam !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -113,6 +114,8 @@ USE MODD_ICE_C1R3_DESCR, ONLY: C1R3NAMES USE MODD_ELEC_DESCR, ONLY: CELECNAMES USE MODD_LG, ONLY: CLGNAMES USE MODD_DUST, ONLY: LDUST +USE MODD_SALT, ONLY: LSALT +USE MODD_CH_AEROSOL, ONLY: LORILAM USE MODD_RAD_TRANSF USE MODD_DIAG_IN_RUN, ONLY: XCURRENT_ZON10M,XCURRENT_MER10M, & XCURRENT_SFCO2, XCURRENT_SW, XCURRENT_LW @@ -612,6 +615,77 @@ IF (NRAD_3D >= 1) THEN ENDDO CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) END IF + IF (LSALT) THEN +!Salt optical depth between two vertical levels + YRECFM = 'SLTAOD3D' + YCOMMENT = 'X_Y_Z_Salt Aerosol Optical Depth (m)' + ILENCH=LEN(YCOMMENT) + ZWORK31(:,:,:)=0. + DO JK=IKB,IKE + IKRAD = JK - JPVEXT + ZWORK31(:,:,JK)= XAER(:,:,IKRAD,2) + END DO + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) +!Salt optical depth + ZWORK21(:,:)=0.0 + DO JK=IKB,IKE + IKRAD = JK - JPVEXT + DO JJ=IJB,IJE + DO JI=IIB,IIE + ZWORK21(JI,JJ)=ZWORK21(JI,JJ)+XAER(JI,JJ,IKRAD,2) + ENDDO + ENDDO + ENDDO + YRECFM = 'SLTAOD2D' + YCOMMENT = 'X_Y_Salt Aerosol Optical Depth (m)' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) +!Salt extinction (optical depth per km) + YRECFM = 'SLTEXT' + YCOMMENT = 'X_Y_Z_Salt EXTinction (1/km) ' + ILENCH=LEN(YCOMMENT) + DO JK=IKB,IKE + IKRAD = JK - JPVEXT + ZWORK31(:,:,JK)= XAER(:,:,IKRAD,2)/(XZZ(:,:,JK+1)-XZZ(:,:,JK))*1.D3 + ENDDO + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) + END IF + IF (LORILAM) THEN +!Orilam anthropogenic optical depth between two vertical levels + YRECFM = 'AERAOD3D' + YCOMMENT = 'X_Y_Z_Anthropogenic Aerosol Optical Depth (m)' + ILENCH=LEN(YCOMMENT) + ZWORK31(:,:,:)=0. + DO JK=IKB,IKE + IKRAD = JK - JPVEXT + ZWORK31(:,:,JK)= XAER(:,:,IKRAD,4) + END DO + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) +!Orilam anthropogenic optical depth + ZWORK21(:,:)=0.0 + DO JK=IKB,IKE + IKRAD = JK - JPVEXT + DO JJ=IJB,IJE + DO JI=IIB,IIE + ZWORK21(JI,JJ)=ZWORK21(JI,JJ)+XAER(JI,JJ,IKRAD,4) + ENDDO + ENDDO + ENDDO + YRECFM = 'AERAOD2D' + YCOMMENT = 'X_Y_Anthropogenic Aerosol Optical Depth (m)' + ILENCH=LEN(YCOMMENT) + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK21,IGRID,ILENCH,YCOMMENT,IRESP) +!Orilam anthropogenic extinction (optical depth per km) + YRECFM = 'AEREXT' + YCOMMENT = 'X_Y_Z_Anthropogenic EXTinction (1/km) ' + ILENCH=LEN(YCOMMENT) + DO JK=IKB,IKE + IKRAD = JK - JPVEXT + ZWORK31(:,:,JK)= XAER(:,:,IKRAD,4)/(XZZ(:,:,JK+1)-XZZ(:,:,JK))*1.D3 + ENDDO + CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK31,IGRID,ILENCH,YCOMMENT,IRESP) + END IF + END IF ! !------------------------------------------------------------------------------- -- GitLab