Index: codes/icosagcm/devel/src/base/init_grid_param.f90
===================================================================
--- codes/icosagcm/devel/src/base/init_grid_param.f90	(revision 912)
+++ codes/icosagcm/devel/src/base/init_grid_param.f90	(revision 913)
@@ -3,4 +3,5 @@
   USE compute_diagnostics_mod
   USE compute_rhodz_mod
+  USE compute_pression_mod
 
   USE compute_caldyn_mod
@@ -57,11 +58,19 @@
 
   SUBROUTINE select_compute_hex
-    compute_rhodz      => compute_rhodz_hex
-    compute_pvort_only => compute_pvort_only_hex
+    ! diagnostics
+    compute_rhodz        => compute_rhodz_hex
+    compute_pression     => compute_pression_hex
+    compute_pression_mid => compute_pression_mid_hex
+    ! dynamics
+    compute_pvort_only   => compute_pvort_only_hex
   END SUBROUTINE select_compute_hex
 
   SUBROUTINE select_compute_unst
-    compute_rhodz      => compute_rhodz_unst
-    compute_pvort_only => compute_pvort_only_unst
+    ! diagnostics
+    compute_rhodz        => compute_rhodz_unst
+    compute_pression     => compute_pression_unst
+    compute_pression_mid => compute_pression_mid_unst
+    ! dynamics
+    compute_pvort_only   => compute_pvort_only_unst
   END SUBROUTINE select_compute_unst
 
Index: codes/icosagcm/devel/src/diagnostics/check_conserve.f90
===================================================================
--- codes/icosagcm/devel/src/diagnostics/check_conserve.f90	(revision 912)
+++ codes/icosagcm/devel/src/diagnostics/check_conserve.f90	(revision 913)
@@ -1,6 +1,6 @@
 MODULE check_conserve_mod
   USE icosa 
+  USE compute_pression_mod, ONLY : pression
   IMPLICIT NONE 
-
   PRIVATE
   
@@ -52,5 +52,4 @@
 
   SUBROUTINE check_conserve(f_ps,f_dps,f_ue,f_theta_rhodz,f_phis,it) 
-  USE pression_mod
   USE vorticity_mod
   USE caldyn_gcm_mod
@@ -129,8 +128,4 @@
 
        IF(check_type == check_detailed) THEN
-          !ang_mass = AAM_mass-AAM_mass_old 
-          !WRITE(*,'(A,3E12.4)') 'AAM_mass sanity check', SUM(AAM_mass_source), ang_mass, SUM(AAM_mass_source)-ang_mass
-          !ang_vel = AAM_vel-AAM_vel_old 
-          !WRITE(*,'(A,3E12.4)') 'AAM_vel  sanity check', SUM(AAM_vel_source), ang_vel, SUM(AAM_vel_source)-ang_vel
           WRITE(*,'(A,6E14.6)') 'AAM_mass : time,old,new,dissip,dyn,phys', dt*it, AAM_mass_old, AAM_mass, &
                AAM_mass_source(AAM_dissip), AAM_mass_source(AAM_dyn), AAM_mass_source(AAM_phys)
@@ -158,5 +153,4 @@
 
   SUBROUTINE check_conserve_detailed(it,tag, f_ps,f_dps,f_ue,f_theta_rhodz,f_phis) 
-    USE pression_mod
     USE vorticity_mod
     USE caldyn_gcm_mod
@@ -196,6 +190,4 @@
           ! ang_XXX = value of total AAM_XXX now
           ! AAM_XXX_source(tag) = source of AAA_XXX due to tag=dissip,dyn,phys
-          !WRITE(*,'(A,3E12.2)') 'AAM_mass', tag, ang_mass, AAM_mass, ang_mass-AAM_mass ! FIXME
-          !WRITE(*,'(A,3E12.2)') 'AAM_vel ', tag, ang_vel, AAM_vel, ang_vel-AAM_vel ! FIXME
           AAM_mass_source(tag) = AAM_mass_source(tag) + ang_mass - AAM_mass
           AAM_vel_source(tag) = AAM_vel_source(tag) + ang_vel - AAM_vel
