Skip to content
Snippets Groups Projects
Forked from Méso-NH / Méso-NH code
4355 commits behind the upstream repository.
ch_aer_trans.f90 59.68 KiB
!ORILAM_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
!ORILAM_LIC This is part of the ORILAM software governed by the CeCILL-C licence
!ORILAM_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!ORILAM_LIC for details.
!-----------------------------------------------------------------
!--------------- special set of characters for RCS information
!-----------------------------------------------------------------
! $Source$ $Revision$
! MASDEV4_7 chimie 2007/03/02 13:59:36
!-----------------------------------------------------------------
!!   ########################
     MODULE MODI_CH_AER_TRANS
!!   ########################
!!
INTERFACE
!!
SUBROUTINE CH_AER_TRANS(KDIR, PM, PSIG0, PRG0, PN0, PRHOP0, PAERO,     &
                  PCONC, PCTOTG, PCTOTA, PCCTOT,PFRAC,PMI,PMASK,HSCHEME)


IMPLICIT NONE
INTEGER,                  INTENT(IN)    :: KDIR    ! KDIR = 0 gas -> aero
                                                   ! KDIR = 1 aero -> gas
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PM      ! moments
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PSIG0, PRG0, PN0, PRHOP0, PCTOTG
REAL,   DIMENSION(:,:,:), INTENT(INOUT) :: PCTOTA, PCCTOT
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PCONC
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PAERO
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PFRAC
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PMI
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PMASK
CHARACTER(LEN=10),        INTENT(IN)    :: HSCHEME

END SUBROUTINE CH_AER_TRANS
!!
END INTERFACE
!!
END MODULE MODI_CH_AER_TRANS
!!
!!   #######################################################################
     SUBROUTINE CH_AER_TRANS(KDIR, PM, PSIG0, PRG0, PN0, PRHOP0, PAERO,    &
                      PCONC, PCTOTG, PCTOTA, PCCTOT,PFRAC,PMI,PMASK,HSCHEME)
!!   #######################################################################
!!
!!    PURPOSE
!!    -------
!!      Transfer of gaz phase species into aerosol variables (KDIR = 0)
!!    and back (KDIR = 1) after call to the aerosol module.
!!
!!    REFERENCE
!!    ---------
!a!    none
!!
!!    AUTHOR
!!    ------
!!    Vincent Crassier (LA)
!!
!!    MODIFICATIONS
!!    -------------
!!    P .Tulet  *  add biogenics and BC
!!    P .Tulet  *  stability of moments 
!!    P .Tulet  *  add SOA for AER and MPMPO
!!    A. Berger *  correct the treatment of H2SO4 g
!!    M. Leriche * add ReLACS3
!!
!!    EXTERNAL
!!    --------
!!    None
!!
USE MODD_CH_AEROSOL
USE MODD_CST, ONLY : XMNH_TINY

!!
IMPLICIT NONE
!!
!-------------------------------------------------------------------------------
!
!*       0.     DECLARATIONS
!               ------------
!
!*      0.1    declarations of arguments
INTEGER,                  INTENT(IN)    :: KDIR    ! KDIR = 0 gas -> aero
                                                          ! KDIR = 1 aero -> gas
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PM      ! moments
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PSIG0, PRG0, PN0, PRHOP0, PCTOTG
REAL,   DIMENSION(:,:,:), INTENT(INOUT) :: PCTOTA, PCCTOT
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PCONC
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PAERO
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PFRAC
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PMI
REAL,   DIMENSION(:,:),   INTENT(INOUT) :: PMASK
CHARACTER(LEN=10),        INTENT(IN) :: HSCHEME

!
!
!*      0.2    declarations local variables
!
INTEGER :: JJ, JN  ! loop counter
!   variables for the aerosol module
!
REAL, DIMENSION(SIZE(PM,1)) :: ZSIGMA
REAL, DIMENSION(SIZE(PM,1)) :: ZSUM
REAL, SAVE, DIMENSION(JPIN) :: ZPMIN
LOGICAL, SAVE               :: GPHYSLIM = .TRUE. ! flag
REAL :: ZRGMIN
REAL, PARAMETER :: ZCSTAVOG=6.0221367E+11
REAL    :: ZINIRADIUSI, ZINIRADIUSJ


!
!-------------------------------------------------------------------------------
!
IF (KDIR .EQ. 0) THEN 
!
!*       1.     TRANSFER FROM GAS TO AEROSOL MODULE
!               ------------------------------------
!
IF (GPHYSLIM) THEN
GPHYSLIM=.FALSE.

IF (CRGUNIT=="MASS") THEN
ZINIRADIUSI = XINIRADIUSI * EXP(-3.*(LOG(XINISIGI))**2)
ZINIRADIUSJ = XINIRADIUSJ * EXP(-3.*(LOG(XINISIGJ))**2)
ELSE
ZINIRADIUSI = XINIRADIUSI 
ZINIRADIUSJ = XINIRADIUSJ
END IF

ZPMIN(1) = XN0IMIN
ZRGMIN = ZINIRADIUSI
ZPMIN(2) = ZPMIN(1) * (ZRGMIN**3)*EXP(4.5 * LOG(XSIGIMIN)**2) 
ZPMIN(3) = ZPMIN(1) * (ZRGMIN**6)*EXP(18. * LOG(XSIGIMIN)**2)

ZPMIN(4) = XN0JMIN
ZRGMIN = ZINIRADIUSJ
ZPMIN(5) = ZPMIN(4) * (ZRGMIN**3)*EXP(4.5 * LOG(XSIGJMIN)**2) 
ZPMIN(6) = ZPMIN(4) * (ZRGMIN**6)*EXP(18. * LOG(XSIGJMIN)**2)

END IF
PCTOTG(:,:)   = 0.
PCTOTA(:,:,:) = 0.
PFRAC(:,:) = 0.
PCONC(:,:) = MAX(PCONC(:,:), XMNH_TINY)
PAERO(:,:) = MAX(PAERO(:,:), XMNH_TINY)

!*       1.n    transfer aerosol mass from gas to aerosol variables
!               (and conversion of molec/cm3 to microgram/m3)
!
! gas phase species
  PCTOTG(:,JP_AER_SO4g) = 0. !all sulfates has been converted into aerosol phase
  PCTOTG(:,JP_AER_NO3g) = PCONC(:,JP_CH_HNO3)*XHNO3/ZCSTAVOG
  PCTOTG(:,JP_AER_NH3g) = PCONC(:,JP_CH_NH3)*XNH3/ZCSTAVOG
!
! aerosol phase
  PCTOTA(:,JP_AER_SO4,1) = PAERO(:,JP_CH_SO4i)*PMI(:,JP_AER_SO4)/ZCSTAVOG
  PCTOTA(:,JP_AER_SO4,2) = PAERO(:,JP_CH_SO4j)*PMI(:,JP_AER_SO4)/ZCSTAVOG
  PCTOTA(:,JP_AER_NO3,1) = PAERO(:,JP_CH_NO3i)*PMI(:,JP_AER_NO3)/ZCSTAVOG
  PCTOTA(:,JP_AER_NO3,2) = PAERO(:,JP_CH_NO3j)*PMI(:,JP_AER_NO3)/ZCSTAVOG
  PCTOTA(:,JP_AER_NH3,1) = PAERO(:,JP_CH_NH3i)*PMI(:,JP_AER_NH3)/ZCSTAVOG
  PCTOTA(:,JP_AER_NH3,2) = PAERO(:,JP_CH_NH3j)*PMI(:,JP_AER_NH3)/ZCSTAVOG
!
! water
  PCTOTA(:,JP_AER_H2O,1) = PAERO(:,JP_CH_H2Oi)*PMI(:,JP_AER_H2O)/ZCSTAVOG
  PCTOTA(:,JP_AER_H2O,2) = PAERO(:,JP_CH_H2Oj)*PMI(:,JP_AER_H2O)/ZCSTAVOG
!
! primary organic carbon
  PCTOTA(:,JP_AER_OC,1) = PAERO(:,JP_CH_OCi)*PMI(:,JP_AER_OC)/ZCSTAVOG
  PCTOTA(:,JP_AER_OC,2) = PAERO(:,JP_CH_OCj)*PMI(:,JP_AER_OC)/ZCSTAVOG
! primary black carbon
  PCTOTA(:,JP_AER_BC,1) = PAERO(:,JP_CH_BCi)*PMI(:,JP_AER_BC)/ZCSTAVOG
  PCTOTA(:,JP_AER_BC,2) = PAERO(:,JP_CH_BCj)*PMI(:,JP_AER_BC)/ZCSTAVOG
! dust
  PCTOTA(:,JP_AER_DST,1) = PAERO(:,JP_CH_DSTi)*PMI(:,JP_AER_DST)/ZCSTAVOG
  PCTOTA(:,JP_AER_DST,2) = PAERO(:,JP_CH_DSTj)*PMI(:,JP_AER_DST)/ZCSTAVOG

