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