@@ -276,5 +268,4 @@
   SUBROUTINE check_energy(f_ue,f_theta_rhodz,f_phis, etot, &
                       stot, AAM_mass_tot, AAM_vel_tot, AAM_velp_tot, AAM_velm_tot, rmsvtot)  
-  USE pression_mod
   USE vorticity_mod
     TYPE(t_field), POINTER :: f_ue(:)
Index: codes/icosagcm/devel/src/diagnostics/compute_diagnostics.f90
===================================================================
--- codes/icosagcm/devel/src/diagnostics/compute_diagnostics.f90	(revision 912)
+++ codes/icosagcm/devel/src/diagnostics/compute_diagnostics.f90	(revision 913)
@@ -12,7 +12,14 @@
     END SUBROUTINE comp_rhodz
 
+    SUBROUTINE comp_pression(ps, p, offset)
+      USE prec, ONLY : rstd
+      INTEGER, INTENT(IN) :: offset
+      REAL(rstd), INTENT(IN) :: ps(1)
+      REAL(rstd), INTENT(OUT) :: p(1,1)
+    END SUBROUTINE comp_pression
   END INTERFACE
 
   PROCEDURE(comp_rhodz), POINTER :: compute_rhodz
+  PROCEDURE(comp_pression), POINTER :: compute_pression, compute_pression_mid
 
 END MODULE compute_diagnostics_mod
Index: codes/icosagcm/devel/src/diagnostics/compute_pression.F90
===================================================================
--- codes/icosagcm/devel/src/diagnostics/compute_pression.F90	(revision 913)
+++ codes/icosagcm/devel/src/diagnostics/compute_pression.F90	(revision 913)
@@ -0,0 +1,142 @@
+MODULE compute_pression_mod
+  USE compute_diagnostics_mod
+  USE icosa
+  USE omp_para
+  USE disvert_mod, ONLY : ap, bp, ap_bp_present
+  IMPLICIT NONE
+  PRIVATE
+
+#include "../unstructured/unstructured.h90"
+
+  PUBLIC :: pression, compute_pression_hex, compute_pression_unst, &
+       pression_mid, compute_pression_mid_hex, compute_pression_mid_unst
+
+CONTAINS
+
+#ifdef BEGIN_DYSL
+
+{%- macro compute_pression(llmax)%} 
+{%- set inner_loop=caller() %}
+{%- set llmax="'%s'"%llmax %}
+IF(ap_bp_present) THEN
+   IF(offset>0) THEN
+     FORALL_CELLS_EXT('1',{{ llmax }})
+       ON_PRIMAL
+         {{ inner_loop }}
+       END_BLOCK
+     END_BLOCK
+  ELSE
+     FORALL_CELLS('1',{{ llmax }})
+       ON_PRIMAL
+         {{ inner_loop }}
+       END_BLOCK
+     END_BLOCK
+  END IF
+END IF
+{%- endmacro %}
+
+KERNEL(compute_pression)
+{% call compute_pression('llm+1') %}
+p(CELL) = AP(CELL) + BP(CELL) * ps(HIDX(CELL))  
+{% endcall %}
+END_BLOCK
+
+KERNEL(compute_pmid)
+{% call compute_pression('llm') %}
+pmid(CELL) = .5*(AP(CELL)+AP(UP(CELL)) + (BP(CELL)+BP(UP(CELL))) * ps(HIDX(CELL)) )  
+{% endcall %}
+END_BLOCK
+
+#endif END_DYSL
+
+  SUBROUTINE pression(f_ps,f_p)
+    TYPE(t_field), POINTER :: f_ps(:)
+    TYPE(t_field), POINTER :: f_p(:)
+  
+    REAL(rstd), POINTER :: ps(:)
+    REAL(rstd), POINTER :: p(:,:)
+    INTEGER :: ind
+
+!$OMP BARRIER
+    DO ind=1,ndomain
+      IF (.NOT. assigned_domain(ind)) CYCLE
+      CALL swap_dimensions(ind)
+      CALL swap_geometry(ind)
+      ps=f_ps(ind)
+      p=f_p(ind)
+      CALL compute_pression(ps, p,0)
+    ENDDO
+!$OMP BARRIER
+  
+  END SUBROUTINE pression
+
+  SUBROUTINE pression_mid(f_ps,f_pmid)
+    TYPE(t_field), POINTER :: f_ps(:)
+    TYPE(t_field), POINTER :: f_pmid(:)
+  
+    REAL(rstd), POINTER :: ps(:)
+    REAL(rstd), POINTER :: pmid(:,:)
+    INTEGER :: ind
+
+!$OMP BARRIER
+    DO ind=1,ndomain
+      IF (.NOT. assigned_domain(ind)) CYCLE
+      CALL swap_dimensions(ind)
+      CALL swap_geometry(ind)
+      ps=f_ps(ind)
+      pmid=f_pmid(ind)
+      CALL compute_pression_mid(ps, pmid,0)
+    ENDDO
+!$OMP BARRIER
+  
+  END SUBROUTINE pression_mid
+
+!------------- hexagonal-mesh compute kernels --------
+
+#define AP(ij,l) ap(l)
+#define BP(ij,l) bp(l)
+
+  SUBROUTINE compute_pression_hex(ps,p,offset)
+    REAL(rstd),INTENT(IN) :: ps(iim*jjm)
+    REAL(rstd),INTENT(OUT) :: p(iim*jjm,llm+1)
+    INTEGER,INTENT(IN) :: offset
+    INTEGER :: ij,l
+#include "../kernels_hex/compute_pression.k90"
+  END SUBROUTINE compute_pression_hex
+  
+  SUBROUTINE compute_pression_mid_hex(ps,pmid,offset)
+    REAL(rstd),INTENT(IN) :: ps(iim*jjm)
+    REAL(rstd),INTENT(OUT) :: pmid(iim*jjm,llm)
+    INTEGER,INTENT(IN) :: offset
+    INTEGER :: ij,l
+#include "../kernels_hex/compute_pmid.k90"
+  END SUBROUTINE compute_pression_mid_hex
+
+#undef AP
+#undef BP
+
+!----------- unstructured-mesh compute kernels --------
+
+#define AP(l,ij) ap(l)
+#define BP(l,ij) bp(l)
+  
+  SUBROUTINE compute_pression_unst(ps, p, offset)
+    FIELD_PS,     INTENT(IN)  :: ps
+    FIELD_GEOPOT, INTENT(OUT) :: p
+    INTEGER,      INTENT(IN)  :: offset
+    DECLARE_INDICES
+#include "../kernels_unst/compute_pression.k90"
+  END SUBROUTINE compute_pression_unst
+
+  SUBROUTINE compute_pression_mid_unst(ps, pmid, offset)
+    FIELD_PS,   INTENT(IN)  :: ps
+    FIELD_MASS, INTENT(OUT) :: pmid
+    INTEGER,    INTENT(IN)  :: offset
+    DECLARE_INDICES
+#include "../kernels_unst/compute_pmid.k90"
+  END SUBROUTINE compute_pression_mid_unst
+
+#undef AP
+#undef BP
+
+END MODULE compute_pression_mod
Index: codes/icosagcm/devel/src/diagnostics/exner.f90
===================================================================
--- codes/icosagcm/devel/src/diagnostics/exner.f90	(revision 912)
+++ codes/icosagcm/devel/src/diagnostics/exner.f90	(revision 913)
@@ -1,14 +1,18 @@
 MODULE exner_mod
+  USE icosa
+  IMPLICIT NONE
+  PRIVATE
+  SAVE
 
-  INTEGER,SAVE :: caldyn_exner
+  INTEGER :: caldyn_exner
 !$OMP THREADPRIVATE(caldyn_exner)
 
   INTEGER, PARAMETER :: lmdz=3, direct=4
+  
+  PUBLIC :: exner, compute_exner
 
 CONTAINS
   
   SUBROUTINE exner(f_ps,f_p,f_pks,f_pk)
-  USE icosa
-  IMPLICIT NONE
     TYPE(t_field), POINTER :: f_ps(:)  ! IN
     TYPE(t_field), POINTER :: f_p(:)   ! IN
@@ -38,9 +42,6 @@
   
   SUBROUTINE compute_exner(ps,p,pks,pk,offset)
