Index: /trunk/CONFIG/GYRE/scripts/BB_make
===================================================================
--- /trunk/CONFIG/GYRE/scripts/BB_make	(revision 394)
+++ /trunk/CONFIG/GYRE/scripts/BB_make	(revision 395)
@@ -2,15 +2,15 @@
 # some variables
 TMP = ../../../tmp
-#-Q- sxnec  # Compiler options for the ORCA model   -   std
+#-Q- sxnec  # Compiler options for NEMO (IDRIS SX5-NEC) 
 #-Q- sxnec  F_O = -dw -Wf\"-A idbl4\" -sx5 -ftrace -C vopt -Wf"-init stack=nan" -Wl"-f nan" -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- sxnec  L_X = $(L_O) $(L_C) -ftrace
-#-Q- sx6nec  # Compiler options for the ORCA model   -   std
+#-Q- sx6nec  # Compiler options NEMO (CEA SX6-NEC) 
 #-Q- sx6nec  F_O = -size_t64 -dw -Wf\"-A dbl4\" -sx6 -C vopt -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- sx6nec  F_O = -size_t64 -dw -Wf\"-A dbl4\" -sx6 -ftrace -C vopt -Wf"-init stack=nan" -Wl"-f nan" -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- sx6nec  L_X = $(L_O) $(L_C) -ftrace
-#-Q- sxdkrz  # Compiler options for the ORCA model for the DKRZ SX6-NEC 
+#-Q- sxdkrz  # Compiler options for NEMO (DKRZ SX6-NEC) 
 #-Q- sxdkrz  F_O = -ew -sx6 -ftrace -C vopt -Wf"-init stack=nan" -Wl"-f nan" -Wf"-P nh" -Wf"-pvctl noassume loopcnt=10000" -L transform -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- sxdkrz  L_X = $(L_O) $(L_C) -ftrace
-#-Q- eshpux  # Compiler options for the ORCA model for the ES
+#-Q- eshpux  # Compiler options for NEMO (Earth Simulator)
 #-Q- eshpux  # for super perfs!
 #-Q- eshpux  # F_O = $(FTRACE) -pi nest=5 line=10000 expin=Fmpplib.F -Wf,-A idbl4 -C hopt -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODDIR)/oce
@@ -18,18 +18,21 @@
 #-Q- eshpux  F_O = $(FTRACE) -Wf,-A idbl4 -C vopt -P stack -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -Wf,-pvctl nomsg -Wf"-O nomsg" -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- eshpux  L_X = $(L_O)
-#-Q- linux  # Compiler options for the ORCA model (pgf version)
+#-Q- linux  # Compiler options for NEMO (pgf version)
 #-Q- linux  F_O = -Mlist -O3 -byteswapio -r8  -I $(MODDIR) -I$(MODDIR)/oce
 #-Q- linux  L_X = -r8 -O3
-#-Q- lxiv8  # Compiler options for the ORCA model (ifort version)
+#-Q- lxiv7  # Compiler options for NEMO (ifc version)
+#-Q- lxiv7  F_O = -O3 -r8  -I $(MODDIR) -I$(MODDIR)/oce
+#-Q- lxiv7  L_X = -r8 -O3
+#-Q- lxiv8  # Compiler options for NEMO (ifort version)
 #-Q- lxiv8  F_O = -O3 -r8  -I $(MODDIR) -I$(MODDIR)/oce
 #-Q- lxiv8  L_X = -r8 -O3
-#-Q- g95  # Compiler options for the ORCA model (g95 version)
+#-Q- g95  # Compiler options for NEMO (g95 version)
 #-Q- g95  F_O = -O3 -fno-second-underscore -r8 -funroll-all-loops -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- g95  L_X = -r8 -O3
-#-Q- aix    # Compiler options for the ORCA model (aix version)
+#-Q- aix    # Compiler options for NEMO (aix version)
 #-Q- aix    F_O = -O3 -qsave -qrealsize=8 -qsuffix=f=f90 -qsuffix=cpp=F90 -qextname -qsource -q64 -qlargepage -qmaxmem=-1 -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- aix   L_O = $(F_P) -q64 -O3
 #-Q- aix   L_X = $(L_O) $(L_C) 
-#-Q- osxxlf    # Compiler options for the ORCA model (osxxlf version)
+#-Q- osxxlf    # Compiler options for NEMO (osxxlf version)
 #-Q- osxxlf    F_O = -O3 -qsave -qrealsize=8 -qsuffix=f=f90 -qsuffix=cpp=F90 -qsource -qmaxmem=-1 -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- osxxlf    L_X = -qrealsize=8 -O3
@@ -40,5 +43,23 @@
 #-Q- eshpux	PREF=i.
 
+# add suffix to P_P
+P_P := $(P_P:%=$(prefix)%)
+
+# Some tests to define variables related to Agrif compilation
+# Please do not change 
+ifneq (,$(findstring key_agrif,$(P_P)))
+AGRIF=use
+else
+AGRIF=notuse
+AGRIF_LIB=
+endif
+ifneq (,$(findstring key_mpp_mpi,$(P_P)))
+AGRIF_MPI=-DAGRIF_MPI
+else
+AGRIF_MPI=
+endif
+
 KEY_LIST = \
+     key_agrif \
      key_antarctic \
      key_arctic \
@@ -117,9 +138,10 @@
 # .o file list in the library
 LIB_OBJ = \
-		$(MODEL_LIB)(ctlopn.o)\
 		$(MODEL_LIB)(lib_cray.o)\
 		$(MODEL_LIB)(lib_isml.o)\
 		$(MODEL_LIB)(lib_print.o)\
-		$(MODEL_LIB)(prtctl.o)\
+		$(MODEL_LIB)(agrif_opa_interp.o)\
+		$(MODEL_LIB)(agrif_opa_sponge.o)\
+		$(MODEL_LIB)(agrif_opa_update.o)\
 		$(MODEL_LIB)(albedo.o)\
 		$(MODEL_LIB)(blk_oce.o)\
@@ -131,4 +153,5 @@
 		$(MODEL_LIB)(cpl.o)\
 		$(MODEL_LIB)(cpl_oce.o)\
+		$(MODEL_LIB)(ctlopn.o)\
 		$(MODEL_LIB)(daymod.o)\
 		$(MODEL_LIB)(diadimg.o)\
@@ -249,4 +272,5 @@
 		$(MODEL_LIB)(par_oce.o)\
 		$(MODEL_LIB)(phycst.o)\
+		$(MODEL_LIB)(prtctl.o)\
 		$(MODEL_LIB)(restart.o)\
 		$(MODEL_LIB)(sms.o)\
@@ -306,26 +330,65 @@
 		$(MODEL_LIB)(zdf_oce.o)\
 		$(MODEL_LIB)(zpshde.o)
-#
+
 .SUFFIXES: .f90 .F90 .F
-#
+
 # Target
 all: 		diroce $(EXEC_BIN)
 		@cp SRC_FILE_LIST.temp SRC_FILE_LIST
 		@echo OPA model is OK
-# cleaning objects, libraries and executables
+# Cleaning objects, libraries and executables
 clean:
