Index: codes/icosagcm/devel/arch/arch-GCC_LINUX.fcm
===================================================================
--- codes/icosagcm/devel/arch/arch-GCC_LINUX.fcm	(revision 1027)
+++ codes/icosagcm/devel/arch/arch-GCC_LINUX.fcm	(revision 1027)
@@ -0,0 +1,15 @@
+%COMPILER            mpif90
+%LINK                mpif90
+%FPP                 cpp
+%AR                  ar
+%MAKE                gmake
+%FPP_FLAGS           -P
+%FPP_DEF             KEY_NONE CPP_NETCDF4
+%BASE_FFLAGS         -fPIC -fdefault-real-8 -fdefault-double-8 -ffree-line-length-none
+%PROD_FFLAGS         -O3 -fcheck=array-temps
+%DEV_FFLAGS          -p -g -O 
+%DEBUG_FFLAGS        -p -g  -fbacktrace -fcheck=all
+%MPI_FFLAGS
+%OMP_FFLAGS          -fopenmp
+%BASE_LD             -llapack
+%OMP_LD              -fopenmp
Index: codes/icosagcm/devel/arch/arch-GCC_LINUX.path
===================================================================
--- codes/icosagcm/devel/arch/arch-GCC_LINUX.path	(revision 1027)
+++ codes/icosagcm/devel/arch/arch-GCC_LINUX.path	(revision 1027)
@@ -0,0 +1,2 @@
+NETCDF_LIB="-lnetcdf -lnetcdff"
+XIOS_LIBDIR="-lxios -lstdc++"
Index: codes/icosagcm/devel/src/diagnostics/compute_diagnostics.f90
===================================================================
--- codes/icosagcm/devel/src/diagnostics/compute_diagnostics.f90	(revision 1026)
+++ codes/icosagcm/devel/src/diagnostics/compute_diagnostics.f90	(revision 1027)
@@ -5,7 +5,4 @@
   PRIVATE
 
-  ! fake array dimensions, for interfaces
-  INTEGER, PARAMETER :: iim_jjm_i=1, iim_jjm_u=1, iim_jjm_v=1, llm_=1, llm1=1, nqdyn_=1
-
   INTERFACE
 
@@ -13,6 +10,6 @@
       IMPORT
       LOGICAL, INTENT(IN) :: flag
-      REAL(rstd),INTENT(IN)  :: ps(iim_jjm_i)
-      REAL(rstd),INTENT(OUT) :: rhodz(iim_jjm_i,llm_)
+      REAL(rstd),INTENT(IN)  :: ps(:)
+      REAL(rstd),INTENT(INOUT) :: rhodz(:,:)
     END SUBROUTINE comp_rhodz
 
@@ -20,28 +17,28 @@
       IMPORT
       INTEGER, INTENT(IN) :: offset
-      REAL(rstd), INTENT(IN) :: ps(iim_jjm_i)
-      REAL(rstd), INTENT(OUT) :: p(iim_jjm_i,llm_)
+      REAL(rstd), INTENT(IN) :: ps(:)
+      REAL(rstd), INTENT(OUT) :: p(:,:)
     END SUBROUTINE comp_pression
 
     SUBROUTINE comp_temperature(pmid,q,temp)
       IMPORT
-      REAL(rstd),INTENT(IN)    :: pmid(iim_jjm_i, llm_)
-      REAL(rstd),INTENT(IN)    :: q(iim_jjm_i, llm_, nqdyn_)
-      REAL(rstd),INTENT(INOUT) :: temp(iim_jjm_i, llm_)
+      REAL(rstd),INTENT(IN)    :: pmid(:,:)
+      REAL(rstd),INTENT(IN)    :: q(:,:,:)
+      REAL(rstd),INTENT(INOUT) :: temp(:,:)
     END SUBROUTINE comp_temperature
 
     SUBROUTINE comp_hydro_press(rhodz, theta_rhodz, ps, p)
       IMPORT
-      REAL(rstd),INTENT(IN)  :: rhodz(iim_jjm_i, llm_)
-      REAL(rstd),INTENT(IN)  :: theta_rhodz(iim_jjm_i, llm_, nqdyn_)
-      REAL(rstd),INTENT(OUT) :: ps(iim_jjm_i)
-      REAL(rstd),INTENT(OUT) :: p(iim_jjm_i, llm_)
+      REAL(rstd),INTENT(IN)  :: rhodz(:,:)
+      REAL(rstd),INTENT(IN)  :: theta_rhodz(:,:,:)
+      REAL(rstd),INTENT(OUT) :: ps(:)
+      REAL(rstd),INTENT(OUT) :: p(:,:)
     END SUBROUTINE comp_hydro_press
 
     SUBROUTINE comp_vert_interp(pmid,in,out,pval)
       IMPORT
-      REAL(rstd),INTENT(IN) :: pmid(iim_jjm_i, llm_)
-      REAL(rstd),INTENT(IN) :: in(iim_jjm_i, llm_)
-      REAL(rstd),INTENT(OUT):: out(iim_jjm_i)
+      REAL(rstd),INTENT(IN) :: pmid(:,:)
+      REAL(rstd),INTENT(IN) :: in(:,:)
+      REAL(rstd),INTENT(OUT):: out(:)
       REAL(rstd),INTENT(IN) :: pval
     END SUBROUTINE comp_vert_interp
Index: codes/icosagcm/devel/src/diagnostics/compute_pression.F90
===================================================================
--- codes/icosagcm/devel/src/diagnostics/compute_pression.F90	(revision 1026)
+++ codes/icosagcm/devel/src/diagnostics/compute_pression.F90	(revision 1027)
@@ -109,4 +109,46 @@
   END SUBROUTINE hydrostatic_pressure
 