IF (NSOA .EQ. 10) THEN
IF (TRIM(CORGANIC) == 'PUN') THEN
  IF (HSCHEME == "RELACS2") THEN   ! ReLACS2 scheme
  PCTOTG(:,JP_AER_SOA1) = PCONC(:,JP_CH_URG1)*XURG1/ZCSTAVOG
  PFRAC(:,JP_CH_URG1) = 1.
  PMI(:,JP_AER_SOA1) =  PFRAC(:,JP_CH_URG1) * XURG1

  PCTOTG(:,JP_AER_SOA2) = PCONC(:,JP_CH_URG2) *XURG2/ZCSTAVOG +&
                           PCONC(:,JP_CH_RPG2)*XRPG2/ZCSTAVOG +&
                           PCONC(:,JP_CH_RP18)*XRP18/ZCSTAVOG 
  PFRAC(:,JP_CH_URG2)  = PCONC(:,JP_CH_URG2) *XURG2/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RPG2) = PCONC(:,JP_CH_RPG2)  *XRPG2/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RP18) = PCONC(:,JP_CH_RP18)  *XRP18/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PMI(:,JP_AER_SOA2) = PFRAC(:,JP_CH_URG2)  * XURG2 + &
                        PFRAC(:,JP_CH_RPG2) * XRPG2 + &
                        PFRAC(:,JP_CH_RP18) * XRP18


  PCTOTG(:,JP_AER_SOA3) = PCONC(:,JP_CH_RPG3)*XRPG3/ZCSTAVOG
  PFRAC(:,JP_CH_RPG3) = 1.
  PMI(:,JP_AER_SOA3) =  PFRAC(:,JP_CH_RPG3) * XRPG3
 
  PCTOTG(:,JP_AER_SOA4) = PCONC(:,JP_CH_URG4)*XURG4/ZCSTAVOG
  PFRAC(:,JP_CH_URG4) = 1.
  PMI(:,JP_AER_SOA4) =  PFRAC(:,JP_CH_URG4) * XURG4

  PCTOTG(:,JP_AER_SOA5) = PCONC(:,JP_CH_UR17) *XUR17/ZCSTAVOG  +&
                           PCONC(:,JP_CH_RPR3)*XRPR3/ZCSTAVOG  +&
                           PCONC(:,JP_CH_AP7) *XAP7/ZCSTAVOG 
  PFRAC(:,JP_CH_UR17)  = PCONC(:,JP_CH_UR17)  *XUR17/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PFRAC(:,JP_CH_RPR3)  = PCONC(:,JP_CH_RPR3) *XRPR3/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PFRAC(:,JP_CH_AP7)   = PCONC(:,JP_CH_AP7)  *XAP7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PMI(:,JP_AER_SOA5)   = PFRAC(:,JP_CH_UR17) *XUR17 + &
                         PFRAC(:,JP_CH_RPR3) *XRPR3 + &
                         PFRAC(:,JP_CH_AP7)  *XAP7

  PCTOTG(:,JP_AER_SOA6) = PCONC(:,JP_CH_URG6) *XURG6/ZCSTAVOG +&
                          PCONC(:,JP_CH_UR22) *XUR22/ZCSTAVOG 
  PFRAC(:,JP_CH_URG6)   = PCONC(:,JP_CH_URG6) *XURG6/ZCSTAVOG / PCTOTG(:,JP_AER_SOA6)
  PFRAC(:,JP_CH_UR22)   =  PCONC(:,JP_CH_UR22)*XUR22/ZCSTAVOG / PCTOTG(:,JP_AER_SOA6)
  PMI(:,JP_AER_SOA6)    = PFRAC(:,JP_CH_URG6) *XURG6 + &
                          PFRAC(:,JP_CH_UR22) *XUR22

  PCTOTG(:,JP_AER_SOA7) = PCONC(:,JP_CH_URG7) *XURG7/ZCSTAVOG +&
                           PCONC(:,JP_CH_RPR4)*XRPR4/ZCSTAVOG +&
                           PCONC(:,JP_CH_RPR7)*XRPR7/ZCSTAVOG +&
                           PCONC(:,JP_CH_RPG7)*XRPG7/ZCSTAVOG 

  PFRAC(:,JP_CH_URG7)  =  PCONC(:,JP_CH_URG7) *XURG7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RPR4)  =  PCONC(:,JP_CH_RPR4) *XRPR4/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RPR7)  =  PCONC(:,JP_CH_RPR7) *XRPR7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RPG7)  =  PCONC(:,JP_CH_RPG7) *XRPG7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PMI(:,JP_AER_SOA7)   = PFRAC(:,JP_CH_URG7) * XURG7 + &
                         PFRAC(:,JP_CH_RPR4) * XRPR4 + &
                         PFRAC(:,JP_CH_RPR7) * XRPR7 + &
                         PFRAC(:,JP_CH_RPG7)* XRPG7

  PCTOTG(:,JP_AER_SOA8) = PCONC(:,JP_CH_URG8) *XURG8/ZCSTAVOG 
  PFRAC(:,JP_CH_URG8)   = 1.
  PMI(:,JP_AER_SOA8)    = PFRAC(:,JP_CH_URG8) *XURG8

  PCTOTG(:,JP_AER_SOA9) = PCONC(:,JP_CH_URG9) *XURG9/ZCSTAVOG +&
                          PCONC(:,JP_CH_UR26) *XUR26/ZCSTAVOG 
  PFRAC(:,JP_CH_URG9)   = PCONC(:,JP_CH_URG9) *XURG9/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PFRAC(:,JP_CH_UR26)   = PCONC(:,JP_CH_UR26) *XUR26/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PMI(:,JP_AER_SOA9) = PFRAC(:,JP_CH_URG9)*XURG9 + &
                       PFRAC(:,JP_CH_UR26)*XUR26

  
  PCTOTG(:,JP_AER_SOA10) = PCONC(:,JP_CH_URG10)*XURG10/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR7)  *XUR7/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR8)  *XUR8/ZCSTAVOG +&
                           PCONC(:,JP_CH_PAN8) *XPAN8/ZCSTAVOG 
  PFRAC(:,JP_CH_URG10)=  PCONC(:,JP_CH_URG10)*XURG10/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_UR7)  =  PCONC(:,JP_CH_UR7)  *XUR7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_UR8)  =  PCONC(:,JP_CH_UR8)  *XUR8/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_PAN8) =  PCONC(:,JP_CH_PAN8) *XPAN8/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PMI(:,JP_AER_SOA10) = PFRAC(:,JP_CH_URG10)*XURG10 + &
                        PFRAC(:,JP_CH_UR7)  *XUR7 + &
                        PFRAC(:,JP_CH_UR8)  *XUR8 + &
                        PFRAC(:,JP_CH_PAN8) *XPAN8
!
  ELSE IF (HSCHEME == "RELACS3") THEN  !ReLACS3 scheme
  PCTOTG(:,JP_AER_SOA1) = PCONC(:,JP_CH_UR21)*XUR21/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR28)*XUR28/ZCSTAVOG
  PFRAC(:,JP_CH_UR21) = PCONC(:,JP_CH_UR21) *XUR21/ZCSTAVOG / PCTOTG(:,JP_AER_SOA1)
  PFRAC(:,JP_CH_UR28) = PCONC(:,JP_CH_UR28) *XUR28/ZCSTAVOG / PCTOTG(:,JP_AER_SOA1)
  PMI(:,JP_AER_SOA1) =  PFRAC(:,JP_CH_UR21) * XUR21 + &
                        PFRAC(:,JP_CH_UR28) * XUR28

  PCTOTG(:,JP_AER_SOA2) = PCONC(:,JP_CH_URG2) *XURG2/ZCSTAVOG +&
                           PCONC(:,JP_CH_RPG2)*XRPG2/ZCSTAVOG +&
                           PCONC(:,JP_CH_RP18)*XRP18/ZCSTAVOG 
  PFRAC(:,JP_CH_URG2)  = PCONC(:,JP_CH_URG2) *XURG2/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RPG2) = PCONC(:,JP_CH_RPG2)  *XRPG2/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RP18) = PCONC(:,JP_CH_RP18)  *XRP18/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PMI(:,JP_AER_SOA2) = PFRAC(:,JP_CH_URG2)  * XURG2 + &
                        PFRAC(:,JP_CH_RPG2) * XRPG2 + &
                        PFRAC(:,JP_CH_RP18) * XRP18


  PCTOTG(:,JP_AER_SOA3) = PCONC(:,JP_CH_RPG3)*XRPG3/ZCSTAVOG
  PFRAC(:,JP_CH_RPG3) = 1.
  PMI(:,JP_AER_SOA3) =  PFRAC(:,JP_CH_RPG3) * XRPG3
 
  PCTOTG(:,JP_AER_SOA4) = PCONC(:,JP_CH_URG4)*XURG4/ZCSTAVOG
  PFRAC(:,JP_CH_URG4) = 1.
  PMI(:,JP_AER_SOA4) =  PFRAC(:,JP_CH_URG4) * XURG4

  PCTOTG(:,JP_AER_SOA5) = PCONC(:,JP_CH_UR17) *XUR17/ZCSTAVOG  +&
                           PCONC(:,JP_CH_RPR3)*XRPR3/ZCSTAVOG  +&
                           PCONC(:,JP_CH_AP7) *XAP7/ZCSTAVOG 
  PFRAC(:,JP_CH_UR17)  = PCONC(:,JP_CH_UR17)  *XUR17/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PFRAC(:,JP_CH_RPR3)  = PCONC(:,JP_CH_RPR3) *XRPR3/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PFRAC(:,JP_CH_AP7)   = PCONC(:,JP_CH_AP7)  *XAP7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PMI(:,JP_AER_SOA5)   = PFRAC(:,JP_CH_UR17) *XUR17 + &
                         PFRAC(:,JP_CH_RPR3) *XRPR3 + &
                         PFRAC(:,JP_CH_AP7)  *XAP7

  PCTOTG(:,JP_AER_SOA6) = PCONC(:,JP_CH_URG6) *XURG6/ZCSTAVOG +&
                          PCONC(:,JP_CH_UR22) *XUR22/ZCSTAVOG 
  PFRAC(:,JP_CH_URG6)   = PCONC(:,JP_CH_URG6) *XURG6/ZCSTAVOG / PCTOTG(:,JP_AER_SOA6)
  PFRAC(:,JP_CH_UR22)   =  PCONC(:,JP_CH_UR22)*XUR22/ZCSTAVOG / PCTOTG(:,JP_AER_SOA6)
  PMI(:,JP_AER_SOA6)    = PFRAC(:,JP_CH_URG6) *XURG6 + &
                          PFRAC(:,JP_CH_UR22) *XUR22

  PCTOTG(:,JP_AER_SOA7) = PCONC(:,JP_CH_URG7) *XURG7/ZCSTAVOG +&
                           PCONC(:,JP_CH_RPR4)*XRPR4/ZCSTAVOG +&
                           PCONC(:,JP_CH_RPR7)*XRPR7/ZCSTAVOG +&
                           PCONC(:,JP_CH_RPG7)*XRPG7/ZCSTAVOG 

  PFRAC(:,JP_CH_URG7)  =  PCONC(:,JP_CH_URG7) *XURG7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RPR4)  =  PCONC(:,JP_CH_RPR4) *XRPR4/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RPR7)  =  PCONC(:,JP_CH_RPR7) *XRPR7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RPG7)  =  PCONC(:,JP_CH_RPG7) *XRPG7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PMI(:,JP_AER_SOA7)   = PFRAC(:,JP_CH_URG7) * XURG7 + &
                         PFRAC(:,JP_CH_RPR4) * XRPR4 + &
                         PFRAC(:,JP_CH_RPR7) * XRPR7 + &
                         PFRAC(:,JP_CH_RPG7)* XRPG7

  PCTOTG(:,JP_AER_SOA8) = PCONC(:,JP_CH_URG8) *XURG8/ZCSTAVOG 
  PFRAC(:,JP_CH_URG8)   = 1.
  PMI(:,JP_AER_SOA8)    = PFRAC(:,JP_CH_URG8) *XURG8

  PCTOTG(:,JP_AER_SOA9) = PCONC(:,JP_CH_URG9) *XURG9/ZCSTAVOG +&
                          PCONC(:,JP_CH_UR26) *XUR26/ZCSTAVOG 
  PFRAC(:,JP_CH_URG9)   = PCONC(:,JP_CH_URG9) *XURG9/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PFRAC(:,JP_CH_UR26)   = PCONC(:,JP_CH_UR26) *XUR26/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PMI(:,JP_AER_SOA9) = PFRAC(:,JP_CH_URG9)*XURG9 + &
                       PFRAC(:,JP_CH_UR26)*XUR26

  
  PCTOTG(:,JP_AER_SOA10) = PCONC(:,JP_CH_URG10)*XURG10/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR7)  *XUR7/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR8)  *XUR8/ZCSTAVOG +&
                           PCONC(:,JP_CH_PAN8) *XPAN8/ZCSTAVOG 
  PFRAC(:,JP_CH_URG10)=  PCONC(:,JP_CH_URG10)*XURG10/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_UR7)  =  PCONC(:,JP_CH_UR7)  *XUR7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_UR8)  =  PCONC(:,JP_CH_UR8)  *XUR8/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_PAN8) =  PCONC(:,JP_CH_PAN8) *XPAN8/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PMI(:,JP_AER_SOA10) = PFRAC(:,JP_CH_URG10)*XURG10 + &
                        PFRAC(:,JP_CH_UR7)  *XUR7 + &
                        PFRAC(:,JP_CH_UR8)  *XUR8 + &
                        PFRAC(:,JP_CH_PAN8) *XPAN8