-  USE icosa
-  USE disvert_mod
-  USE pression_mod
-  USE omp_para
-  IMPLICIT NONE
+    USE disvert_mod
+    USE omp_para
     REAL(rstd),INTENT(IN) :: ps(iim*jjm)
     REAL(rstd),INTENT(IN) :: p(iim*jjm,llm+1)
Index: codes/icosagcm/devel/src/diagnostics/geopotential_mod.f90
===================================================================
--- codes/icosagcm/devel/src/diagnostics/geopotential_mod.f90	(revision 912)
+++ codes/icosagcm/devel/src/diagnostics/geopotential_mod.f90	(revision 913)
@@ -9,5 +9,5 @@
     USE icosa
     USE omp_para
-    USE pression_mod
+    USE compute_diagnostics_mod, ONLY : compute_pression
     USE theta2theta_rhodz_mod
     TYPE(t_field), POINTER :: f_ps(:), f_phis(:), f_theta_rhodz(:), &  ! IN                                       
Index: codes/icosagcm/devel/src/diagnostics/observable.f90
===================================================================
--- codes/icosagcm/devel/src/diagnostics/observable.f90	(revision 912)
+++ codes/icosagcm/devel/src/diagnostics/observable.f90	(revision 913)
@@ -43,5 +43,5 @@
     USE xios_mod
     USE earth_const
-    USE pression_mod
+    USE compute_pression_mod, ONLY : pression_mid
     USE vertical_interp_mod
     USE theta2theta_rhodz_mod
@@ -295,5 +295,4 @@
   SUBROUTINE diagnose_temperature(f_pmid,f_q,f_temp)
     USE icosa
-    USE pression_mod
     IMPLICIT NONE
     TYPE(t_field), POINTER :: f_pmid(:)         ! IN
@@ -319,5 +318,4 @@
   SUBROUTINE compute_diagnose_temp(pmid,q,temp)
     USE omp_para
-    USE pression_mod
     REAL(rstd),INTENT(IN)    :: pmid(iim*jjm,llm)
     REAL(rstd),INTENT(IN)    :: q(iim*jjm,llm,nqtot)
Index: codes/icosagcm/devel/src/diagnostics/pression.f90
===================================================================
--- codes/icosagcm/devel/src/diagnostics/pression.f90	(revision 912)
+++ 	(revision )
@@ -1,98 +1,0 @@
-MODULE pression_mod
-
-CONTAINS
-
-  SUBROUTINE pression(f_ps,f_p)
-  USE icosa
-  IMPLICIT NONE
-    TYPE(t_field), POINTER :: f_ps(:)
-    TYPE(t_field), POINTER :: f_p(:)
-  
-    REAL(rstd), POINTER :: ps(:)
-    REAL(rstd), POINTER :: p(:,:)
-    INTEGER :: ind
-
-!$OMP BARRIER
-    DO ind=1,ndomain
-      IF (.NOT. assigned_domain(ind)) CYCLE
-      CALL swap_dimensions(ind)
-      CALL swap_geometry(ind)
-      ps=f_ps(ind)
-      p=f_p(ind)
-      CALL compute_pression(ps, p,0)
-    ENDDO
-!$OMP BARRIER
-  
-  END SUBROUTINE pression
-
-  SUBROUTINE pression_mid(f_ps,f_pmid)
-  USE icosa
-  IMPLICIT NONE
-    TYPE(t_field), POINTER :: f_ps(:)
-    TYPE(t_field), POINTER :: f_pmid(:)
-  
-    REAL(rstd), POINTER :: ps(:)
-    REAL(rstd), POINTER :: pmid(:,:)
-    INTEGER :: ind
-
-!$OMP BARRIER
-    DO ind=1,ndomain
-      IF (.NOT. assigned_domain(ind)) CYCLE
-      CALL swap_dimensions(ind)
-      CALL swap_geometry(ind)
-      ps=f_ps(ind)
-      pmid=f_pmid(ind)
-      CALL compute_pression_mid(ps, pmid,0)
-    ENDDO
-!$OMP BARRIER
-  
-  END SUBROUTINE pression_mid
-
-  SUBROUTINE compute_pression(ps,p,offset)
-  USE icosa
-  USE disvert_mod
-  USE omp_para
-  IMPLICIT NONE
-    REAL(rstd),INTENT(IN) :: ps(iim*jjm)
-    REAL(rstd),INTENT(OUT) :: p(iim*jjm,llm+1)
-    INTEGER,INTENT(IN) :: offset
-    INTEGER :: i,j,ij,l
-
-    IF(ap_bp_present) THEN
-      DO    l    = ll_begin, ll_endp1
-!      DO    l    = 1, llm + 1
-        DO j=jj_begin-offset,jj_end+offset
-          DO i=ii_begin-offset,ii_end+offset
-            ij=(j-1)*iim+i
-            p(ij,l) = ap(l) + bp(l) * ps(ij)
-          ENDDO
-        ENDDO
-      ENDDO
-    END IF
-
-  END SUBROUTINE compute_pression
-  
-  SUBROUTINE compute_pression_mid(ps,pmid,offset)
-  USE icosa
-  USE disvert_mod
-  USE omp_para
-  IMPLICIT NONE
-    REAL(rstd),INTENT(IN) :: ps(iim*jjm)
-    REAL(rstd),INTENT(OUT) :: pmid(iim*jjm,llm)
-    INTEGER,INTENT(IN) :: offset
-    INTEGER :: i,j,ij,l
-
-    IF(ap_bp_present) THEN
-      DO    l    = ll_begin, ll_end
-        DO j=jj_begin-offset,jj_end+offset
-          DO i=ii_begin-offset,ii_end+offset
-            ij=(j-1)*iim+i
-            pmid(ij,l) = 0.5*(ap(l)+ap(l+1) + (bp(l)+bp(l+1)) * ps(ij))
-          ENDDO
-        ENDDO
-      ENDDO
-    END IF
-
-  END SUBROUTINE compute_pression_mid
-
-END MODULE pression_mod
Index: codes/icosagcm/devel/src/diagnostics/theta_rhodz.f90
===================================================================
--- codes/icosagcm/devel/src/diagnostics/theta_rhodz.f90	(revision 912)
+++ codes/icosagcm/devel/src/diagnostics/theta_rhodz.f90	(revision 913)
@@ -1,5 +1,9 @@
 MODULE theta2theta_rhodz_mod
