Maud & Juan 1/07/2017: Add DIAG chimical surface fluxes
authorJuan Escobar <escj@aero.obs-mip.fr>
Mon, 3 Jul 2017 13:36:17 +0000 (15:36 +0200)
committerJuan Escobar <escj@aero.obs-mip.fr>
Mon, 3 Jul 2017 13:36:17 +0000 (15:36 +0200)
src/MNH/goto_model_wrapper.f90
src/MNH/ground_paramn.f90
src/MNH/ini_modeln.f90
src/MNH/write_lfifm1_for_diag_supp.f90

index da89c86..392d995 100644 (file)
@@ -15,6 +15,7 @@
 !!      2014 (Faivre)
 !!      2016  (Leriche) Add MODD_CH_ICE Suppress MODD_CH_DEP_n
 !!      Modification    01/2016  (JP Pinty) Add LIMA
+!!                      07/2017 (M.Leriche) Add DIAG chimical surface fluxes
 !-----------------------------------------------------------------
 MODULE MODI_GOTO_MODEL_WRAPPER
 
@@ -31,6 +32,7 @@ SUBROUTINE GOTO_MODEL_WRAPPER(KFROM, KTO)
 USE MODD_ADV_n
 USE MODD_BIKHARDT_n
 USE MODD_CH_AERO_n
+USE MODD_CH_FLX_n
 USE MODD_CH_JVALUES_n
 USE MODD_CH_MNHC_n
 USE MODD_CH_SOLVER_n
@@ -115,6 +117,7 @@ INTEGER,INTENT(IN) :: KFROM, KTO
 CALL ADV_GOTO_MODEL(KFROM, KTO)
 CALL BIKHARDT_GOTO_MODEL(KFROM, KTO)
 CALL CH_AERO_GOTO_MODEL(KFROM,KTO)
+CALL CH_FLX_GOTO_MODEL(KFROM, KTO)
 CALL CH_JVALUES_GOTO_MODEL(KFROM, KTO)
 CALL CH_MNHC_GOTO_MODEL(KFROM, KTO)
 CALL CH_SOLVER_GOTO_MODEL(KFROM, KTO)
index 08f4679..a9b3059 100644 (file)
@@ -105,6 +105,7 @@ END MODULE MODI_GROUND_PARAM_n
 !!     (J.escobar)            18/10/2012 missing USE MODI_COUPLING_SURF_ATM_n & MODI_DIAG_SURF_ATM_n
 !      (J.escobar)            2/2014 add Forefire coupling
 !!      (M.Leriche)            24/03/16 remove flag for chemical surface fluxes
+!!      (M.Leriche)           01/07/2017 Add DIAG chimical surface fluxes
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
@@ -139,6 +140,8 @@ USE MODD_SALT,       ONLY : LSALT
 USE MODD_CH_AEROSOL, ONLY : LORILAM
 USE MODD_CSTS_DUST,  ONLY : XMOLARWEIGHT_DUST
 USE MODD_CSTS_SALT,  ONLY : XMOLARWEIGHT_SALT
+USE MODD_CH_FLX_n, ONLY : XCHFLX
+USE MODD_DIAG_FLAG, ONLY : LCHEMDIAG
 !
 USE MODI_NORMAL_INTERPOL
 USE MODI_ROTATE_WIND
@@ -585,6 +588,7 @@ END IF
 IF (LUSECHEM) THEN
   DO JSV=NSV_CHEMBEG,NSV_CHEMEND
     PSFSV(:,:,JSV) = ZSFTS(:,:,JSV) * XMD / ( XAVOGADRO * XRHODREF(:,:,IKB)) 
+    IF ((LCHEMDIAG).AND.(CPROGRAM == 'DIAG  ')) XCHFLX(:,:,JSV) = PSFSV(:,:,JSV)
   END DO
 ELSE
   PSFSV(:,:,NSV_CHEMBEG:NSV_CHEMEND) = 0.
