Index: trunk/LMDZ.COMMON/libf/dyn3dpar/comuforc_h.F90
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3dpar/comuforc_h.F90	(revision 1024)
+++ trunk/LMDZ.COMMON/libf/dyn3dpar/comuforc_h.F90	(revision 1024)
@@ -0,0 +1,7 @@
+       module comuforc_h
+       IMPLICIT NONE
+       REAL,ALLOCATABLE,DIMENSION(:,:) :: uforc
+       REAL :: facwind
+       end module comuforc_h
+
+
Index: trunk/LMDZ.COMMON/libf/dyn3dpar/conf_gcm.F
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3dpar/conf_gcm.F	(revision 1022)
+++ trunk/LMDZ.COMMON/libf/dyn3dpar/conf_gcm.F	(revision 1024)
@@ -378,5 +378,5 @@
        CALL getin('dissip_pupstart',dissip_pupstart )
 
-! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0
+! top_bound sponge: only active if iflag_top_bound!=0
 !                   iflag_top_bound=0 for no sponge
 !                   iflag_top_bound=1 for sponge over 4 topmost layers
Index: trunk/LMDZ.COMMON/libf/dyn3dpar/gcm.F
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3dpar/gcm.F	(revision 1022)
+++ trunk/LMDZ.COMMON/libf/dyn3dpar/gcm.F	(revision 1024)
@@ -310,5 +310,13 @@
      &              teta,q,masse,ps,phis, time_0)
         endif ! of if (planet_type.eq."mars")
-        
+       
+        ! Load relaxation fields (simple nudging). AS 09/2013
+        ! ---------------------------------------------------
+        if (planet_type.eq."generic") then
+         if (ok_guide) then
+           CALL relaxetat0("relax.nc")
+         endif
+        endif
+ 
 c       write(73,*) 'ucov',ucov
 c       write(74,*) 'vcov',vcov
Index: trunk/LMDZ.COMMON/libf/dyn3dpar/leapfrog_p.F
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3dpar/leapfrog_p.F	(revision 1022)
+++ trunk/LMDZ.COMMON/libf/dyn3dpar/leapfrog_p.F	(revision 1024)
@@ -28,4 +28,5 @@
        use cpdet_mod, only: cpdet,tpot2t_glo_p,t2tpot_glo_p
        use sponge_mod_p, only: callsponge,mode_sponge,sponge_p
+       use comuforc_h
 
 #ifdef CPP_XIOS
@@ -33,4 +34,5 @@
 	USE wxios
 #endif
+
       IMPLICIT NONE
 
@@ -315,4 +317,5 @@
 
 #ifdef CPP_IOIPSL
+      IF (planet_type.eq."earth") THEN
       if (ok_guide) then
 !$OMP MASTER
@@ -321,4 +324,5 @@
 !$OMP BARRIER
       endif
+      ENDIF
 #endif
 
@@ -437,4 +441,9 @@
         apdiss=.false.
       endif
+
+#ifdef NODYN
+      apdiss=.false.
+#endif
+
 
 cym    ---> Pour le moment      
@@ -662,4 +671,12 @@
            rdaym_ini  = itau * dtvr / daysec
 
+#ifdef NODYN
+      WRITE(lunout,*)"NO DYN !!!!!"
+      dv(:,:) = 0.D+0
+      du(:,:) = 0.D+0
+      dteta(:,:) = 0.D+0
+      dq(:,:,:) = 0.D+0
+      dp(:) = 0.D+0
+#else
 ! ADAPTATION GCM POUR CP(T)
 !      CALL caldyn_p 
@@ -690,4 +707,14 @@
 cc$OMP END MASTER
 
+
+      ! Simple zonal wind nudging for generic planetary model
+      ! AS 09/2013
+      ! ---------------------------------------------------
+      if (planet_type.eq."generic") then
+       if (ok_guide) then
+         du(:,:) = du(:,:) + ((uforc(:,:)-ucov(:,:)) / facwind)
+       endif
+      endif
+
 c-----------------------------------------------------------------------
 c   calcul des tendances advection des traceurs (dont l'humidite)
@@ -766,4 +793,6 @@
 cc$OMP END MASTER
 
+! NODYN precompiling flag
+#endif
 
 c$OMP MASTER 
Index: trunk/LMDZ.COMMON/libf/dyn3dpar/relaxetat0.F
===================================================================
--- trunk/LMDZ.COMMON/libf/dyn3dpar/relaxetat0.F	(revision 1024)
+++ trunk/LMDZ.COMMON/libf/dyn3dpar/relaxetat0.F	(revision 1024)
@@ -0,0 +1,68 @@
+      SUBROUTINE relaxetat0(fichnom)
+
+      use netcdf, only: nf90_get_var
+      use comuforc_h
+      use ioipsl_getincom
+
+      IMPLICIT NONE
+
+!=======================================================================
+! Author: A. Spiga
+! Purpose: Read a simple relaxation field
+!=======================================================================
+
+#include "dimensions.h"
+#include "paramet.h"
+#include "netcdf.inc"
+#include "iniprint.h"
+
+! INPUTS
+      CHARACTER*(*) fichnom
+
+! VARIABLES
+      REAL ucov(iip1, jjp1,llm)
+      INTEGER ierr, nid, nvarid
+      INTEGER i,j,l,ij
+
+      !! OPEN NETCDF FILE
+      ierr = NF_OPEN (fichnom, NF_NOWRITE,nid)
+      IF (ierr.NE.NF_NOERR) THEN
+        write(lunout,*)'relaxetat0: Pb d''ouverture du fichier'
+        write(lunout,*)' ierr = ', ierr
+        CALL ABORT
+      ENDIF
+
+      !! ALLOCATE RELAXATION FIELD
+      IF (.NOT.ALLOCATED(uforc)) ALLOCATE(uforc(ip1jmp1,llm))
+
+      !! READ RELAXATION FIELD
+      ierr = NF_INQ_VARID (nid, "ucov", nvarid)
+      IF (ierr .NE. NF_NOERR) THEN
+         write(lunout,*)"dynetat0: Le champ <ucov> est absent"
+         CALL abort
+      ENDIF
+      ierr = nf90_get_var(nid, nvarid, ucov) 
+      IF (ierr .NE. NF_NOERR) THEN
+         write(lunout,*)"dynetat0: Lecture echouee pour <ucov>"
+         CALL abort
+      ENDIF
+
+      !! TRANSFER TO SHARED VARIABLE IN comuforc_h MODULE
+      !! TBD --> check the relaxation field's dimensions are OK!
+      do l=1,llm
+        do j=1,jjp1
+           do i=1,iip1
+              ij=(j-1)*iip1+i
+              uforc(ij,l)=ucov(i,j,l)
+           enddo
+        enddo
+      enddo
+
+      !! READ THE RELAXATION RATE IN SETTINGS
+      facwind = 1000.
+      CALL getin('facwind',facwind)
+
+      !! END
+      ierr = NF_CLOSE(nid)
+      RETURN
+      END