!
  ELSE ! CACM scheme
  PCTOTG(:,JP_AER_SOA1) = PCONC(:,JP_CH_UR21)*XUR21/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR28)*XUR28/ZCSTAVOG
  PFRAC(:,JP_CH_UR21) = PCONC(:,JP_CH_UR21) *XUR21/ZCSTAVOG / PCTOTG(:,JP_AER_SOA1)
  PFRAC(:,JP_CH_UR28) = PCONC(:,JP_CH_UR28) *XUR28/ZCSTAVOG / PCTOTG(:,JP_AER_SOA1)
  PMI(:,JP_AER_SOA1) =  PFRAC(:,JP_CH_UR21) * XUR21 + &
                        PFRAC(:,JP_CH_UR28) * XUR28

  PCTOTG(:,JP_AER_SOA2) = PCONC(:,JP_CH_UR29) *XUR29/ZCSTAVOG +&
                          PCONC(:,JP_CH_UR30) *XUR30/ZCSTAVOG +&
                          PCONC(:,JP_CH_RP13)*XRP13/ZCSTAVOG  +&
                          PCONC(:,JP_CH_RP17)*XRP17/ZCSTAVOG  +&
                          PCONC(:,JP_CH_RP18)*XRP18/ZCSTAVOG 
  PFRAC(:,JP_CH_UR29)  = PCONC(:,JP_CH_UR29) *XUR29/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_UR30)  = PCONC(:,JP_CH_UR30) *XUR30/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RP13) = PCONC(:,JP_CH_RP13)  *XRP13/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RP17) = PCONC(:,JP_CH_RP17)  *XRP17/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RP18) = PCONC(:,JP_CH_RP18)  *XRP18/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PMI(:,JP_AER_SOA2) = PFRAC(:,JP_CH_UR29)  * XUR29 + &
                        PFRAC(:,JP_CH_UR30) * XUR30 + &
                        PFRAC(:,JP_CH_RP13) * XRP13 + &
                        PFRAC(:,JP_CH_RP17) * XRP17 + &
                        PFRAC(:,JP_CH_RP18) * XRP18


  PCTOTG(:,JP_AER_SOA3) = PCONC(:,JP_CH_RPR9)*XRPR9/ZCSTAVOG + &
                          PCONC(:,JP_CH_RP12)*XRP12/ZCSTAVOG
  PFRAC(:,JP_CH_RPR9) = PCONC(:,JP_CH_RPR9)  *XRPR9/ZCSTAVOG / PCTOTG(:,JP_AER_SOA3)
  PFRAC(:,JP_CH_RP12) = PCONC(:,JP_CH_RP12)  *XRP12/ZCSTAVOG / PCTOTG(:,JP_AER_SOA3)
  PMI(:,JP_AER_SOA3) =  PFRAC(:,JP_CH_RPR9) * XRPR9 + &
                        PFRAC(:,JP_CH_RP12) * XRP12
 
  PCTOTG(:,JP_AER_SOA4) = PCONC(:,JP_CH_UR3) *XUR3/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR23)*XUR23/ZCSTAVOG
  PFRAC(:,JP_CH_UR3) = PCONC(:,JP_CH_UR3)   *XUR3/ZCSTAVOG / PCTOTG(:,JP_AER_SOA4)
  PFRAC(:,JP_CH_UR23)= PCONC(:,JP_CH_UR23)  *XUR23/ZCSTAVOG / PCTOTG(:,JP_AER_SOA4)
  PMI(:,JP_AER_SOA4) =  PFRAC(:,JP_CH_UR3) * XUR3 + &
                        PFRAC(:,JP_CH_UR23) * XUR23

  PCTOTG(:,JP_AER_SOA5) = PCONC(:,JP_CH_UR17) *XUR17/ZCSTAVOG  +&
                           PCONC(:,JP_CH_RPR3)*XRPR3/ZCSTAVOG  +&
                           PCONC(:,JP_CH_AP7) *XAP7/ZCSTAVOG 
  PFRAC(:,JP_CH_UR17)  = PCONC(:,JP_CH_UR17) *XUR17/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PFRAC(:,JP_CH_RPR3)  = PCONC(:,JP_CH_RPR3) *XRPR3/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PFRAC(:,JP_CH_AP7)   = PCONC(:,JP_CH_AP7)  *XAP7/ZCSTAVOG  / PCTOTG(:,JP_AER_SOA5)
  PMI(:,JP_AER_SOA5)   = PFRAC(:,JP_CH_UR17) *XUR17 + &
                         PFRAC(:,JP_CH_RPR3) *XRPR3 + &
                         PFRAC(:,JP_CH_AP7)  *XAP7

  PCTOTG(:,JP_AER_SOA6) = PCONC(:,JP_CH_UR31) *XUR31/ZCSTAVOG +&
                          PCONC(:,JP_CH_AP1)  *XAP1 /ZCSTAVOG +&
                          PCONC(:,JP_CH_AP6)  *XAP6 /ZCSTAVOG +&
                          PCONC(:,JP_CH_UR22) *XUR22/ZCSTAVOG 
  PFRAC(:,JP_CH_UR31)   = PCONC(:,JP_CH_UR31) *XUR31/ZCSTAVOG / PCTOTG(:,JP_AER_SOA6)
  PFRAC(:,JP_CH_AP1)    = PCONC(:,JP_CH_AP1)  *XAP1/ZCSTAVOG  / PCTOTG(:,JP_AER_SOA6)
  PFRAC(:,JP_CH_AP6)    = PCONC(:,JP_CH_AP6)  *XAP6/ZCSTAVOG  / PCTOTG(:,JP_AER_SOA6)
  PFRAC(:,JP_CH_UR22)   =  PCONC(:,JP_CH_UR22)*XUR22/ZCSTAVOG / PCTOTG(:,JP_AER_SOA6)
  PMI(:,JP_AER_SOA6)    = PFRAC(:,JP_CH_UR31) *XUR31 + &
                          PFRAC(:,JP_CH_AP1)  *XAP1  + &
                          PFRAC(:,JP_CH_AP6)  *XAP6  + &
                          PFRAC(:,JP_CH_UR22) *XUR22

  PCTOTG(:,JP_AER_SOA7) =  PCONC(:,JP_CH_ADAC)*XADAC/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR2) *XUR2 /ZCSTAVOG +&
                           PCONC(:,JP_CH_UR14)*XUR14/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR27)*XUR27/ZCSTAVOG +&
                           PCONC(:,JP_CH_RPR4)*XRPR4/ZCSTAVOG +&
                           PCONC(:,JP_CH_RPR7)*XRPR7/ZCSTAVOG +&
                           PCONC(:,JP_CH_RP19)*XRP19/ZCSTAVOG +&
                           PCONC(:,JP_CH_RP14)*XRP14/ZCSTAVOG 


  PFRAC(:,JP_CH_ADAC)  =  PCONC(:,JP_CH_ADAC) *XADAC/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_UR2 )  =  PCONC(:,JP_CH_UR2 ) *XUR2 /ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_UR14)  =  PCONC(:,JP_CH_UR14) *XUR14/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RPR4)  =  PCONC(:,JP_CH_RPR4) *XRPR4/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RPR7)  =  PCONC(:,JP_CH_RPR7) *XRPR7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RP19)  =  PCONC(:,JP_CH_RP19) *XRP19/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RP14)  =  PCONC(:,JP_CH_RP14) *XRP14/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PMI(:,JP_AER_SOA7)   = PFRAC(:,JP_CH_ADAC) * XADAC + &
                         PFRAC(:,JP_CH_UR2 ) * XUR2  + &
                         PFRAC(:,JP_CH_UR14) * XUR14 + &
                         PFRAC(:,JP_CH_RPR4) * XRPR4 + &
                         PFRAC(:,JP_CH_RPR7) * XRPR7 + &
                         PFRAC(:,JP_CH_RP19) * XRP19 + &
                         PFRAC(:,JP_CH_RP14) * XRP14

  PCTOTG(:,JP_AER_SOA8) = PCONC(:,JP_CH_UR11) *XUR11/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR15) *XUR15/ZCSTAVOG + &
                          PCONC(:,JP_CH_AP10) *XAP10/ZCSTAVOG 
  PFRAC(:,JP_CH_UR11)   = PCONC(:,JP_CH_UR11) *XUR11/ZCSTAVOG / PCTOTG(:,JP_AER_SOA8)
  PFRAC(:,JP_CH_UR15)   = PCONC(:,JP_CH_UR15) *XUR15/ZCSTAVOG / PCTOTG(:,JP_AER_SOA8)
  PFRAC(:,JP_CH_AP10)   = PCONC(:,JP_CH_AP10) *XAP10/ZCSTAVOG / PCTOTG(:,JP_AER_SOA8)
  PMI(:,JP_AER_SOA8)    = PFRAC(:,JP_CH_UR11) *XUR11 + &
                          PFRAC(:,JP_CH_UR15) *XUR15 + &
                          PFRAC(:,JP_CH_AP10) *XAP10

  PCTOTG(:,JP_AER_SOA9) = PCONC(:,JP_CH_UR20) *XUR20/ZCSTAVOG +&
                          PCONC(:,JP_CH_UR34) *XUR34/ZCSTAVOG +&
                          PCONC(:,JP_CH_AP11) *XAP11/ZCSTAVOG +&
                          PCONC(:,JP_CH_AP12) *XAP12/ZCSTAVOG +&
                          PCONC(:,JP_CH_UR26) *XUR26/ZCSTAVOG 
  PFRAC(:,JP_CH_UR20)   = PCONC(:,JP_CH_UR20) *XUR20/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PFRAC(:,JP_CH_UR34)   = PCONC(:,JP_CH_UR34) *XUR34/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PFRAC(:,JP_CH_AP11)   = PCONC(:,JP_CH_AP11) *XAP11/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PFRAC(:,JP_CH_AP12)   = PCONC(:,JP_CH_AP12) *XAP12/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PFRAC(:,JP_CH_UR26)   = PCONC(:,JP_CH_UR26) *XUR26/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PMI(:,JP_AER_SOA9) = PFRAC(:,JP_CH_UR20)*XUR20 + &
                       PFRAC(:,JP_CH_UR34)*XUR34 + &
                       PFRAC(:,JP_CH_AP11)*XAP11 + &
                       PFRAC(:,JP_CH_AP12)*XAP12 + &
                       PFRAC(:,JP_CH_UR26)*XUR26

  
  PCTOTG(:,JP_AER_SOA10) = PCONC(:,JP_CH_PAN8)*XPAN8/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR5)  *XUR5/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR6)  *XUR6/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR7)  *XUR7/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR8)  *XUR8/ZCSTAVOG +&
                           PCONC(:,JP_CH_AP8)  *XAP8/ZCSTAVOG 
  PFRAC(:,JP_CH_UR5)  =  PCONC(:,JP_CH_UR5)  *XUR5/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_UR6)  =  PCONC(:,JP_CH_UR6)  *XUR6/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_UR7)  =  PCONC(:,JP_CH_UR7)  *XUR7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_UR8)  =  PCONC(:,JP_CH_UR8)  *XUR8/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_AP8)  =  PCONC(:,JP_CH_AP8)  *XAP8/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_PAN8) =  PCONC(:,JP_CH_PAN8) *XPAN8/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PMI(:,JP_AER_SOA10) = PFRAC(:,JP_CH_UR5)  *XUR5 + &
                        PFRAC(:,JP_CH_UR6)  *XUR6 + &
                        PFRAC(:,JP_CH_UR7)  *XUR7 + &
                        PFRAC(:,JP_CH_UR8)  *XUR8 + &
                        PFRAC(:,JP_CH_AP8)  *XAP8 + &
                        PFRAC(:,JP_CH_PAN8) *XPAN8

  END IF
