Index: LMDZ5/trunk/libf/dyn3d/fxhyp.F
===================================================================
--- LMDZ5/trunk/libf/dyn3d/fxhyp.F	(revision 1673)
+++ LMDZ5/trunk/libf/dyn3d/fxhyp.F	(revision 1674)
@@ -68,4 +68,25 @@
        xzoom    = xzoomdeg * pi/180. 
 c
+       if (iim==1) then
+
+          rlonm025(1)=-pi/2.
+          rlonv(1)=0.
+          rlonu(1)=pi
+          rlonp025(1)=pi/2.
+          rlonm025(2)=rlonm025(1)+depi
+          rlonv(2)=rlonv(1)+depi
+          rlonu(2)=rlonu(1)+depi
+          rlonp025(2)=rlonp025(1)+depi
+
+          xprimm025(:)=1.
+          xprimv(:)=1.
+          xprimu(:)=1.
+          xprimp025(:)=1.
+          champmin=depi
+          champmax=depi
+          return
+
+       endif
+
            decalx   = .75
        IF( grossism.EQ.1..AND.scal180 )  THEN
@@ -286,8 +307,10 @@
 
 
+
        IF(ik.EQ.1.and.grossism.EQ.1.)  THEN
          xvrai(1)    = xvrai(iip1)-depi
          xxprim(1)   = xxprim(iip1)
        ENDIF
+
        DO i = 1 , iim
         xlon(i)     = xvrai(i)
Index: LMDZ5/trunk/libf/dyn3d/groupe.F
===================================================================
--- LMDZ5/trunk/libf/dyn3d/groupe.F	(revision 1673)
+++ LMDZ5/trunk/libf/dyn3d/groupe.F	(revision 1674)
@@ -38,13 +38,21 @@
       integer i,j,l
 
-      logical firstcall
-      save firstcall
+      logical firstcall,groupe_ok
+      save firstcall,groupe_ok
 
       data firstcall/.true./
+      data groupe_ok/.true./
+
+      if (iim==1) then
+         groupe_ok=.false.
+      endif
 
       if (firstcall) then
-         if(mod(iim,2**ngroup).ne.0) stop'probleme du nombre ede point'
+         if (groupe_ok) then
+           if(mod(iim,2**ngroup).ne.0) stop'probleme du nombre de point'
+         endif
          firstcall=.false.
       endif
+
 
 c   Champs 1D
@@ -52,14 +60,12 @@
       call convflu(pbaru,pbarv,llm,zconvm)
 
-c
       call scopy(ijp1llm,zconvm,1,zconvmm,1)
       call scopy(ijmllm,pbarv,1,pbarvm,1)
 
-c
+      if (groupe_ok) then
       call groupeun(jjp1,llm,zconvmm)
       call groupeun(jjm,llm,pbarvm)
 
 c   Champs 3D
-
       do l=1,llm
          do j=2,jjm
@@ -74,4 +80,9 @@
          enddo
       enddo
+
+      else
+         pbarum(:,:,:)=pbaru(:,:,:)
+         pbarvm(:,:,:)=pbarv(:,:,:)
+      endif
 
 c    integration de la convergence de masse de haut  en bas ......
Index: LMDZ5/trunk/libf/dyn3d/paramet.h
===================================================================
--- LMDZ5/trunk/libf/dyn3d/paramet.h	(revision 1673)
+++ LMDZ5/trunk/libf/dyn3d/paramet.h	(revision 1674)
@@ -17,5 +17,5 @@
       INTEGER jcfil,jcfllm
 
