 module conc
     use dimphy
     IMPLICIT NONE

     
      REAL, ALLOCATABLE, SAVE :: mmean(:,:)
!$OMP THREADPRIVATE(mmean)
      REAL, ALLOCATABLE, SAVE :: rho(:,:)
!$OMP THREADPRIVATE(rho)
      REAL, ALLOCATABLE, SAVE :: Akknew(:,:)
!$OMP THREADPRIVATE(Akknew)
      REAL, ALLOCATABLE, SAVE :: rnew(:,:)
!$OMP THREADPRIVATE(rnew)
      REAL, ALLOCATABLE, SAVE :: cpnew(:,:)
!$OMP THREADPRIVATE(cpnew)
      REAL, ALLOCATABLE, SAVE :: jfotsout(:,:,:)
!$OMP THREADPRIVATE(jfotsout)
      REAL, ALLOCATABLE, SAVE :: coefit4(:,:)
!$OMP THREADPRIVATE(coefit4)
      REAL, ALLOCATABLE, SAVE :: coefit3(:,:)
!$OMP THREADPRIVATE(coefit3)
      REAL, ALLOCATABLE, SAVE :: coefit2(:,:)
!$OMP THREADPRIVATE(coefit2)
      REAL, ALLOCATABLE, SAVE :: coefit1(:,:)
!$OMP THREADPRIVATE(coefit1)
      REAL, ALLOCATABLE, SAVE :: coefit0(:,:)
!$OMP THREADPRIVATE(coefit0)
      REAL, ALLOCATABLE, SAVE :: fluxtop(:)
!$OMP THREADPRIVATE(fluxtop)
!      REAL, ALLOCATABLE, SAVE :: freccen(:)
!$OMP THREADPRIVATE(freccen)
      REAL, ALLOCATABLE, SAVE :: t0(:)
!$OMP THREADPRIVATE(t0)
!      REAL, ALLOCATABLE, SAVE :: crscabsi2(:,:)
!$OMP THREADPRIVATE(crscabsi2)
      REAL, ALLOCATABLE, SAVE :: jabsifotsintpar(:,:,:)
!$OMP THREADPRIVATE(crscabsi2)
      REAL, ALLOCATABLE, SAVE :: c1_16(:,:)
!$OMP THREADPRIVATE(c1_16)
      REAL, ALLOCATABLE, SAVE :: c17_24(:)
!$OMP THREADPRIVATE(c17_24)
      REAL, ALLOCATABLE, SAVE :: c25_29(:)
!$OMP THREADPRIVATE(c25_29)
      REAL, ALLOCATABLE, SAVE :: c30_31(:)
!$OMP THREADPRIVATE(c30_31)
      REAL, ALLOCATABLE, SAVE :: c32(:)
!$OMP THREADPRIVATE(c32)
      REAL, ALLOCATABLE, SAVE :: c33(:)
!$OMP THREADPRIVATE(c33)
      REAL, ALLOCATABLE, SAVE :: c34(:)
!$OMP THREADPRIVATE(c34)
      REAL, ALLOCATABLE, SAVE :: c35(:)
!$OMP THREADPRIVATE(c35)
      REAL, ALLOCATABLE, SAVE :: c36(:)
!$OMP THREADPRIVATE(c36)
      REAL, ALLOCATABLE, SAVE :: ct1(:)
!$OMP THREADPRIVATE(ct1)
      REAL, ALLOCATABLE, SAVE :: ct2(:)
!$OMP THREADPRIVATE(ct2)
      REAL, ALLOCATABLE, SAVE :: p1(:)
!$OMP THREADPRIVATE(p1)
      REAL, ALLOCATABLE, SAVE :: p2(:)
!$OMP THREADPRIVATE(p2)


      CONTAINS
!=================================================================
     subroutine conc_init
     USE dimphy
     implicit none
#include"param.h"

     ALLOCATE(mmean(klon,klev)) 
     ALLOCATE(rho(klon,klev))       
     ALLOCATE(Akknew(klon,klev))  
     ALLOCATE(rnew(klon,klev))  
     ALLOCATE(cpnew(klon,klev)) 
     ALLOCATE(jfotsout(ninter,nabs,klev))
     ALLOCATE(coefit0(ninter,nabs))
     ALLOCATE(coefit1(ninter,nabs))  
     ALLOCATE(coefit2(ninter,nabs))  
     ALLOCATE(coefit3(ninter,nabs))  
     ALLOCATE(coefit4(ninter,nabs)) 
     ALLOCATE(fluxtop(ninter)) 
!     ALLOCATE(freccen(ninter)) 
     ALLOCATE(t0(nz2))   
!     ALLOCATE(crscabsi2(nabs,16))
     ALLOCATE(c1_16(nz2,16))
     ALLOCATE(c17_24(nz2) )
     ALLOCATE(c25_29(nz2) )
     ALLOCATE(c30_31(nz2) )
     ALLOCATE(c32(nz2) )
     ALLOCATE(c33(nz2) )
     ALLOCATE(c34(nz2) )
     ALLOCATE(c35(nz2) )
     ALLOCATE(c36(nz2) )
     ALLOCATE(ct2(ninter) )
     ALLOCATE(ct1(ninter) )
     ALLOCATE(p1(ninter) )
     ALLOCATE(p2(ninter) )
     ALLOCATE(jabsifotsintpar(nz2,nabs,ninter))
     end subroutine conc_init


  end module conc