END IF
IF (TRIM(CORGANIC) == 'MPMPO') THEN
  IF (HSCHEME == "RELACS2") THEN   ! ReLACS2 scheme
  PCTOTG(:,JP_AER_SOA1) = PCONC(:,JP_CH_URG6)*XURG6/ZCSTAVOG
  PFRAC(:,JP_CH_URG6) = 1.
  PMI(:,JP_AER_SOA1) =  PFRAC(:,JP_CH_URG6) * XURG6

  PCTOTG(:,JP_AER_SOA2) = PCONC(:,JP_CH_URG7) *XURG7/ZCSTAVOG +&
                          PCONC(:,JP_CH_RPG7)*XRPG7/ZCSTAVOG +&
                          PCONC(:,JP_CH_RPR7)*XRPR7/ZCSTAVOG 
  PFRAC(:,JP_CH_URG7)  = PCONC(:,JP_CH_URG7) *XURG7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RPG7) = PCONC(:,JP_CH_RPG7)  *XRPG7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RPR7) = PCONC(:,JP_CH_RPR7)  *XRPR7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PMI(:,JP_AER_SOA2)  = PFRAC(:,JP_CH_URG7) * XURG7 + &
                        PFRAC(:,JP_CH_RPG7) * XRPG7 + &
                        PFRAC(:,JP_CH_RPR7) * XRPR7

  PCTOTG(:,JP_AER_SOA3) = PCONC(:,JP_CH_URG8)*XURG8/ZCSTAVOG
  PFRAC(:,JP_CH_URG8) = 1.
  PMI(:,JP_AER_SOA3) =  PFRAC(:,JP_CH_URG8) * XURG8
 
  PCTOTG(:,JP_AER_SOA4) = PCONC(:,JP_CH_URG9)*XURG9/ZCSTAVOG 
  PFRAC(:,JP_CH_URG9) = PCONC(:,JP_CH_URG9) *XURG9/ZCSTAVOG / PCTOTG(:,JP_AER_SOA4)
  PMI(:,JP_AER_SOA4) =  PFRAC(:,JP_CH_URG9) * XURG9

  PCTOTG(:,JP_AER_SOA5) = PCONC(:,JP_CH_URG10)*XURG10/ZCSTAVOG  +&
                          PCONC(:,JP_CH_AP7)* XAP7/ZCSTAVOG 
  PFRAC(:,JP_CH_URG10) = PCONC(:,JP_CH_URG10) * XURG10/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PFRAC(:,JP_CH_AP7)  = PCONC(:,JP_CH_AP7)  * XAP7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PMI(:,JP_AER_SOA5)  = PFRAC(:,JP_CH_URG10) * XURG10 + &
                        PFRAC(:,JP_CH_AP7)  * XAP7

  PCTOTG(:,JP_AER_SOA6) = PCONC(:,JP_CH_URG1) * XURG1/ZCSTAVOG 
  PFRAC(:,JP_CH_URG1)   = PCONC(:,JP_CH_URG1) * XURG1/ZCSTAVOG / PCTOTG(:,JP_AER_SOA6)
  PMI(:,JP_AER_SOA6)    = PFRAC(:,JP_CH_URG1) * XURG1 

  PCTOTG(:,JP_AER_SOA7) = PCONC(:,JP_CH_URG2) * XURG2/ZCSTAVOG +&
                           PCONC(:,JP_CH_RPG2)* XRPG2/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR26)* XUR26/ZCSTAVOG +&
                           PCONC(:,JP_CH_RP18)* XRP18/ZCSTAVOG 

  PFRAC(:,JP_CH_URG2)  =  PCONC(:,JP_CH_URG2) * XURG2/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_UR26)  =  PCONC(:,JP_CH_UR26) * XUR26/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RPG2)  =  PCONC(:,JP_CH_RPG2) * XRPG2/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RP18)  =  PCONC(:,JP_CH_RP18) * XRP18/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PMI(:,JP_AER_SOA7)   = PFRAC(:,JP_CH_URG2)* XURG2 + &
                         PFRAC(:,JP_CH_UR26)* XUR26 + &
                         PFRAC(:,JP_CH_RPG2)* XRPG2 + &
                         PFRAC(:,JP_CH_RP18)* XRP18

  PCTOTG(:,JP_AER_SOA8) = PCONC(:,JP_CH_RPG3) *XRPG3/ZCSTAVOG 
  PFRAC(:,JP_CH_RPG3)   = PCONC(:,JP_CH_RPG3) *XRPG3/ZCSTAVOG / PCTOTG(:,JP_AER_SOA8)
  PMI(:,JP_AER_SOA8)    = PFRAC(:,JP_CH_RPG3) *XRPG3 

  PCTOTG(:,JP_AER_SOA9) = PCONC(:,JP_CH_URG4) *XURG4/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR8)* XUR8/ZCSTAVOG 
  PFRAC(:,JP_CH_URG4)   = PCONC(:,JP_CH_URG4) * XURG4/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PFRAC(:,JP_CH_UR8)   = PCONC(:,JP_CH_UR8) * XUR8/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PMI(:,JP_AER_SOA9)    = PFRAC(:,JP_CH_URG4)*XURG4 + &
                          PFRAC(:,JP_CH_UR8)*XUR8

  PCTOTG(:,JP_AER_SOA10) = PCONC(:,JP_CH_UR7)*XUR7/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR17)  *XUR17/ZCSTAVOG 
  PFRAC(:,JP_CH_UR7)= PCONC(:,JP_CH_UR7)*XUR7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_UR17)  = PCONC(:,JP_CH_UR17)  *XUR17/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PMI(:,JP_AER_SOA10) = PFRAC(:,JP_CH_UR7)*XUR7 + &
                        PFRAC(:,JP_CH_UR17)*XUR17
!
  ELSE IF (HSCHEME == "RELACS3") THEN   ! ReLACS3 scheme
  PCTOTG(:,JP_AER_SOA1) = PCONC(:,JP_CH_URG6)*XURG6/ZCSTAVOG
  PFRAC(:,JP_CH_URG6) = 1.
  PMI(:,JP_AER_SOA1) =  PFRAC(:,JP_CH_URG6) * XURG6

  PCTOTG(:,JP_AER_SOA2) = PCONC(:,JP_CH_URG7) *XURG7/ZCSTAVOG +&
                          PCONC(:,JP_CH_RPG7)*XRPG7/ZCSTAVOG +&
                          PCONC(:,JP_CH_RPR7)*XRPR7/ZCSTAVOG 
  PFRAC(:,JP_CH_URG7)  = PCONC(:,JP_CH_URG7) *XURG7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RPG7) = PCONC(:,JP_CH_RPG7)  *XRPG7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RPR7) = PCONC(:,JP_CH_RPR7)  *XRPR7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PMI(:,JP_AER_SOA2)  = PFRAC(:,JP_CH_URG7) * XURG7 + &
                        PFRAC(:,JP_CH_RPG7) * XRPG7 + &
                        PFRAC(:,JP_CH_RPR7) * XRPR7

  PCTOTG(:,JP_AER_SOA3) = PCONC(:,JP_CH_URG8)*XURG8/ZCSTAVOG
  PFRAC(:,JP_CH_URG8) = 1.
  PMI(:,JP_AER_SOA3) =  PFRAC(:,JP_CH_URG8) * XURG8
 
  PCTOTG(:,JP_AER_SOA4) = PCONC(:,JP_CH_URG9)*XURG9/ZCSTAVOG 
  PFRAC(:,JP_CH_URG9) = PCONC(:,JP_CH_URG9) *XURG9/ZCSTAVOG / PCTOTG(:,JP_AER_SOA4)
  PMI(:,JP_AER_SOA4) =  PFRAC(:,JP_CH_URG9) * XURG9

  PCTOTG(:,JP_AER_SOA5) = PCONC(:,JP_CH_URG10)*XURG10/ZCSTAVOG  +&
                          PCONC(:,JP_CH_AP7)* XAP7/ZCSTAVOG 
  PFRAC(:,JP_CH_URG10) = PCONC(:,JP_CH_URG10) * XURG10/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PFRAC(:,JP_CH_AP7)  = PCONC(:,JP_CH_AP7)  * XAP7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PMI(:,JP_AER_SOA5)  = PFRAC(:,JP_CH_URG10) * XURG10 + &
                        PFRAC(:,JP_CH_AP7)  * XAP7

  PCTOTG(:,JP_AER_SOA6) = PCONC(:,JP_CH_UR21) * XUR21/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR28) * XUR28/ZCSTAVOG
  PFRAC(:,JP_CH_UR21)   = PCONC(:,JP_CH_UR21) * XUR21/ZCSTAVOG / PCTOTG(:,JP_AER_SOA6)
  PFRAC(:,JP_CH_UR28)   = PCONC(:,JP_CH_UR28) * XUR28/ZCSTAVOG / PCTOTG(:,JP_AER_SOA6)
  PMI(:,JP_AER_SOA6)    = PFRAC(:,JP_CH_UR21) * XUR21 + &
                          PFRAC(:,JP_CH_UR28) * XUR28 

  PCTOTG(:,JP_AER_SOA7) = PCONC(:,JP_CH_URG2) * XURG2/ZCSTAVOG +&
                           PCONC(:,JP_CH_RPG2)* XRPG2/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR26)* XUR26/ZCSTAVOG +&
                           PCONC(:,JP_CH_RP18)* XRP18/ZCSTAVOG 

  PFRAC(:,JP_CH_URG2)  =  PCONC(:,JP_CH_URG2) * XURG2/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_UR26)  =  PCONC(:,JP_CH_UR26) * XUR26/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RPG2)  =  PCONC(:,JP_CH_RPG2) * XRPG2/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RP18)  =  PCONC(:,JP_CH_RP18) * XRP18/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PMI(:,JP_AER_SOA7)   = PFRAC(:,JP_CH_URG2)* XURG2 + &
                         PFRAC(:,JP_CH_UR26)* XUR26 + &
                         PFRAC(:,JP_CH_RPG2)* XRPG2 + &
                         PFRAC(:,JP_CH_RP18)* XRP18

  PCTOTG(:,JP_AER_SOA8) = PCONC(:,JP_CH_RPG3) *XRPG3/ZCSTAVOG 
  PFRAC(:,JP_CH_RPG3)   = PCONC(:,JP_CH_RPG3) *XRPG3/ZCSTAVOG / PCTOTG(:,JP_AER_SOA8)
  PMI(:,JP_AER_SOA8)    = PFRAC(:,JP_CH_RPG3) *XRPG3 

  PCTOTG(:,JP_AER_SOA9) = PCONC(:,JP_CH_URG4) *XURG4/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR8)* XUR8/ZCSTAVOG 
  PFRAC(:,JP_CH_URG4)   = PCONC(:,JP_CH_URG4) * XURG4/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PFRAC(:,JP_CH_UR8)   = PCONC(:,JP_CH_UR8) * XUR8/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PMI(:,JP_AER_SOA9)    = PFRAC(:,JP_CH_URG4)*XURG4 + &
                          PFRAC(:,JP_CH_UR8)*XUR8

  PCTOTG(:,JP_AER_SOA10) = PCONC(:,JP_CH_UR7)*XUR7/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR17)  *XUR17/ZCSTAVOG 
  PFRAC(:,JP_CH_UR7)= PCONC(:,JP_CH_UR7)*XUR7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_UR17)  = PCONC(:,JP_CH_UR17)  *XUR17/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PMI(:,JP_AER_SOA10) = PFRAC(:,JP_CH_UR7)*XUR7 + &
                        PFRAC(:,JP_CH_UR17)*XUR17