-      PARAMETER( iip1= iim+1-1/iim,iip2=iim+2,iip3=iim+3                &
+      PARAMETER( iip1= iim+1,iip2=iim+2,iip3=iim+3                       &
      &    ,jjp1=jjm+1-1/jjm)
       PARAMETER( llmp1 = llm+1,  llmp2 = llm+2, llmm1 = llm-1 )
Index: LMDZ5/trunk/libf/dyn3dpar/fxhyp.F
===================================================================
--- LMDZ5/trunk/libf/dyn3dpar/fxhyp.F	(revision 1673)
+++ LMDZ5/trunk/libf/dyn3dpar/fxhyp.F	(revision 1674)
@@ -48,18 +48,18 @@
 c
        REAL   dzoom
-       REAL*8 xlon(iip1),xprimm(iip1),xuv
-       REAL*8 xtild(0:nmax2)
-       REAL*8 fhyp(0:nmax2),ffdx,beta,Xprimt(0:nmax2)
-       REAL*8 Xf(0:nmax2),xxpr(0:nmax2)
-       REAL*8 xvrai(iip1),xxprim(iip1) 
-       REAL*8 pi,depi,epsilon,xzoom,fa,fb
-       REAL*8 Xf1, Xfi , a0,a1,a2,a3,xi2
+       REAL(KIND=8) xlon(iip1),xprimm(iip1),xuv
+       REAL(KIND=8) xtild(0:nmax2)
+       REAL(KIND=8) fhyp(0:nmax2),ffdx,beta,Xprimt(0:nmax2)
+       REAL(KIND=8) Xf(0:nmax2),xxpr(0:nmax2)
+       REAL(KIND=8) xvrai(iip1),xxprim(iip1) 
+       REAL(KIND=8) pi,depi,epsilon,xzoom,fa,fb
+       REAL(KIND=8) Xf1, Xfi , a0,a1,a2,a3,xi2
        INTEGER i,it,ik,iter,ii,idif,ii1,ii2
-       REAL*8 xi,xo1,xmoy,xlon2,fxm,Xprimin
-       REAL*8 champmin,champmax,decalx
+       REAL(KIND=8) xi,xo1,xmoy,xlon2,fxm,Xprimin
+       REAL(KIND=8) champmin,champmax,decalx
        INTEGER is2
        SAVE is2
 
-       REAL*8 heavyside
+       REAL(KIND=8) heavyside
 
        pi       = 2. * ASIN(1.)
@@ -68,4 +68,27 @@
        xzoom    = xzoomdeg * pi/180. 
 c
+       if (iim==1) then
+
+          print*,'Longitudes calculees a la main pour iim=1'
+
+          rlonm025(1)=-pi/2.
+          rlonv(1)=0.
+          rlonu(1)=pi
+          rlonp025(1)=pi/2.
+          rlonm025(2)=rlonm025(1)+depi
+          rlonv(2)=rlonv(1)+depi
+          rlonu(2)=rlonu(1)+depi
+          rlonp025(2)=rlonp025(1)+depi
+
+          xprimm025(:)=1.
+          xprimv(:)=1.
+          xprimu(:)=1.
+          xprimp025(:)=1.
+          champmin=depi
+          champmax=depi
+          return
+
+       endif
+
            decalx   = .75
        IF( grossism.EQ.1..AND.scal180 )  THEN
@@ -286,8 +309,10 @@
 
 
+
        IF(ik.EQ.1.and.grossism.EQ.1.)  THEN
          xvrai(1)    = xvrai(iip1)-depi
          xxprim(1)   = xxprim(iip1)
        ENDIF
+
        DO i = 1 , iim
         xlon(i)     = xvrai(i)
Index: LMDZ5/trunk/libf/dyn3dpar/groupe_p.F
===================================================================
--- LMDZ5/trunk/libf/dyn3dpar/groupe_p.F	(revision 1673)
+++ LMDZ5/trunk/libf/dyn3dpar/groupe_p.F	(revision 1674)
@@ -37,13 +37,21 @@
       integer i,j,l
 
-      logical firstcall
-      save firstcall
-c$OMP THREADPRIVATE(firstcall)
+      logical firstcall,groupe_ok
+      save firstcall,groupe_ok
+c$OMP THREADPRIVATE(firstcall,groupe_ok)
 
       data firstcall/.true./
+      data groupe_ok/.true./
+
       integer ijb,ije,jjb,jje
       
+      if (iim==1) then
+         groupe_ok=.false.
+      endif
+
       if (firstcall) then
-         if(mod(iim,2**ngroup).ne.0) stop'probleme du nombre ede point'
+         if (groupe_ok) then
+           if(mod(iim,2**ngroup).ne.0) stop'probleme du nombre de point'
+         endif
          firstcall=.false.
       endif
@@ -66,5 +74,7 @@
 c$OMP END DO NOWAIT
 
-      call groupeun_p(jjp1,llm,jjb,jje,zconvmm)
+      if (groupe_ok) then
+         call groupeun_p(jjp1,llm,jjb,jje,zconvmm)
+      endif
       
       jjb=jj_begin-1
@@ -78,5 +88,7 @@
 c$OMP END DO NOWAIT
 
-      call groupeun_p(jjm,llm,jjb,jje,pbarvm)
+      if (groupe_ok) then
+         call groupeun_p(jjm,llm,jjb,jje,pbarvm)
+      endif
 
 c   Champs 3D
@@ -101,4 +113,5 @@
       enddo
 c$OMP END DO NOWAIT
+
 c    integration de la convergence de masse de haut  en bas ......
    
Index: LMDZ5/trunk/libf/dyn3dpar/paramet.h
===================================================================
--- LMDZ5/trunk/libf/dyn3dpar/paramet.h	(revision 1673)
+++ LMDZ5/trunk/libf/dyn3dpar/paramet.h	(revision 1674)
@@ -17,5 +17,5 @@
       INTEGER jcfil,jcfllm
 
-      PARAMETER( iip1= iim+1-1/iim,iip2=iim+2,iip3=iim+3                &
+      PARAMETER( iip1= iim+1,iip2=iim+2,iip3=iim+3                      &
      &    ,jjp1=jjm+1-1/jjm)
       PARAMETER( llmp1 = llm+1,  llmp2 = llm+2, llmm1 = llm-1 )
Index: LMDZ5/trunk/libf/phylmd/iophy.F90
===================================================================
--- LMDZ5/trunk/libf/phylmd/iophy.F90	(revision 1673)
+++ LMDZ5/trunk/libf/phylmd/iophy.F90	(revision 1674)
@@ -51,8 +51,8 @@
     
 !$OMP MASTER  
-    ALLOCATE(io_lat(jjm+1-1/iim))
+    ALLOCATE(io_lat(jjm+1-1/(iim*jjm)))
     io_lat(1)=rlat_glo(1)
-    io_lat(jjm+1-1/iim)=rlat_glo(klon_glo)
-    IF (iim > 1) then
+    io_lat(jjm+1-1/(iim*jjm))=rlat_glo(klon_glo)
+    IF ((iim*jjm) > 1) then
       DO i=2,jjm
         io_lat(i)=rlat_glo(2+(i-2)*iim)
@@ -61,8 +61,8 @@
 
     ALLOCATE(io_lon(iim))
-    io_lon(:)=rlon_glo(2-1/iim:iim+1-1/iim)
+    io_lon(:)=rlon_glo(2-1/(iim*jjm):iim+1-1/(iim*jjm))
 
     ddid=(/ 1,2 /)
-    dsg=(/ iim, jjm+1-1/iim /)
+    dsg=(/ iim, jjm+1-1/(iim*jjm) /)
     dsl=(/ iim, jj_nb /)
     dpf=(/ 1,jj_begin /)
@@ -89,5 +89,5 @@
   include 'dimensions.h'   
     real,dimension(iim),intent(in) :: lon
-    real,dimension(jjm+1-1/iim),intent(in) :: lat
+    real,dimension(jjm+1-1/(iim*jjm)),intent(in) :: lat
 
     INTEGER,DIMENSION(2) :: ddid
@@ -100,5 +100,5 @@
 
 !$OMP MASTER  
-    allocate(io_lat(jjm+1-1/iim))
+    allocate(io_lat(jjm+1-1/(iim*jjm)))
     io_lat(:)=lat(:)
     allocate(io_lon(iim))
@@ -106,5 +106,5 @@
    
     ddid=(/ 1,2 /)
-    dsg=(/ iim, jjm+1-1/iim /)
+    dsg=(/ iim, jjm+1-1/(iim*jjm) /)
     dsl=(/ iim, jj_nb /)
     dpf=(/ 1,jj_begin /)
@@ -234,5 +234,5 @@
 
        CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlon_glo,zx_lon)
-       if (iim.gt.1) then
+       if ((iim*jjm).gt.1) then
        DO i = 1, iim
          zx_lon(i,1) = rlon_glo(i+1)
Index: LMDZ5/trunk/libf/phylmd/phyetat0.F
===================================================================
--- LMDZ5/trunk/libf/phylmd/phyetat0.F	(revision 1673)
+++ LMDZ5/trunk/libf/phylmd/phyetat0.F	(revision 1674)
@@ -76,5 +76,5 @@
 c FH1D
 c     real iolat(jjm+1)
-      real iolat(jjm+1-1/iim)
+      real iolat(jjm+1-1/(iim*jjm))
 c
 c Ouvrir le fichier contenant l'etat initial:
