! $Id$
!
!** AUTOMATIC CPARAM.INC GENERATION ****************************
! Declare (for generation of cparam.inc) the number of f array
! variables and auxiliary variables added by this module
!
! CPARAM logical, parameter :: lchemistry = .false.
!
! MVAR CONTRIBUTION 0
! MAUX CONTRIBUTION 0
!
! PENCILS PROVIDED Ywater, lambda; chem_conc(nchemspec)
! PENCILS PROVIDED nucl_rmin, nucl_rate, conc_satm, ff_cond
! PENCILS PROVIDED cond_heat
!
!***************************************************************
module Chemistry
!
  use Cdata
  use General, only: keep_compiler_quiet
  use Messages
  use EquationOfState
!
  implicit none
!
  real :: Rgas, Rgas_unit_sys
  logical :: lchemistry_diag=.false.
  logical :: lreactions=.false.
!
  include 'chemistry.h'
!
  real, dimension(0,0) :: species_constants

  contains
!***********************************************************************
    subroutine register_chemistry
!
    endsubroutine register_chemistry
!***********************************************************************
    subroutine initialize_chemistry(f)
!
      real, dimension (mx,my,mz,mfarray) :: f
!
      Rgas_unit_sys = k_B_cgs/m_u_cgs
      Rgas = Rgas_unit_sys/unit_energy
!
      call keep_compiler_quiet(f)
!
    endsubroutine initialize_chemistry
!***********************************************************************
    subroutine init_chemistry(f)
!
      real, dimension (mx,my,mz,mfarray) :: f
!
      call keep_compiler_quiet(f)
!
    endsubroutine init_chemistry
!***********************************************************************
    subroutine pencil_criteria_chemistry
!
    endsubroutine pencil_criteria_chemistry
!***********************************************************************
    subroutine pencil_interdep_chemistry(lpencil_in)
!
      logical, dimension(npencils) :: lpencil_in
!
      call keep_compiler_quiet(lpencil_in)
!
    endsubroutine pencil_interdep_chemistry
!***********************************************************************
    subroutine chemistry_before_boundary(f)

      real, dimension(mx,my,mz,mfarray) :: f
!
      call keep_compiler_quiet(f)

    endsubroutine chemistry_before_boundary
!***********************************************************************
    subroutine calc_pencils_chemistry(f,p)
!
      real, dimension (mx,my,mz,mfarray) :: f
      type (pencil_case) :: p
!
      call keep_compiler_quiet(f)
      call keep_compiler_quiet(p)
!
    endsubroutine calc_pencils_chemistry
!***********************************************************************
    subroutine calc_for_chem_mixture(f)
!
      real, dimension (mx,my,mz,mfarray) :: f
!
      call keep_compiler_quiet(f)
!
    endsubroutine calc_for_chem_mixture
!***********************************************************************
    subroutine dchemistry_dt(f,df,p)
!
      real, dimension (mx,my,mz,mfarray) :: f
      real, dimension (mx,my,mz,mvar) :: df
      type (pencil_case) :: p
!
      call keep_compiler_quiet(f,df)
      call keep_compiler_quiet(p)
!
    endsubroutine dchemistry_dt
!***********************************************************************
    subroutine calc_diagnostics_chemistry(f,p)
!
!  Calculate diagnostic quantities
!
      real, dimension(mx,my,mz,mfarray) :: f
      type (pencil_case) :: p

      call keep_compiler_quiet(f)
      call keep_compiler_quiet(p)

    endsubroutine calc_diagnostics_chemistry
!***********************************************************************
    subroutine rprint_chemistry(lreset,lwrite)
!
      logical :: lreset
      logical, optional :: lwrite
!
      call keep_compiler_quiet(lreset)
      call keep_compiler_quiet(present(lwrite))
!
    endsubroutine rprint_chemistry
!***********************************************************************
    subroutine chemspec_normalization(f)
!
      real, dimension (mx,my,mz,mfarray) :: f
!
      call keep_compiler_quiet(f)
!
    endsubroutine chemspec_normalization