+!-------------- Wrappers for F2008 conformity -----------------
+
+  SUBROUTINE compute_pression_hex(ps,p,offset)
+    REAL(rstd),INTENT(IN) :: ps(:)
+    REAL(rstd),INTENT(OUT) :: p(:,:)
+    INTEGER,INTENT(IN) :: offset
+    CALL compute_pression_hex_(ps,p,offset)
+  END SUBROUTINE compute_pression_hex
+
+  SUBROUTINE compute_pression_unst(ps,p,offset)
+    REAL(rstd),INTENT(IN) :: ps(:)
+    REAL(rstd),INTENT(OUT) :: p(:,:)
+    INTEGER,INTENT(IN) :: offset
+    CALL compute_pression_unst_(ps,p,offset)
+  END SUBROUTINE compute_pression_unst
+
+  SUBROUTINE compute_pression_mid_hex(ps,p,offset)
+    REAL(rstd),INTENT(IN) :: ps(:)
+    REAL(rstd),INTENT(OUT) :: p(:,:)
+    INTEGER,INTENT(IN) :: offset
+    CALL compute_pression_mid_hex_(ps,p,offset)
+  END SUBROUTINE compute_pression_mid_hex
+
+  SUBROUTINE compute_pression_mid_unst(ps,p,offset)
+    REAL(rstd),INTENT(IN) :: ps(:)
+    REAL(rstd),INTENT(OUT) :: p(:,:)
+    INTEGER,INTENT(IN) :: offset
+    CALL compute_pression_mid_unst_(ps,p,offset)
+  END SUBROUTINE compute_pression_mid_unst
+
+  SUBROUTINE compute_hydrostatic_pressure_hex(rhodz, theta_rhodz, ps, p)
+    REAL(rstd),INTENT(IN)  :: rhodz(:,:), theta_rhodz(:,:,:)
+    REAL(rstd),INTENT(OUT) :: ps(:), p(:,:)
+    CALL compute_hydrostatic_pressure_hex_(rhodz, theta_rhodz, ps, p)
+  END SUBROUTINE compute_hydrostatic_pressure_hex
+
+  SUBROUTINE compute_hydrostatic_pressure_unst(rhodz, theta_rhodz, ps, p)
+    REAL(rstd),INTENT(IN)  :: rhodz(:,:), theta_rhodz(:,:,:)
+    REAL(rstd),INTENT(OUT) :: ps(:), p(:,:)
+    CALL compute_hydrostatic_pressure_unst_(rhodz, theta_rhodz, ps, p)
+  END SUBROUTINE compute_hydrostatic_pressure_unst
+  
 !------------- hexagonal-mesh compute kernels --------
 
@@ -114,5 +156,5 @@
 #define BP(ij,l) bp(l)
 
-  SUBROUTINE compute_pression_hex(ps,p,offset)
+  SUBROUTINE compute_pression_hex_(ps,p,offset)
     REAL(rstd),INTENT(IN) :: ps(iim*jjm)
     REAL(rstd),INTENT(OUT) :: p(iim*jjm,llm+1)
@@ -120,7 +162,7 @@
     INTEGER :: ij,l
 #include "../kernels_hex/compute_pression.k90"
-  END SUBROUTINE compute_pression_hex
-  
-  SUBROUTINE compute_pression_mid_hex(ps,pmid,offset)
+  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)
@@ -128,10 +170,10 @@
     INTEGER :: ij,l
 #include "../kernels_hex/compute_pmid.k90"
-  END SUBROUTINE compute_pression_mid_hex
+  END SUBROUTINE compute_pression_mid_hex_
 
 #undef AP
 #undef BP
 
-  SUBROUTINE compute_hydrostatic_pressure_hex(rhodz, theta_rhodz, ps, pk)
+  SUBROUTINE compute_hydrostatic_pressure_hex_(rhodz, theta_rhodz, ps, pk)
     REAL(rstd),INTENT(IN)  :: rhodz(iim*jjm,llm) ! mass per unit surface in each model level
     REAL(rstd),INTENT(IN)  :: theta_rhodz(iim*jjm,llm, nqdyn) ! dynamical tracers (theta/entropy)
@@ -143,5 +185,5 @@
 #include "../kernels_hex/compute_hydrostatic_pressure.k90"
     !$OMP BARRIER
-  END SUBROUTINE compute_hydrostatic_pressure_hex
+  END SUBROUTINE compute_hydrostatic_pressure_hex_
 
 !----------- unstructured-mesh compute kernels --------
@@ -150,5 +192,5 @@
 #define BP(l,ij) bp(l)
   
-  SUBROUTINE compute_pression_unst(ps, p, offset)
+  SUBROUTINE compute_pression_unst_(ps, p, offset)
     FIELD_PS,     INTENT(IN)  :: ps
     FIELD_GEOPOT, INTENT(OUT) :: p
@@ -156,7 +198,7 @@
     DECLARE_INDICES
 #include "../kernels_unst/compute_pression.k90"
-  END SUBROUTINE compute_pression_unst
-
-  SUBROUTINE compute_pression_mid_unst(ps, pmid, offset)
+  END SUBROUTINE compute_pression_unst_
+
+  SUBROUTINE compute_pression_mid_unst_(ps, pmid, offset)
     FIELD_PS,   INTENT(IN)  :: ps
     FIELD_MASS, INTENT(OUT) :: pmid
@@ -164,10 +206,10 @@
     DECLARE_INDICES
 #include "../kernels_unst/compute_pmid.k90"
-  END SUBROUTINE compute_pression_mid_unst
+  END SUBROUTINE compute_pression_mid_unst_
 
 #undef AP
 #undef BP
 
-  SUBROUTINE compute_hydrostatic_pressure_unst(rhodz, theta_rhodz, ps, pk)
+  SUBROUTINE compute_hydrostatic_pressure_unst_(rhodz, theta_rhodz, ps, pk)
     FIELD_MASS,  INTENT(IN)  :: rhodz
     FIELD_THETA, INTENT(IN)  :: theta_rhodz