index bd09ae1..b1152ac 100644 (file)
@@ -266,6 +266,8 @@ END MODULE MODI_INI_MODEL_n
 !!                   J.Escobar : 19/04/2016 : Pb IOZ/NETCDF , missing OPARALLELIO=.FALSE. for PGD files
 !!                   J.Escobar : 01/06/2016 : correct check limit of NRIM versus local subdomain size IDIM
 !!                   M.Leriche 2016 Chemistry
+!!                   M.Leriche 10/02/17 prevent negative values in LBX(Y)SVS 
+!!                   M.Leriche 01/07/2017 Add DIAG chimical surface fluxes
 !---------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -321,6 +323,7 @@ USE MODD_CH_MNHC_n, ONLY : LUSECHEM, LUSECHAQ, LUSECHIC, LCH_INIT_FIELD, &
 USE MODD_CH_PH_n
 USE MODD_CH_AEROSOL, ONLY : LORILAM
 USE MODD_CH_AERO_n,  ONLY : XSOLORG,XMI
+USE MODD_CH_FLX_n,  ONLY : XCHFLX
 USE MODD_PARAM_KAFR_n
 USE MODD_PARAM_MFSHALL_n
 USE MODD_DEEP_CONVECTION_n
@@ -1458,6 +1461,10 @@ IF (LUSECHAQ.AND.(CPROGRAM == 'DIAG  '.OR.CPROGRAM == 'MESONH')) THEN
     XACPRAQ(:,:,:) = 0.
   ENDIF
 ENDIF
+IF ((LUSECHEM).AND.(CPROGRAM == 'DIAG  ')) THEN
+  ALLOCATE(XCHFLX(IIU,IJU,NSV_CHEM))
+  XCHFLX(:,:,:) = 0.
+END IF
 !
 !-------------------------------------------------------------------------------
 !
index eb1acb1..d4ab676 100644 (file)
@@ -83,6 +83,7 @@ END MODULE MODI_WRITE_LFIFM1_FOR_DIAG_SUPP
 !!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!      P.Tulet : Diag for salt and orilam
 !!      J.-P. Chaboureau 07/03/2016 fix the dimensions of local arrays
+!!      M.Leriche 01/07/2017 Add DIAG chimical surface fluxes
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -117,6 +118,7 @@ USE MODD_LG,              ONLY: CLGNAMES
 USE MODD_DUST,            ONLY: LDUST
 USE MODD_SALT,            ONLY: LSALT
 USE MODD_CH_AEROSOL,      ONLY: LORILAM
+USE MODD_CH_FLX_n,          ONLY: XCHFLX
 USE MODD_RAD_TRANSF
 USE MODD_DIAG_IN_RUN, ONLY: XCURRENT_ZON10M,XCURRENT_MER10M,           &
                             XCURRENT_SFCO2, XCURRENT_SW, XCURRENT_LW
@@ -690,6 +692,22 @@ IF (NRAD_3D >= 1) THEN
 END IF
 !
 !-------------------------------------------------------------------------------
+! Net surface gaseous fluxes
+!print*,'LCHEMDIAG, NSV_CHEMBEG, NSV_CHEMEND=',&
+!LCHEMDIAG, NSV_CHEMBEG, NSV_CHEMEND
+
+IF (LCHEMDIAG) THEN
+    DO JSV = NSV_CHEMBEG, NSV_CHEMEND
+      YRECFM = 'FLX_'//TRIM(CNAMES(JSV-NSV_CHEMBEG+1))
+      WRITE(YCOMMENT,'(A6,A,A26)')'X_Y_Z_',TRIM(CNAMES(JSV-NSV_CHEMBEG+1)), &
+                                  ' Net chemical flux ppb.m/s'
+      ILENCH = LEN(YCOMMENT)
+      ZWORK21(:,:) = XCHFLX(:,:,JSV-NSV_CHEMBEG+1) * 1E9
+      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY', ZWORK21(:,:),           &
+                  IGRID,ILENCH,YCOMMENT,IRESP)
+    END DO
+END IF
+!-------------------------------------------------------------------------------
 !
 !* Brightness temperatures from the radiatif transfer code (Morcrette, 1991)
 !