!
  ELSE  ! CACM scheme 
  PCTOTG(:,JP_AER_SOA1) = PCONC(:,JP_CH_AP1) *XAP1/ZCSTAVOG   +&
                          PCONC(:,JP_CH_AP6) *XAP6/ZCSTAVOG   +&
                          PCONC(:,JP_CH_UR31)*XUR31/ZCSTAVOG 
  PFRAC(:,JP_CH_AP1) = PCONC(:,JP_CH_AP1) *XAP1/ZCSTAVOG   / PCTOTG(:,JP_AER_SOA1)
  PFRAC(:,JP_CH_AP6) = PCONC(:,JP_CH_AP6) *XAP6/ZCSTAVOG   / PCTOTG(:,JP_AER_SOA1)
  PFRAC(:,JP_CH_UR31) = PCONC(:,JP_CH_UR31) *XUR31/ZCSTAVOG / PCTOTG(:,JP_AER_SOA1)
  PMI(:,JP_AER_SOA1) =  PFRAC(:,JP_CH_AP1) * XAP1 + &
                        PFRAC(:,JP_CH_AP6) * XAP6 + &
                        PFRAC(:,JP_CH_UR31)* XUR31
                        
  PCTOTG(:,JP_AER_SOA2) = PCONC(:,JP_CH_UR2) *XUR2/ZCSTAVOG   +&
                          PCONC(:,JP_CH_UR14) *XUR14/ZCSTAVOG +&
                          PCONC(:,JP_CH_ADAC) *XADAC/ZCSTAVOG +&
                          PCONC(:,JP_CH_RP14)*XRP14/ZCSTAVOG  +&
                          PCONC(:,JP_CH_RP19)*XRP19/ZCSTAVOG  +&
                          PCONC(:,JP_CH_RPR7)*XRPR7/ZCSTAVOG 
  PFRAC(:,JP_CH_UR2)  = PCONC(:,JP_CH_UR2)   *XUR2/ZCSTAVOG  / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_UR14) = PCONC(:,JP_CH_UR14)  *XUR14/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RP14) = PCONC(:,JP_CH_RP14)  *XRP14/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RP19) = PCONC(:,JP_CH_RP19)  *XRP19/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_RPR7) = PCONC(:,JP_CH_RPR7)  *XRPR7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PFRAC(:,JP_CH_ADAC) = PCONC(:,JP_CH_ADAC)  *XADAC/ZCSTAVOG / PCTOTG(:,JP_AER_SOA2)
  PMI(:,JP_AER_SOA2)  = PFRAC(:,JP_CH_UR2)  * XUR2  + &
                        PFRAC(:,JP_CH_UR14) * XUR14 + &
                        PFRAC(:,JP_CH_ADAC) * XADAC + &
                        PFRAC(:,JP_CH_RP14) * XRP14 + &
                        PFRAC(:,JP_CH_RP19) * XRP19 + &
                        PFRAC(:,JP_CH_RPR7) * XRPR7

  PCTOTG(:,JP_AER_SOA3) = PCONC(:,JP_CH_AP10)*XAP10/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR11)*XUR11/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR15)*XUR15/ZCSTAVOG 
  PFRAC(:,JP_CH_AP10) = PCONC(:,JP_CH_AP10)   *XAP10/ZCSTAVOG  / PCTOTG(:,JP_AER_SOA3)
  PFRAC(:,JP_CH_UR11) = PCONC(:,JP_CH_UR11)   *XUR11/ZCSTAVOG  / PCTOTG(:,JP_AER_SOA3)
  PFRAC(:,JP_CH_UR15) = PCONC(:,JP_CH_UR15)   *XUR15/ZCSTAVOG  / PCTOTG(:,JP_AER_SOA3)
  PMI(:,JP_AER_SOA3) =  PFRAC(:,JP_CH_AP10) * XAP10 + &
                        PFRAC(:,JP_CH_UR11) * XUR15 + &
                        PFRAC(:,JP_CH_UR15) * XUR15 
 
  PCTOTG(:,JP_AER_SOA4) = PCONC(:,JP_CH_AP11)*XAP11/ZCSTAVOG + & 
                          PCONC(:,JP_CH_AP12)*XAP12/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR20)*XUR20/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR34)*XUR34/ZCSTAVOG
  PFRAC(:,JP_CH_AP11) = PCONC(:,JP_CH_AP11) *XAP11/ZCSTAVOG / PCTOTG(:,JP_AER_SOA4)
  PFRAC(:,JP_CH_AP12) = PCONC(:,JP_CH_AP12) *XAP12/ZCSTAVOG / PCTOTG(:,JP_AER_SOA4)
  PFRAC(:,JP_CH_UR20) = PCONC(:,JP_CH_UR20) *XUR20/ZCSTAVOG / PCTOTG(:,JP_AER_SOA4)
  PFRAC(:,JP_CH_UR34) = PCONC(:,JP_CH_UR34) *XUR34/ZCSTAVOG / PCTOTG(:,JP_AER_SOA4)
  PMI(:,JP_AER_SOA4) =  PFRAC(:,JP_CH_AP11) * XAP11 + &
                        PFRAC(:,JP_CH_AP11) * XAP11 + &
                        PFRAC(:,JP_CH_UR20) * XUR20 + &
                        PFRAC(:,JP_CH_UR34) * XUR34 

  PCTOTG(:,JP_AER_SOA5) = PCONC(:,JP_CH_UR5)*XUR5/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR6)*XUR6/ZCSTAVOG + &
                          PCONC(:,JP_CH_AP8)*XAP8/ZCSTAVOG + &
                          PCONC(:,JP_CH_AP7)* XAP7/ZCSTAVOG 
  PFRAC(:,JP_CH_UR5) = PCONC(:,JP_CH_UR5) * XUR5/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PFRAC(:,JP_CH_UR6) = PCONC(:,JP_CH_UR6) * XUR6/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PFRAC(:,JP_CH_AP7) = PCONC(:,JP_CH_AP7) * XAP7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PFRAC(:,JP_CH_AP8) = PCONC(:,JP_CH_AP8) * XAP8/ZCSTAVOG / PCTOTG(:,JP_AER_SOA5)
  PMI(:,JP_AER_SOA5)  = PFRAC(:,JP_CH_UR5) * XUR5 + &
                        PFRAC(:,JP_CH_UR6) * XUR6 + &
                        PFRAC(:,JP_CH_AP8) * XAP8 + &
                        PFRAC(:,JP_CH_AP7) * XAP7

  PCTOTG(:,JP_AER_SOA6) = PCONC(:,JP_CH_UR21) * XUR21/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR28) * XUR28/ZCSTAVOG
  PFRAC(:,JP_CH_UR21)   = PCONC(:,JP_CH_UR21) * XUR21/ZCSTAVOG / PCTOTG(:,JP_AER_SOA6)
  PFRAC(:,JP_CH_UR28)   = PCONC(:,JP_CH_UR28) * XUR28/ZCSTAVOG / PCTOTG(:,JP_AER_SOA6)
  PMI(:,JP_AER_SOA6)    = PFRAC(:,JP_CH_UR21) * XUR21 + &
                          PFRAC(:,JP_CH_UR28) * XUR28 

  PCTOTG(:,JP_AER_SOA7) =  PCONC(:,JP_CH_UR29)* XUR29/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR26)* XUR26/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR30)* XUR30/ZCSTAVOG +&
                           PCONC(:,JP_CH_RP13)* XRP13/ZCSTAVOG +&
                           PCONC(:,JP_CH_RP17)* XRP17/ZCSTAVOG +&
                           PCONC(:,JP_CH_RP18)* XRP18/ZCSTAVOG 

  PFRAC(:,JP_CH_UR29)  =  PCONC(:,JP_CH_UR29) * XUR29/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_UR26)  =  PCONC(:,JP_CH_UR26) * XUR26/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_UR30)  =  PCONC(:,JP_CH_UR30) * XUR30/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RP13)  =  PCONC(:,JP_CH_RP13) * XRP13/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RP17)  =  PCONC(:,JP_CH_RP17) * XRP17/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PFRAC(:,JP_CH_RP18)  =  PCONC(:,JP_CH_RP18) * XRP18/ZCSTAVOG / PCTOTG(:,JP_AER_SOA7)
  PMI(:,JP_AER_SOA7)   = PFRAC(:,JP_CH_UR29)* XUR29 + &
                         PFRAC(:,JP_CH_UR26)* XUR26 + &
                         PFRAC(:,JP_CH_UR30)* XUR30 + &
                         PFRAC(:,JP_CH_RP13)* XRP13 + &
                         PFRAC(:,JP_CH_RP17)* XRP17 + &
                         PFRAC(:,JP_CH_RP18)* XRP18

  PCTOTG(:,JP_AER_SOA8) = PCONC(:,JP_CH_RPR9) *XRPR9/ZCSTAVOG + &
                          PCONC(:,JP_CH_RP12) *XRP12/ZCSTAVOG 
  PFRAC(:,JP_CH_RPR9)   = PCONC(:,JP_CH_RPR9) *XRPR9/ZCSTAVOG / PCTOTG(:,JP_AER_SOA8)
  PFRAC(:,JP_CH_RP12)   = PCONC(:,JP_CH_RP12) *XRP12/ZCSTAVOG / PCTOTG(:,JP_AER_SOA8)
  PMI(:,JP_AER_SOA8)    = PFRAC(:,JP_CH_RPR9) *XRPR9  + &
                          PFRAC(:,JP_CH_RP12) *XRP12

  PCTOTG(:,JP_AER_SOA9) = PCONC(:,JP_CH_UR3) *XUR3/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR23)*XUR23/ZCSTAVOG + &
                          PCONC(:,JP_CH_UR8) *XUR8/ZCSTAVOG 
  PFRAC(:,JP_CH_UR3)    = PCONC(:,JP_CH_UR3) * XUR3 /ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PFRAC(:,JP_CH_UR23)   = PCONC(:,JP_CH_UR23) * XUR23/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PFRAC(:,JP_CH_UR8)    = PCONC(:,JP_CH_UR8) * XUR8/ZCSTAVOG / PCTOTG(:,JP_AER_SOA9)
  PMI(:,JP_AER_SOA9)    = PFRAC(:,JP_CH_UR3) *XUR3 + &
                          PFRAC(:,JP_CH_UR23)*XUR23+ &
                          PFRAC(:,JP_CH_UR8)*XUR8

  PCTOTG(:,JP_AER_SOA10) = PCONC(:,JP_CH_UR7)*XUR7/ZCSTAVOG +&
                           PCONC(:,JP_CH_UR17)  *XUR17/ZCSTAVOG 
  PFRAC(:,JP_CH_UR7)= PCONC(:,JP_CH_UR7)*XUR7/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PFRAC(:,JP_CH_UR17)  = PCONC(:,JP_CH_UR17)  *XUR17/ZCSTAVOG / PCTOTG(:,JP_AER_SOA10)
  PMI(:,JP_AER_SOA10) = PFRAC(:,JP_CH_UR7)*XUR7 + &
                        PFRAC(:,JP_CH_UR17)*XUR17

   END IF
END IF


  PCTOTA(:,JP_AER_SOA1,1) = PAERO(:,JP_CH_SOA1i)*PMI(:,JP_AER_SOA1)/ZCSTAVOG
  PCTOTA(:,JP_AER_SOA1,2) = PAERO(:,JP_CH_SOA1j)*PMI(:,JP_AER_SOA1)/ZCSTAVOG

  PCTOTA(:,JP_AER_SOA2,1) = PAERO(:,JP_CH_SOA2i)*PMI(:,JP_AER_SOA2)/ZCSTAVOG
  PCTOTA(:,JP_AER_SOA2,2) = PAERO(:,JP_CH_SOA2j)*PMI(:,JP_AER_SOA2)/ZCSTAVOG

  PCTOTA(:,JP_AER_SOA3,1) = PAERO(:,JP_CH_SOA3i)*PMI(:,JP_AER_SOA3)/ZCSTAVOG
  PCTOTA(:,JP_AER_SOA3,2) = PAERO(:,JP_CH_SOA3j)*PMI(:,JP_AER_SOA3)/ZCSTAVOG

  PCTOTA(:,JP_AER_SOA4,1) = PAERO(:,JP_CH_SOA4i)*PMI(:,JP_AER_SOA4)/ZCSTAVOG
  PCTOTA(:,JP_AER_SOA4,2) = PAERO(:,JP_CH_SOA4j)*PMI(:,JP_AER_SOA4)/ZCSTAVOG
 
  PCTOTA(:,JP_AER_SOA5,1) = PAERO(:,JP_CH_SOA5i)*PMI(:,JP_AER_SOA5)/ZCSTAVOG
  PCTOTA(:,JP_AER_SOA5,2) = PAERO(:,JP_CH_SOA5j)*PMI(:,JP_AER_SOA5)/ZCSTAVOG

  PCTOTA(:,JP_AER_SOA6,1) = PAERO(:,JP_CH_SOA6i)*PMI(:,JP_AER_SOA6)/ZCSTAVOG
  PCTOTA(:,JP_AER_SOA6,2) = PAERO(:,JP_CH_SOA6j)*PMI(:,JP_AER_SOA6)/ZCSTAVOG

  PCTOTA(:,JP_AER_SOA7,1) = PAERO(:,JP_CH_SOA7i)*PMI(:,JP_AER_SOA7)/ZCSTAVOG
  PCTOTA(:,JP_AER_SOA7,2) = PAERO(:,JP_CH_SOA7j)*PMI(:,JP_AER_SOA7)/ZCSTAVOG

  PCTOTA(:,JP_AER_SOA8,1) = PAERO(:,JP_CH_SOA8i)*PMI(:,JP_AER_SOA8)/ZCSTAVOG
  PCTOTA(:,JP_AER_SOA8,2) = PAERO(:,JP_CH_SOA8j)*PMI(:,JP_AER_SOA8)/ZCSTAVOG

  PCTOTA(:,JP_AER_SOA9,1) = PAERO(:,JP_CH_SOA9i)*PMI(:,JP_AER_SOA9)/ZCSTAVOG
  PCTOTA(:,JP_AER_SOA9,2) = PAERO(:,JP_CH_SOA9j)*PMI(:,JP_AER_SOA9)/ZCSTAVOG

  PCTOTA(:,JP_AER_SOA10,1) = PAERO(:,JP_CH_SOA10i)*PMI(:,JP_AER_SOA10)/ZCSTAVOG
  PCTOTA(:,JP_AER_SOA10,2) = PAERO(:,JP_CH_SOA10j)*PMI(:,JP_AER_SOA10)/ZCSTAVOG

