Index: dynamico_lmdz/aquaplanet/ICOSA_LMDZ/src/phylmd/interface_icosa_lmdz.f90
===================================================================
--- dynamico_lmdz/aquaplanet/ICOSA_LMDZ/src/phylmd/interface_icosa_lmdz.f90	(revision 4131)
+++ dynamico_lmdz/aquaplanet/ICOSA_LMDZ/src/phylmd/interface_icosa_lmdz.f90	(revision 4132)
@@ -5,5 +5,5 @@
   
  
-  TYPE(t_message),SAVE :: req_u
+  TYPE(t_message),SAVE :: req_u, req_z
   TYPE(t_message),SAVE :: req_dps0, req_dulon0, req_dulat0, req_dTemp0, req_dq0
 
@@ -17,4 +17,6 @@
   TYPE(t_field),POINTER,SAVE :: f_ulon(:)    
   TYPE(t_field),POINTER,SAVE :: f_ulat(:)   
+  TYPE(t_field),POINTER,SAVE :: f_vort(:)   
+  TYPE(t_field),POINTER,SAVE :: f_vortc(:)   
   TYPE(t_field),POINTER,SAVE :: f_dulon(:)
   TYPE(t_field),POINTER,SAVE :: f_dulat(:)
@@ -81,4 +83,6 @@
     CALL allocate_field(f_ulon,field_t,type_real,llm,name="ulon_in")
     CALL allocate_field(f_ulat,field_t,type_real,llm,name="ulat_in")
+    CALL allocate_field(f_vort,field_z,type_real,llm,name="vort_in")
+    CALL allocate_field(f_vortc,field_t,type_real,llm,name="vortc_in")
     CALL allocate_field(f_dulon,field_t,type_real,llm,name="dulon_out")
     CALL allocate_field(f_dulat,field_t,type_real,llm,name="dulat_out")
@@ -423,4 +427,6 @@
   USE write_field_mod
   USE checksum_mod
+  USE vorticity_mod
+
 ! from LMDZ
   USE mod_phys_lmdz_omp_data, ONLY: klon_omp
@@ -444,4 +450,6 @@
     REAL(rstd),POINTER :: ulon(:,:)
     REAL(rstd),POINTER :: ulat(:,:)
+    REAL(rstd),POINTER :: vort(:,:)
+    REAL(rstd),POINTER :: vortc(:,:)
     REAL(rstd),POINTER :: dulon(:,:)
     REAL(rstd),POINTER :: dulat(:,:)
@@ -509,4 +517,5 @@
       first=.FALSE.
       CALL init_message(f_u,req_e1_vect,req_u)
+      CALL init_message(f_vort,req_z1_scal,req_z)
       ALLOCATE(ps_phy(klon_omp))
       ALLOCATE(p_phy(klon_omp,llm+1))
@@ -538,4 +547,16 @@
     
     CALL transfert_message(f_u,req_u)
+    DO ind=1,ndomain
+      IF (assigned_domain(ind)) THEN
+        CALL swap_dimensions(ind)
+        CALL swap_geometry(ind)
+        u=f_u(ind)
+        vort=f_vort(ind)
+        CALL compute_vorticity(u,vort)
+      ENDIF
+    ENDDO
+
+    CALL transfert_message(f_vort,req_z)
+
     
     DO ind=1,ndomain
@@ -559,4 +580,6 @@
         ulon=f_ulon(ind)
         ulat=f_ulat(ind)
+        vort=f_vort(ind)
+        vortc=f_vortc(ind)
             
         CALL grid_icosa_to_physics
@@ -582,4 +605,5 @@
 !    CALL writeField("q_in",f_q)
 !    CALL writeField("wflux_in",f_wflux)
+!     CALL writeField("vortc",f_vortc)
 
 !    CALL checksum(f_p)
@@ -599,4 +623,5 @@
     CALL transfer_icosa_to_lmdz(f_ulon   , ulon_phy )
     CALL transfer_icosa_to_lmdz(f_ulat   , ulat_phy)
+    CALL transfer_icosa_to_lmdz(f_vortc   , rot_phy)
     CALL transfer_icosa_to_lmdz(f_Temp   , Temp_phy)
     CALL transfer_icosa_to_lmdz(f_q      , q_phy)
@@ -611,5 +636,5 @@
  
     ! Ehouarn: rot_phy() not implemented!! Set it to zero for now
-    rot_phy(:,:)=0
+!    rot_phy(:,:)=0
     CALL physiq(klon_omp, llm, debut, lafin, dtphy, &
                 p_phy, p_layer_phy, phi_phy, phis_phy, presnivs, &
@@ -698,5 +723,4 @@
     REAL(rstd) :: uc(3)
     INTEGER :: i,j,ij,l
-    
 
 ! compute pression
@@ -809,4 +833,23 @@
     ENDDO
 
+
+! compute centered vorticity
+   
+    DO l=ll_begin,ll_end
+      DO j=jj_begin,jj_end
+        DO i=ii_begin,ii_end
+          ij=(j-1)*iim+i
+          vortc(ij,l) =  Riv(ij,vup)    * vort(ij+z_up,l)    + & 
+                         Riv(ij,vlup)  * vort(ij+z_lup,l)   + & 
+                         Riv(ij,vldown)* vort(ij+z_ldown,l) + & 
+                         Riv(ij,vdown) * vort(ij+z_down,l)  + & 
+                         Riv(ij,vrdown)* vort(ij+z_rdown,l) + & 
+                         Riv(ij,vrup)  * vort(ij+z_rup,l) 
+      ENDDO
+    ENDDO
+  ENDDO
+
+
+
 !$OMP BARRIER
     END SUBROUTINE grid_icosa_to_physics
