Index: trunk/LMDZ.VENUS/libf/phyvenus/diffusion.h
===================================================================
--- trunk/LMDZ.VENUS/libf/phyvenus/diffusion.h	(revision 4098)
+++ 	(revision )
@@ -1,14 +1,0 @@
-!**********************************************************************
-
-!	diffusion.h
-	
-!**********************************************************************
-
-      real*8 Pdiff	
-      real*8 tdiffmin
-      real*8 dzres
-
-      parameter (Pdiff=1.e-1)      ! pressure below which diffusion is computed
-      parameter (tdiffmin=5.d0)
-      parameter (dzres=0.2d0)	 ! grid resolution (km) for diffusion
-      
Index: trunk/LMDZ.VENUS/libf/phyvenus/moldiff_MPF.F90
===================================================================
--- trunk/LMDZ.VENUS/libf/phyvenus/moldiff_MPF.F90	(revision 4098)
+++ trunk/LMDZ.VENUS/libf/phyvenus/moldiff_MPF.F90	(revision 4100)
@@ -1,13 +1,19 @@
+MODULE moldiff_MPF_mod
+
+  real*8,parameter :: Pdiff=1.e-1 ! pressure (Pa) below which diffusion is computed
+  real*8,parameter :: tdiffmin=5d0
+  real*8,parameter :: dzres=0.2d0 ! grid resolution (km) for diffusion
+
+CONTAINS
+
 subroutine moldiff_MPF(ngrid,nlayer,nq,pplay,pplev,pt,pq,&
                        ptimestep,pdteuv,pdtconduc,pdqdiff)
 
-USE chemparam_mod
-USE infotrac_phy
-USE dimphy    
-USE comcstfi_mod
+use chemparam_mod, only: M_tr
+use infotrac_phy, only: tname
+use comcstfi_mod, only: g
+use moldiffcoeff_red_mod, only: moldiffcoeff_red
 
 implicit none
-
-#include "diffusion.h"
 
 ! June 2023 JYC New method based on the modified pass flow (Parshev et al. 1987)
@@ -19,14 +25,14 @@
       integer,intent(in) :: nlayer ! number of atmospheric layers
       integer,intent(in) :: nq ! number of advected tracers
-      real ptimestep
-      real pplay(ngrid,nlayer)
-      real pplev(ngrid,nlayer+1)
-      real pq(ngrid,nlayer,nq)
+      real,intent(in) :: ptimestep ! physics time step (s)
+      real,intent(in) :: pplay(ngrid,nlayer) ! mid-layer pressure (Pa)
+      real,intent(in) :: pplev(ngrid,nlayer+1) ! pressure (Pa) at layer boundaries 
+      real,intent(in) :: pq(ngrid,nlayer,nq) ! input tracer mmr (kg/kg_air)
 !      real pdq(ngrid,nlayer,nq)
-      real pt(ngrid,nlayer)
+      real,intent(in) :: pt(ngrid,nlayer) ! input temperature (K)
 !      real pdt(ngrid,nlayer)
-      real pdteuv(ngrid,nlayer)
-      real pdtconduc(ngrid,nlayer)
-      real pdqdiff(ngrid,nlayer,nq)
+      real,intent(in) :: pdteuv(ngrid,nlayer) ! tendency on temperature (K/s) dur to EUV
+      real,intent(in) :: pdtconduc(ngrid,nlayer) ! tendency on temperature (K/s) due to conduction
+      real,intent(out) :: pdqdiff(ngrid,nlayer,nq) ! tendency on tracers (kg/kg_air/s)
 !
 ! Local
@@ -698,6 +704,5 @@
 
 
-      return
-      end
+end subroutine moldiff_MPF
 
 !    ********************************************************************
@@ -804,5 +809,5 @@
       enddo
 
-      end
+      end subroutine tridagbloc
 
       subroutine tridag(a,b,c,r,u,n)
@@ -827,5 +832,5 @@
 12    continue
       return
-      end
+      end subroutine tridag
 
 !    ********************************************************************
@@ -866,5 +871,5 @@
 14    CONTINUE
       RETURN
-      END
+      END SUBROUTINE LUBKSB
 
 !    ********************************************************************
@@ -952,5 +957,5 @@
       ierr =0
       RETURN
-      END
+      END SUBROUTINE LUDCMP
 
 	SUBROUTINE TMNEW(T1,DT1,DT2,DT3,T2,dtime,nl,ig)
@@ -972,5 +977,5 @@
 
 	ENDDO
-	END
+	END SUBROUTINE TMNEW
 
 	SUBROUTINE QMNEW(Q1,DQ,Q2,dtime,nl,nq,gc,ig)
@@ -992,5 +997,5 @@
         ENDDO
 	ENDDO
-	END
+	END SUBROUTINE QMNEW
 
 	SUBROUTINE HSCALE(p,hp,nl)
@@ -1008,5 +1013,5 @@
 	hp(l)=-log(P(l+1)/P(l-1))
 	ENDDO
-	END
+	END SUBROUTINE HSCALE
 
 	SUBROUTINE MMOY(massemoy,mol_tr,qq,gc,nl,nq)
@@ -1026,5 +1031,5 @@
 	enddo
 
-	END
+	END SUBROUTINE MMOY
 
 	SUBROUTINE DMMOY(M,H,DM,nl)
@@ -1040,5 +1045,5 @@
         enddo
 
-	END
+	END SUBROUTINE DMMOY
 
 	SUBROUTINE ZVERT(P,T,M,Z,nl,ig)