@@ -176,5 +218,5 @@
     DECLARE_INDICES
 #include "../kernels_unst/compute_hydrostatic_pressure.k90"
-  END SUBROUTINE compute_hydrostatic_pressure_unst
+  END SUBROUTINE compute_hydrostatic_pressure_unst_
   
 
Index: codes/icosagcm/devel/src/diagnostics/compute_rhodz.F90
===================================================================
--- codes/icosagcm/devel/src/diagnostics/compute_rhodz.F90	(revision 1026)
+++ codes/icosagcm/devel/src/diagnostics/compute_rhodz.F90	(revision 1027)
@@ -1,3 +1,4 @@
 MODULE compute_rhodz_mod
+  USE icosa, ONLY : rstd
   USE earth_const, ONLY : g
   USE disvert_mod, ONLY : ap, bp
@@ -41,5 +42,24 @@
 #endif END_DYSL
 
+!-------------- Wrappers for F2008 conformity -----------------
+!--------------------------------------------------------------
+
+  SUBROUTINE compute_rhodz_hex(comp, ps, rhodz)
+    LOGICAL, INTENT(IN) :: comp ! .TRUE. to compute, .FALSE. to check
+    REAL(rstd), INTENT(IN) :: ps(:)
+    REAL(rstd), INTENT(INOUT) :: rhodz(:,:)
+    CALL compute_rhodz_hex_(comp, ps, rhodz)
+  END SUBROUTINE compute_rhodz_hex
+
   SUBROUTINE compute_rhodz_unst(comp, ps, rhodz)
+    LOGICAL, INTENT(IN) :: comp ! .TRUE. to compute, .FALSE. to check
+    REAL(rstd), INTENT(IN) :: ps(:)
+    REAL(rstd), INTENT(INOUT) :: rhodz(:,:)
+    CALL compute_rhodz_unst_(comp, ps, rhodz)
+  END SUBROUTINE compute_rhodz_unst
+
+!--------------------------------------------------------------
+
+  SUBROUTINE compute_rhodz_unst_(comp, ps, rhodz)
     USE data_unstructured_mod, ONLY : primal_num
     LOGICAL, INTENT(IN)  :: comp
@@ -53,7 +73,7 @@
 #undef AP
 #undef BP
-  END SUBROUTINE compute_rhodz_unst
+  END SUBROUTINE compute_rhodz_unst_
   
-  SUBROUTINE compute_rhodz_hex(comp, ps, rhodz)
+  SUBROUTINE compute_rhodz_hex_(comp, ps, rhodz)
     USE icosa
     USE omp_para
@@ -68,5 +88,5 @@
 #undef AP
 #undef BP
-  END SUBROUTINE compute_rhodz_hex
+  END SUBROUTINE compute_rhodz_hex_
 
   SUBROUTINE compute_rhodz_handmade(comp, ps, rhodz)
Index: codes/icosagcm/devel/src/diagnostics/compute_temperature.F90
===================================================================
--- codes/icosagcm/devel/src/diagnostics/compute_temperature.F90	(revision 1026)
+++ codes/icosagcm/devel/src/diagnostics/compute_temperature.F90	(revision 1027)
@@ -1,3 +1,4 @@
 MODULE compute_temperature_mod
+  USE prec, ONLY : rstd
   USE earth_const, ONLY : cpp, cppv, kappa, Rd, Rv, preff, Treff, nu, &
        caldyn_thermo, physics_thermo, thermo_fake_moist, &
@@ -96,6 +97,21 @@
 #endif END_DYSL
 
+!-------------- Wrappers for F2008 conformity -----------------
+
   SUBROUTINE compute_temperature_unst(pmid, q, temp)
-    USE prec
+    REAL(rstd),INTENT(IN)    :: pmid(:,:), q(:,:,:)
+    REAL(rstd),INTENT(INOUT) :: temp(:,:)
+    CALL compute_temperature_unst_(pmid, q, temp)
+  END SUBROUTINE compute_temperature_unst
+
+  SUBROUTINE compute_temperature_hex(pmid, q, temp)
+    REAL(rstd),INTENT(IN)    :: pmid(:,:), q(:,:,:)
+    REAL(rstd),INTENT(INOUT) :: temp(:,:)
+    CALL compute_temperature_hex_(pmid, q, temp)
+  END SUBROUTINE compute_temperature_hex
+
+!--------------------------------------------------------------
+
+  SUBROUTINE compute_temperature_unst_(pmid, q, temp)
     REAL(rstd),INTENT(IN)    :: pmid(llm, primal_num)
     REAL(rstd),INTENT(IN)    :: q(llm, primal_num, nqtot)
@@ -104,7 +120,7 @@
     DECLARE_INDICES
 #include "../kernels_unst/compute_temperature.k90"
-  END SUBROUTINE compute_temperature_unst
+  END SUBROUTINE compute_temperature_unst_
 
-  SUBROUTINE compute_temperature_hex(pmid,q,temp)
+  SUBROUTINE compute_temperature_hex_(pmid,q,temp)
     USE icosa
     USE omp_para
@@ -116,5 +132,5 @@
     INTEGER :: ij,l
 #include "../kernels_hex/compute_temperature.k90"
-  END SUBROUTINE compute_temperature_hex
+  END SUBROUTINE compute_temperature_hex_
 
   SUBROUTINE compute_temperature_manual(pmid,q,temp)
Index: codes/icosagcm/devel/src/dynamics/compute_caldyn.f90
===================================================================
--- codes/icosagcm/devel/src/dynamics/compute_caldyn.f90	(revision 1026)
+++ codes/icosagcm/devel/src/dynamics/compute_caldyn.f90	(revision 1027)
@@ -11,60 +11,60 @@
     SUBROUTINE comp_pvort_only(u,rhodz,qu,qv, hv)
       IMPORT