+  USE icosa
   USE field_mod
+  USE compute_diagnostics_mod
+  IMPLICIT NONE
   PRIVATE
+
   TYPE(t_field), POINTER, SAVE  :: f_p(:)
 
@@ -12,7 +16,4 @@
   
   SUBROUTINE init_theta2theta_rhodz
-  USE icosa
-  USE field_mod
-  IMPLICIT NONE
     CALL allocate_field(f_p,field_t,type_real,llm+1,name='p (theta2theta_rhodz_mod)')    
   END SUBROUTINE init_theta2theta_rhodz
@@ -20,6 +21,4 @@
 
   SUBROUTINE theta_rhodz2theta(f_ps,f_theta_rhodz,f_theta)
-  USE icosa
-  IMPLICIT NONE
     TYPE(t_field), POINTER :: f_ps(:)
     TYPE(t_field), POINTER :: f_theta_rhodz(:)
@@ -46,7 +45,4 @@
 
   SUBROUTINE theta_rhodz2temperature(f_ps,f_theta_rhodz,f_temp)
-  USE icosa
-  USE pression_mod
-  IMPLICIT NONE
     TYPE(t_field), POINTER :: f_ps(:)
     TYPE(t_field), POINTER :: f_theta_rhodz(:)
@@ -78,6 +74,4 @@
  
   SUBROUTINE temperature2theta_rhodz(f_ps,f_temp,f_theta_rhodz)
-  USE icosa
-  USE pression_mod
   USE exner_mod
   IMPLICIT NONE
@@ -113,6 +107,4 @@
     
   SUBROUTINE theta2theta_rhodz(f_ps,f_theta,f_theta_rhodz)
-  USE icosa
-  IMPLICIT NONE
     TYPE(t_field), POINTER :: f_ps(:)
     TYPE(t_field), POINTER :: f_theta(:)
@@ -139,8 +131,6 @@
   
   SUBROUTINE compute_theta2theta_rhodz(ps,theta, theta_rhodz,offset)
-  USE icosa
   USE disvert_mod
   USE omp_para