+ifeq ($(AGRIF),use)
+		-@(cd OPAFILES; ./efface)
+endif
 		$(RM) model.o $(MODDIR)/oce/*.mod $(MODEL_LIB) $(SXMODEL_LIB) $(EXEC_BIN)
 		@echo OPA model \(.o .mod libraries and executables are removed\)
-# dependancies
+
+# Dependancies
 diroce:
 		@if [ ! -d ../../../lib/oce ] ; then mkdir ../../../lib/oce ; fi
 
-$(EXEC_BIN) :	libioipsl key keyverif src_file_list $(MODEL_LIB) $(IOIPSL_LIB) model.o
+$(EXEC_BIN) :	libioipsl key keyverif src_file_list libagrif $(MODEL_LIB) $(IOIPSL_LIB) $(AGRIF_LIB) agrif2model.o model.o
+ifeq ($(AGRIF),use)
+		$(F_L) $(L_X) -o $(EXEC_BIN) model.o agrif2model.o $(SXMODEL_LIB) $(OASISMPI2_LIB) $(IOIPSL_LIB) $(AGRIF_LIB) $(NCDF_LIB) $(LIBMPI) $(LIBMP)
+else
 		$(F_L) $(L_X) -o $(EXEC_BIN) model.o $(SXMODEL_LIB) $(OASISMPI2_LIB) $(IOIPSL_LIB) $(NCDF_LIB) $(LIBMPI) $(LIBMP)
+endif
 
+# Agrif library and conv
+libagrif :
+ifeq ($(AGRIF),use)
+	@( if [ ! -d OPAFILES ]; then mkdir OPAFILES; fi )
+	@( if [ ! -d OPAFILES/AGRIF_INC ]; then mkdir OPAFILES/AGRIF_INC ; fi )
+	@( if [ ! -d OPAFILES/AGRIF_MODELFILES ]; then mkdir OPAFILES/AGRIF_MODELFILES ; fi )
+	@(cd ../../AGRIF ; $(M_K) -f Makefile P_P="$(AGRIF_MPI)" )
+	@cp -rf ../../AGRIF/agrif_opa.in OPAFILES/. 
+	@cp -rf ../../AGRIF/conv OPAFILES/. 
+	@cp -rf ../../AGRIF/efface OPAFILES/. 
+endif
+
+# Agrif interface with NEMO
+agrif2model.o :
+ifeq ($(AGRIF),use)
+	@$(P_C) $(P_O) -IOPAFILES/AGRIF_INC $*.F90 > OPAFILES/$*.F90 
+	@$(F_C) \
+#-Q- aix		-qsuffix=f=F90 \
+#-Q- osxxlf		-qsuffix=f=F90 \
+	$(P_P) $(F_O) \
+#-Q- fjvpp		-Z $*.L \
+#-Q- sxnec		-R2 \
+#-Q- sx6nec		-R2 \
+#-Q- sxdkrz		-R2 \
+#-Q- eshpux		-R2 \
+#-Q- aix		-qsource \
+	   OPAFILES/$*.F90 || { mv $(PREF).L $(TMP) ; false ; exit ; }
+		@$(A_X) $(SXMODEL_LIB) $*.o  > /dev/null 
+endif
+
+# IOIPSL library 
 libioipsl :
 	(cd ../../IOIPSL/src ; $(M_K) -f Makefile )
 
-# main program
+# Main program
 model.o :	model.f90
 		@$(F_C) $(F_O) -c model.f90
@@ -344,5 +407,5 @@
 		@echo
 
-# Rules
+# Default rules
 .DEFAULTS:
 
@@ -370,5 +433,21 @@
 
 # rules for the .F90 files
-.F90.a :           
+.F90.a :  
+ifeq ($(AGRIF),use) 
+		@$(P_C) $(P_O) -IOPAFILES/AGRIF_INC $*.F90 > OPAFILES/$*.F90 
+		@(cd OPAFILES ; ./conv agrif_opa.in -rm \
+		-comdirin ./ -comdirout AGRIF_MODELFILES/. -convfile $*.F90)
+		-@mv -f OPAFILES/AGRIF_MODELFILES/$*.F90 OPAFILES/$*.F90
+		@$(P_C) $(P_O) -IOPAFILES/AGRIF_INC OPAFILES/$*.F90 > OPAFILES/AGRIF_MODELFILES/$*.F90
+		-@mv -f OPAFILES/AGRIF_MODELFILES/$*.F90 OPAFILES/$*.F90
+		@$(F_C) $(P_P) $(F_O) \
+#-Q- fjvpp		-Z $*.L \
+#-Q- sxnec		-R2 \
+#-Q- sx6nec		-R2 \
+#-Q- sxdkrz		-R2 \
+#-Q- eshpux		-R2 \
+#-Q- aix		-qsource \
+		OPAFILES/$*.F90 || { if [ -f $(PREF)$*.L ] ; then mv $(PREF)$*.L $(TMP) ; fi ; false ; exit ; } 
+else
 		@$(F_C) $(P_P) $(F_O) \
 #-Q- fjvpp		-Z $*.L \
@@ -379,4 +458,5 @@
 #-Q- aix		-qsource \
 		$*.F90 || { if [ -f $(PREF)$*.L ] ; then mv $(PREF)$*.L $(TMP) ; fi ; false ; exit ; }
+endif
 #-Q- sxnec		@$(A_X) $(SXMODEL_LIB) $*.o  > /dev/null
 #-Q- sx6nec		@$(A_X) $(SXMODEL_LIB) $*.o  > /dev/null
@@ -433,5 +513,5 @@
 #-Q- osxxlf		@mv $(PREF)$*.lst $(PREF)$*.L
 		@if [ -f $(PREF)$*.L ] ; then mv $*.L $(TMP) ; fi
-#
+
 $(MODEL_LIB)(albedo.o) :	\
 	dom_oce.F90 \
@@ -444,5 +524,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -500,5 +580,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(albedo.o) \
 	$(MODEL_LIB)(blk_oce.o) \
@@ -526,5 +606,5 @@
 	ocfzpt.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
@@ -561,5 +641,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -624,5 +704,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -691,5 +771,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	sol_oce.F90 \
 	taumod.F90 \
@@ -783,5 +863,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -834,5 +914,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -859,5 +939,5 @@
 	$(MODEL_LIB)(ocfzpt.o) \
 	$(MODEL_LIB)(phycst.o) \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	cpl.F90
 $(MODEL_LIB)(cpl_oce.o) :	\
@@ -867,21 +947,22 @@
 	$(MODEL_LIB)(par_oce.o) \
 	cpl_oce.F90
-$(MODEL_LIB)(daymod.o) :	\
-	dom_oce.F90 \
-	in_out_manager.F90 \
-	lib_mpp.F90 \
-	lib_print.f90 \
-	par_kind.F90 \
-	par_oce.F90 \
-	$(MODEL_LIB)(dom_oce.o) \
-	$(MODEL_LIB)(in_out_manager.o) \
-	$(MODEL_LIB)(lib_mpp.o) \
-	$(MODEL_LIB)(lib_print.o) \
-	$(MODEL_LIB)(par_kind.o) \
-	$(MODEL_LIB)(par_oce.o) \
-	dom_oce.F90 \
-	in_out_manager.F90 \
-	phycst.F90 \
-	prtctl.f90 \
+\
+	\() $(MODEL_LIB)(daymod.o) :	\
+	dom_oce.F90 \
+	in_out_manager.F90 \
+	lib_mpp.F90 \
+	lib_print.f90 \
+	par_kind.F90 \
+	par_oce.F90 \
+	$(MODEL_LIB)(dom_oce.o) \
+	$(MODEL_LIB)(in_out_manager.o) \
+	$(MODEL_LIB)(lib_mpp.o) \
+	$(MODEL_LIB)(lib_print.o) \
+	$(MODEL_LIB)(par_kind.o) \
+	$(MODEL_LIB)(par_oce.o) \
+	dom_oce.F90 \
+	in_out_manager.F90 \
+	phycst.F90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -896,5 +977,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -937,5 +1018,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -997,5 +1078,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(daymod.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -1024,5 +1105,5 @@
 	$(MODEL_LIB)(oce.o) \
 	domzgr_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	diagap.F90
@@ -1074,5 +1155,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -1099,5 +1180,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(daymod.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -1126,5 +1207,5 @@
 	domzgr_substitute.h90 \
 	vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	diaptr.F90
@@ -1199,5 +1280,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	sol_oce.F90 \
 	taumod.F90 \
@@ -1285,5 +1366,5 @@
 	$(MODEL_LIB)(zdf_oce.o) \
 	zdfddm_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	diawri1d.F90
@@ -1309,5 +1390,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solpcg.F90 \
@@ -1395,5 +1476,5 @@
 	diawri_dimg.h90 \
 	zdfddm_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	diawri.F90
@@ -1447,5 +1528,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solisl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
@@ -1499,5 +1580,5 @@
 	$(MODEL_LIB)(phycst.o) \
 	domzgr_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	domain.F90
@@ -1553,5 +1634,5 @@
 	$(MODEL_LIB)(in_out_manager.o) \
 	$(MODEL_LIB)(phycst.o) \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	domhgr.F90
 $(MODEL_LIB)(dommsk.o) :	\
@@ -1633,5 +1714,5 @@
 	$(MODEL_LIB)(lib_mpp.o) \
 	domwri_dimg.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	domwri.F90
@@ -1689,5 +1770,5 @@
 	domzgr_zps.h90 \
 	vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	domzgr.F90
@@ -1711,5 +1792,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -1728,5 +1809,5 @@
 	$(MODEL_LIB)(oce.o) \
 	domzgr_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	dtasal.F90
@@ -1739,5 +1820,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -1758,5 +1839,5 @@
 	$(MODEL_LIB)(oce.o) \
 	$(MODEL_LIB)(ocfzpt.o) \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	dtasst.F90
 $(MODEL_LIB)(dtatem.o) :	\
@@ -1767,5 +1848,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -1784,5 +1865,5 @@
 	$(MODEL_LIB)(oce.o) \
 	domzgr_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	dtatem.F90
@@ -1804,5 +1885,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -1848,5 +1929,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -1897,5 +1978,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -1945,5 +2026,5 @@
 	in_out_manager.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -1969,5 +2050,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -2006,5 +2087,5 @@
 	ldfslp.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -2060,5 +2141,5 @@
 	ldfdyn_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -2088,5 +2169,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -2125,5 +2206,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -2156,5 +2237,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -2192,5 +2273,5 @@
 	ldfslp.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -2229,5 +2310,5 @@
 	lbclnk.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -2265,4 +2346,6 @@
 	$(MODEL_LIB)(par_oce.o) \
 	$(MODEL_LIB)(phycst.o) \
+	agrif_opa_interp.F90 \
+	agrif_opa_update.F90 \
 	dom_oce.F90 \
 	dynspg_oce.F90 \
@@ -2274,5 +2357,7 @@
 	obc_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
+	$(MODEL_LIB)(agrif_opa_update.o) \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(dynspg_oce.o) \
@@ -2285,6 +2370,8 @@
 	$(MODEL_LIB)(oce.o) \
 	$(MODEL_LIB)(prtctl.o) \
+	\() \
 	dynnxt.F90
 $(MODEL_LIB)(dynspg.o) :	\
+	agrif_opa_interp.F90 \
 	cla_dynspg.F90 \
 	dom_oce.F90 \
@@ -2309,5 +2396,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solisl.F90 \
@@ -2325,4 +2412,5 @@
 	trdvor_oce.F90 \
 	zdf_oce.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
 	$(MODEL_LIB)(cla_dynspg.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -2375,5 +2463,5 @@
 	obc_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -2422,5 +2510,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -2462,5 +2550,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -2503,5 +2591,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -2543,5 +2631,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -2587,5 +2675,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solpcg.F90 \
@@ -2630,4 +2718,5 @@
 	$(MODEL_LIB)(tradmp.o) \
 	$(MODEL_LIB)(zdf_oce.o) \
+	agrif_opa_interp.F90 \
 	cla_dynspg.F90 \
 	dom_oce.F90 \
@@ -2642,5 +2731,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solpcg.F90 \
@@ -2649,4 +2738,5 @@
 	sol_oce.F90 \
 	zdf_oce.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
 	$(MODEL_LIB)(cla_dynspg.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -2670,4 +2760,5 @@
 	domzgr_substitute.h90 \
 	vectopt_loop_substitute.h90 \
+	\() \
 	KEY_CPP \
 	dynspg_flt.F90
@@ -2700,5 +2791,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solpcg.F90 \
@@ -2743,4 +2834,5 @@
 	$(MODEL_LIB)(tradmp.o) \
 	$(MODEL_LIB)(zdf_oce.o) \
+	agrif_opa_interp.F90 \
 	cla_dynspg.F90 \
 	dom_oce.F90 \
@@ -2755,5 +2847,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solpcg.F90 \
@@ -2762,4 +2854,5 @@
 	sol_oce.F90 \
 	zdf_oce.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
 	$(MODEL_LIB)(cla_dynspg.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -2782,4 +2875,5 @@
 	$(MODEL_LIB)(zdf_oce.o) \
 	domzgr_substitute.h90 \
+	\() \
 	KEY_CPP \
 	dynspg_flt_jki.F90
@@ -2884,5 +2978,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -2932,5 +3026,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(dynspg_oce.o) \
@@ -2977,5 +3071,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -3025,5 +3119,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(dynspg_oce.o) \
@@ -3079,5 +3173,5 @@
 	lbclnk.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -3132,5 +3226,5 @@
 	in_out_manager.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -3187,5 +3281,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trdmod.F90 \
@@ -3246,5 +3340,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trdmod.F90 \
@@ -3305,5 +3399,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trdmod.F90 \
@@ -3336,5 +3430,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -3374,5 +3468,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trdmod.F90 \
@@ -3404,5 +3498,5 @@
 	par_kind.F90 \
 	par_oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdf_oce.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -3419,5 +3513,5 @@
 	in_out_manager.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdfddm.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -3475,5 +3569,5 @@
 	$(MODEL_LIB)(flo_oce.o) \
 	$(MODEL_LIB)(lib_mpp.o) \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	floats.F90
 $(MODEL_LIB)(floblk.o) :	\
@@ -3532,5 +3626,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -3577,5 +3671,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(cpl_oce.o) \
@@ -3605,5 +3699,5 @@
 	ocfzpt.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(albedo.o) \
 	$(MODEL_LIB)(blk_oce.o) \
@@ -3641,5 +3735,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -3704,5 +3798,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(daymod.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -3760,5 +3854,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -3785,5 +3879,5 @@
 	$(MODEL_LIB)(phycst.o) \
 	flxrnf_ORCA_R05.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	flxrnf.F90
@@ -3912,5 +4006,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	thd_ice.F90 \
@@ -3991,5 +4085,5 @@
 	ocfzpt.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -4065,5 +4159,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	thd_ice.F90 \
@@ -4130,5 +4224,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	$(MODEL_LIB)(cpl_oce.o) \
@@ -4224,5 +4318,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solpcg.F90 \
@@ -4301,5 +4395,5 @@
 	domzgr_substitute.h90 \
 	vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	istate.F90
@@ -4336,5 +4430,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdfmxl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4375,5 +4469,5 @@
 	ldfdyn_c2d.h90 \
 	ldfdyn_c3d.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	ldfdyn.F90
@@ -4397,5 +4491,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdfmxl.F90 \
 	$(MODEL_LIB)(daymod.o) \
@@ -4421,5 +4515,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(flxrnf.o) \
@@ -4443,5 +4537,5 @@
 	par_kind.F90 \
 	par_oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdf_oce.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4461,5 +4555,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdfmxl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4488,5 +4582,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdfmxl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4524,5 +4618,5 @@
 	ldftra_c3d.h90 \
 	vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	ldftra.F90
@@ -4581,5 +4675,5 @@
 	in_out_manager.F90 \
 	lbclnk.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_ice.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4609,5 +4703,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(dom_ice.o) \
@@ -4672,5 +4766,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(dom_ice.o) \
@@ -4705,5 +4799,5 @@
 	limrhg.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_ice.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4737,5 +4831,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(albedo.o) \
 	$(MODEL_LIB)(blk_oce.o) \
@@ -4766,5 +4860,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(albedo.o) \
 	$(MODEL_LIB)(flxblk.o) \
@@ -4806,5 +4900,5 @@
 	lbclnk.F90 \
 	lib_mpp.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(ice.o) \
@@ -4912,5 +5006,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_ice.o) \
 	$(MODEL_LIB)(ice.o) \
@@ -4932,5 +5026,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4955,5 +5049,5 @@
 	$(MODEL_LIB)(par_ice.o) \
 	limrst_dimg.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	limrst.F90
@@ -5015,5 +5109,5 @@
 	limthd_zdf.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	thd_ice.F90 \
 	$(MODEL_LIB)(dom_ice.o) \
@@ -5160,5 +5254,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(dom_ice.o) \
@@ -5231,5 +5325,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(daymod.o) \
@@ -5277,5 +5371,5 @@
 	$(MODEL_LIB)(diadimg.o) \
 	limwri_dimg.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	limwri.F90
@@ -5309,5 +5403,5 @@
 	ocfzpt.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solver.F90 \
 	step1d.F90 \
@@ -5383,5 +5477,5 @@
 	domzgr_substitute.h90 \
 	mppini_2.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	mppini.F90
@@ -5441,5 +5535,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -5475,5 +5569,5 @@
 	domzgr_substitute.h90 \
 	obc_vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	obcdta.F90
@@ -5686,5 +5780,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -5804,5 +5898,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -5883,5 +5977,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -5925,5 +6019,5 @@
 	ocfzpt.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -5967,4 +6061,5 @@
 	ocfzpt.F90
 $(MODEL_LIB)(opa.o) :	\
+	agrif_opa_sponge.F90 \
 	blk_oce.F90 \
 	cla.F90 \
@@ -6049,5 +6144,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	restart.F90 \
 	solisl.F90 \
@@ -6097,4 +6192,5 @@
 	zdf_oce.F90 \
 	zpshde.F90 \
+	$(MODEL_LIB)(agrif_opa_sponge.o) \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(cla.o) \
@@ -6255,5 +6351,5 @@
 	ocfzpt.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solver.F90 \
 	step1d.F90 \
@@ -6354,5 +6450,5 @@
 	$(MODEL_LIB)(in_out_manager.o) \
 	$(MODEL_LIB)(lib_mpp.o) \
-	prtctl.f90
+	prtctl.F90
 $(MODEL_LIB)(restart.o) :	\
 	blk_oce.F90 \
@@ -6366,5 +6462,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trazdf_exp.F90 \
@@ -6413,5 +6509,5 @@
 	$(MODEL_LIB)(lib_mpp.o) \
 	restart_dimg.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	restart.F90
@@ -6479,5 +6575,5 @@
 	$(MODEL_LIB)(solsor.o) \
 	$(MODEL_LIB)(sol_oce.o) \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	solisl.F90
 $(MODEL_LIB)(solmat.o) :	\
@@ -6664,4 +6760,6 @@
 	sol_oce.F90
 $(MODEL_LIB)(step1d.o) :	\
+	agrif_opa_interp.F90 \
+	agrif_opa_update.F90 \
 	blk_oce.F90 \
 	cpl_oce.F90 \
@@ -6708,5 +6806,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solisl.F90 \
 	sol_oce.F90 \
@@ -6723,4 +6821,6 @@
 	zdftke.F90 \
 	zdf_oce.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
+	$(MODEL_LIB)(agrif_opa_update.o) \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(cpl_oce.o) \
@@ -6808,5 +6908,5 @@
 	oce.F90 \
 	ocfzpt.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	restart.F90 \
 	stpctl.F90 \
@@ -6877,4 +6977,6 @@
 	step1d.F90
 $(MODEL_LIB)(step.o) :	\
+	agrif_opa_interp.F90 \
+	agrif_opa_update.F90 \
 	blk_oce.F90 \
 	cpl_oce.F90 \
@@ -6939,5 +7041,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solisl.F90 \
@@ -6958,4 +7060,6 @@
 	zdftke.F90 \
 	zdf_oce.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
+	$(MODEL_LIB)(agrif_opa_update.o) \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(cpl_oce.o) \
@@ -7039,4 +7143,5 @@
 	$(MODEL_LIB)(zdftke.o) \
 	$(MODEL_LIB)(zdf_oce.o) \
+	agrif_opa_sponge.F90 \
 	cla.F90 \
 	cla_div.F90 \
@@ -7095,5 +7200,5 @@
 	oce.F90 \
 	ocfzpt.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	restart.F90 \
 	stpctl.F90 \
@@ -7134,4 +7239,5 @@
 	zdf_oce.F90 \
 	zpshde.F90 \
+	$(MODEL_LIB)(agrif_opa_sponge.o) \
 	$(MODEL_LIB)(cla.o) \
 	$(MODEL_LIB)(cla_div.o) \
@@ -7231,4 +7337,5 @@
 	domzgr_substitute.h90 \
 	zdfddm_substitute.h90 \
+	\() \
 	KEY_CPP \
 	step.F90
@@ -7322,5 +7429,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -7370,5 +7477,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7408,5 +7515,5 @@
 	oce.F90 \
 	ocfzpt.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdmod.F90 \
@@ -7456,5 +7563,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7492,5 +7599,5 @@
 	lib_mpp.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdmod.F90 \
@@ -7523,5 +7630,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7559,5 +7666,5 @@
 	lib_mpp.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdmod.F90 \
@@ -7590,5 +7697,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7626,5 +7733,5 @@
 	lib_mpp.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdmod.F90 \
@@ -7662,5 +7769,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -7669,5 +7776,5 @@
 	$(MODEL_LIB)(prtctl.o) \
 	domzgr_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	trabbc.F90
@@ -7694,5 +7801,5 @@
 	in_out_manager.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod_oce.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -7725,5 +7832,5 @@
 	par_kind.F90 \
 	par_oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7760,5 +7867,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -7779,5 +7886,5 @@
 	domzgr_substitute.h90 \
 	vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	tradmp.F90
@@ -7796,5 +7903,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7836,5 +7943,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -7868,5 +7975,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7908,5 +8015,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -7941,5 +8048,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7980,5 +8087,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8012,5 +8119,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -8051,5 +8158,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8115,5 +8222,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8140,5 +8247,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -8206,4 +8313,6 @@
 	$(MODEL_LIB)(par_oce.o) \
 	$(MODEL_LIB)(phycst.o) \
+	agrif_opa_interp.F90 \
+	agrif_opa_update.F90 \
 	dom_oce.F90 \
 	in_out_manager.F90 \
@@ -8211,6 +8320,8 @@
 	obctra.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdf_oce.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
+	$(MODEL_LIB)(agrif_opa_update.o) \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -8220,4 +8331,5 @@
 	$(MODEL_LIB)(prtctl.o) \
 	$(MODEL_LIB)(zdf_oce.o) \
+	\() \
 	tranxt.F90
 $(MODEL_LIB)(traqsr.o) :	\
@@ -8242,5 +8354,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	sms.F90 \
 	taumod.F90 \
@@ -8291,5 +8403,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trc_oce.F90 \
 	trdmod.F90 \
@@ -8330,5 +8442,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trabbl.F90 \
@@ -8382,5 +8494,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	traqsr.F90 \
 	trdmod.F90 \
@@ -8408,5 +8520,5 @@
 	par_kind.F90 \
 	par_oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -8439,5 +8551,5 @@
 	in_out_manager.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8468,5 +8580,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trabbl.F90 \
@@ -8507,5 +8619,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8542,5 +8654,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trabbl.F90 \
@@ -8587,5 +8699,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8626,5 +8738,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trabbl.F90 \
@@ -8671,5 +8783,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8711,5 +8823,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdicp_oce.F90 \
 	trdmld_oce.F90 \
@@ -8770,5 +8882,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdicp_oce.F90 \
 	trdmld_oce.F90 \
@@ -8825,5 +8937,5 @@
 	ldftra_substitute.h90 \
 	zdfddm_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	trdmld.F90
@@ -8851,5 +8963,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdicp_oce.F90 \
 	trdmld_oce.F90 \
@@ -8926,5 +9038,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdicp_oce.F90 \
 	trdmld_oce.F90 \
@@ -8977,5 +9089,5 @@
 	ldfdyn_substitute.h90 \
 	vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	trdvor.F90
@@ -9002,5 +9114,5 @@
 	in_out_manager.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -9029,5 +9141,5 @@
 	lbclnk.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdf_oce.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -9059,5 +9171,5 @@
 	lbclnk.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdf_oce.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -9082,5 +9194,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	zdfddm.F90 \
@@ -9130,5 +9242,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trazdf_exp.F90 \
@@ -9209,5 +9321,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -9246,5 +9358,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	zdfddm.F90 \
@@ -9281,5 +9393,5 @@
 	in_out_manager.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdf_oce.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -9330,5 +9442,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trdmod.F90 \
@@ -9358,5 +9470,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trazdf_exp.F90 \
@@ -9394,5 +9506,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdfddm.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -9426,12 +9538,12 @@
 # key changing control
 key: 
-	@echo CHANGEMENT de CLES CPP oui/non ?
-	-@if [ "`cat KEY_CPP`" != "$(P_P)" ] ; then \
-		echo CPP options changed ; echo "$(P_P)" > KEY_CPP ; fi 
-
+	@echo CHANGE of CPP KEYS yes/no ?
+	-@if [ "`cat KEY_CPP`" != "$(P_P:$(prefix)%=%)" ] ; then \
+		echo CPP options changed ; echo "$(P_P:$(prefix)%=%)" > KEY_CPP ; fi 
+# check key values
 keyverif:
-	@echo VERIFICATION DES CLES
-	@echo CLES UTILISEES  : 
-	@for v in ` echo $(P_P) | sed  -e s/-Wp,-D//g` ; \
+	@echo CHECKING KEY
+	@echo KEY USED : 
+	@for v in ` echo $(P_P:$(prefix)%=%) ` ; \
 	do \
 	echo $$v ;\
@@ -9450,5 +9562,5 @@
 src_file_list: 
 	@echo CHECKING THE NUMBER AND NAMES OF SOURCE FILES 
-	@\$(RM) `ls | fgrep -v -f .patron` 
+	@$(RM) `ls | fgrep -v -f .patron` 
 	@check=`grep OPA_SRC .config`              ; \
 	if [ -n "$$check" ] ; then                   \
@@ -9472,4 +9584,12 @@
 	echo "   use LIM_SRC files"                ; \
       ln -sf ../LIM_SRC/*.[Ffh]90          . ; \
+  fi 
+	@check=`grep NST_SRC .config`              ; \
+	if [ -n "$$check" ] ; then                   \
+	echo "   use NST_SRC files"                ; \
+      \$(RM) agrif_opa_interp.F90           ; \
+      \$(RM) agrif_opa_sponge.F90           ; \
+      \$(RM) agrif_opa_update.F90           ; \
+      ln -sf ../NST_SRC/*.[Ffh]90      .     ; \
   fi 
 	@check=`grep C1D_SRC .config`              ; \
Index: /trunk/CONFIG/GYRE/scripts/BB_make.ldef
===================================================================
--- /trunk/CONFIG/GYRE/scripts/BB_make.ldef	(revision 394)
+++ /trunk/CONFIG/GYRE/scripts/BB_make.ldef	(revision 395)
@@ -1,9 +1,12 @@
 #---------------------------------------------------------------------
-#- OPA SYSTEM : Ocean model (BB_mak.ldef in scripts)
+#- NEMO SYSTEM : Ocean model (BB_make.ldef in scripts)
 #---------------------------------------------------------------------
 SHELL = /bin/sh
+#-
 #-Q- t3e     #--- Please use gmake instead of make
 #-Q- fjvpp   #--- Please use gmake instead of make
-#---------------------------------------------------------------------
+
+#-
+#- Define the libraries ---
 LIBDIR = ../../../lib
 MODDIR = $(LIBDIR)
@@ -13,4 +16,8 @@
 #-Q- sx6nec  IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a
 #-Q- sxdkrz  IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a
+AGRIF_LIB = $(LIBDIR)/libagrif.a
+#-Q- sxnec  AGRIF_LIB = $(LIBDIR)/libsxagrif.a
+#-Q- sx6nec AGRIF_LIB = $(LIBDIR)/libsxagrif.a
+#-Q- sxdkrc AGRIF_LIB = $(LIBDIR)/libsxagrif.a
 SXMODEL_LIB = $(MODEL_LIB)
 #-Q- sxnec  SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a
@@ -21,22 +28,22 @@
 LIBMP   =
 EXEC_BIN = ../../../bin/opa
-#---------------------------------------------------------------------
+
 #-
-#- Key options for GYRE ocean configuration: Analytical forcing 
-#-Q- sxnec   P_P = -Wp,-Dkey_gyre -Wp,-Dkey_dynspg_flt -Wp,-Dkey_ldfslp -Wp,-Dkey_zdftke -Wp,-Dkey_vectopt_loop -Wp,-Dkey_vectopt_memory   
+#- Key options for GYRE ocean configuration: Analytical forcing ---
+#  Keys have to be written on one single line (does NOT accept "\")
+
+P_P = key_gyre key_dynspg_flt key_ldfslp key_zdftke key_vectopt_loop key_vectopt_memory   
+
 #-
-#-Q- sx6nec  P_P = '-Wp,-Dkey_gyre -Wp,-Dkey_dynspg_flt -Wp,-Dkey_ldfslp -Wp,-Dkey_zdftke -Wp,-Dkey_vectopt_loop -Wp,-Dkey_vectopt_memory'
-#-
-#-Q- eshpux  P_P = '-Wp,-Dkey_gyre -Wp,-Dkey_dynspg_flt -Wp,-Dkey_ldfslp -Wp,-Dkey_zdftke -Wp,-Dkey_vectopt_loop -Wp,-Dkey_vectopt_memory'
-#-
-#-Q- sxdkrz  P_P = '-Wp,-Dkey_gyre -Wp,-Dkey_dynspg_flt -Wp,-Dkey_ldfslp -Wp,-Dkey_zdftke -Wp,-Dkey_vectopt_loop -Wp,-Dkey_vectopt_memory'
-#-
-#-Q- linux  P_P = -Dkey_gyre -Dkey_dynspg_flt -Dkey_ldfslp -Dkey_zdftke -Dkey_vectopt_loop -Dkey_vectopt_memory
-#-
-#-Q- lxiv8  P_P = -Dkey_gyre -Dkey_dynspg_flt -Dkey_ldfslp -Dkey_zdftke -Dkey_vectopt_loop -Dkey_vectopt_memory
-#-
-#-Q- g95  P_P = -Dkey_gyre -Dkey_dynspg_flt -Dkey_ldfslp -Dkey_zdftke -Dkey_vectopt_loop -Dkey_vectopt_memory
-#-
-#-Q- aix     P_P = -WF,-Dkey_gyre -WF,-Dkey_dynspg_flt -WF,-Dkey_ldfslp -WF,-Dkey_zdftke -WF,-Dkey_vectopt_memory
-#-
-#-Q- osxxlf     P_P = -WF,-Dkey_gyre -WF,-Dkey_dynspg_flt -WF,-Dkey_ldfslp -WF,-Dkey_zdftke -WF,-Dkey_vectopt_memory
+#- Prefix for preprocessing ---
+#-Q- sxnec  prefix = -Wp,-D
+#-Q- sx6nec prefix = -Wp,-D
+#-Q- eshpux prefix = -Wp,-D
+#-Q- sxdkrz prefix = -Wp,-D
+#-Q- linux  prefix = -D
+#-Q- lxiv7  prefix = -D
+#-Q- lxiv8  prefix = -D
+#-Q- g95    prefix = -D
+#-Q- aix    prefix = -WF,-D
+#-Q- osxxlf prefix = -WF,-D
+
Index: /trunk/CONFIG/ORCA2_LIM/scripts/BB_make
===================================================================
--- /trunk/CONFIG/ORCA2_LIM/scripts/BB_make	(revision 394)
+++ /trunk/CONFIG/ORCA2_LIM/scripts/BB_make	(revision 395)
@@ -2,15 +2,15 @@
 # some variables
 TMP = ../../../tmp
-#-Q- sxnec  # Compiler options for the ORCA model   -   std
+#-Q- sxnec  # Compiler options for NEMO (IDRIS SX5-NEC) 
 #-Q- sxnec  F_O = -dw -Wf\"-A idbl4\" -sx5 -ftrace -C vopt -Wf"-init stack=nan" -Wl"-f nan" -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- sxnec  L_X = $(L_O) $(L_C) -ftrace
-#-Q- sx6nec  # Compiler options for the ORCA model   -   std
+#-Q- sx6nec  # Compiler options NEMO (CEA SX6-NEC) 
 #-Q- sx6nec  F_O = -size_t64 -dw -Wf\"-A dbl4\" -sx6 -C vopt -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- sx6nec  F_O = -size_t64 -dw -Wf\"-A dbl4\" -sx6 -ftrace -C vopt -Wf"-init stack=nan" -Wl"-f nan" -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- sx6nec  L_X = $(L_O) $(L_C) -ftrace
-#-Q- sxdkrz  # Compiler options for the ORCA model for the DKRZ SX6-NEC 
+#-Q- sxdkrz  # Compiler options for NEMO (DKRZ SX6-NEC) 
 #-Q- sxdkrz  F_O = -ew -sx6 -ftrace -C vopt -Wf"-init stack=nan" -Wl"-f nan" -Wf"-P nh" -Wf"-pvctl noassume loopcnt=10000" -L transform -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- sxdkrz  L_X = $(L_O) $(L_C) -ftrace
-#-Q- eshpux  # Compiler options for the ORCA model for the ES
+#-Q- eshpux  # Compiler options for NEMO (Earth Simulator)
 #-Q- eshpux  # for super perfs!
 #-Q- eshpux  # F_O = $(FTRACE) -pi nest=5 line=10000 expin=Fmpplib.F -Wf,-A idbl4 -C hopt -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODDIR)/oce
@@ -18,18 +18,21 @@
 #-Q- eshpux  F_O = $(FTRACE) -Wf,-A idbl4 -C vopt -P stack -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -Wf,-pvctl nomsg -Wf"-O nomsg" -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- eshpux  L_X = $(L_O)
-#-Q- linux  # Compiler options for the ORCA model (pgf version)
+#-Q- linux  # Compiler options for NEMO (pgf version)
 #-Q- linux  F_O = -Mlist -O3 -byteswapio -r8  -I $(MODDIR) -I$(MODDIR)/oce
 #-Q- linux  L_X = -r8 -O3
-#-Q- lxiv8  # Compiler options for the ORCA model (ifort version)
+#-Q- lxiv7  # Compiler options for NEMO (ifc version)
+#-Q- lxiv7  F_O = -O3 -r8  -I $(MODDIR) -I$(MODDIR)/oce
+#-Q- lxiv7  L_X = -r8 -O3
+#-Q- lxiv8  # Compiler options for NEMO (ifort version)
 #-Q- lxiv8  F_O = -O3 -r8  -I $(MODDIR) -I$(MODDIR)/oce
 #-Q- lxiv8  L_X = -r8 -O3
-#-Q- g95  # Compiler options for the ORCA model (g95 version)
+#-Q- g95  # Compiler options for NEMO (g95 version)
 #-Q- g95  F_O = -O3 -fno-second-underscore -r8 -funroll-all-loops -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- g95  L_X = -r8 -O3
-#-Q- aix    # Compiler options for the ORCA model (aix version)
+#-Q- aix    # Compiler options for NEMO (aix version)
 #-Q- aix    F_O = -O3 -qsave -qrealsize=8 -qsuffix=f=f90 -qsuffix=cpp=F90 -qextname -qsource -q64 -qlargepage -qmaxmem=-1 -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- aix   L_O = $(F_P) -q64 -O3
 #-Q- aix   L_X = $(L_O) $(L_C) 
-#-Q- osxxlf    # Compiler options for the ORCA model (osxxlf version)
+#-Q- osxxlf    # Compiler options for NEMO (osxxlf version)
 #-Q- osxxlf    F_O = -O3 -qsave -qrealsize=8 -qsuffix=f=f90 -qsuffix=cpp=F90 -qsource -qmaxmem=-1 -I $(MODDIR) -I $(MODDIR)/oce
 #-Q- osxxlf    L_X = -qrealsize=8 -O3
@@ -40,5 +43,23 @@
 #-Q- eshpux	PREF=i.
 
+# add suffix to P_P
+P_P := $(P_P:%=$(prefix)%)
+
+# Some tests to define variables related to Agrif compilation
+# Please do not change 
+ifneq (,$(findstring key_agrif,$(P_P)))
+AGRIF=use
+else
+AGRIF=notuse
+AGRIF_LIB=
+endif
+ifneq (,$(findstring key_mpp_mpi,$(P_P)))
+AGRIF_MPI=-DAGRIF_MPI
+else
+AGRIF_MPI=
+endif
+
 KEY_LIST = \
+     key_agrif \
      key_antarctic \
      key_arctic \
@@ -117,9 +138,11 @@
 # .o file list in the library
 LIB_OBJ = \
-		$(MODEL_LIB)(ctlopn.o)\
 		$(MODEL_LIB)(lib_cray.o)\
 		$(MODEL_LIB)(lib_isml.o)\
 		$(MODEL_LIB)(lib_print.o)\
-		$(MODEL_LIB)(prtctl.o)\
+		$(MODEL_LIB)(agrif_opa_interp.o)\
+		$(MODEL_LIB)(agrif_opa_sponge.o)\
+		$(MODEL_LIB)(agrif_opa_update.o)\
+		$(MODEL_LIB)(agrif_user.o)\
 		$(MODEL_LIB)(albedo.o)\
 		$(MODEL_LIB)(blk_oce.o)\
@@ -131,4 +154,5 @@
 		$(MODEL_LIB)(cpl.o)\
 		$(MODEL_LIB)(cpl_oce.o)\
+		$(MODEL_LIB)(ctlopn.o)\
 		$(MODEL_LIB)(daymod.o)\
 		$(MODEL_LIB)(diadimg.o)\
@@ -249,4 +273,5 @@
 		$(MODEL_LIB)(par_oce.o)\
 		$(MODEL_LIB)(phycst.o)\
+		$(MODEL_LIB)(prtctl.o)\
 		$(MODEL_LIB)(restart.o)\
 		$(MODEL_LIB)(sms.o)\
@@ -306,26 +331,65 @@
 		$(MODEL_LIB)(zdf_oce.o)\
 		$(MODEL_LIB)(zpshde.o)
-#
+
 .SUFFIXES: .f90 .F90 .F
-#
+
 # Target
 all: 		diroce $(EXEC_BIN)
 		@cp SRC_FILE_LIST.temp SRC_FILE_LIST
 		@echo OPA model is OK
-# cleaning objects, libraries and executables
+# Cleaning objects, libraries and executables
 clean:
+ifeq ($(AGRIF),use)
+		-@(cd OPAFILES; ./efface)
+endif
 		$(RM) model.o $(MODDIR)/oce/*.mod $(MODEL_LIB) $(SXMODEL_LIB) $(EXEC_BIN)
 		@echo OPA model \(.o .mod libraries and executables are removed\)
-# dependancies
+
+# Dependancies
 diroce:
 		@if [ ! -d ../../../lib/oce ] ; then mkdir ../../../lib/oce ; fi
 
-$(EXEC_BIN) :	libioipsl key keyverif src_file_list $(MODEL_LIB) $(IOIPSL_LIB) model.o
+$(EXEC_BIN) :	libioipsl key keyverif src_file_list libagrif $(MODEL_LIB) $(IOIPSL_LIB) $(AGRIF_LIB) agrif2model.o model.o
+ifeq ($(AGRIF),use)
+		$(F_L) $(L_X) -o $(EXEC_BIN) model.o agrif2model.o $(SXMODEL_LIB) $(OASISMPI2_LIB) $(IOIPSL_LIB) $(AGRIF_LIB) $(NCDF_LIB) $(LIBMPI) $(LIBMP)
+else
 		$(F_L) $(L_X) -o $(EXEC_BIN) model.o $(SXMODEL_LIB) $(OASISMPI2_LIB) $(IOIPSL_LIB) $(NCDF_LIB) $(LIBMPI) $(LIBMP)
+endif
 
+# Agrif library and conv
+libagrif :
+ifeq ($(AGRIF),use)
+	@( if [ ! -d OPAFILES ]; then mkdir OPAFILES; fi )
+	@( if [ ! -d OPAFILES/AGRIF_INC ]; then mkdir OPAFILES/AGRIF_INC ; fi )
+	@( if [ ! -d OPAFILES/AGRIF_MODELFILES ]; then mkdir OPAFILES/AGRIF_MODELFILES ; fi )
+	@(cd ../../AGRIF ; $(M_K) -f Makefile P_P="$(AGRIF_MPI)" )
+	@cp -rf ../../AGRIF/agrif_opa.in OPAFILES/. 
+	@cp -rf ../../AGRIF/conv OPAFILES/. 
+	@cp -rf ../../AGRIF/efface OPAFILES/. 
+endif
+
+# Agrif interface with NEMO
+agrif2model.o :
+ifeq ($(AGRIF),use)
+	@$(P_C) $(P_O) -IOPAFILES/AGRIF_INC $*.F90 > OPAFILES/$*.F90 
+	@$(F_C) \
+#-Q- aix		-qsuffix=f=F90 \
+#-Q- osxxlf		-qsuffix=f=F90 \
+	$(P_P) $(F_O) \
+#-Q- fjvpp		-Z $*.L \
+#-Q- sxnec		-R2 \
+#-Q- sx6nec		-R2 \
+#-Q- sxdkrz		-R2 \
+#-Q- eshpux		-R2 \
+#-Q- aix		-qsource \
+	   OPAFILES/$*.F90 || { mv $(PREF).L $(TMP) ; false ; exit ; }
+		@$(A_X) $(SXMODEL_LIB) $*.o  > /dev/null 
+endif
+
+# IOIPSL library 
 libioipsl :
 	(cd ../../IOIPSL/src ; $(M_K) -f Makefile )
 
-# main program
+# Main program
 model.o :	model.f90
 		@$(F_C) $(F_O) -c model.f90
@@ -344,5 +408,5 @@
 		@echo
 
-# Rules
+# Default rules
 .DEFAULTS:
 
@@ -370,5 +434,21 @@
 
 # rules for the .F90 files
-.F90.a :           
+.F90.a :  
+ifeq ($(AGRIF),use) 
+		@$(P_C) $(P_O) -IOPAFILES/AGRIF_INC $*.F90 > OPAFILES/$*.F90 
+		@(cd OPAFILES ; ./conv agrif_opa.in -rm \
+		-comdirin ./ -comdirout AGRIF_MODELFILES/. -convfile $*.F90)
+		-@mv -f OPAFILES/AGRIF_MODELFILES/$*.F90 OPAFILES/$*.F90
+		@$(P_C) $(P_O) -IOPAFILES/AGRIF_INC OPAFILES/$*.F90 > OPAFILES/AGRIF_MODELFILES/$*.F90
+		-@mv -f OPAFILES/AGRIF_MODELFILES/$*.F90 OPAFILES/$*.F90
+		@$(F_C) $(P_P) $(F_O) \
+#-Q- fjvpp		-Z $*.L \
+#-Q- sxnec		-R2 \
+#-Q- sx6nec		-R2 \
+#-Q- sxdkrz		-R2 \
+#-Q- eshpux		-R2 \
+#-Q- aix		-qsource \
+		OPAFILES/$*.F90 || { if [ -f $(PREF)$*.L ] ; then mv $(PREF)$*.L $(TMP) ; fi ; false ; exit ; } 
+else
 		@$(F_C) $(P_P) $(F_O) \
 #-Q- fjvpp		-Z $*.L \
@@ -379,4 +459,5 @@
 #-Q- aix		-qsource \
 		$*.F90 || { if [ -f $(PREF)$*.L ] ; then mv $(PREF)$*.L $(TMP) ; fi ; false ; exit ; }
+endif
 #-Q- sxnec		@$(A_X) $(SXMODEL_LIB) $*.o  > /dev/null
 #-Q- sx6nec		@$(A_X) $(SXMODEL_LIB) $*.o  > /dev/null
@@ -433,5 +514,207 @@
 #-Q- osxxlf		@mv $(PREF)$*.lst $(PREF)$*.L
 		@if [ -f $(PREF)$*.L ] ; then mv $*.L $(TMP) ; fi
-#
+
+$(MODEL_LIB)(agrif_opa_interp.o) :	\
+	in_out_manager.F90 \
+	lib_print.f90 \
+	par_kind.F90 \
+	par_oce.F90 \
+	$(MODEL_LIB)(in_out_manager.o) \
+	$(MODEL_LIB)(lib_print.o) \
+	$(MODEL_LIB)(par_kind.o) \
+	$(MODEL_LIB)(par_oce.o) \
+	dom_oce.F90 \
+	in_out_manager.F90 \
+	oce.F90 \
+	par_oce.F90 \
+	phycst.F90 \
+	sol_oce.F90 \
+	$(MODEL_LIB)(dom_oce.o) \
+	$(MODEL_LIB)(in_out_manager.o) \
+	$(MODEL_LIB)(oce.o) \
+	$(MODEL_LIB)(par_oce.o) \
+	$(MODEL_LIB)(phycst.o) \
+	$(MODEL_LIB)(sol_oce.o) \
+	domzgr_substitute.h90 \
+	vectopt_loop_substitute.h90 \
+	KEY_CPP \
+	agrif_opa_interp.F90
+$(MODEL_LIB)(agrif_opa_sponge.o) :	\
+	par_kind.F90 \
+	par_oce.F90 \
+	$(MODEL_LIB)(par_kind.o) \
+	$(MODEL_LIB)(par_oce.o) \
+	dom_oce.F90 \
+	oce.F90 \
+	par_oce.F90 \
+	$(MODEL_LIB)(dom_oce.o) \
+	$(MODEL_LIB)(oce.o) \
+	$(MODEL_LIB)(par_oce.o) \
+	domzgr_substitute.h90 \
+	KEY_CPP \
+	agrif_opa_sponge.F90
+$(MODEL_LIB)(agrif_opa_update.o) :	\
+	dom_oce.F90 \
+	in_out_manager.F90 \
+	lbclnk.F90 \
+	lib_mpp.F90 \
+	obc_oce.F90 \
+	ocesbc.F90 \
+	oce.F90 \
+	par_kind.F90 \
+	par_oce.F90 \
+	prtctl.F90 \
+	$(MODEL_LIB)(dom_oce.o) \
+	$(MODEL_LIB)(in_out_manager.o) \
+	$(MODEL_LIB)(lbclnk.o) \
+	$(MODEL_LIB)(lib_mpp.o) \
+	$(MODEL_LIB)(obc_oce.o) \
+	$(MODEL_LIB)(ocesbc.o) \
+	$(MODEL_LIB)(oce.o) \
+	$(MODEL_LIB)(par_kind.o) \
+	$(MODEL_LIB)(par_oce.o) \
+	$(MODEL_LIB)(prtctl.o) \
+	cla_div.F90 \
+	divcur.F90 \
+	dom_oce.F90 \
+	oce.F90 \
+	ocfzpt.F90 \
+	par_oce.F90 \
+	wzvmod.F90 \
+	$(MODEL_LIB)(cla_div.o) \
+	$(MODEL_LIB)(divcur.o) \
+	$(MODEL_LIB)(dom_oce.o) \
+	$(MODEL_LIB)(oce.o) \
+	$(MODEL_LIB)(ocfzpt.o) \
+	$(MODEL_LIB)(par_oce.o) \
+	$(MODEL_LIB)(wzvmod.o) \
+	domzgr_substitute.h90 \
+	KEY_CPP \
+	agrif_opa_update.F90
+$(MODEL_LIB)(agrif_user.o) :	\
+	blk_oce.F90 \
+	cla_div.F90 \
+	cpl.F90 \
+	cpl_oce.F90 \
+	daymod.F90 \
+	diaptr.F90 \
+	divcur.F90 \
+	domain.F90 \
+	domcfg.F90 \
+	dom_oce.F90 \
+	dtasal.F90 \
+	dtasst.F90 \
+	dtatem.F90 \
+	dyncor1d.F90 \
+	dynspg_oce.F90 \
+	eosbn2.F90 \
+	flxfwb.F90 \
+	iceini.F90 \
+	ini1d.F90 \
+	initrc.F90 \
+	in_out_manager.F90 \
+	istate.F90 \
+	ldfdyn.F90 \
+	ldftra.F90 \
+	lib_mpp.F90 \
+	lib_print.f90 \
+	mppini.F90 \
+	obcini.F90 \
+	obc_par.F90 \
+	oce.F90 \
+	ocfzpt.F90 \
+	par_kind.F90 \
+	par_oce.F90 \
+	phycst.F90 \
+	prtctl.F90 \
+	solver.F90 \
+	sol_oce.F90 \
+	step1d.F90 \
+	step.F90 \
+	traqsr.F90 \
+	trdicp.F90 \
+	trdmld.F90 \
+	trdmod.F90 \
+	trdmod_oce.F90 \
+	trdvor.F90 \
+	wzvmod.F90 \
+	zdfini.F90 \
+	zdfmxl.F90 \
+	zdf_oce.F90 \
+	zpshde.F90 \
+	$(MODEL_LIB)(blk_oce.o) \
+	$(MODEL_LIB)(cla_div.o) \
+	$(MODEL_LIB)(cpl.o) \
+	$(MODEL_LIB)(cpl_oce.o) \
+	$(MODEL_LIB)(daymod.o) \
+	$(MODEL_LIB)(diaptr.o) \
+	$(MODEL_LIB)(divcur.o) \
+	$(MODEL_LIB)(domain.o) \
+	$(MODEL_LIB)(domcfg.o) \
+	$(MODEL_LIB)(dom_oce.o) \
+	$(MODEL_LIB)(dtasal.o) \
+	$(MODEL_LIB)(dtasst.o) \
+	$(MODEL_LIB)(dtatem.o) \
+	$(MODEL_LIB)(dyncor1d.o) \
+	$(MODEL_LIB)(dynspg_oce.o) \
+	$(MODEL_LIB)(eosbn2.o) \
+	$(MODEL_LIB)(flxfwb.o) \
+	$(MODEL_LIB)(iceini.o) \
+	$(MODEL_LIB)(ini1d.o) \
+	$(MODEL_LIB)(initrc.o) \
+	$(MODEL_LIB)(in_out_manager.o) \
+	$(MODEL_LIB)(istate.o) \
+	$(MODEL_LIB)(ldfdyn.o) \
+	$(MODEL_LIB)(ldftra.o) \
+	$(MODEL_LIB)(lib_mpp.o) \
+	$(MODEL_LIB)(lib_print.o) \
+	$(MODEL_LIB)(mppini.o) \
+	$(MODEL_LIB)(obcini.o) \
+	$(MODEL_LIB)(obc_par.o) \
+	$(MODEL_LIB)(oce.o) \
+	$(MODEL_LIB)(ocfzpt.o) \
+	$(MODEL_LIB)(par_kind.o) \
+	$(MODEL_LIB)(par_oce.o) \
+	$(MODEL_LIB)(phycst.o) \
+	$(MODEL_LIB)(prtctl.o) \
+	$(MODEL_LIB)(solver.o) \
+	$(MODEL_LIB)(sol_oce.o) \
+	$(MODEL_LIB)(step1d.o) \
+	$(MODEL_LIB)(step.o) \
+	$(MODEL_LIB)(traqsr.o) \
+	$(MODEL_LIB)(trdicp.o) \
+	$(MODEL_LIB)(trdmld.o) \
+	$(MODEL_LIB)(trdmod.o) \
+	$(MODEL_LIB)(trdmod_oce.o) \
+	$(MODEL_LIB)(trdvor.o) \
+	$(MODEL_LIB)(wzvmod.o) \
+	$(MODEL_LIB)(zdfini.o) \
+	$(MODEL_LIB)(zdfmxl.o) \
+	$(MODEL_LIB)(zdf_oce.o) \
+	$(MODEL_LIB)(zpshde.o) \
+	agrif_opa_interp.F90 \
+	agrif_opa_sponge.F90 \
+	agrif_opa_update.F90 \
+	dom_oce.F90 \
+	ice_oce.F90 \
+	in_out_manager.F90 \
+	oce.F90 \
+	opa.F90 \
+	par_oce.F90 \
+	sol_oce.F90 \
+	tradmp.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
+	$(MODEL_LIB)(agrif_opa_sponge.o) \
+	$(MODEL_LIB)(agrif_opa_update.o) \
+	$(MODEL_LIB)(dom_oce.o) \
+	$(MODEL_LIB)(ice_oce.o) \
+	$(MODEL_LIB)(in_out_manager.o) \
+	$(MODEL_LIB)(oce.o) \
+	$(MODEL_LIB)(opa.o) \
+	$(MODEL_LIB)(par_oce.o) \
+	$(MODEL_LIB)(sol_oce.o) \
+	$(MODEL_LIB)(tradmp.o) \
+	\() \
+	agrif_user.F90
 $(MODEL_LIB)(albedo.o) :	\
 	dom_oce.F90 \
@@ -444,5 +727,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -500,5 +783,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(albedo.o) \
 	$(MODEL_LIB)(blk_oce.o) \
@@ -526,5 +809,5 @@
 	ocfzpt.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
@@ -561,5 +844,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -624,5 +907,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -691,5 +974,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	sol_oce.F90 \
 	taumod.F90 \
@@ -783,5 +1066,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -834,5 +1117,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -859,5 +1142,5 @@
 	$(MODEL_LIB)(ocfzpt.o) \
 	$(MODEL_LIB)(phycst.o) \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	cpl.F90
 $(MODEL_LIB)(cpl_oce.o) :	\
@@ -867,21 +1150,22 @@
 	$(MODEL_LIB)(par_oce.o) \
 	cpl_oce.F90
-$(MODEL_LIB)(daymod.o) :	\
-	dom_oce.F90 \
-	in_out_manager.F90 \
-	lib_mpp.F90 \
-	lib_print.f90 \
-	par_kind.F90 \
-	par_oce.F90 \
-	$(MODEL_LIB)(dom_oce.o) \
-	$(MODEL_LIB)(in_out_manager.o) \
-	$(MODEL_LIB)(lib_mpp.o) \
-	$(MODEL_LIB)(lib_print.o) \
-	$(MODEL_LIB)(par_kind.o) \
-	$(MODEL_LIB)(par_oce.o) \
-	dom_oce.F90 \
-	in_out_manager.F90 \
-	phycst.F90 \
-	prtctl.f90 \
+\
+	\() $(MODEL_LIB)(daymod.o) :	\
+	dom_oce.F90 \
+	in_out_manager.F90 \
+	lib_mpp.F90 \
+	lib_print.f90 \
+	par_kind.F90 \
+	par_oce.F90 \
+	$(MODEL_LIB)(dom_oce.o) \
+	$(MODEL_LIB)(in_out_manager.o) \
+	$(MODEL_LIB)(lib_mpp.o) \
+	$(MODEL_LIB)(lib_print.o) \
+	$(MODEL_LIB)(par_kind.o) \
+	$(MODEL_LIB)(par_oce.o) \
+	dom_oce.F90 \
+	in_out_manager.F90 \
+	phycst.F90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -896,5 +1180,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -937,5 +1221,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -997,5 +1281,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(daymod.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -1024,5 +1308,5 @@
 	$(MODEL_LIB)(oce.o) \
 	domzgr_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	diagap.F90
@@ -1074,5 +1358,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -1099,5 +1383,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(daymod.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -1126,5 +1410,5 @@
 	domzgr_substitute.h90 \
 	vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	diaptr.F90
@@ -1199,5 +1483,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	sol_oce.F90 \
 	taumod.F90 \
@@ -1285,5 +1569,5 @@
 	$(MODEL_LIB)(zdf_oce.o) \
 	zdfddm_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	diawri1d.F90
@@ -1309,5 +1593,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solpcg.F90 \
@@ -1395,5 +1679,5 @@
 	diawri_dimg.h90 \
 	zdfddm_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	diawri.F90
@@ -1447,5 +1731,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solisl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
@@ -1499,5 +1783,5 @@
 	$(MODEL_LIB)(phycst.o) \
 	domzgr_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	domain.F90
@@ -1553,5 +1837,5 @@
 	$(MODEL_LIB)(in_out_manager.o) \
 	$(MODEL_LIB)(phycst.o) \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	domhgr.F90
 $(MODEL_LIB)(dommsk.o) :	\
@@ -1633,5 +1917,5 @@
 	$(MODEL_LIB)(lib_mpp.o) \
 	domwri_dimg.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	domwri.F90
@@ -1689,5 +1973,5 @@
 	domzgr_zps.h90 \
 	vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	domzgr.F90
@@ -1711,5 +1995,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -1728,5 +2012,5 @@
 	$(MODEL_LIB)(oce.o) \
 	domzgr_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	dtasal.F90
@@ -1739,5 +2023,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -1758,5 +2042,5 @@
 	$(MODEL_LIB)(oce.o) \
 	$(MODEL_LIB)(ocfzpt.o) \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	dtasst.F90
 $(MODEL_LIB)(dtatem.o) :	\
@@ -1767,5 +2051,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -1784,5 +2068,5 @@
 	$(MODEL_LIB)(oce.o) \
 	domzgr_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	dtatem.F90
@@ -1804,5 +2088,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -1848,5 +2132,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -1897,5 +2181,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -1945,5 +2229,5 @@
 	in_out_manager.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -1969,5 +2253,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -2006,5 +2290,5 @@
 	ldfslp.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -2060,5 +2344,5 @@
 	ldfdyn_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -2088,5 +2372,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -2125,5 +2409,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -2156,5 +2440,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -2192,5 +2476,5 @@
 	ldfslp.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -2229,5 +2513,5 @@
 	lbclnk.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -2237,4 +2521,6 @@
 	dynnxt1d.F90
 $(MODEL_LIB)(dynnxt.o) :	\
+	cla_div.F90 \
+	divcur.F90 \
 	dom_oce.F90 \
 	dynspg_oce.F90 \
@@ -2248,7 +2534,12 @@
 	ocesbc.F90 \
 	oce.F90 \
-	par_kind.F90 \
-	par_oce.F90 \
-	phycst.F90 \
+	ocfzpt.F90 \
+	par_kind.F90 \
+	par_oce.F90 \
+	phycst.F90 \
+	sol_oce.F90 \
+	wzvmod.F90 \
+	$(MODEL_LIB)(cla_div.o) \
+	$(MODEL_LIB)(divcur.o) \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(dynspg_oce.o) \
@@ -2262,7 +2553,12 @@
 	$(MODEL_LIB)(ocesbc.o) \
 	$(MODEL_LIB)(oce.o) \
-	$(MODEL_LIB)(par_kind.o) \
-	$(MODEL_LIB)(par_oce.o) \
-	$(MODEL_LIB)(phycst.o) \
+	$(MODEL_LIB)(ocfzpt.o) \
+	$(MODEL_LIB)(par_kind.o) \
+	$(MODEL_LIB)(par_oce.o) \
+	$(MODEL_LIB)(phycst.o) \
+	$(MODEL_LIB)(sol_oce.o) \
+	$(MODEL_LIB)(wzvmod.o) \
+	agrif_opa_interp.F90 \
+	agrif_opa_update.F90 \
 	dom_oce.F90 \
 	dynspg_oce.F90 \
@@ -2274,5 +2570,7 @@
 	obc_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
+	$(MODEL_LIB)(agrif_opa_update.o) \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(dynspg_oce.o) \
@@ -2285,6 +2583,8 @@
 	$(MODEL_LIB)(oce.o) \
 	$(MODEL_LIB)(prtctl.o) \
+	\() \
 	dynnxt.F90
 $(MODEL_LIB)(dynspg.o) :	\
+	agrif_opa_interp.F90 \
 	cla_dynspg.F90 \
 	dom_oce.F90 \
@@ -2309,5 +2609,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solisl.F90 \
@@ -2325,4 +2625,5 @@
 	trdvor_oce.F90 \
 	zdf_oce.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
 	$(MODEL_LIB)(cla_dynspg.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -2375,5 +2676,5 @@
 	obc_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -2422,5 +2723,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -2462,5 +2763,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -2503,5 +2804,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -2543,5 +2844,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -2587,5 +2888,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solpcg.F90 \
@@ -2630,4 +2931,5 @@
 	$(MODEL_LIB)(tradmp.o) \
 	$(MODEL_LIB)(zdf_oce.o) \
+	agrif_opa_interp.F90 \
 	cla_dynspg.F90 \
 	dom_oce.F90 \
@@ -2642,5 +2944,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solpcg.F90 \
@@ -2649,4 +2951,5 @@
 	sol_oce.F90 \
 	zdf_oce.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
 	$(MODEL_LIB)(cla_dynspg.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -2670,4 +2973,5 @@
 	domzgr_substitute.h90 \
 	vectopt_loop_substitute.h90 \
+	\() \
 	KEY_CPP \
 	dynspg_flt.F90
@@ -2700,5 +3004,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solpcg.F90 \
@@ -2743,4 +3047,5 @@
 	$(MODEL_LIB)(tradmp.o) \
 	$(MODEL_LIB)(zdf_oce.o) \
+	agrif_opa_interp.F90 \
 	cla_dynspg.F90 \
 	dom_oce.F90 \
@@ -2755,5 +3060,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solpcg.F90 \
@@ -2762,4 +3067,5 @@
 	sol_oce.F90 \
 	zdf_oce.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
 	$(MODEL_LIB)(cla_dynspg.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -2782,4 +3088,5 @@
 	$(MODEL_LIB)(zdf_oce.o) \
 	domzgr_substitute.h90 \
+	\() \
 	KEY_CPP \
 	dynspg_flt_jki.F90
@@ -2884,5 +3191,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -2932,5 +3239,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(dynspg_oce.o) \
@@ -2977,5 +3284,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -3025,5 +3332,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(dynspg_oce.o) \
@@ -3079,5 +3386,5 @@
 	lbclnk.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -3132,5 +3439,5 @@
 	in_out_manager.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -3187,5 +3494,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trdmod.F90 \
@@ -3246,5 +3553,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trdmod.F90 \
@@ -3305,5 +3612,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trdmod.F90 \
@@ -3336,5 +3643,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -3374,5 +3681,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trdmod.F90 \
@@ -3404,5 +3711,5 @@
 	par_kind.F90 \
 	par_oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdf_oce.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -3419,5 +3726,5 @@
 	in_out_manager.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdfddm.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -3475,5 +3782,5 @@
 	$(MODEL_LIB)(flo_oce.o) \
 	$(MODEL_LIB)(lib_mpp.o) \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	floats.F90
 $(MODEL_LIB)(floblk.o) :	\
@@ -3532,5 +3839,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -3577,5 +3884,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(cpl_oce.o) \
@@ -3605,5 +3912,5 @@
 	ocfzpt.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(albedo.o) \
 	$(MODEL_LIB)(blk_oce.o) \
@@ -3641,5 +3948,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -3704,5 +4011,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(daymod.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -3760,5 +4067,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -3785,5 +4092,5 @@
 	$(MODEL_LIB)(phycst.o) \
 	flxrnf_ORCA_R05.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	flxrnf.F90
@@ -3912,5 +4219,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	thd_ice.F90 \
@@ -3991,5 +4298,5 @@
 	ocfzpt.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -4065,5 +4372,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	thd_ice.F90 \
@@ -4130,5 +4437,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	$(MODEL_LIB)(cpl_oce.o) \
@@ -4224,5 +4531,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solpcg.F90 \
@@ -4301,5 +4608,5 @@
 	domzgr_substitute.h90 \
 	vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	istate.F90
@@ -4336,5 +4643,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdfmxl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4375,5 +4682,5 @@
 	ldfdyn_c2d.h90 \
 	ldfdyn_c3d.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	ldfdyn.F90
@@ -4397,5 +4704,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdfmxl.F90 \
 	$(MODEL_LIB)(daymod.o) \
@@ -4421,5 +4728,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(flxrnf.o) \
@@ -4443,5 +4750,5 @@
 	par_kind.F90 \
 	par_oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdf_oce.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4461,5 +4768,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdfmxl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4488,5 +4795,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdfmxl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4524,5 +4831,5 @@
 	ldftra_c3d.h90 \
 	vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	ldftra.F90
@@ -4581,5 +4888,5 @@
 	in_out_manager.F90 \
 	lbclnk.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_ice.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4609,5 +4916,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(dom_ice.o) \
@@ -4672,5 +4979,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(dom_ice.o) \
@@ -4705,5 +5012,5 @@
 	limrhg.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_ice.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4737,5 +5044,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(albedo.o) \
 	$(MODEL_LIB)(blk_oce.o) \
@@ -4766,5 +5073,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(albedo.o) \
 	$(MODEL_LIB)(flxblk.o) \
@@ -4806,5 +5113,5 @@
 	lbclnk.F90 \
 	lib_mpp.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(ice.o) \
@@ -4912,5 +5219,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_ice.o) \
 	$(MODEL_LIB)(ice.o) \
@@ -4932,5 +5239,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -4955,5 +5262,5 @@
 	$(MODEL_LIB)(par_ice.o) \
 	limrst_dimg.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	limrst.F90
@@ -5015,5 +5322,5 @@
 	limthd_zdf.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	thd_ice.F90 \
 	$(MODEL_LIB)(dom_ice.o) \
@@ -5160,5 +5467,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(dom_ice.o) \
@@ -5231,5 +5538,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(daymod.o) \
@@ -5277,5 +5584,5 @@
 	$(MODEL_LIB)(diadimg.o) \
 	limwri_dimg.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	limwri.F90
@@ -5309,5 +5616,5 @@
 	ocfzpt.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solver.F90 \
 	step1d.F90 \
@@ -5383,5 +5690,5 @@
 	domzgr_substitute.h90 \
 	mppini_2.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	mppini.F90
@@ -5441,5 +5748,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -5475,5 +5782,5 @@
 	domzgr_substitute.h90 \
 	obc_vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	obcdta.F90
@@ -5686,5 +5993,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -5804,5 +6111,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -5883,5 +6190,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -5925,5 +6232,5 @@
 	ocfzpt.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -5967,4 +6274,5 @@
 	ocfzpt.F90
 $(MODEL_LIB)(opa.o) :	\
+	agrif_opa_sponge.F90 \
 	blk_oce.F90 \
 	cla.F90 \
@@ -6049,5 +6357,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	restart.F90 \
 	solisl.F90 \
@@ -6097,4 +6405,5 @@
 	zdf_oce.F90 \
 	zpshde.F90 \
+	$(MODEL_LIB)(agrif_opa_sponge.o) \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(cla.o) \
@@ -6255,5 +6564,5 @@
 	ocfzpt.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solver.F90 \
 	step1d.F90 \
@@ -6354,5 +6663,5 @@
 	$(MODEL_LIB)(in_out_manager.o) \
 	$(MODEL_LIB)(lib_mpp.o) \
-	prtctl.f90
+	prtctl.F90
 $(MODEL_LIB)(restart.o) :	\
 	blk_oce.F90 \
@@ -6366,5 +6675,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trazdf_exp.F90 \
@@ -6413,5 +6722,5 @@
 	$(MODEL_LIB)(lib_mpp.o) \
 	restart_dimg.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	restart.F90
@@ -6479,5 +6788,5 @@
 	$(MODEL_LIB)(solsor.o) \
 	$(MODEL_LIB)(sol_oce.o) \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	solisl.F90
 $(MODEL_LIB)(solmat.o) :	\
@@ -6664,4 +6973,6 @@
 	sol_oce.F90
 $(MODEL_LIB)(step1d.o) :	\
+	agrif_opa_interp.F90 \
+	agrif_opa_update.F90 \
 	blk_oce.F90 \
 	cpl_oce.F90 \
@@ -6708,5 +7019,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solisl.F90 \
 	sol_oce.F90 \
@@ -6723,4 +7034,6 @@
 	zdftke.F90 \
 	zdf_oce.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
+	$(MODEL_LIB)(agrif_opa_update.o) \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(cpl_oce.o) \
@@ -6808,5 +7121,5 @@
 	oce.F90 \
 	ocfzpt.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	restart.F90 \
 	stpctl.F90 \
@@ -6877,4 +7190,6 @@
 	step1d.F90
 $(MODEL_LIB)(step.o) :	\
+	agrif_opa_interp.F90 \
+	agrif_opa_update.F90 \
 	blk_oce.F90 \
 	cpl_oce.F90 \
@@ -6939,5 +7254,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	solfet.F90 \
 	solisl.F90 \
@@ -6958,4 +7273,6 @@
 	zdftke.F90 \
 	zdf_oce.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
+	$(MODEL_LIB)(agrif_opa_update.o) \
 	$(MODEL_LIB)(blk_oce.o) \
 	$(MODEL_LIB)(cpl_oce.o) \
@@ -7039,4 +7356,5 @@
 	$(MODEL_LIB)(zdftke.o) \
 	$(MODEL_LIB)(zdf_oce.o) \
+	agrif_opa_sponge.F90 \
 	cla.F90 \
 	cla_div.F90 \
@@ -7095,5 +7413,5 @@
 	oce.F90 \
 	ocfzpt.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	restart.F90 \
 	stpctl.F90 \
@@ -7134,4 +7452,5 @@
 	zdf_oce.F90 \
 	zpshde.F90 \
+	$(MODEL_LIB)(agrif_opa_sponge.o) \
 	$(MODEL_LIB)(cla.o) \
 	$(MODEL_LIB)(cla_div.o) \
@@ -7231,4 +7550,5 @@
 	domzgr_substitute.h90 \
 	zdfddm_substitute.h90 \
+	\() \
 	KEY_CPP \
 	step.F90
@@ -7322,5 +7642,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -7370,5 +7690,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7408,5 +7728,5 @@
 	oce.F90 \
 	ocfzpt.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdmod.F90 \
@@ -7456,5 +7776,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7492,5 +7812,5 @@
 	lib_mpp.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdmod.F90 \
@@ -7523,5 +7843,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7559,5 +7879,5 @@
 	lib_mpp.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdmod.F90 \
@@ -7590,5 +7910,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7626,5 +7946,5 @@
 	lib_mpp.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdmod.F90 \
@@ -7662,5 +7982,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -7669,5 +7989,5 @@
 	$(MODEL_LIB)(prtctl.o) \
 	domzgr_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	trabbc.F90
@@ -7694,5 +8014,5 @@
 	in_out_manager.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod_oce.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -7725,5 +8045,5 @@
 	par_kind.F90 \
 	par_oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7760,5 +8080,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -7779,5 +8099,5 @@
 	domzgr_substitute.h90 \
 	vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	tradmp.F90
@@ -7796,5 +8116,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7836,5 +8156,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -7868,5 +8188,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7908,5 +8228,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -7941,5 +8261,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -7980,5 +8300,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8012,5 +8332,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -8051,5 +8371,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8115,5 +8435,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8140,5 +8460,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -8186,4 +8506,6 @@
 	tranpc.F90
 $(MODEL_LIB)(tranxt.o) :	\
+	cla_div.F90 \
+	divcur.F90 \
 	dom_oce.F90 \
 	in_out_manager.F90 \
@@ -8193,7 +8515,12 @@
 	obc_oce.F90 \
 	oce.F90 \
-	par_kind.F90 \
-	par_oce.F90 \
-	phycst.F90 \
+	ocfzpt.F90 \
+	par_kind.F90 \
+	par_oce.F90 \
+	phycst.F90 \
+	sol_oce.F90 \
+	wzvmod.F90 \
+	$(MODEL_LIB)(cla_div.o) \
+	$(MODEL_LIB)(divcur.o) \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -8203,7 +8530,12 @@
 	$(MODEL_LIB)(obc_oce.o) \
 	$(MODEL_LIB)(oce.o) \
-	$(MODEL_LIB)(par_kind.o) \
-	$(MODEL_LIB)(par_oce.o) \
-	$(MODEL_LIB)(phycst.o) \
+	$(MODEL_LIB)(ocfzpt.o) \
+	$(MODEL_LIB)(par_kind.o) \
+	$(MODEL_LIB)(par_oce.o) \
+	$(MODEL_LIB)(phycst.o) \
+	$(MODEL_LIB)(sol_oce.o) \
+	$(MODEL_LIB)(wzvmod.o) \
+	agrif_opa_interp.F90 \
+	agrif_opa_update.F90 \
 	dom_oce.F90 \
 	in_out_manager.F90 \
@@ -8211,6 +8543,8 @@
 	obctra.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdf_oce.F90 \
+	$(MODEL_LIB)(agrif_opa_interp.o) \
+	$(MODEL_LIB)(agrif_opa_update.o) \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -8220,4 +8554,5 @@
 	$(MODEL_LIB)(prtctl.o) \
 	$(MODEL_LIB)(zdf_oce.o) \
+	\() \
 	tranxt.F90
 $(MODEL_LIB)(traqsr.o) :	\
@@ -8242,5 +8577,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	sms.F90 \
 	taumod.F90 \
@@ -8291,5 +8626,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trc_oce.F90 \
 	trdmod.F90 \
@@ -8330,5 +8665,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trabbl.F90 \
@@ -8382,5 +8717,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	traqsr.F90 \
 	trdmod.F90 \
@@ -8408,5 +8743,5 @@
 	par_kind.F90 \
 	par_oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trabbl.F90 \
 	trdicp.F90 \
@@ -8439,5 +8774,5 @@
 	in_out_manager.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8468,5 +8803,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trabbl.F90 \
@@ -8507,5 +8842,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8542,5 +8877,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trabbl.F90 \
@@ -8587,5 +8922,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8626,5 +8961,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trabbl.F90 \
@@ -8671,5 +9006,5 @@
 	ldftra_oce.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdmod.F90 \
 	trdmod_oce.F90 \
@@ -8711,5 +9046,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdicp_oce.F90 \
 	trdmld_oce.F90 \
@@ -8770,5 +9105,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdicp_oce.F90 \
 	trdmld_oce.F90 \
@@ -8825,5 +9160,5 @@
 	ldftra_substitute.h90 \
 	zdfddm_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	trdmld.F90
@@ -8851,5 +9186,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdicp_oce.F90 \
 	trdmld_oce.F90 \
@@ -8926,5 +9261,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	trdicp_oce.F90 \
 	trdmld_oce.F90 \
@@ -8977,5 +9312,5 @@
 	ldfdyn_substitute.h90 \
 	vectopt_loop_substitute.h90 \
-	../../../lib/libioipsl.a \
+	$(IOIPSL_LIB) \
 	KEY_CPP \
 	trdvor.F90
@@ -9002,5 +9337,5 @@
 	in_out_manager.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
 	$(MODEL_LIB)(in_out_manager.o) \
@@ -9029,5 +9364,5 @@
 	lbclnk.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdf_oce.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -9059,5 +9394,5 @@
 	lbclnk.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdf_oce.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -9082,5 +9417,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	zdfddm.F90 \
@@ -9130,5 +9465,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trazdf_exp.F90 \
@@ -9209,5 +9544,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	tradmp.F90 \
@@ -9246,5 +9581,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	zdfddm.F90 \
@@ -9281,5 +9616,5 @@
 	in_out_manager.F90 \
 	oce.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdf_oce.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -9330,5 +9665,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trdmod.F90 \
@@ -9358,5 +9693,5 @@
 	oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	taumod.F90 \
 	trazdf_exp.F90 \
@@ -9394,5 +9729,5 @@
 	par_oce.F90 \
 	phycst.F90 \
-	prtctl.f90 \
+	prtctl.F90 \
 	zdfddm.F90 \
 	$(MODEL_LIB)(dom_oce.o) \
@@ -9426,12 +9761,12 @@
 # key changing control
 key: 
-	@echo CHANGEMENT de CLES CPP oui/non ?
-	-@if [ "`cat KEY_CPP`" != "$(P_P)" ] ; then \
-		echo CPP options changed ; echo "$(P_P)" > KEY_CPP ; fi 
-
+	@echo CHANGE of CPP KEYS yes/no ?
+	-@if [ "`cat KEY_CPP`" != "$(P_P:$(prefix)%=%)" ] ; then \
+		echo CPP options changed ; echo "$(P_P:$(prefix)%=%)" > KEY_CPP ; fi 
+# check key values
 keyverif:
-	@echo VERIFICATION DES CLES
-	@echo CLES UTILISEES  : 
-	@for v in ` echo $(P_P) | sed  -e s/-Wp,-D//g` ; \
+	@echo CHECKING KEY
+	@echo KEY USED : 
+	@for v in ` echo $(P_P:$(prefix)%=%) ` ; \
 	do \
 	echo $$v ;\
@@ -9450,5 +9785,5 @@
 src_file_list: 
 	@echo CHECKING THE NUMBER AND NAMES OF SOURCE FILES 
-	@\$(RM) `ls | fgrep -v -f .patron` 
+	@$(RM) `ls | fgrep -v -f .patron` 
 	@check=`grep OPA_SRC .config`              ; \
 	if [ -n "$$check" ] ; then                   \
@@ -9472,4 +9807,12 @@
 	echo "   use LIM_SRC files"                ; \
       ln -sf ../LIM_SRC/*.[Ffh]90          . ; \
+  fi 
+	@check=`grep NST_SRC .config`              ; \
+	if [ -n "$$check" ] ; then                   \
+	echo "   use NST_SRC files"                ; \
+      \$(RM) agrif_opa_interp.F90           ; \
+      \$(RM) agrif_opa_sponge.F90           ; \
+      \$(RM) agrif_opa_update.F90           ; \
+      ln -sf ../NST_SRC/*.[Ffh]90      .     ; \
   fi 
 	@check=`grep C1D_SRC .config`              ; \
Index: /trunk/CONFIG/ORCA2_LIM/scripts/BB_make.ldef
===================================================================
--- /trunk/CONFIG/ORCA2_LIM/scripts/BB_make.ldef	(revision 394)
+++ /trunk/CONFIG/ORCA2_LIM/scripts/BB_make.ldef	(revision 395)
@@ -1,9 +1,12 @@
-#---------------------------------------------------------------------
-#- OPA SYSTEM : Ocean model + Sea Ice Model   (BB_mak.ldef in scripts)
-#---------------------------------------------------------------------
+#----------------------------------------------------------------------
+#- NEMO SYSTEM : Ocean model + Sea Ice Model   (BB_make.ldef in scripts)
+#----------------------------------------------------------------------
 SHELL = /bin/sh
+#-
 #-Q- t3e     #--- Please use gmake instead of make
 #-Q- fjvpp   #--- Please use gmake instead of make
-#---------------------------------------------------------------------
+
+#-
+#- Define the libraries ---
 LIBDIR = ../../../lib
 MODDIR = $(LIBDIR)
@@ -13,4 +16,8 @@
 #-Q- sx6nec IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a
 #-Q- sxdkrz IOIPSL_LIB = $(LIBDIR)/libsxioipsl.a
+AGRIF_LIB = $(LIBDIR)/libagrif.a
+#-Q- sxnec  AGRIF_LIB = $(LIBDIR)/libsxagrif.a
+#-Q- sx6nec AGRIF_LIB = $(LIBDIR)/libsxagrif.a
+#-Q- sxdkrc AGRIF_LIB = $(LIBDIR)/libsxagrif.a
 SXMODEL_LIB = $(MODEL_LIB)
 #-Q- sxnec  SXMODEL_LIB = $(LIBDIR)/oce/libsxopa.a
@@ -21,39 +28,22 @@
 LIBMP   =
 EXEC_BIN = ../../../bin/opa
-#---------------------------------------------------------------------
+
 #-
 #- Key options for OPA ocean model + LIM sea ice model : ORCA_R2 - FORCED (CLIO)
+#  Keys have to be written on one single line (does NOT accept "\")
+
+P_P = key_partial_steps key_trabbl_dif key_vectopt_loop key_vectopt_memory key_orca_r2 key_ice_lim key_lim_fdd key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tau_monthly key_flx_bulk_monthly key_tradmp key_trabbc key_zdftke key_zdfddm
+
 #-
-#-Q- sxnec  ## ORCA2-LIM standard
-#-Q- sxnec  P_P = -Wp,-Dkey_partial_steps -Wp,-Dkey_trabbl_dif -Wp,-Dkey_vectopt_loop -Wp,-Dkey_vectopt_memory -Wp,-Dkey_orca_r2 -Wp,-Dkey_ice_lim -Wp,-Dkey_lim_fdd -Wp,-Dkey_dynspg_flt -Wp,-Dkey_diaeiv -Wp,-Dkey_ldfslp  -Wp,-Dkey_traldf_c2d -Wp,-Dkey_traldf_eiv -Wp,-Dkey_dynldf_c3d -Wp,-Dkey_dtatem -Wp,-Dkey_dtasal -Wp,-Dkey_tau_monthly -Wp,-Dkey_flx_bulk_monthly -Wp,-Dkey_tradmp -Wp,-Dkey_trabbc -Wp,-Dkey_zdftke -Wp,-Dkey_zdfddm
-#-
-#-Q- sxnec  ## ORCA2-LIM autotasking
-#-Q- sxnec  ## P_P = -Wp,-Dkey_autotasking -Wp,-Dkey_partial_steps -Wp,-Dkey_trabbl_dif -Wp,-Dkey_vectopt_loop -Wp,-Dkey_vectopt_memory -Wp,-Dkey_orca_r2 -Wp,-Dkey_ice_lim -Wp,-Dkey_lim_fdd -Wp,-Dkey_dynspg_flt -Wp,-Dkey_diaeiv -Wp,-Dkey_ldfslp -Wp,-Dkey_traldf_c2d -Wp,-Dkey_traldf_eiv -Wp,-Dkey_dynldf_c3d -Wp,-Dkey_dtatem -Wp,-Dkey_dtasal -Wp,-Dkey_tau_monthly -Wp,-Dkey_flx_bulk_monthly -Wp,-Dkey_tradmp -Wp,-Dkey_trabbc -Wp,-Dkey_zdftke -Wp,-Dkey_zdfddm 
-#-
-#-Q- sx6nec  ## ORCA2-LIM standard
-#-Q- sx6nec  P_P = '-Wp,-Dkey_partial_steps -Wp,-Dkey_trabbl_dif -Wp,-Dkey_vectopt_loop -Wp,-Dkey_vectopt_memory -Wp,-Dkey_orca_r2 -Wp,-Dkey_ice_lim -Wp,-Dkey_lim_fdd -Wp,-Dkey_dynspg_flt -Wp,-Dkey_diaeiv -Wp,-Dkey_ldfslp -Wp,-Dkey_traldf_c2d -Wp,-Dkey_traldf_eiv -Wp,-Dkey_dynldf_c3d -Wp,-Dkey_dtatem -Wp,-Dkey_dtasal -Wp,-Dkey_tau_monthly -Wp,-Dkey_flx_bulk_monthly -Wp,-Dkey_tradmp -Wp,-Dkey_trabbc -Wp,-Dkey_zdftke -Wp,-Dkey_zdfddm'
-#-
-#-Q- sx6nec  ## ORCA2-LIM autotasking
-#-Q- sx6nec  ## P_P = '-Wp,-Dkey_autotasking -Wp,-Dkey_partial_steps -Wp,-Dkey_trabbl_dif -Wp,-Dkey_vectopt_loop -Wp,-Dkey_vectopt_memory -Wp,-Dkey_orca_r2 -Wp,-Dkey_ice_lim -Wp,-Dkey_lim_fdd -Wp,-Dkey_dynspg_flt -Wp,-Dkey_diaeiv -Wp,-Dkey_ldfslp -Wp,-Dkey_traldf_c2d -Wp,-Dkey_traldf_eiv -Wp,-Dkey_dynldf_c3d -Wp,-Dkey_dtatem -Wp,-Dkey_dtasal -Wp,-Dkey_tau_monthly -Wp,-Dkey_flx_bulk_monthly -Wp,-Dkey_tradmp -Wp,-Dkey_trabbc -Wp,-Dkey_zdftke -Wp,-Dkey_zdfddm' 
-#-
-#-Q- eshpux  ## ORCA2-LIM standard
-#-Q- eshpux  P_P = '-Wp,-Dkey_partial_steps -Wp,-Dkey_trabbl_dif -Wp,-Dkey_vectopt_loop -Wp,-Dkey_vectopt_memory -Wp,-Dkey_orca_r2 -Wp,-Dkey_ice_lim -Wp,-Dkey_lim_fdd -Wp,-Dkey_dynspg_flt -Wp,-Dkey_diaeiv -Wp,-Dkey_ldfslp -Wp,-Dkey_traldf_c2d -Wp,-Dkey_traldf_eiv -Wp,-Dkey_dynldf_c3d -Wp,-Dkey_dtatem -Wp,-Dkey_dtasal -Wp,-Dkey_tau_monthly -Wp,-Dkey_flx_bulk_monthly -Wp,-Dkey_tradmp -Wp,-Dkey_trabbc -Wp,-Dkey_zdftke -Wp,-Dkey_zdfddm'
-#-
-#-Q- sxdkrz  ## ORCA2-LIM standard
-#-Q- sxdkrz  P_P = '-Wp,-Dkey_partial_steps -Wp,-Dkey_trabbl_dif -Wp,-Dkey_vectopt_loop -Wp,-Dkey_vectopt_memory -Wp,-Dkey_orca_r2 -Wp,-Dkey_ice_lim -Wp,-Dkey_lim_fdd -Wp,-Dkey_dynspg_flt -Wp,-Dkey_diaeiv -Wp,-Dkey_ldfslp -Wp,-Dkey_traldf_c2d -Wp,-Dkey_traldf_eiv -Wp,-Dkey_dynldf_c3d -Wp,-Dkey_dtatem -Wp,-Dkey_dtasal -Wp,-Dkey_tau_monthly -Wp,-Dkey_flx_bulk_monthly -Wp,-Dkey_tradmp -Wp,-Dkey_trabbc -Wp,-Dkey_zdftke -Wp,-Dkey_zdfddm'
-#-
-#-Q- linux     ## ORCA2-LIM standard
-#-Q- linux    P_P = -Dkey_partial_steps -Dkey_trabbl_dif -Dkey_vectopt_loop -Dkey_vectopt_memory -Dkey_orca_r2 -Dkey_ice_lim -Dkey_lim_fdd -Dkey_dynspg_flt -Dkey_diaeiv -Dkey_ldfslp  -Dkey_traldf_c2d -Dkey_traldf_eiv -Dkey_dynldf_c3d -Dkey_dtatem -Dkey_dtasal -Dkey_tau_monthly -Dkey_flx_bulk_monthly -Dkey_tradmp -Dkey_trabbc -Dkey_zdftke -Dkey_zdfddm
-#-
-#-Q- lxiv8     ## ORCA2-LIM standard
-#-Q- lxiv8    P_P = -Dkey_partial_steps -Dkey_trabbl_dif -Dkey_vectopt_loop -Dkey_vectopt_memory -Dkey_orca_r2 -Dkey_ice_lim -Dkey_lim_fdd -Dkey_dynspg_flt -Dkey_diaeiv -Dkey_ldfslp  -Dkey_traldf_c2d -Dkey_traldf_eiv -Dkey_dynldf_c3d -Dkey_dtatem -Dkey_dtasal -Dkey_tau_monthly -Dkey_flx_bulk_monthly -Dkey_tradmp -Dkey_trabbc -Dkey_zdftke -Dkey_zdfddm
-#-
-#-Q- g95     ## ORCA2-LIM standard
-#-Q- g95    P_P = -Dkey_partial_steps -Dkey_trabbl_dif -Dkey_vectopt_loop -Dkey_vectopt_memory -Dkey_orca_r2 -Dkey_ice_lim -Dkey_lim_fdd -Dkey_dynspg_flt -Dkey_diaeiv -Dkey_ldfslp  -Dkey_traldf_c2d -Dkey_traldf_eiv -Dkey_dynldf_c3d -Dkey_dtatem -Dkey_dtasal -Dkey_tau_monthly -Dkey_flx_bulk_monthly -Dkey_tradmp -Dkey_trabbc -Dkey_zdftke -Dkey_zdfddm
-#-
-#-Q- aix     ## ORCA2-LIM standard
-#-Q- aix     P_P = -WF,-Dkey_partial_steps -WF,-Dkey_trabbl_dif -WF,-Dkey_vectopt_memory -WF,-Dkey_orca_r2 -WF,-Dkey_ice_lim -WF,-Dkey_lim_fdd -WF,-Dkey_dynspg_flt -WF,-Dkey_diaeiv -WF,-Dkey_ldfslp  -WF,-Dkey_traldf_c2d -WF,-Dkey_traldf_eiv -WF,-Dkey_dynldf_c3d -WF,-Dkey_dtatem -WF,-Dkey_dtasal -WF,-Dkey_tau_monthly -WF,-Dkey_flx_bulk_monthly -WF,-Dkey_tradmp -WF,-Dkey_trabbc -WF,-Dkey_zdftke -WF,-Dkey_zdfddm
-#-
-#-Q- osxxlf     ## ORCA2-LIM standard
-#-Q- osxxlf     P_P = -WF,-Dkey_partial_steps -WF,-Dkey_trabbl_dif -WF,-Dkey_vectopt_memory -WF,-Dkey_orca_r2 -WF,-Dkey_ice_lim -WF,-Dkey_lim_fdd -WF,-Dkey_dynspg_flt -WF,-Dkey_diaeiv -WF,-Dkey_ldfslp  -WF,-Dkey_traldf_c2d -WF,-Dkey_traldf_eiv -WF,-Dkey_dynldf_c3d -WF,-Dkey_dtatem -WF,-Dkey_dtasal -WF,-Dkey_tau_monthly -WF,-Dkey_flx_bulk_monthly -WF,-Dkey_tradmp -WF,-Dkey_trabbc -WF,-Dkey_zdftke -WF,-Dkey_zdfddm
+#- Prefix for preprocessing ---
+#-Q- sxnec  prefix = -Wp,-D
+#-Q- sx6nec prefix = -Wp,-D
+#-Q- eshpux prefix = -Wp,-D
+#-Q- sxdkrz prefix = -Wp,-D
+#-Q- linux  prefix = -D
+#-Q- lxiv7  prefix = -D
+#-Q- lxiv8  prefix = -D
+#-Q- g95    prefix = -D
+#-Q- aix    prefix = -WF,-D
+#-Q- osxxlf prefix = -WF,-D
 