-      REAL(rstd),INTENT(IN)  :: u(iim_jjm_i, llm_)
-      REAL(rstd),INTENT(INOUT) :: rhodz(iim_jjm_i, llm_)
-      REAL(rstd),INTENT(OUT) :: qu(iim_jjm_u, llm_)
-      REAL(rstd),INTENT(OUT) :: qv(iim_jjm_v, llm_)
-      REAL(rstd),INTENT(OUT) :: hv(iim_jjm_v, llm_)
+      REAL(rstd), INTENT(IN)    :: u(:,:)
+      REAL(rstd), INTENT(INOUT) :: rhodz(:,:)
+      REAL(rstd), INTENT(OUT)   :: qu(:,:)
+      REAL(rstd), INTENT(OUT)   :: qv(:,:)
+      REAL(rstd), INTENT(OUT)   :: hv(:,:)
     END SUBROUTINE comp_pvort_only
 
     SUBROUTINE comp_theta(mass_col,theta_rhodz, rhodz,theta)
       IMPORT
-      REAL(rstd),INTENT(IN)    :: mass_col(iim_jjm_i)
-      REAL(rstd),INTENT(IN)    :: theta_rhodz(iim_jjm_i, llm_, nqdyn_)
-      REAL(rstd),INTENT(INOUT) :: rhodz(iim_jjm_i, llm_)
-      REAL(rstd),INTENT(OUT)   :: theta(iim_jjm_i, llm_, nqdyn_)
+      REAL(rstd), INTENT(IN)    :: mass_col(:)
+      REAL(rstd), INTENT(IN)    :: theta_rhodz(:,:,:)
+      REAL(rstd), INTENT(INOUT) :: rhodz(:,:)
+      REAL(rstd), INTENT(OUT)   :: theta(:,:,:)
     END SUBROUTINE comp_theta
 
     SUBROUTINE comp_geopot(rhodz,theta, ps,pk,geopot) 
       IMPORT
-      REAL(rstd),INTENT(IN)    :: rhodz(iim_jjm_i, llm_)         ! rho*dz = mass per unit surface in each full model level
-      REAL(rstd),INTENT(IN)    :: theta(iim_jjm_i, llm_, nqdyn_) ! active scalars : theta/entropy, moisture, ...
-      REAL(rstd),INTENT(INOUT) :: ps(iim_jjm_i)                  ! surface pressure
-      REAL(rstd),INTENT(OUT)   :: pk(iim_jjm_i, llm_)            ! Exner function (compressible) /Lagrange multiplier (Boussinesq)
-      REAL(rstd),INTENT(INOUT) :: geopot(iim_jjm_i, llm1)        ! geopotential
+      REAL(rstd), INTENT(IN)    :: rhodz(:,:)    ! rho*dz = mass per unit surface in each full model level
+      REAL(rstd), INTENT(IN)    :: theta(:,:,:)  ! active scalars : theta/entropy, moisture, ...
+      REAL(rstd), INTENT(INOUT) :: ps(:)         ! surface pressure
+      REAL(rstd), INTENT(OUT)   :: pk(:,:)       ! Exner function (compressible) /Lagrange multiplier (Boussinesq)
+      REAL(rstd), INTENT(INOUT) :: geopot(:,:)   ! geopotential
     END SUBROUTINE comp_geopot
 
     SUBROUTINE comp_caldyn_fast(tau,theta,geopot, pk,berni,du,u)
       IMPORT
-      REAL(rstd),INTENT(IN)    :: tau                ! "solve" u-tau*du/dt = rhs
-      REAL(rstd),INTENT(IN)    :: theta(iim_jjm_i, llm_, nqdyn_)
-      REAL(rstd),INTENT(IN)    :: geopot(iim_jjm_i, llm1)
-      REAL(rstd),INTENT(INOUT) :: pk(iim_jjm_i, llm_)
-      REAL(rstd),INTENT(INOUT) :: berni(iim_jjm_i, llm_)  ! partial Bernoulli function
-      REAL(rstd),INTENT(INOUT) :: du(iim_jjm_u, llm_)
-      REAL(rstd),INTENT(INOUT) :: u(iim_jjm_u, llm_)   ! INOUT if tau>0
+      REAL(rstd), INTENT(IN)    :: tau           ! "solve" u-tau*du/dt = rhs
+      REAL(rstd), INTENT(IN)    :: theta(:,:,:)
+      REAL(rstd), INTENT(IN)    :: geopot(:,:)
+      REAL(rstd), INTENT(INOUT) :: pk(:,:)
+      REAL(rstd), INTENT(INOUT) :: berni(:,:)    ! partial Bernoulli function
+      REAL(rstd), INTENT(INOUT) :: du(:,:)
+      REAL(rstd), INTENT(INOUT) :: u(:,:)        ! INOUT if tau>0
     END SUBROUTINE comp_caldyn_fast
 
     SUBROUTINE comp_caldyn_slow_hydro(zero, u,rhodz,hv,Kv, berni, hflux,du)
       IMPORT
