Index: trunk/LMDZ.MARS/libf/aeronomars/diffusion.h
===================================================================
--- trunk/LMDZ.MARS/libf/aeronomars/diffusion.h	(revision 3013)
+++ 	(revision )
@@ -1,14 +1,0 @@
-!**********************************************************************
-
-!	diffusion.h
-	
-!**********************************************************************
-
-      real*8 Pdiff	
-      real*8 tdiffmin
-      real*8 dzres
-
-      parameter (Pdiff=15.)      ! pressure below which diffusion is computed
-      parameter (tdiffmin=5d0)
-      parameter (dzres=2d0)	 ! grid resolution (km) for diffusion
-      
Index: trunk/LMDZ.MARS/libf/aeronomars/moldiff_red.F90
===================================================================
--- trunk/LMDZ.MARS/libf/aeronomars/moldiff_red.F90	(revision 3013)
+++ trunk/LMDZ.MARS/libf/aeronomars/moldiff_red.F90	(revision 3015)
@@ -1,2 +1,10 @@
+MODULE moldiff_red_mod
+
+  real*8,parameter :: Pdiff=15. ! pressure (Pa) below which diffusion is computed
+  real*8,parameter :: tdiffmin=5d0
+  real*8,parameter :: dzres=2d0 ! grid resolution (km) for diffusion
+  
+CONTAINS
+
 subroutine moldiff_red(ngrid,nlayer,nq,pplay,pplev,pt,pdt,pq,pdq,&
                        ptimestep,zzlay,pdteuv,pdtconduc,pdqdiff,&
@@ -7,8 +15,7 @@
 use planetwide_mod, only: planetwide_sumval
 USE mod_phys_lmdz_para, only: is_master,bcast
+use moldiffcoeff_red_mod, only: moldiffcoeff_red
 
 implicit none
-
-include "diffusion.h"
 
 ! July 2014 JYC ADD BALISTIC Transport coupling to compute wup for H and H2
@@ -320,5 +327,5 @@
 
 ! The number of diffusion layers is variable 
-! and fixed by the resolution (dzres) specified in diffusion.h
+! and fixed by the resolution (dzres) specified as module variable
 ! I fix a minimum  number of layers 40 
 
@@ -397,5 +404,6 @@
 !	enddo
 
-! The diffusion is computed above il0 computed from Pdiff in diffusion.h
+! The diffusion is computed above il0 computed from Pdiff
+! (defined above as module variable)
 ! No change below il0
 	
@@ -674,6 +682,6 @@
        if (i_d.ne.1000) call planetwide_sumval(PhiauxD,PhiEscD)
 
-      return
-      end
+
+end subroutine moldiff_red
 
 !    ********************************************************************
@@ -780,5 +788,5 @@
       enddo
 
-      end
+      end subroutine tridagbloc
 
       subroutine tridag(a,b,c,r,u,n)
@@ -802,6 +810,6 @@
         u(j)=u(j)-gam(j+1)*u(j+1)
 12    continue
-      return
-      end
+
+      end subroutine tridag
 
 !    ********************************************************************
@@ -841,6 +849,6 @@
         B(I)=SUM/A(I,I)
 14    CONTINUE
-      RETURN
-      END
+
+      END SUBROUTINE LUBKSB
 
 !    ********************************************************************
@@ -927,6 +935,6 @@
       IF(A(N,N).EQ.0.)A(N,N)=TINY
       ierr =0
-      RETURN
-      END
+
+      END SUBROUTINE LUDCMP
 
 	SUBROUTINE TMNEW(T1,DT1,DT2,DT3,T2,dtime,nl,ig)
@@ -948,5 +956,5 @@
 
 	ENDDO
-	END
+	END SUBROUTINE TMNEW
 
 	SUBROUTINE QMNEW(Q1,DQ,Q2,dtime,nl,nq,gc,ig)
@@ -967,5 +975,5 @@
         ENDDO
 	ENDDO
-	END
+	END SUBROUTINE QMNEW
 
 	SUBROUTINE HSCALE(p,hp,nl)
@@ -983,5 +991,5 @@
 	hp(l)=-log(P(l+1)/P(l-1))
 	ENDDO
-	END
+	END SUBROUTINE HSCALE
 
 	SUBROUTINE MMOY(massemoy,mmol,qq,gc,nl,nq)
@@ -1000,5 +1008,5 @@
 	enddo
 
-	END
+	END SUBROUTINE MMOY
 
 	SUBROUTINE DMMOY(M,H,DM,nl)
@@ -1014,5 +1022,5 @@
         enddo
 
-	END
+	END SUBROUTINE DMMOY
 
 	SUBROUTINE ZVERT(P,T,M,Z,nl,ig)
@@ -1045,5 +1053,5 @@
 	enddo
 
-	END
+	END SUBROUTINE ZVERT
 
 	SUBROUTINE RHOTOT(P,T,M,qq,rhoN,rhoK,nl,nq)
@@ -1065,5 +1073,5 @@
 	enddo
 
-	END
+	END SUBROUTINE RHOTOT
 
 	SUBROUTINE UPPER_RESOL(P,T,Z,M,R,Rk,                            &
@@ -1156,5 +1164,5 @@
 	Praf(nl)=Nraf(nl)*kbolt*Traf(nl)
 	Mraf(nl)=1D0/sum(Qraf(nl,:)/dble(mmol(gc(:))))
-	END
+	END SUBROUTINE UPPER_RESOL
 
 	SUBROUTINE CORRMASS(qq,qint,FacMass,nl,nq)
@@ -1169,5 +1177,5 @@
 	enddo
 
-	END	
+	END SUBROUTINE CORRMASS
 
 
@@ -1199,5 +1207,5 @@
         D(l)=(1D0-Nk(l,nn)/N(l))/interm
 	enddo
-	END
+	END SUBROUTINE DCOEFF
  
 	SUBROUTINE HSCALEREAL(nn,Nk,Dz,H,nl,nq)
@@ -1228,5 +1236,5 @@
 !	enddo
 
-	END
+	END SUBROUTINE HSCALEREAL
        
 	SUBROUTINE VELVERT(nn,T,H,D,Dz,masse,W,nl)
@@ -1259,5 +1267,5 @@
 !	enddo
 
-	END
+	END SUBROUTINE VELVERT
 
 	SUBROUTINE TIMEDIFF(nn,H,W,TIME,nl)
@@ -1273,5 +1281,5 @@
 	ENDDO
 
-	END
+	END SUBROUTINE TIMEDIFF
 
 
@@ -1337,5 +1345,5 @@
 !	stop
 
-	END
+	END SUBROUTINE DIFFPARAM
 
 
@@ -1373,5 +1381,5 @@
 
 
-	END
+	END SUBROUTINE MATCOEFF
 
 	SUBROUTINE Checkmass(X,Y,nl,nn)
@@ -1388,5 +1396,5 @@
 	print*,'no conservation for mass',Xtot,Ytot,nn
 	endif
-	END
+	END SUBROUTINE Checkmass
 
 	SUBROUTINE Checkmass2(qold,qnew,P,il,nl,nn,nq)
@@ -1410,5 +1418,5 @@
 	ENDIF
 
-	END
+	END SUBROUTINE Checkmass2
 
 	SUBROUTINE GCMGRID_P(Z,P,Q,T,Nk,Rk,qq,qnew,tt,tnew,             &
@@ -1511,5 +1519,5 @@
 	enddo
 
-	END
+	END SUBROUTINE GCMGRID_P
 
 	SUBROUTINE GCMGRID_P2(Z,P,Q,T,Nk,Rk,qq,qnew,tt,tnew             &
@@ -1613,4 +1621,6 @@
         enddo
 
-        END
+        END SUBROUTINE GCMGRID_P2
         
+
+END MODULE moldiff_red_mod
Index: trunk/LMDZ.MARS/libf/aeronomars/moldiffcoeff_red.F
===================================================================
--- trunk/LMDZ.MARS/libf/aeronomars/moldiffcoeff_red.F	(revision 3013)
+++ trunk/LMDZ.MARS/libf/aeronomars/moldiffcoeff_red.F	(revision 3015)
@@ -1,2 +1,8 @@
+      MODULE moldiffcoeff_red_mod
+      
+      IMPLICIT NONE
+      
+      CONTAINS
+
       subroutine moldiffcoeff_red(dij,indic,gcmind,ncompdiff2)
 
@@ -12,6 +18,5 @@
 c
 c=======================================================================
-#include "callkeys.h"
-#include "diffusion.h"
+      include "callkeys.h"
 
 c-----------------------------------------------------------------------
@@ -294,6 +299,5 @@
       endif
 
-
-      return   
-      end 
+      end subroutine moldiffcoeff_red
       
+      END MODULE moldiffcoeff_red_mod
Index: trunk/LMDZ.MARS/libf/aeronomars/thermosphere.F
===================================================================
--- trunk/LMDZ.MARS/libf/aeronomars/thermosphere.F	(revision 3013)
+++ trunk/LMDZ.MARS/libf/aeronomars/thermosphere.F	(revision 3015)
@@ -1,2 +1,8 @@
+      MODULE thermosphere_mod
+      
+      IMPLICIT NONE
+      
+      CONTAINS
+      
       subroutine thermosphere(ngrid,nlayer,nq,
      &     pplev,pplay,dist_sol,
@@ -6,4 +12,5 @@
      $     PhiEscH,PhiEscH2,PhiEscD)
 
+      use moldiff_red_mod, only: moldiff_red
       use conc_mod, only: rnew, cpnew
       USE comcstfi_h, only: r, cpp
@@ -82,5 +89,6 @@
       endif
 
-      end
+      end subroutine thermosphere
 
+      END MODULE thermosphere_mod
 
Index: trunk/LMDZ.MARS/libf/phymars/physiq_mod.F
===================================================================
--- trunk/LMDZ.MARS/libf/phymars/physiq_mod.F	(revision 3013)
+++ trunk/LMDZ.MARS/libf/phymars/physiq_mod.F	(revision 3015)
@@ -26,4 +26,5 @@
       use nltecool_mod, only: nltecool
       use nlte_tcool_mod, only: nlte_tcool
+      use thermosphere_mod, only: thermosphere
       use tracer_mod, only: noms, mmol, igcm_co2, igcm_n2, igcm_co2_ice,
      &                      igcm_co, igcm_o, igcm_h2o_vap, igcm_h2o_ice,