-  IMPLICIT NONE
     REAL(rstd),INTENT(IN) :: ps(iim*jjm)
     REAL(rstd),INTENT(IN) :: theta(iim*jjm,llm)
@@ -166,8 +156,6 @@
 
   SUBROUTINE compute_theta_rhodz2theta(ps,theta_rhodz,theta,offset)
-  USE icosa
   USE disvert_mod
   USE omp_para
-  IMPLICIT NONE
     REAL(rstd),INTENT(IN) :: ps(iim*jjm)
     REAL(rstd),INTENT(IN) :: theta_rhodz(iim*jjm,llm)
@@ -198,9 +186,6 @@
 
   SUBROUTINE compute_theta_rhodz2temperature(p,theta_rhodz,temp,offset)
-  USE icosa
-  USE pression_mod
   USE exner_mod
   USE omp_para
-  IMPLICIT NONE
     REAL(rstd),INTENT(IN) :: p(iim*jjm,llm+1)
     REAL(rstd),INTENT(IN) :: theta_rhodz(iim*jjm,llm)
@@ -227,9 +212,6 @@
 
   SUBROUTINE compute_temperature2theta_rhodz(p,temp,theta_rhodz,offset)
-  USE icosa
-  USE pression_mod
   USE exner_mod
   USE omp_para
-  IMPLICIT NONE
     REAL(rstd),INTENT(IN)  :: p(iim*jjm,llm+1)
     REAL(rstd),INTENT(OUT) :: theta_rhodz(iim*jjm,llm)
Index: codes/icosagcm/devel/src/dissip/nudging_mod.f90
===================================================================
--- codes/icosagcm/devel/src/dissip/nudging_mod.f90	(revision 912)
+++ codes/icosagcm/devel/src/dissip/nudging_mod.f90	(revision 913)
@@ -147,5 +147,4 @@
     USE transfert_mod
     USE time_mod
-    USE pression_mod
     REAL(rstd), INTENT(IN):: tt
     TYPE(t_field),POINTER :: f_ps(:)
Index: codes/icosagcm/devel/src/dissip/sponge.f90
===================================================================
--- codes/icosagcm/devel/src/dissip/sponge.f90	(revision 912)
+++ codes/icosagcm/devel/src/dissip/sponge.f90	(revision 913)
@@ -89,5 +89,4 @@
   USE icosa
   USE theta2theta_rhodz_mod
-  USE pression_mod
   USE exner_mod
   USE geopotential_mod
Index: codes/icosagcm/devel/src/initial/etat0_academic.f90
===================================================================
--- codes/icosagcm/devel/src/initial/etat0_academic.f90	(revision 912)
+++ codes/icosagcm/devel/src/initial/etat0_academic.f90	(revision 913)
@@ -76,5 +76,5 @@
   USE icosa
   USE disvert_mod
-  USE pression_mod
+  USE compute_diagnostics_mod, ONLY : compute_pression
   USE exner_mod
   USE geopotential_mod
Index: codes/icosagcm/devel/src/initial/etat0_database.f90
===================================================================
--- codes/icosagcm/devel/src/initial/etat0_database.f90	(revision 912)
+++ codes/icosagcm/devel/src/initial/etat0_database.f90	(revision 913)
@@ -1,3 +1,4 @@
 MODULE etat0_database_mod
+  IMPLICIT NONE
 
 
@@ -7,5 +8,4 @@
   USE xios_mod
   USE omp_para
-  IMPLICIT NONE
   
     IF (is_omp_master) THEN
@@ -27,7 +27,6 @@
   USE theta2theta_rhodz_mod
   USE qsat_mod
-  USE pression_mod
+  USE compute_pression_mod, ONLY : pression
   USE omp_para
-  IMPLICIT NONE
     TYPE(t_field),POINTER :: f_ps(:)
     TYPE(t_field),POINTER :: f_phis(:)
Index: codes/icosagcm/devel/src/kernels_unst/theta.k90
===================================================================
--- codes/icosagcm/devel/src/kernels_unst/theta.k90	(revision 912)
+++ codes/icosagcm/devel/src/kernels_unst/theta.k90	(revision 913)
@@ -17,5 +17,6 @@
          !DIR$ SIMD
          DO l = 1, llm