-      LOGICAL, INTENT(IN) :: zero
-      REAL(rstd),INTENT(IN)  :: u(iim_jjm_u, llm_)    ! prognostic "velocity"
-      REAL(rstd),INTENT(IN)  :: rhodz(iim_jjm_i, llm_)
-      REAL(rstd),INTENT(IN)  :: hv(iim_jjm_v, llm_)   ! height/mass averaged to vertices
-      REAL(rstd),INTENT(IN)  :: Kv(iim_jjm_v, llm_)   ! kinetic energy at vertices
-      REAL(rstd), INTENT(OUT) :: berni(iim_jjm_i, llm_)  ! Bernoulli function
-      REAL(rstd),INTENT(OUT) :: hflux(iim_jjm_u, llm_) ! hflux in kg/s 
-      REAL(rstd),INTENT(INOUT) :: du(iim_jjm_u, llm_)
+      LOGICAL,    INTENT(IN)    :: zero
+      REAL(rstd), INTENT(IN)    :: u(:,:)      ! prognostic "velocity"
+      REAL(rstd), INTENT(IN)    :: rhodz(:,:)
+      REAL(rstd), INTENT(IN)    :: hv(:,:)     ! height/mass averaged to vertices
+      REAL(rstd), INTENT(IN)    :: Kv(:,:)     ! kinetic energy at vertices
+      REAL(rstd), INTENT(OUT)   :: berni(:,:)  ! Bernoulli function
+      REAL(rstd), INTENT(OUT)   :: hflux(:,:)  ! hflux in kg/s 
+      REAL(rstd), INTENT(INOUT) :: du(:,:)
     END SUBROUTINE comp_caldyn_slow_hydro
     
     SUBROUTINE comp_caldyn_coriolis(hflux,theta,qu, Ftheta, convm,dtheta_rhodz,du)
       IMPORT
-      REAL(rstd),INTENT(IN)    :: hflux(iim_jjm_u, llm_)  ! hflux in kg/s
-      REAL(rstd),INTENT(IN)    :: theta(iim_jjm_i, llm_, nqdyn_) ! active scalars
-      REAL(rstd),INTENT(IN)    :: qu(iim_jjm_u, llm_)
-      REAL(rstd), INTENT(OUT)  :: Ftheta(iim_jjm_u, llm_)  ! potential temperature flux
-      REAL(rstd),INTENT(OUT)   :: convm(iim_jjm_i, llm_)  ! mass flux convergence
-      REAL(rstd),INTENT(OUT)   :: dtheta_rhodz(iim_jjm_i, llm_, nqdyn_)
-      REAL(rstd),INTENT(INOUT) :: du(iim_jjm_u, llm_)
+      REAL(rstd), INTENT(IN)    :: hflux(:,:)   ! hflux in kg/s
+      REAL(rstd), INTENT(IN)    :: theta(:,:,:) ! active scalars
+      REAL(rstd), INTENT(IN)    :: qu(:,:)
+      REAL(rstd), INTENT(OUT)   :: Ftheta(:,:)  ! potential temperature flux
+      REAL(rstd), INTENT(OUT)   :: convm(:,:)   ! mass flux convergence
+      REAL(rstd), INTENT(OUT)   :: dtheta_rhodz(:,:,:)
+      REAL(rstd), INTENT(INOUT) :: du(:,:)
     END SUBROUTINE comp_caldyn_coriolis
 
Index: codes/icosagcm/devel/src/dynamics/compute_caldyn_Coriolis.F90
===================================================================
--- codes/icosagcm/devel/src/dynamics/compute_caldyn_Coriolis.F90	(revision 1026)
+++ codes/icosagcm/devel/src/dynamics/compute_caldyn_Coriolis.F90	(revision 1027)
@@ -74,5 +74,23 @@
 #endif END_DYSL
 
-  SUBROUTINE compute_caldyn_coriolis_unst(hflux,theta,qu, Ftheta, convm,dtheta_rhodz,du)
+!-------------- Wrappers for F2008 conformity -----------------
+
+    SUBROUTINE compute_caldyn_coriolis_unst(hflux,theta,qu, Ftheta, convm,dtheta_rhodz,du)
+      REAL(rstd), INTENT(IN)    :: hflux(:,:), theta(:,:,:), qu(:,:)
+      REAL(rstd), INTENT(OUT)   :: Ftheta(:,:), convm(:,:), dtheta_rhodz(:,:,:)
+      REAL(rstd), INTENT(INOUT) :: du(:,:)
+      CALL compute_caldyn_coriolis_unst_(hflux,theta,qu, Ftheta, convm,dtheta_rhodz,du)
+    END SUBROUTINE compute_caldyn_coriolis_unst
+
+    SUBROUTINE compute_caldyn_coriolis_hex(hflux,theta,qu, Ftheta, convm,dtheta_rhodz,du)
+      REAL(rstd), INTENT(IN)    :: hflux(:,:), theta(:,:,:), qu(:,:)
+      REAL(rstd), INTENT(OUT)   :: Ftheta(:,:), convm(:,:), dtheta_rhodz(:,:,:)
+      REAL(rstd), INTENT(INOUT) :: du(:,:)
+      CALL compute_caldyn_coriolis_hex_(hflux,theta,qu, Ftheta, convm,dtheta_rhodz,du)
+    END SUBROUTINE compute_caldyn_coriolis_hex
+
+!--------------------------------------------------------------
+
+  SUBROUTINE compute_caldyn_coriolis_unst_(hflux,theta,qu, Ftheta, convm,dtheta_rhodz,du)
     USE ISO_C_BINDING, only : C_DOUBLE, C_FLOAT
     USE data_unstructured_mod, ONLY : enter_trace, exit_trace, &
@@ -89,7 +107,7 @@
 #include "../kernels_unst/coriolis.k90"
     STOP_TRACE
-  END SUBROUTINE compute_caldyn_coriolis_unst
-
-  SUBROUTINE compute_caldyn_Coriolis_hex(hflux,theta,qu, Ftheta, convm,dtheta_rhodz,du)
+  END SUBROUTINE compute_caldyn_coriolis_unst_
+
+  SUBROUTINE compute_caldyn_Coriolis_hex_(hflux,theta,qu, Ftheta, convm,dtheta_rhodz,du)
     USE icosa
     REAL(rstd),INTENT(IN)    :: hflux(3*iim*jjm,llm)  ! hflux in kg/s
@@ -107,5 +125,5 @@
 
     CALL trace_end("compute_caldyn_Coriolis")