END IF
!

  PCTOTA(:,:,:) = MAX(PCTOTA(:,:,:),XMNH_TINY)
!
!*       1.n    transfer moment 0 from gas to aerosol variable
!
  PM(:,1) = MAX(PAERO(:,JP_CH_M0i) * 1E+6, XMNH_TINY) ! convert from 1/cc to 1/m3
  PM(:,4) = MAX(PAERO(:,JP_CH_M0j) * 1E+6, XMNH_TINY) ! convert from 1/cc to 1/m3

!
!
!*       1.n    calculate moment 3 from total aerosol mass
!
  PM(:,2) = 0.
  PM(:,5) = 0.
  DO JJ = 1,NSP+NCARB+NSOA
    PM(:,2) = PM(:,2)+PCTOTA(:,JJ,1)/XFAC(JJ)
    PM(:,5) = PM(:,5)+PCTOTA(:,JJ,2)/XFAC(JJ)
  ENDDO

  !*       1.n    set moment 6 

IF (LVARSIGI) THEN ! set M6 variable standard deviation
  PM(:,3) = MAX(PAERO(:,JP_CH_M6i), XMNH_TINY)
ELSE ! fixed standard deviation
  PM(:,3) = PM(:,1) &
          * ( (PM(:,2)/PM(:,1))**(1./3.)  &
          * exp(-(3./2.)*log(XINISIGI)**2))**6 &
          * exp(18.*log(XINISIGI)**2)
END IF

IF (LVARSIGJ) THEN ! set M6 variable standard deviation
  PM(:,6) = MAX(PAERO(:,JP_CH_M6j), XMNH_TINY)
ELSE ! fixed standard deviation
  PM(:,6) = PM(:,4) &
          * ( (PM(:,5)/PM(:,4))**(1./3.)  &
          * exp(-(3./2.)*log(XINISIGJ)**2))**6 &
          * exp(18.*log(XINISIGJ)**2)
END IF


  
!*********************************************
! Calcul de PCCTOT
!**********************************************

DO JN=1,JPMODE
  ZSUM(:)=0.
  DO JJ=1,NSP+NCARB+NSOA
   ZSUM(:)=ZSUM(:)+PCTOTA(:,JJ,JN)/XRHOI(JJ)
  END DO

  DO JJ=1,NSP+NCARB+NSOA
   PCCTOT(:,JJ,JN)=PCTOTA(:,JJ,JN)/(XRHOI(JJ)*ZSUM(:))
  ENDDO
END DO

  !      compute the new particle density
DO JN=1,JPMODE
  PRHOP0(:,JN)=0.
  DO JJ=1,NSP+NCARB+NSOA
   PRHOP0(:,JN)=PRHOP0(:,JN)+PCCTOT(:,JJ,JN)*XRHOI(JJ)
  ENDDO
ENDDO
!
!*       1.n    set moment 6 (fixed or variable)
  
DO JN=1,JPMODE

  IF (JN .EQ. 1) THEN

    IF (LVARSIGI) THEN ! variable dispersion for mode 1

      ZSIGMA(:)=PM(:,NM3(JN))**2/(PM(:,NM0(JN))*PM(:,NM6(JN)))
      ZSIGMA(:)=MIN(1-1E-10,ZSIGMA(:))
      ZSIGMA(:)=MAX(1E-10,ZSIGMA(:))
      ZSIGMA(:)= LOG(ZSIGMA(:))
      ZSIGMA(:)= EXP(1./3.*SQRT(-ZSIGMA(:)))
      WHERE (ZSIGMA(:) > XSIGIMAX)
      ZSIGMA(:) =  XSIGIMAX
      END WHERE
      WHERE (ZSIGMA(:) < XSIGIMIN)
      ZSIGMA(:) =  XSIGIMIN
      END WHERE

    ELSE ! fixed dispersion for mode 1
      ZSIGMA(:) = XINISIGI
    END IF
  END IF

!
  IF (JN .EQ. 2) THEN

    IF (LVARSIGJ) THEN ! variable dispersion for mode 2

      ZSIGMA(:)=PM(:,NM3(JN))**2/(PM(:,NM0(JN))*PM(:,NM6(JN)))
      ZSIGMA(:)=MIN(1-1E-10,ZSIGMA(:))
      ZSIGMA(:)=MAX(1E-10,ZSIGMA(:))
      ZSIGMA(:)= LOG(ZSIGMA(:))
      ZSIGMA(:)= EXP(1./3.*SQRT(-ZSIGMA(:)))
      WHERE (ZSIGMA(:) > XSIGJMAX)
      ZSIGMA(:) =  XSIGJMAX
      END WHERE
      WHERE (ZSIGMA(:) < XSIGJMIN)
      ZSIGMA(:) =  XSIGJMIN
      END WHERE

    ELSE ! fixed dispersion for mode 2
      ZSIGMA(:) = XINISIGJ
    END IF
  END IF


PSIG0(:,JN) = LOG(ZSIGMA(:))
PN0(:,JN)   = PM(:,NM0(JN))

PM(:,NM6(JN)) = PM(:,NM0(JN)) &
          * ( (PM(:,NM3(JN))/PM(:,NM0(JN)))**(1./3.) * exp(-(3./2.)*log(ZSIGMA(:))**2))**6 &
          * exp(18.*log(ZSIGMA(:))**2)

PRG0(:,JN)= (PM(:,NM3(JN))**4/(PM(:,NM6(JN)) * PM(:,NM0(JN))**3))**(1./6.)

PMASK(:,JN) = 0.
WHERE ( (PM(:,NM0(JN)) > ZPMIN(NM0(JN))).AND.&
        (PM(:,NM3(JN)) > ZPMIN(NM3(JN))).AND.&
        (PM(:,NM6(JN)) > ZPMIN(NM6(JN))) )
PMASK(:,JN) = 1.
END WHERE

ENDDO

ELSE
!
!*       2.     TRANSFER FROM AEROSOL TO GAS  MODULE
!               ------------------------------------
!
!
!*       2.n    transfer aerosol mass from aerosol to gas variables
!
! gas phase species
! PCTOTG is zero for H2SO4 <-> all H2SO4 is in AP phase
  PCONC(:,JP_CH_H2SO4)  = PCTOTG(:,JP_AER_SO4g) *ZCSTAVOG / XH2SO4
  PCONC(:,JP_CH_HNO3) = PCTOTG(:,JP_AER_NO3g) *ZCSTAVOG / XHNO3
  PCONC(:,JP_CH_NH3)  = PCTOTG(:,JP_AER_NH3g) *ZCSTAVOG / XNH3
!
! aerosol phase
  PAERO(:,JP_CH_SO4i) = PCTOTA(:,JP_AER_SO4,1)*ZCSTAVOG / PMI(:,JP_AER_SO4)
  PAERO(:,JP_CH_SO4j) = PCTOTA(:,JP_AER_SO4,2)*ZCSTAVOG / PMI(:,JP_AER_SO4)
  PAERO(:,JP_CH_NO3i) = PCTOTA(:,JP_AER_NO3,1)*ZCSTAVOG / PMI(:,JP_AER_NO3)
  PAERO(:,JP_CH_NO3j) = PCTOTA(:,JP_AER_NO3,2)*ZCSTAVOG / PMI(:,JP_AER_NO3)
  PAERO(:,JP_CH_NH3i) = PCTOTA(:,JP_AER_NH3,1)*ZCSTAVOG / PMI(:,JP_AER_NH3)
  PAERO(:,JP_CH_NH3j) = PCTOTA(:,JP_AER_NH3,2)*ZCSTAVOG / PMI(:,JP_AER_NH3)
!
! water
  PAERO(:,JP_CH_H2Oi) = PCTOTA(:,JP_AER_H2O,1)*ZCSTAVOG / PMI(:,JP_AER_H2O)
  PAERO(:,JP_CH_H2Oj) = PCTOTA(:,JP_AER_H2O,2)*ZCSTAVOG / PMI(:,JP_AER_H2O)
!
! primary organic  carbon
  PAERO(:,JP_CH_OCi) = PCTOTA(:,JP_AER_OC,1)*ZCSTAVOG / PMI(:,JP_AER_OC)
  PAERO(:,JP_CH_OCj) = PCTOTA(:,JP_AER_OC,2)*ZCSTAVOG / PMI(:,JP_AER_OC)
!
! primary black carbon
  PAERO(:,JP_CH_BCi) = PCTOTA(:,JP_AER_BC,1)*ZCSTAVOG / PMI(:,JP_AER_BC)
  PAERO(:,JP_CH_BCj) = PCTOTA(:,JP_AER_BC,2)*ZCSTAVOG / PMI(:,JP_AER_BC)

! dust
  PAERO(:,JP_CH_DSTi) = PCTOTA(:,JP_AER_DST,1)*ZCSTAVOG / PMI(:,JP_AER_DST)
  PAERO(:,JP_CH_DSTj) = PCTOTA(:,JP_AER_DST,2)*ZCSTAVOG / PMI(:,JP_AER_DST)

IF (NSOA .EQ. 10) THEN
! Secondary organic carbon
  PAERO(:,JP_CH_SOA1i) = PCTOTA(:,JP_AER_SOA1,1)*ZCSTAVOG / PMI(:,JP_AER_SOA1)
  PAERO(:,JP_CH_SOA1j) = PCTOTA(:,JP_AER_SOA1,2)*ZCSTAVOG / PMI(:,JP_AER_SOA1)

  PAERO(:,JP_CH_SOA2i) = PCTOTA(:,JP_AER_SOA2,1)*ZCSTAVOG / PMI(:,JP_AER_SOA2)
  PAERO(:,JP_CH_SOA2j) = PCTOTA(:,JP_AER_SOA2,2)*ZCSTAVOG / PMI(:,JP_AER_SOA2)

  PAERO(:,JP_CH_SOA3i) = PCTOTA(:,JP_AER_SOA3,1)*ZCSTAVOG / PMI(:,JP_AER_SOA3)
  PAERO(:,JP_CH_SOA3j) = PCTOTA(:,JP_AER_SOA3,2)*ZCSTAVOG / PMI(:,JP_AER_SOA3)

  PAERO(:,JP_CH_SOA4i) = PCTOTA(:,JP_AER_SOA4,1)*ZCSTAVOG / PMI(:,JP_AER_SOA4)
  PAERO(:,JP_CH_SOA4j) = PCTOTA(:,JP_AER_SOA4,2)*ZCSTAVOG / PMI(:,JP_AER_SOA4)

  PAERO(:,JP_CH_SOA5i) = PCTOTA(:,JP_AER_SOA5,1)*ZCSTAVOG / PMI(:,JP_AER_SOA5)
  PAERO(:,JP_CH_SOA5j) = PCTOTA(:,JP_AER_SOA5,2)*ZCSTAVOG / PMI(:,JP_AER_SOA5)

  PAERO(:,JP_CH_SOA6i) = PCTOTA(:,JP_AER_SOA6,1)*ZCSTAVOG / PMI(:,JP_AER_SOA6)
  PAERO(:,JP_CH_SOA6j) = PCTOTA(:,JP_AER_SOA6,2)*ZCSTAVOG / PMI(:,JP_AER_SOA6)

  PAERO(:,JP_CH_SOA7i) = PCTOTA(:,JP_AER_SOA7,1)*ZCSTAVOG / PMI(:,JP_AER_SOA7)
  PAERO(:,JP_CH_SOA7j) = PCTOTA(:,JP_AER_SOA7,2)*ZCSTAVOG / PMI(:,JP_AER_SOA7)

  PAERO(:,JP_CH_SOA8i) = PCTOTA(:,JP_AER_SOA8,1)*ZCSTAVOG / PMI(:,JP_AER_SOA8)
  PAERO(:,JP_CH_SOA8j) = PCTOTA(:,JP_AER_SOA8,2)*ZCSTAVOG / PMI(:,JP_AER_SOA8)

  PAERO(:,JP_CH_SOA9i) = PCTOTA(:,JP_AER_SOA9,1)*ZCSTAVOG / PMI(:,JP_AER_SOA9)
  PAERO(:,JP_CH_SOA9j) = PCTOTA(:,JP_AER_SOA9,2)*ZCSTAVOG / PMI(:,JP_AER_SOA9)

  PAERO(:,JP_CH_SOA10i) = PCTOTA(:,JP_AER_SOA10,1)*ZCSTAVOG / PMI(:,JP_AER_SOA10)
  PAERO(:,JP_CH_SOA10j) = PCTOTA(:,JP_AER_SOA10,2)*ZCSTAVOG / PMI(:,JP_AER_SOA10)