!***********************************************************************
    subroutine get_slices_chemistry(f,slices)
!
      real, dimension (mx,my,mz,mfarray) :: f
      type (slice_data) :: slices
!
      call keep_compiler_quiet(f)
      call keep_compiler_quiet(slices%ready)
!
    endsubroutine get_slices_chemistry
!***********************************************************************
    subroutine chemistry_clean_up
!
    endsubroutine chemistry_clean_up
!***********************************************************************
    subroutine read_chemistry_init_pars(iostat)
!
      use File_io, only: parallel_unit
!
      integer, intent(out) :: iostat
!
      iostat=0

    endsubroutine read_chemistry_init_pars
!***********************************************************************
    subroutine write_chemistry_init_pars(unit)
!
      integer, intent(in) :: unit
!
    endsubroutine write_chemistry_init_pars
!***********************************************************************
    subroutine read_chemistry_run_pars(iostat)
!
      use File_io, only: parallel_unit
!
      integer, intent(out) :: iostat
!
      iostat=0

    endsubroutine read_chemistry_run_pars
!***********************************************************************
    subroutine write_chemistry_run_pars(unit)
!
      integer, intent(in) :: unit
!
    endsubroutine write_chemistry_run_pars
!***********************************************************************
    subroutine jacobn(f,jacob)
!
      real, dimension(mx,my,mz,mfarray) :: f
      real, dimension(mx,my,mz,nchemspec,nchemspec) :: jacob
!
      call keep_compiler_quiet(f)
      call keep_compiler_quiet(jacob(1,1,1,1,1))
!
    endsubroutine jacobn
!***********************************************************************
    subroutine get_mu1_slice(f,slice,grad_slice,index,sgn,direction)
!
! For the NSCBC boudary conditions the slice of mu1 at the boundary
! is required.
!
! 2009.12.10: Nils Erland L. Haugen (coded)
!
      real, dimension(mx,my,mz,mfarray) :: f
      real, dimension(ny,nz), intent(out) :: slice, grad_slice
      integer, intent(in) :: index, sgn,direction
!
      call keep_compiler_quiet(slice)
      call keep_compiler_quiet(grad_slice)
      call keep_compiler_quiet(index,sgn,direction)
!
    end subroutine get_mu1_slice
!***********************************************************************
    subroutine get_gamma_slice(f,slice,index,dir)
!
!  Get a 2D slice of gamma
!
!  2009.12.10: Nils Erland L. Haugen (coded)
!
      real, dimension(mx,my,mz,mfarray) :: f
      real, dimension (:,:), intent(out)  :: slice
      integer, intent(in) :: index,dir
!
      call keep_compiler_quiet(slice)
      call keep_compiler_quiet(index)
      call keep_compiler_quiet(dir)
      !
    endsubroutine get_gamma_slice
!***********************************************************************
    subroutine get_cs2_slice(f,slice,index,dir)
!
!  Get a 2D slice of cs2
!
!  2009.12.10: Nils Erland L. Haugen (coded)
!
      real, dimension(mx,my,mz,mfarray) :: f
      real, dimension (:,:), intent(out)  :: slice
      integer, intent(in) :: index,dir
!
      call keep_compiler_quiet(slice)
      call keep_compiler_quiet(index)
      call keep_compiler_quiet(dir)
      !
    endsubroutine get_cs2_slice
!***********************************************************************
   subroutine get_cs2_full(cs2_full)
!
      real, dimension (mx,my,mz) :: cs2_full
!
      intent(out) :: cs2_full
!
      call keep_compiler_quiet(cs2_full)
!
    endsubroutine get_cs2_full
!***********************************************************************
    subroutine get_gamma_full(gamma_full)
!
      real, dimension (mx,my,mz) :: gamma_full
!
      intent(out) :: gamma_full
!
      call keep_compiler_quiet(gamma_full)
!
    endsubroutine get_gamma_full
!***********************************************************************
    subroutine get_RHS_Y_full(RHS_Y)
!
      real, dimension (mx,my,mz,nchemspec) :: RHS_Y
!
      intent(out) :: RHS_Y