-  END SUBROUTINE compute_caldyn_Coriolis_hex
+  END SUBROUTINE compute_caldyn_Coriolis_hex_
 
   SUBROUTINE compute_caldyn_Coriolis_manual(hflux,theta,qu, Ftheta, convm,dtheta_rhodz,du)
Index: codes/icosagcm/devel/src/dynamics/compute_caldyn_fast.F90
===================================================================
--- codes/icosagcm/devel/src/dynamics/compute_caldyn_fast.F90	(revision 1026)
+++ codes/icosagcm/devel/src/dynamics/compute_caldyn_fast.F90	(revision 1027)
@@ -68,5 +68,21 @@
 #endif END_DYSL
 
+!-------------- Wrappers for F2008 conformity -----------------
+
+  SUBROUTINE compute_caldyn_fast_hex(tau,theta,geopot, pk,berni,du,u)
+    REAL(rstd),INTENT(IN)    :: tau, theta(:,:,:), geopot(:,:)
+    REAL(rstd),INTENT(INOUT) :: pk(:,:), berni(:,:), du(:,:), u(:,:)
+    CALL compute_caldyn_fast_hex_(tau,theta,geopot, pk,berni,du,u)
+  END SUBROUTINE compute_caldyn_fast_hex
+
   SUBROUTINE compute_caldyn_fast_unst(tau,theta,geopot, pk,berni,du,u)
+    REAL(rstd),INTENT(IN)    :: tau, theta(:,:,:), geopot(:,:)
+    REAL(rstd),INTENT(INOUT) :: pk(:,:), berni(:,:), du(:,:), u(:,:)
+    CALL compute_caldyn_fast_unst_(tau,theta,geopot, pk,berni,du,u)
+  END SUBROUTINE compute_caldyn_fast_unst
+
+!--------------------------------------------------------------
+
+  SUBROUTINE compute_caldyn_fast_unst_(tau,theta,geopot, pk,berni,du,u)
     USE ISO_C_BINDING, only : C_DOUBLE, C_FLOAT
     USE data_unstructured_mod, ONLY : enter_trace, exit_trace, &
@@ -84,7 +100,7 @@
 #include "../kernels_unst/caldyn_fast.k90"
     STOP_TRACE
-  END SUBROUTINE compute_caldyn_fast_unst
-
-  SUBROUTINE compute_caldyn_fast_hex(tau,theta,geopot, pk,berni,du,u)
+  END SUBROUTINE compute_caldyn_fast_unst_
+
+  SUBROUTINE compute_caldyn_fast_hex_(tau,theta,geopot, pk,berni,du,u)
     USE icosa
     REAL(rstd),INTENT(IN)    :: tau                ! "solve" u-tau*du/dt = rhs
@@ -104,5 +120,5 @@
     CALL trace_end("compute_caldyn_fast")
     
-  END SUBROUTINE compute_caldyn_fast_hex
+  END SUBROUTINE compute_caldyn_fast_hex_
 
   SUBROUTINE compute_caldyn_fast_manual(tau,theta,geopot, pk,berni,du,u)
Index: codes/icosagcm/devel/src/dynamics/compute_caldyn_slow_hydro.F90
===================================================================
--- codes/icosagcm/devel/src/dynamics/compute_caldyn_slow_hydro.F90	(revision 1026)
+++ codes/icosagcm/devel/src/dynamics/compute_caldyn_slow_hydro.F90	(revision 1027)
@@ -53,5 +53,25 @@
 #endif END_DYSL
 
+!-------------- Wrappers for F2008 conformity -----------------
+
+  SUBROUTINE compute_caldyn_slow_hydro_hex(zero, u,rhodz,hv,Kv, berni, hflux,du)
+    LOGICAL, INTENT(IN)      :: zero
+    REAL(rstd),INTENT(IN)    :: u(:,:), rhodz(:,:), hv(:,:), Kv(:,:)
+    REAL(rstd), INTENT(OUT)  :: berni(:,:), hflux(:,:)
+    REAL(rstd),INTENT(INOUT) :: du(:,:)
+    CALL compute_caldyn_slow_hydro_hex_(zero, u,rhodz,hv,Kv, berni, hflux,du)
+  END SUBROUTINE compute_caldyn_slow_hydro_hex
+
   SUBROUTINE compute_caldyn_slow_hydro_unst(zero, u,rhodz,hv,Kv, berni, hflux,du)
+    LOGICAL, INTENT(IN)      :: zero
+    REAL(rstd),INTENT(IN)    :: u(:,:), rhodz(:,:), hv(:,:), Kv(:,:)
+    REAL(rstd), INTENT(OUT)  :: berni(:,:), hflux(:,:)
+    REAL(rstd),INTENT(INOUT) :: du(:,:)
+    CALL compute_caldyn_slow_hydro_unst_(zero, u,rhodz,hv,Kv, berni, hflux,du)
+  END SUBROUTINE compute_caldyn_slow_hydro_unst
+
+!--------------------------------------------------------------
+
+  SUBROUTINE compute_caldyn_slow_hydro_unst_(zero, u,rhodz,hv,Kv, berni, hflux,du)
     USE ISO_C_BINDING, only : C_DOUBLE, C_FLOAT
     USE data_unstructured_mod, ONLY : enter_trace, exit_trace, &
@@ -66,7 +86,7 @@
 #include "../kernels_unst/caldyn_slow_hydro.k90"
     STOP_TRACE
-  END SUBROUTINE compute_caldyn_slow_hydro_unst
-
-  SUBROUTINE compute_caldyn_slow_hydro_hex(zero, u,rhodz,hv,Kv, berni, hflux,du)
+  END SUBROUTINE compute_caldyn_slow_hydro_unst_
+
+  SUBROUTINE compute_caldyn_slow_hydro_hex_(zero, u,rhodz,hv,Kv, berni, hflux,du)
     USE icosa
     USE caldyn_vars_mod