IF (TRIM(CORGANIC) == 'PUN') THEN
  IF (HSCHEME == "RELACS2") THEN   ! ReLACS2 scheme
  PCONC(:,JP_CH_URG1)   = PFRAC(:,JP_CH_URG1) * PCTOTG(:,JP_AER_SOA1) * ZCSTAVOG / XURG1 

  PCONC(:,JP_CH_URG2)   = PFRAC(:,JP_CH_URG2) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XURG2
  PCONC(:,JP_CH_RPG2)   = PFRAC(:,JP_CH_RPG2) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRPG2
  PCONC(:,JP_CH_RP18)   = PFRAC(:,JP_CH_RP18) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRP18

  PCONC(:,JP_CH_RPG3)   = PFRAC(:,JP_CH_RPG3) * PCTOTG(:,JP_AER_SOA3) * ZCSTAVOG / XRPG3

  PCONC(:,JP_CH_URG4)   = PFRAC(:,JP_CH_URG4) * PCTOTG(:,JP_AER_SOA4) * ZCSTAVOG / XURG4

  PCONC(:,JP_CH_UR17)   = PFRAC(:,JP_CH_UR17) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XUR17

  PCONC(:,JP_CH_RPR3)   = PFRAC(:,JP_CH_RPR3) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XRPR3
  PCONC(:,JP_CH_AP7)    = PFRAC(:,JP_CH_AP7)  * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XAP7

  PCONC(:,JP_CH_UR22)    = PFRAC(:,JP_CH_UR22) * PCTOTG(:,JP_AER_SOA6) * ZCSTAVOG / XUR22
  PCONC(:,JP_CH_URG6)    = PFRAC(:,JP_CH_URG6) * PCTOTG(:,JP_AER_SOA6) * ZCSTAVOG / XURG6
  
  PCONC(:,JP_CH_URG7)    = PFRAC(:,JP_CH_URG7) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XURG7
  PCONC(:,JP_CH_RPG7)    = PFRAC(:,JP_CH_RPG7) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRPG7
  PCONC(:,JP_CH_RPR4)    = PFRAC(:,JP_CH_RPR4) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRPR4
  PCONC(:,JP_CH_RPR7)    = PFRAC(:,JP_CH_RPR7) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRPR7

  PCONC(:,JP_CH_URG8)    = PFRAC(:,JP_CH_URG8) * PCTOTG(:,JP_AER_SOA8) * ZCSTAVOG / XURG8

  PCONC(:,JP_CH_URG9)   = PFRAC(:,JP_CH_URG9) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XURG9
  PCONC(:,JP_CH_UR26)   = PFRAC(:,JP_CH_UR26) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XUR26

  PCONC(:,JP_CH_URG10)  = PFRAC(:,JP_CH_URG10)* PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XURG10
  PCONC(:,JP_CH_UR7)    = PFRAC(:,JP_CH_UR7)  * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR7
  PCONC(:,JP_CH_UR8)    = PFRAC(:,JP_CH_UR8)  * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR8
  PCONC(:,JP_CH_PAN8)   = PFRAC(:,JP_CH_PAN8) * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XPAN8
!
  ELSE IF (HSCHEME == "RELACS3") THEN   ! ReLACS3 scheme
  PCONC(:,JP_CH_UR21)   = PFRAC(:,JP_CH_UR21) * PCTOTG(:,JP_AER_SOA1) * ZCSTAVOG / XUR21 
  PCONC(:,JP_CH_UR28)   = PFRAC(:,JP_CH_UR28) * PCTOTG(:,JP_AER_SOA1) * ZCSTAVOG / XUR28 

  PCONC(:,JP_CH_URG2)   = PFRAC(:,JP_CH_URG2) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XURG2
  PCONC(:,JP_CH_RPG2)   = PFRAC(:,JP_CH_RPG2) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRPG2
  PCONC(:,JP_CH_RP18)   = PFRAC(:,JP_CH_RP18) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRP18

  PCONC(:,JP_CH_RPG3)   = PFRAC(:,JP_CH_RPG3) * PCTOTG(:,JP_AER_SOA3) * ZCSTAVOG / XRPG3

  PCONC(:,JP_CH_URG4)   = PFRAC(:,JP_CH_URG4) * PCTOTG(:,JP_AER_SOA4) * ZCSTAVOG / XURG4

  PCONC(:,JP_CH_UR17)   = PFRAC(:,JP_CH_UR17) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XUR17

  PCONC(:,JP_CH_RPR3)   = PFRAC(:,JP_CH_RPR3) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XRPR3
  PCONC(:,JP_CH_AP7)    = PFRAC(:,JP_CH_AP7)  * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XAP7

  PCONC(:,JP_CH_UR22)    = PFRAC(:,JP_CH_UR22) * PCTOTG(:,JP_AER_SOA6) * ZCSTAVOG / XUR22
  PCONC(:,JP_CH_URG6)    = PFRAC(:,JP_CH_URG6) * PCTOTG(:,JP_AER_SOA6) * ZCSTAVOG / XURG6
  
  PCONC(:,JP_CH_URG7)    = PFRAC(:,JP_CH_URG7) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XURG7
  PCONC(:,JP_CH_RPG7)    = PFRAC(:,JP_CH_RPG7) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRPG7
  PCONC(:,JP_CH_RPR4)    = PFRAC(:,JP_CH_RPR4) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRPR4
  PCONC(:,JP_CH_RPR7)    = PFRAC(:,JP_CH_RPR7) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRPR7

  PCONC(:,JP_CH_URG8)    = PFRAC(:,JP_CH_URG8) * PCTOTG(:,JP_AER_SOA8) * ZCSTAVOG / XURG8

  PCONC(:,JP_CH_URG9)   = PFRAC(:,JP_CH_URG9) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XURG9
  PCONC(:,JP_CH_UR26)   = PFRAC(:,JP_CH_UR26) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XUR26

  PCONC(:,JP_CH_URG10)  = PFRAC(:,JP_CH_URG10)* PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XURG10
  PCONC(:,JP_CH_UR7)    = PFRAC(:,JP_CH_UR7)  * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR7
  PCONC(:,JP_CH_UR8)    = PFRAC(:,JP_CH_UR8)  * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR8
  PCONC(:,JP_CH_PAN8)   = PFRAC(:,JP_CH_PAN8) * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XPAN8
!
  ELSE   ! CACM scheme
  PCONC(:,JP_CH_UR21)   = PFRAC(:,JP_CH_UR21) * PCTOTG(:,JP_AER_SOA1) * ZCSTAVOG / XUR21 
  PCONC(:,JP_CH_UR28)   = PFRAC(:,JP_CH_UR28) * PCTOTG(:,JP_AER_SOA1) * ZCSTAVOG / XUR28 

  PCONC(:,JP_CH_UR29)   = PFRAC(:,JP_CH_UR29) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XUR29
  PCONC(:,JP_CH_UR30)   = PFRAC(:,JP_CH_UR30) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XUR30
  PCONC(:,JP_CH_RP13)   = PFRAC(:,JP_CH_RP13) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRP13
  PCONC(:,JP_CH_RP17)   = PFRAC(:,JP_CH_RP17) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRP17
  PCONC(:,JP_CH_RP18)   = PFRAC(:,JP_CH_RP18) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRP18

  PCONC(:,JP_CH_RPR9)   = PFRAC(:,JP_CH_RPR9) * PCTOTG(:,JP_AER_SOA3) * ZCSTAVOG / XRPR9
  PCONC(:,JP_CH_RP12)   = PFRAC(:,JP_CH_RP12) * PCTOTG(:,JP_AER_SOA3) * ZCSTAVOG / XRP12

  PCONC(:,JP_CH_UR3 )   = PFRAC(:,JP_CH_UR3 ) * PCTOTG(:,JP_AER_SOA4) * ZCSTAVOG / XUR3 
  PCONC(:,JP_CH_UR23)   = PFRAC(:,JP_CH_UR23) * PCTOTG(:,JP_AER_SOA4) * ZCSTAVOG / XUR23

  PCONC(:,JP_CH_UR17)   = PFRAC(:,JP_CH_UR17) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XUR17
  PCONC(:,JP_CH_RPR3)   = PFRAC(:,JP_CH_RPR3) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XRPR3
  PCONC(:,JP_CH_AP7)    = PFRAC(:,JP_CH_AP7)  * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XAP7

  PCONC(:,JP_CH_UR22)    = PFRAC(:,JP_CH_UR22) * PCTOTG(:,JP_AER_SOA6) * ZCSTAVOG / XUR22
  PCONC(:,JP_CH_UR31)    = PFRAC(:,JP_CH_UR31) * PCTOTG(:,JP_AER_SOA6) * ZCSTAVOG / XUR31
  PCONC(:,JP_CH_AP1)     = PFRAC(:,JP_CH_AP1 ) * PCTOTG(:,JP_AER_SOA6) * ZCSTAVOG / XAP1 
  PCONC(:,JP_CH_AP6)     = PFRAC(:,JP_CH_AP6 ) * PCTOTG(:,JP_AER_SOA6) * ZCSTAVOG / XAP6 
  
  PCONC(:,JP_CH_ADAC)    = PFRAC(:,JP_CH_ADAC) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XADAC
  PCONC(:,JP_CH_UR14)    = PFRAC(:,JP_CH_UR14) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XUR14
  PCONC(:,JP_CH_UR27)    = PFRAC(:,JP_CH_UR27) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XUR27
  PCONC(:,JP_CH_UR2 )    = PFRAC(:,JP_CH_UR2 ) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XUR2 
  PCONC(:,JP_CH_RP14)    = PFRAC(:,JP_CH_RP14) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRP14
  PCONC(:,JP_CH_RP19)    = PFRAC(:,JP_CH_RP19) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRP19
  PCONC(:,JP_CH_RPR4)    = PFRAC(:,JP_CH_RPR4) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRPR4
  PCONC(:,JP_CH_RPR7)    = PFRAC(:,JP_CH_RPR7) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRPR7

  PCONC(:,JP_CH_UR11)    = PFRAC(:,JP_CH_UR11) * PCTOTG(:,JP_AER_SOA8) * ZCSTAVOG / XUR11
  PCONC(:,JP_CH_UR15)    = PFRAC(:,JP_CH_UR15) * PCTOTG(:,JP_AER_SOA8) * ZCSTAVOG / XUR15
  PCONC(:,JP_CH_AP10)    = PFRAC(:,JP_CH_AP10) * PCTOTG(:,JP_AER_SOA8) * ZCSTAVOG / XAP10

  PCONC(:,JP_CH_UR20)   = PFRAC(:,JP_CH_UR20) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XUR20
  PCONC(:,JP_CH_UR34)   = PFRAC(:,JP_CH_UR34) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XUR34
  PCONC(:,JP_CH_AP11)   = PFRAC(:,JP_CH_AP11) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XAP11
  PCONC(:,JP_CH_AP12)   = PFRAC(:,JP_CH_AP12) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XAP12
  PCONC(:,JP_CH_UR26)   = PFRAC(:,JP_CH_UR26) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XUR26

  PCONC(:,JP_CH_UR5)    = PFRAC(:,JP_CH_UR5)  * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR5
  PCONC(:,JP_CH_UR6)    = PFRAC(:,JP_CH_UR6)  * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR6
  PCONC(:,JP_CH_UR7)    = PFRAC(:,JP_CH_UR7)  * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR7
  PCONC(:,JP_CH_UR8)    = PFRAC(:,JP_CH_UR8)  * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR8
  PCONC(:,JP_CH_AP8)    = PFRAC(:,JP_CH_AP8)  * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XAP8
  PCONC(:,JP_CH_PAN8)   = PFRAC(:,JP_CH_PAN8) * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XPAN8
  END IF
