diff --git a/src/MNH/diag.f90 b/src/MNH/diag.f90 index 38e9a51b3d9c8e94d4cc7ec9280f0efc1a45884d..d7e3bdb0fa2884b7d66499812f69597551436d64 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 ceb12c23eafc83385862ce8a53d2bf698a374fd1..66f3c6f2be66567753a171d859332fb5ee633c30 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 925f663b41f0aad66444f5d4d358672ee2f0c1c8..6f2963bb497ec8f175952ec3ddb111b2e6e0be58 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 ! !-------------------------------------------------------------------------------