@@ -89,5 +109,5 @@
     CALL trace_end("compute_caldyn_slow_hydro")    
 
-  END SUBROUTINE compute_caldyn_slow_hydro_hex
+  END SUBROUTINE compute_caldyn_slow_hydro_hex_
 
   SUBROUTINE compute_caldyn_slow_hydro_manual(zero, u,rhodz,hv,Kv, berni, hflux,du)
Index: codes/icosagcm/devel/src/dynamics/compute_geopot.F90
===================================================================
--- codes/icosagcm/devel/src/dynamics/compute_geopot.F90	(revision 1026)
+++ codes/icosagcm/devel/src/dynamics/compute_geopot.F90	(revision 1027)
@@ -126,7 +126,24 @@
 #endif END_DYSL
 
+  !-------------- Wrappers for F2008 conformity -----------------
+  !--------------------------------------------------------------
+
+  SUBROUTINE compute_geopot_hex(rhodz,theta, ps,pk,geopot) 
+    REAL(rstd),INTENT(IN)    :: rhodz(:,:), theta(:,:,:) ! active scalars : theta/entropy, moisture, ...
+    REAL(rstd),INTENT(INOUT) :: ps(:), geopot(:,:)       ! geopotential
+    REAL(rstd),INTENT(OUT)   :: pk(:,:)       ! Exner function (compressible) /Lagrange multiplier (Boussinesq)
+    CALL compute_geopot_hex_(rhodz,theta, ps,pk,geopot)
+  END SUBROUTINE compute_geopot_hex
+
+  SUBROUTINE compute_geopot_unst(rhodz,theta, ps,pk,geopot) 
+    REAL(rstd),INTENT(IN)    :: rhodz(:,:), theta(:,:,:) ! active scalars : theta/entropy, moisture, ...
+    REAL(rstd),INTENT(INOUT) :: ps(:), geopot(:,:)       ! geopotential
+    REAL(rstd),INTENT(OUT)   :: pk(:,:)       ! Exner function (compressible) /Lagrange multiplier (Boussinesq)
+    CALL compute_geopot_unst_(rhodz,theta, ps,pk,geopot)
+  END SUBROUTINE compute_geopot_unst
+
   !**************************** Geopotential *****************************
 
-  SUBROUTINE compute_geopot_unst(rhodz,theta,ps,pk,geopot)
+  SUBROUTINE compute_geopot_unst_(rhodz,theta,ps,pk,geopot)
         USE ISO_C_BINDING, only : C_DOUBLE, C_FLOAT
     USE data_unstructured_mod, ONLY : enter_trace, exit_trace, &
@@ -142,7 +159,7 @@
 #include "../kernels_unst/compute_geopot.k90"
     STOP_TRACE
-  END SUBROUTINE compute_geopot_unst
+  END SUBROUTINE compute_geopot_unst_
   
-  SUBROUTINE compute_geopot_hex(rhodz,theta, ps,pk,geopot) 
+  SUBROUTINE compute_geopot_hex_(rhodz,theta, ps,pk,geopot) 
     REAL(rstd),INTENT(IN)    :: rhodz(iim*jjm,llm)
     REAL(rstd),INTENT(IN)    :: theta(iim*jjm,llm,nqdyn) ! active scalars : theta/entropy, moisture, ...
@@ -162,5 +179,5 @@
 
     CALL trace_end("compute_geopot")
-  END SUBROUTINE compute_geopot_hex
+  END SUBROUTINE compute_geopot_hex_
 
   SUBROUTINE compute_geopot_manual(rhodz,theta, ps,pk,geopot) 
Index: codes/icosagcm/devel/src/dynamics/compute_pvort_only.F90
===================================================================
--- codes/icosagcm/devel/src/dynamics/compute_pvort_only.F90	(revision 1026)
+++ codes/icosagcm/devel/src/dynamics/compute_pvort_only.F90	(revision 1027)
@@ -1,4 +1,5 @@
 MODULE compute_pvort_only_mod
   USE grid_param
+  USE prec, ONLY : rstd
   IMPLICIT NONE
   PRIVATE
@@ -36,5 +37,23 @@
 #endif END_DYSL
 
-  SUBROUTINE compute_pvort_only_unst(u,rhodz,qu,qv, hv_)
+!-------------- Wrappers for F2008 conformity -----------------
+
+  SUBROUTINE compute_pvort_only_unst(u,rhodz,qu,qv,hv_)
+    REAL(rstd),INTENT(IN)  :: u(:,:)
+    REAL(rstd),INTENT(INOUT) :: rhodz(:,:)
+    REAL(rstd),INTENT(OUT) :: qu(:,:), qv(:,:), hv_(:,:)
+    CALL compute_pvort_only_unst_(u,rhodz,qu,qv,hv_)
+  END SUBROUTINE compute_pvort_only_unst
+
+  SUBROUTINE compute_pvort_only_hex(u,rhodz,qu,qv,hv_)
+    REAL(rstd),INTENT(IN)  :: u(:,:)
+    REAL(rstd),INTENT(INOUT) :: rhodz(:,:)
+    REAL(rstd),INTENT(OUT) :: qu(:,:), qv(:,:), hv_(:,:)
+    CALL compute_pvort_only_hex_(u,rhodz,qu,qv,hv_)
+  END SUBROUTINE compute_pvort_only_hex
+
+!--------------------------------------------------------------
+
+  SUBROUTINE compute_pvort_only_unst_(u,rhodz,qu,qv, hv_)
     USE ISO_C_BINDING, only : C_DOUBLE, C_FLOAT
     USE geometry, ONLY : Riv2, Av, fv
@@ -51,7 +70,7 @@
 #include "../kernels_unst/pvort_only.k90"
     STOP_TRACE
-  END SUBROUTINE compute_pvort_only_unst
+  END SUBROUTINE compute_pvort_only_unst_
 