-            ! FIXME : formula below (used in DYNAMICO) is for dak, dbk based on pressure rather than mass
+            ! FIXME : formula below (used in DYNAMICO) is for dak, dbk based on
+            ! pressure rather than mass
             ! m = mass_dak(l,ij)+(mass_col(ij)*g+ptop)*mass_dbk(l,ij)
             ! rhodz(l,ij) = m/g
Index: codes/icosagcm/devel/src/physics/physics.f90
===================================================================
--- codes/icosagcm/devel/src/physics/physics.f90	(revision 912)
+++ codes/icosagcm/devel/src/physics/physics.f90	(revision 913)
@@ -284,5 +284,5 @@
   SUBROUTINE pack_physics(info, phis, geopot, ps, temp, ue, q, p, pk, ulon, ulat )
     USE wind_mod
-    USE pression_mod
+    USE compute_diagnostics_mod
     USE theta2theta_rhodz_mod
     USE exner_mod
Index: codes/icosagcm/devel/src/physics/physics_lmdz_generic.F90
===================================================================
--- codes/icosagcm/devel/src/physics/physics_lmdz_generic.F90	(revision 912)
+++ codes/icosagcm/devel/src/physics/physics_lmdz_generic.F90	(revision 913)
@@ -461,5 +461,4 @@
     
     SUBROUTINE grid_icosa_to_physics
-    USE pression_mod
     USE exner_mod
     USE theta2theta_rhodz_mod
Index: codes/icosagcm/devel/src/vertical/vertical_interp.f90
===================================================================
--- codes/icosagcm/devel/src/vertical/vertical_interp.f90	(revision 912)
+++ codes/icosagcm/devel/src/vertical/vertical_interp.f90	(revision 913)
@@ -1,4 +1,7 @@
 MODULE vertical_interp_mod
   USE icosa
+  USE omp_para
+  USE compute_diagnostics_mod
+  IMPLICIT NONE
   PRIVATE
   
@@ -10,17 +13,9 @@
 CONTAINS
 
-  SUBROUTINE init_vertical_interp
-  USE icosa
-  IMPLICIT NONE
-    
+  SUBROUTINE init_vertical_interp    
 !    CALL allocate_field(f_p,field_t,type_real,llm+1)
-    
   END SUBROUTINE init_vertical_interp
     
   SUBROUTINE vertical_interp(f_pmid,f_in,f_out,pval)
-  USE icosa
-  USE pression_mod
-  USE omp_para
-  IMPLICIT NONE
     TYPE(t_field),POINTER :: f_pmid(:)
     TYPE(t_field),POINTER :: f_in(:)
@@ -47,6 +42,4 @@
 
   SUBROUTINE compute_vertical_interp(pmid,in,out,pval)
-  USE omp_para
-  IMPLICIT NONE
     REAL(rstd),INTENT(IN) :: pmid(iim*jjm,llm)
     REAL(rstd),INTENT(IN) :: in(iim*jjm,llm)
Index: codes/icosagcm/devel/src/vertical/vertical_remap.f90
===================================================================
--- codes/icosagcm/devel/src/vertical/vertical_remap.f90	(revision 912)
+++ codes/icosagcm/devel/src/vertical/vertical_remap.f90	(revision 913)
@@ -1,5 +1,9 @@
 MODULE vertical_remap_mod
   USE icosa
-  
+  USE omp_para
+  IMPLICIT NONE
+  PRIVATE
+
+  PUBLIC :: vertical_remap
 
 CONTAINS
@@ -7,8 +11,5 @@
    
   SUBROUTINE vertical_remap(pressure_level,field_in,f_ps,field_out)
-  USE icosa
-  USE pression_mod
-  USE omp_para
-  IMPLICIT NONE
+    USE compute_pression_mod, ONLY : pression
     REAL(rstd), INTENT(IN) :: pressure_level(:)
     TYPE(t_field),POINTER :: field_in(:)
@@ -39,6 +40,4 @@
 
   SUBROUTINE compute_vertical_remap(pressure_level,in,p,out)
-  USE omp_para
-  IMPLICIT NONE
     REAL(rstd),INTENT(IN)  :: pressure_level(:)
     REAL(rstd),INTENT(IN)  :: in(:,:)