@@ -1073,5 +1078,5 @@
 	enddo
 
-	END
+	END SUBROUTINE ZVERT
 
 	SUBROUTINE RHOTOT(P,T,M,qq,rhoN,rhoK,nl,nq)
@@ -1094,5 +1099,5 @@
 	enddo
 
-	END
+	END SUBROUTINE RHOTOT
 
 	SUBROUTINE UPPER_RESOL(P,T,Z,M,RR,Rk,                            &
@@ -1187,5 +1192,5 @@
 	Praf(nl)=Nraf(nl)*kbolt*Traf(nl)
 	Mraf(nl)=1D0/sum(Qraf(nl,:)/dble(mol_tr(:)))
-	END
+	END SUBROUTINE UPPER_RESOL
 
 	SUBROUTINE CORRMASS(qq,qint,FacMass,nl,nq)
@@ -1200,5 +1205,5 @@
 	enddo
 
-	END	
+	END SUBROUTINE CORRMASS
 
 
@@ -1227,5 +1232,5 @@
 	D(l)=(1d0-Nk(l,nn)/N(l))/interm
 	enddo
-	END
+	END SUBROUTINE DCOEFF
  
 	SUBROUTINE HSCALEREAL(nn,Nk,Dz,H,nl,nq)
@@ -1256,5 +1261,5 @@
 !	enddo
 
-	END
+	END SUBROUTINE HSCALEREAL
        
 	SUBROUTINE VELVERT(nn,T,H,D,Dz,masse,W,nl)
@@ -1289,5 +1294,5 @@
 !	enddo
 
-	END
+	END SUBROUTINE VELVERT
 
 	SUBROUTINE TIMEDIFF(nn,H,W,TIME,nl)
@@ -1303,5 +1308,5 @@
 	ENDDO
 
-	END
+	END SUBROUTINE TIMEDIFF
 
 
@@ -1337,5 +1342,5 @@
         loss(nl)=1D0/dtime       
 
-	END
+	END SUBROUTINE DIFFPARAM
 
 	SUBROUTINE SEQUENCY(alpha,beta,delta,ksi,eps,zeta,Dad,Kad,rhoad,Loss,Prod,        &
@@ -1356,5 +1361,5 @@
         ENDDO
 
-	END
+	END SUBROUTINE SEQUENCY
 
 	SUBROUTINE MATCOEFF(alpha,beta,gama,delta,eps,Dad,rhoad,        &
@@ -1396,5 +1401,5 @@
 
 
-	END
+	END SUBROUTINE MATCOEFF
 
 	SUBROUTINE Checkmass(X,Y,nl,nn)
@@ -1411,5 +1416,5 @@
 	print*,'no conservation for mass',Xtot,Ytot,nn
 	endif
-	END
+	END SUBROUTINE Checkmass
 
 	SUBROUTINE Checkmass2(qold,qnew,P,il,nl,nn,nq)
@@ -1435,5 +1440,5 @@
 	ENDIF
 
-	END
+	END SUBROUTINE Checkmass2
 
 	SUBROUTINE GCMGRID_P(Z,P,Q,T,Nk,Rk,qq,qnew,tt,tnew,             &
@@ -1539,5 +1544,5 @@
 	enddo
 
-	END
+	END SUBROUTINE GCMGRID_P
 
 	SUBROUTINE GCMGRID_P2(Z,P,Q,T,Nk,Rk,qq,qnew,tt,tnew             &
@@ -1646,4 +1651,5 @@
 !	write(*,*), ' -- Sortie moldiff_red -- '
 
-        END
+        END SUBROUTINE GCMGRID_P2
         
+END MODULE moldiff_MPF_mod
Index: trunk/LMDZ.VENUS/libf/phyvenus/moldiffcoeff_red.F
===================================================================
--- trunk/LMDZ.VENUS/libf/phyvenus/moldiffcoeff_red.F	(revision 4098)
+++ trunk/LMDZ.VENUS/libf/phyvenus/moldiffcoeff_red.F	(revision 4100)
@@ -1,7 +1,12 @@
+      MODULE moldiffcoeff_red_mod
+      
+      IMPLICIT NONE
+      
+      CONTAINS
+
       subroutine moldiffcoeff_red(dij,indic,gcmind,ncompdiff2)
 
-       USE chemparam_mod
-       USE infotrac_phy
-       USE dimphy    
+       use chemparam_mod, only: M_tr
+       use infotrac_phy, only: nqtot, tname
 
        IMPLICIT NONE
@@ -15,5 +20,4 @@
 c
 c=======================================================================
-#include "diffusion.h"
 
 c-----------------------------------------------------------------------
@@ -304,5 +308,5 @@
 
 
-      return   
-      end 
+      end subroutine moldiffcoeff_red
       
+      END MODULE moldiffcoeff_red_mod
Index: trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F
===================================================================
--- trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F	(revision 4098)
+++ trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F	(revision 4100)
@@ -79,4 +79,5 @@
       use compo_hedin83_mod2, only: compo_hedin83_init2
       use compo_hedin83_mod2, only: compo_hedin83_mod
+      use moldiff_mpf_mod, only: moldiff_mpf
       use nirdata_mod, only: nir_leedat
       use radlwsw_newtoncool_mod, only: radlwsw_newtoncool
@@ -239,5 +240,4 @@
 c
       REAL Fsedim(klon,klev+1)  ! Flux de sedimentation (kg.m-2)
-      EXTERNAL moldiff_MPF
 
 c