-  SUBROUTINE compute_pvort_only_hex(u,rhodz,qu,qv,hv_)
+  SUBROUTINE compute_pvort_only_hex_(u,rhodz,qu,qv,hv_)
     USE icosa
     USE trace, ONLY : trace_start, trace_end
@@ -108,5 +127,5 @@
     CALL trace_end("compute_pvort_only")
 
-  END SUBROUTINE compute_pvort_only_hex
+  END SUBROUTINE compute_pvort_only_hex_
 
 END MODULE compute_pvort_only_mod
Index: codes/icosagcm/devel/src/dynamics/compute_theta.F90
===================================================================
--- codes/icosagcm/devel/src/dynamics/compute_theta.F90	(revision 1026)
+++ codes/icosagcm/devel/src/dynamics/compute_theta.F90	(revision 1027)
@@ -1,3 +1,4 @@
 MODULE compute_theta_mod
+  USE prec, ONLY : rstd
   USE grid_param
   USE disvert_mod, ONLY : mass_dak, mass_dbk, caldyn_eta, eta_mass, ptop
@@ -71,5 +72,23 @@
 #endif END_DYSL
 
-  SUBROUTINE compute_theta_unst(mass_col,theta_rhodz, rhodz,theta)
+!-------------- Wrappers for F2008 conformity -----------------
+
+  SUBROUTINE compute_theta_unst(ps,theta_rhodz, rhodz,theta)
+    REAL(rstd),INTENT(IN)    :: ps(:), theta_rhodz(:,:,:)
+    REAL(rstd),INTENT(INOUT) :: rhodz(:,:)
+    REAL(rstd),INTENT(OUT)   :: theta(:,:,:)
+    CALL compute_theta_unst_(ps,theta_rhodz, rhodz,theta)
+  END SUBROUTINE compute_theta_unst
+
+  SUBROUTINE compute_theta_hex(ps,theta_rhodz, rhodz,theta)
+    REAL(rstd),INTENT(IN)    :: ps(:), theta_rhodz(:,:,:)
+    REAL(rstd),INTENT(INOUT) :: rhodz(:,:)
+    REAL(rstd),INTENT(OUT)   :: theta(:,:,:)
+    CALL compute_theta_hex_(ps,theta_rhodz, rhodz,theta)
+  END SUBROUTINE compute_theta_hex
+
+!--------------------------------------------------------------
+
+  SUBROUTINE compute_theta_unst_(mass_col,theta_rhodz, rhodz,theta)
     USE ISO_C_BINDING, only : C_DOUBLE, C_FLOAT
     USE data_unstructured_mod, ONLY : enter_trace, exit_trace, id_theta
@@ -86,7 +105,7 @@
 #undef MASS_DBK
     STOP_TRACE
-  END SUBROUTINE compute_theta_unst
+  END SUBROUTINE compute_theta_unst_
 
-  SUBROUTINE compute_theta_hex(mass_col,theta_rhodz, rhodz,theta)
+  SUBROUTINE compute_theta_hex_(mass_col,theta_rhodz, rhodz,theta)
     USE icosa
     USE trace, ONLY : trace_start, trace_end
@@ -105,5 +124,5 @@
 #undef MASS_DBK
     CALL trace_end("compute_theta")
-  END SUBROUTINE compute_theta_hex
+  END SUBROUTINE compute_theta_hex_
   
   SUBROUTINE compute_theta_manual(ps,theta_rhodz, rhodz,theta)
Index: codes/icosagcm/devel/src/vertical/vertical_interp.f90
===================================================================
--- codes/icosagcm/devel/src/vertical/vertical_interp.f90	(revision 1026)
+++ codes/icosagcm/devel/src/vertical/vertical_interp.f90	(revision 1027)
@@ -42,5 +42,21 @@
   END SUBROUTINE  vertical_interp
 
+!-------------- Wrappers for F2008 conformity -----------------
+
   SUBROUTINE compute_vertical_interp_hex(pmid,in,out,pval)
+    REAL(rstd),INTENT(IN) :: pmid(:,:), in(:,:), pval
+    REAL(rstd),INTENT(OUT):: out(:)
+    CALL compute_vertical_interp_hex_(pmid,in,out,pval)
+  END SUBROUTINE compute_vertical_interp_hex
+
+  SUBROUTINE compute_vertical_interp_unst(pmid,in,out,pval)
+    REAL(rstd),INTENT(IN) :: pmid(:,:), in(:,:), pval
+    REAL(rstd),INTENT(OUT):: out(:)
+    CALL compute_vertical_interp_unst_(pmid,in,out,pval)
+  END SUBROUTINE compute_vertical_interp_unst
+
+!--------------------------------------------------------------
+
+  SUBROUTINE compute_vertical_interp_hex_(pmid,in,out,pval)
     REAL(rstd),INTENT(IN) :: pmid(iim*jjm,llm)
     REAL(rstd),INTENT(IN) :: in(iim*jjm,llm)
@@ -61,7 +77,7 @@
 !$OMP BARRIER
 
-  END SUBROUTINE compute_vertical_interp_hex
+  END SUBROUTINE compute_vertical_interp_hex_
 
-  SUBROUTINE compute_vertical_interp_unst(pmid,in,out,pval)
+  SUBROUTINE compute_vertical_interp_unst_(pmid,in,out,pval)
     REAL(rstd),INTENT(IN) :: pmid(llm, primal_num)
     REAL(rstd),INTENT(IN) :: in(llm, primal_num)
@@ -76,5 +92,5 @@
 !$OMP END MASTER
 !$OMP BARRIER
-  END SUBROUTINE compute_vertical_interp_unst
+  END SUBROUTINE compute_vertical_interp_unst_
 
   PURE SUBROUTINE interp_1d(pmid,in,out,pval)