END IF
!
IF (TRIM(CORGANIC) == 'MPMPO') THEN

  IF (HSCHEME == "RELACS2") THEN   ! ReLACS2 scheme
  PCONC(:,JP_CH_URG6)   = PFRAC(:,JP_CH_URG6) * PCTOTG(:,JP_AER_SOA1) * ZCSTAVOG / XURG6 
  PCONC(:,JP_CH_URG7)   = PFRAC(:,JP_CH_URG7) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XURG7
  PCONC(:,JP_CH_RPR7)   = PFRAC(:,JP_CH_RPR7) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRPR7
  PCONC(:,JP_CH_RPG7)   = PFRAC(:,JP_CH_RPG7) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRPG7

  PCONC(:,JP_CH_URG8)   = PFRAC(:,JP_CH_URG8) * PCTOTG(:,JP_AER_SOA3) * ZCSTAVOG / XURG8

  PCONC(:,JP_CH_URG9)   = PFRAC(:,JP_CH_URG9) * PCTOTG(:,JP_AER_SOA4) * ZCSTAVOG / XURG9

  PCONC(:,JP_CH_URG10)   = PFRAC(:,JP_CH_URG10) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XURG10
  PCONC(:,JP_CH_AP7)   = PFRAC(:,JP_CH_AP7) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XAP7

  PCONC(:,JP_CH_URG1)    = PFRAC(:,JP_CH_URG1) * PCTOTG(:,JP_AER_SOA6) * ZCSTAVOG / XURG1
  
  PCONC(:,JP_CH_URG2)    = PFRAC(:,JP_CH_URG2) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XURG2
  PCONC(:,JP_CH_RPG2)    = PFRAC(:,JP_CH_RPG2) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRPG2
  PCONC(:,JP_CH_RP18)    = PFRAC(:,JP_CH_RP18) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRP18
  PCONC(:,JP_CH_UR26)    = PFRAC(:,JP_CH_UR26) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XUR26

  PCONC(:,JP_CH_RPG3)    = PFRAC(:,JP_CH_RPG3) * PCTOTG(:,JP_AER_SOA8) * ZCSTAVOG / XRPG3

  PCONC(:,JP_CH_URG4)   = PFRAC(:,JP_CH_URG4) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XURG4
  PCONC(:,JP_CH_UR8)   = PFRAC(:,JP_CH_UR8) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XUR8

  PCONC(:,JP_CH_UR7)  = PFRAC(:,JP_CH_UR7)* PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR7
  PCONC(:,JP_CH_UR17)    = PFRAC(:,JP_CH_UR17)  * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR17
!
  ELSE IF (HSCHEME == "RELACS3") THEN   ! ReLACS3 scheme
  PCONC(:,JP_CH_URG6)   = PFRAC(:,JP_CH_URG6) * PCTOTG(:,JP_AER_SOA1) * ZCSTAVOG / XURG6 
  PCONC(:,JP_CH_URG7)   = PFRAC(:,JP_CH_URG7) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XURG7
  PCONC(:,JP_CH_RPR7)   = PFRAC(:,JP_CH_RPR7) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRPR7
  PCONC(:,JP_CH_RPG7)   = PFRAC(:,JP_CH_RPG7) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRPG7

  PCONC(:,JP_CH_URG8)   = PFRAC(:,JP_CH_URG8) * PCTOTG(:,JP_AER_SOA3) * ZCSTAVOG / XURG8

  PCONC(:,JP_CH_URG9)   = PFRAC(:,JP_CH_URG9) * PCTOTG(:,JP_AER_SOA4) * ZCSTAVOG / XURG9

  PCONC(:,JP_CH_URG10)   = PFRAC(:,JP_CH_URG10) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XURG10
  PCONC(:,JP_CH_AP7)   = PFRAC(:,JP_CH_AP7) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XAP7

  PCONC(:,JP_CH_UR21)    = PFRAC(:,JP_CH_UR21) * PCTOTG(:,JP_AER_SOA6) * ZCSTAVOG / XUR21
  PCONC(:,JP_CH_UR28)    = PFRAC(:,JP_CH_UR28) * PCTOTG(:,JP_AER_SOA6) * ZCSTAVOG / XUR28
  
  PCONC(:,JP_CH_URG2)    = PFRAC(:,JP_CH_URG2) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XURG2
  PCONC(:,JP_CH_RPG2)    = PFRAC(:,JP_CH_RPG2) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRPG2
  PCONC(:,JP_CH_RP18)    = PFRAC(:,JP_CH_RP18) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRP18
  PCONC(:,JP_CH_UR26)    = PFRAC(:,JP_CH_UR26) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XUR26

  PCONC(:,JP_CH_RPG3)    = PFRAC(:,JP_CH_RPG3) * PCTOTG(:,JP_AER_SOA8) * ZCSTAVOG / XRPG3

  PCONC(:,JP_CH_URG4)   = PFRAC(:,JP_CH_URG4) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XURG4
  PCONC(:,JP_CH_UR8)   = PFRAC(:,JP_CH_UR8) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XUR8

  PCONC(:,JP_CH_UR7)  = PFRAC(:,JP_CH_UR7)* PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR7
  PCONC(:,JP_CH_UR17)    = PFRAC(:,JP_CH_UR17)  * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR17
!
  ELSE   ! CACM scheme
  PCONC(:,JP_CH_UR31)   = PFRAC(:,JP_CH_UR31) * PCTOTG(:,JP_AER_SOA1) * ZCSTAVOG / XUR31 
  PCONC(:,JP_CH_AP1)    = PFRAC(:,JP_CH_AP1)  * PCTOTG(:,JP_AER_SOA1) * ZCSTAVOG / XAP1 
  PCONC(:,JP_CH_AP6)    = PFRAC(:,JP_CH_AP6)  * PCTOTG(:,JP_AER_SOA1) * ZCSTAVOG / XAP6

  PCONC(:,JP_CH_ADAC)   = PFRAC(:,JP_CH_ADAC) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XADAC
  PCONC(:,JP_CH_RPR7)   = PFRAC(:,JP_CH_RPR7) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRPR7
  PCONC(:,JP_CH_UR2)    = PFRAC(:,JP_CH_UR2)  * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XUR2
  PCONC(:,JP_CH_UR14)   = PFRAC(:,JP_CH_UR14) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XUR14
  PCONC(:,JP_CH_UR27)   = PFRAC(:,JP_CH_UR27) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XUR27
  PCONC(:,JP_CH_RP14)   = PFRAC(:,JP_CH_RP14) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRP14
  PCONC(:,JP_CH_RP19)   = PFRAC(:,JP_CH_RP19) * PCTOTG(:,JP_AER_SOA2) * ZCSTAVOG / XRP19

  PCONC(:,JP_CH_UR11)   = PFRAC(:,JP_CH_UR11) * PCTOTG(:,JP_AER_SOA3) * ZCSTAVOG / XUR11
  PCONC(:,JP_CH_UR15)   = PFRAC(:,JP_CH_UR15) * PCTOTG(:,JP_AER_SOA3) * ZCSTAVOG / XUR15
  PCONC(:,JP_CH_AP10)   = PFRAC(:,JP_CH_AP10) * PCTOTG(:,JP_AER_SOA3) * ZCSTAVOG / XAP10

  PCONC(:,JP_CH_UR20)   = PFRAC(:,JP_CH_UR20) * PCTOTG(:,JP_AER_SOA4) * ZCSTAVOG / XUR20
  PCONC(:,JP_CH_UR34)   = PFRAC(:,JP_CH_UR34) * PCTOTG(:,JP_AER_SOA4) * ZCSTAVOG / XUR34
  PCONC(:,JP_CH_AP11)   = PFRAC(:,JP_CH_AP11) * PCTOTG(:,JP_AER_SOA4) * ZCSTAVOG / XAP11
  PCONC(:,JP_CH_AP12)   = PFRAC(:,JP_CH_AP12) * PCTOTG(:,JP_AER_SOA4) * ZCSTAVOG / XAP12

  PCONC(:,JP_CH_UR5)   = PFRAC(:,JP_CH_UR5) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XUR5
  PCONC(:,JP_CH_UR6)   = PFRAC(:,JP_CH_UR6) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XUR6
  PCONC(:,JP_CH_AP7)   = PFRAC(:,JP_CH_AP7) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XAP7
  PCONC(:,JP_CH_AP8)   = PFRAC(:,JP_CH_AP8) * PCTOTG(:,JP_AER_SOA5) * ZCSTAVOG / XAP8

  PCONC(:,JP_CH_UR21)    = PFRAC(:,JP_CH_UR21) * PCTOTG(:,JP_AER_SOA6) * ZCSTAVOG / XUR21
  PCONC(:,JP_CH_UR28)    = PFRAC(:,JP_CH_UR28) * PCTOTG(:,JP_AER_SOA6) * ZCSTAVOG / XUR28
  
  PCONC(:,JP_CH_UR29)    = PFRAC(:,JP_CH_UR29) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XUR29
  PCONC(:,JP_CH_UR26)    = PFRAC(:,JP_CH_UR26) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XUR26
  PCONC(:,JP_CH_UR30)    = PFRAC(:,JP_CH_UR30) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XUR30
  PCONC(:,JP_CH_RP13)    = PFRAC(:,JP_CH_RP13) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRP13
  PCONC(:,JP_CH_RP17)    = PFRAC(:,JP_CH_RP17) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRP17
  PCONC(:,JP_CH_RP18)    = PFRAC(:,JP_CH_RP18) * PCTOTG(:,JP_AER_SOA7) * ZCSTAVOG / XRP18

  PCONC(:,JP_CH_RPR9)    = PFRAC(:,JP_CH_RPR9) * PCTOTG(:,JP_AER_SOA8) * ZCSTAVOG / XRPR9
  PCONC(:,JP_CH_RP12)    = PFRAC(:,JP_CH_RP12) * PCTOTG(:,JP_AER_SOA8) * ZCSTAVOG / XRP12

  PCONC(:,JP_CH_UR3)   = PFRAC(:,JP_CH_UR3)  * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XUR3
  PCONC(:,JP_CH_UR23)  = PFRAC(:,JP_CH_UR23) * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XUR23
  PCONC(:,JP_CH_UR8)   = PFRAC(:,JP_CH_UR8)  * PCTOTG(:,JP_AER_SOA9) * ZCSTAVOG / XUR8

  PCONC(:,JP_CH_UR7)    = PFRAC(:,JP_CH_UR7)  * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR7
  PCONC(:,JP_CH_UR17)   = PFRAC(:,JP_CH_UR17) * PCTOTG(:,JP_AER_SOA10) * ZCSTAVOG / XUR17
  END IF
END IF
END IF
!
!*       2.n    transfer moment 0 and 6 back to gas variables
!
  PAERO(:,JP_CH_M0i) = PM(:,1) * 1E-6 ! convert from 1/m3 to 1/cc
  PAERO(:,JP_CH_M0j) = PM(:,4) * 1E-6 ! convert from 1/m3 to 1/cc
IF (LVARSIGI)  PAERO(:,JP_CH_M6i) = PM(:,3)
IF (LVARSIGJ)  PAERO(:,JP_CH_M6j) = PM(:,6)
!
!*       2.n    transfer N, SIG, RG, RHOP

DO JN=1,JPMODE
  PN0(:,JN) =PM(:,NM0(JN))
  PRG0(:,JN)=PM(:,NM3(JN))**(2./3.) &
            / (PM(:,NM0(JN))**(0.5)*PM(:,NM6(JN))**(1./6.))
!
!attention, le xsig0 represente en realite ln(sigma)
!
  PSIG0(:,JN)=1./3.*sqrt(-log(PM(:,NM3(JN))**2/(PM(:,NM0(JN))*PM(:,NM6(JN)))))
ENDDO
 
END IF
!
!
END SUBROUTINE CH_AER_TRANS
!