Index: trunk/LMDZ.COMMON/libf/dyn3d_common/dynetat0.F90
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3d_common/dynetat0.F90	(revision 2436)
+++ trunk/LMDZ.COMMON/libf/dyn3d_common/dynetat0.F90	(revision 2439)
@@ -329,6 +329,21 @@
   CHARACTER(LEN=*), INTENT(IN)  :: var
   REAL,             INTENT(OUT) :: v(:,:)
+  INTEGER :: j
   CALL err(NF90_INQ_VARID(fID,var,vID),"inq",var)
   CALL err(NF90_GET_VAR(fID,vID,v),"get",var)
+  ! Check that if on iip1 points along the longitude
+  ! values indeed perfectly match at end points
+  if (size(v,1)==iip1) then
+    do j=1,size(v,2)
+      if (v(1,j).ne.v(iip1,j)) then
+        ! tell the world
+        write(*,*) "Warning: longitudinal modulo discrepency for ",trim(var)
+        write(*,*) "j=",j," v(1,j)=",v(1,j)," v(iip1,j)=",v(iip1,j)
+        ! copy over value from v(1,j) to v(iip1,j)
+        write(*,*) "setting v(iip1,j)=v(1,j)"
+        v(iip1,j)=v(1,j)
+      endif ! of if (v(1,j).ne.v(iip1,j))
+    enddo ! of do j=1,size(v,2)
+  endif ! of if (size(v,1)==iip1)
 END SUBROUTINE get_var2
 
@@ -337,4 +352,5 @@
   REAL,             INTENT(OUT) :: v(:,:)
   INTEGER, INTENT(IN) :: indextime
+  INTEGER :: j
   corner(1)=1
   corner(2)=1
@@ -345,4 +361,18 @@
   CALL err(NF90_INQ_VARID(fID,var,vID),"inq",var)
   CALL err(NF90_GET_VAR(fID,vID,v,corner,edges),"get",var)
+  ! Check that if on iip1 points along the longitude
+  ! values indeed perfectly match at end points
+  if (size(v,1)==iip1) then
+    do j=1,size(v,2)
+      if (v(1,j).ne.v(iip1,j)) then
+        ! tell the world
+        write(*,*) "Warning: longitudinal modulo discrepency for ",trim(var)
+        write(*,*) "j=",j," v(1,j)=",v(1,j)," v(iip1,j)=",v(iip1,j)
+        ! copy over value from v(1,j) to v(iip1,j)
+        write(*,*) "setting v(iip1,j)=v(1,j)"
+        v(iip1,j)=v(1,j)
+      endif ! of if (v(1,j).ne.v(iip1,j))
+    enddo ! of do j=1,size(v,2)
+  endif ! of if (size(v,1)==iip1)
 END SUBROUTINE get_var2_t
 
@@ -359,4 +389,5 @@
   REAL,             INTENT(OUT) :: v(:,:,:)
   INTEGER, INTENT(IN) :: indextime
+  INTEGER :: j,k
   corner(1)=1
   corner(2)=1
@@ -369,4 +400,18 @@
   CALL err(NF90_INQ_VARID(fID,var,vID),"inq",var)
   CALL err(NF90_GET_VAR(fID,vID,v,corner,edges),"get",var)
+  ! Check that values indeed perfectly match at end points along longitude
+  do k=1,llm
+    do j=1,jjp1
+      if (v(1,j,k).ne.v(iip1,j,k)) then
+        ! tell the world
+        write(*,*) "Warning: longitudinal modulo discrepency for ",trim(var)
+        write(*,*) "j=",j," k=",k
+        write(*,*) " v(1,j,k)=",v(1,j,k)," v(iip1,j,k)=",v(iip1,j,k)
+        ! copy over value from v(1,j,k) to v(iip1,j,k)
+        write(*,*) "setting v(iip1,j,k)=v(1,j,k)"
+        v(iip1,j,k)=v(1,j,k)
+      endif ! of if (v(1,j,k).ne.v(iip1,j,k))
+    enddo ! of do j=1,jjp1
+  enddo ! of do k=1,llm
 END SUBROUTINE get_var3u_t
 
@@ -375,4 +420,5 @@
   REAL,             INTENT(OUT) :: v(:,:,:)
   INTEGER, INTENT(IN) :: indextime
+  INTEGER :: j,k
   corner(1)=1
   corner(2)=1
@@ -385,4 +431,18 @@
   CALL err(NF90_INQ_VARID(fID,var,vID),"inq",var)
   CALL err(NF90_GET_VAR(fID,vID,v,corner,edges),"get",var)
+  ! Check that values indeed perfectly match at end points along longitude
+  do k=1,llm
+    do j=1,jjm
+      if (v(1,j,k).ne.v(iip1,j,k)) then
+        ! tell the world
+        write(*,*) "Warning: longitudinal modulo discrepency for ",trim(var)
+        write(*,*) "j=",j," k=",k
+        write(*,*) " v(1,j,k)=",v(1,j,k)," v(iip1,j,k)=",v(iip1,j,k)
+        ! copy over value from v(1,j,k) to v(iip1,j,k)
+        write(*,*) "setting v(iip1,j,k)=v(1,j,k)"
+        v(iip1,j,k)=v(1,j,k)
+      endif ! of if (v(1,j,k).ne.v(iip1,j,k))
+    enddo ! of do j=1,jjm
+  enddo ! of do k=1,llm
 END SUBROUTINE get_var3v_t
 