!
      call keep_compiler_quiet(RHS_Y)
!
    endsubroutine get_RHS_Y_full
!***********************************************************************
    subroutine  write_net_reaction
    endsubroutine  write_net_reaction
!***********************************************************************
    subroutine get_reac_rate(f,p)
!
      real, dimension (mx,my,mz,mfarray) :: f
      type (pencil_case) :: p
!
      call keep_compiler_quiet(f)
      call keep_compiler_quiet(p)
!
    endsubroutine get_reac_rate
!!***********************************************************************
    subroutine chemspec_normalization_N2(f)
!
      real, dimension (mx,my,mz,mfarray) :: f
!
      call keep_compiler_quiet(f)
!
    endsubroutine chemspec_normalization_N2
!***********************************************************************
   subroutine find_species_index(species_name,ind_glob,ind_chem,found_specie)
!
!  Find index in the f array for specie
!
!  05-feb-08/nils: coded
!
      integer, intent(out) :: ind_glob
      integer, intent(inout) :: ind_chem
      character (len=*), intent(in) :: species_name
      logical, intent(out) :: found_specie
!
      call keep_compiler_quiet(ind_glob)
      call keep_compiler_quiet(found_specie)

   endsubroutine find_species_index
!***********************************************************************
    subroutine cond_spec_cond(f,df,p,ad,dustbin_width,mfluxcond)
!
      real, dimension (mx,my,mz,mfarray) :: f
      real, dimension (mx,my,mz,mvar) :: df
      type (pencil_case) :: p
      real :: dustbin_width
      real, dimension (nx) :: mfluxcond
      real, dimension(ndustspec) :: ad
!
!  initialize to zero
!
!     p%ff_cond=0.
!
      call keep_compiler_quiet(f)
      call keep_compiler_quiet(df)
      call keep_compiler_quiet(p)
      call keep_compiler_quiet(ad)
      call keep_compiler_quiet(dustbin_width)
      call keep_compiler_quiet(mfluxcond)
!  
    end subroutine cond_spec_cond
!***********************************************************************
    subroutine cond_spec_nucl(f,df,p,kk_vec,ad)
!
      real, dimension (mx,my,mz,mfarray) :: f
      real, dimension (mx,my,mz,mvar) :: df
      type (pencil_case) :: p
      integer, dimension(nx) :: kk_vec
      real, dimension(ndustspec) :: ad
!
      call keep_compiler_quiet(f)
      call keep_compiler_quiet(df)
      call keep_compiler_quiet(p)
      call keep_compiler_quiet(ad)
      call keep_compiler_quiet(kk_vec)
!  
    end subroutine cond_spec_nucl
!***********************************************************************
    subroutine condensing_species_rate(p,mfluxcond)
!
      real, dimension (nx) :: mfluxcond
      type (pencil_case) :: p
!
      call keep_compiler_quiet(p)
      call keep_compiler_quiet(mfluxcond)
!      
    end subroutine condensing_species_rate
!***********************************************************************
    subroutine cond_spec_cond_lagr(f,df,p,rp,ix0,ix,np_swarm,dapdt)
!
      real, dimension (mx,my,mz,mfarray) :: f
      real, dimension (mx,my,mz,mvar) :: df
      type (pencil_case) :: p
      real :: rp,np_swarm,dapdt
      integer :: ix0,ix
 !
      call keep_compiler_quiet(f)
      call keep_compiler_quiet(df)
      call keep_compiler_quiet(p)
      call keep_compiler_quiet(dapdt)
      call keep_compiler_quiet(ix0)
!
    end subroutine cond_spec_cond_lagr
!***********************************************************************
    subroutine cond_spec_nucl_lagr(f,df,p)
!
      real, dimension (mx,my,mz,mfarray) :: f
      real, dimension (mx,my,mz,mvar) :: df
      type (pencil_case) :: p
!
      call keep_compiler_quiet(f)
      call keep_compiler_quiet(df)
      call keep_compiler_quiet(p)
!
    end subroutine cond_spec_nucl_lagr
    !***********************************************************************



   
endmodule Chemistry
