diff --git a/src/LIB/SURCOUCHE/src/fieldtype.f90 b/src/LIB/SURCOUCHE/src/fieldtype.f90
deleted file mode 100644
index ebcacb589dba698718ba254a37eb3b0d04e123f9..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/fieldtype.f90
+++ /dev/null
@@ -1,444 +0,0 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-#ifdef MNH_NCWRIT
-MODULE MODE_FIELDTYPE
-  USE MODD_PARAM
-  
-  IMPLICIT NONE 
-
-  PRIVATE
-
-  
-  TYPE field
-     CHARACTER(LEN=FM_FIELD_SIZE) :: name ! Le nom de l'article LFI
-     INTEGER                      :: TYPE ! Type :entier(INT) ou reel(FLOAT2)
-     CHARACTER(LEN=FM_FIELD_SIZE) :: ncname ! Le nom de la variable netcdf
-     CHARACTER(LEN=FM_FIELD_SIZE) :: ncunit ! Unité de la variable netcdf
-     CHARACTER(LEN=64) :: ncdes  ! Description de la variable netcdf
-  END TYPE field
-  
-  TYPE(field), DIMENSION(:), ALLOCATABLE :: userfield
-
-  ! Les champs contenant %TDATE et %TIME sont traites en dur
-  ! dans la routine de recherche de type
-  TYPE(field), DIMENSION(2),   PARAMETER  :: datefield = (/&
-               field('%TDA', INT2, '', '',''), &
-               field('%TIM', FLOAT2, '', '','') &
-             /)
-
-  TYPE(field), DIMENSION(233), SAVE  :: sysfield
-
-  PUBLIC :: get_ftype, get_ncname, get_ncunit, get_ncdes, init_sysfield
-
-CONTAINS 
-SUBROUTINE init_sysfield()
-sysfield(1) =  field('3D1', FLOAT2, '3D1','','')
-sysfield(2) =  field('3D2', FLOAT2, '3D2','','')
-sysfield(3) =  field('3D3', FLOAT2, '3D3','','')
-sysfield(4) =  field('3D4', FLOAT2, '3D4','','')
-sysfield(5) =  field('3D5', FLOAT2, '3D5','','')
-sysfield(6) =  field('ACPRC', FLOAT2 , 'ACPRC','mm -h','ACcumulated Cloud&
- & Precipitation Rain Rate')
-sysfield(7) =  field('ACPRG', FLOAT2 , 'ACPRG','mm','ACcumulated PRecipitation&
- & Graupel Rate') 
-sysfield(8) =  field('ACPRR', FLOAT2 , 'ACPRR','mm','ACcumulated Precipitation&
- & Rain Rate')
-sysfield(9) =  field('ACPRS', FLOAT2 , 'ACPRS','mm','ACcumulated PRecipitation&
- & Snow Rate')
-sysfield(10) =  field('ACPRT', FLOAT2 , 'ACPRT','mm','Total ACcumulated&
- & PRecipitation rate')
-sysfield(11) =  field('ALBNIR', FLOAT2 , 'ALBNIR','','')
-sysfield(12) =  field('ALBS', FLOAT2 , 'ALBS','','')
-sysfield(13) =  field('ALBVIS', FLOAT2 , 'ALBVIS','','')
-sysfield(14) =  field('AOSIM', FLOAT2, 'AOSIM','','')
-sysfield(15) =  field('AOSIP', FLOAT2, 'AOSIP','','')
-sysfield(16) =  field('AOSJM', FLOAT2, 'AOSJM','','')
-sysfield(17) =  field('AOSJP', FLOAT2, 'AOSJP','','')
-sysfield(18) =  field('AVG_ZS', FLOAT2, 'AVG_ZS','m','')
-sysfield(19) =  field('AZIM', FLOAT2, 'AZIM','rad','azimuth')
-sysfield(20) =  field('BETA', FLOAT2, 'BETA','','')
-sysfield(21) =  field('CIT',FLOAT2, 'CIT','m-3','cloud ice concentration')
-sysfield(22) =  field('CLAY', FLOAT2 , 'CLAY','','')
-sysfield(23) =  field('CLDFR', FLOAT2 , 'CLDFR','','Cloud fraction')
-sysfield(24) =  field('COUNTCONV', INT2 , 'COUNTCONV','','')
-sysfield(25) =  field('COVERxxx', FLOAT2 , 'COVERxxx','','')
-sysfield(26) =  field('CV', FLOAT2 , 'CV','','')
-sysfield(27) =  field('D2', FLOAT2 , 'D2','','')
-sysfield(28) =  field('DEB', FLOAT2, 'DEB','','')
-sysfield(29) =  field('DIR_ALB', FLOAT2, 'DIR_ALB','','direct albedo')
-sysfield(30) =  field('DIRFLASWD', FLOAT2, 'DIRFLASWD','W m-2','DIRect Downward&
- &Long Waves on FLAT surface')
-sysfield(31) =  field('DIRSRFSWD', FLOAT2 , 'DIRSRFSWD','W m-2','DIRect&
- &Downward Long Waves')
-sysfield(32) =  field('DRICONV', FLOAT2 , 'DRICONV','','')
-sysfield(33) =  field('DRCCONV', FLOAT2 , 'DRCCONV','','')
-sysfield(34) =  field('DRVCONV', FLOAT2 , 'DRVCONV','','')
-sysfield(35) =  field('DRYMASST',FLOAT2, 'DRYMASST','kg','')
-sysfield(36) =  field('DTHCONV', FLOAT2 , 'DTHCONV','','')
-sysfield(37) =  field('DTHRAD', FLOAT2 , 'DTHRAD','K s-1','radiative&
- &heating/cooling rate')
-sysfield(38) =  field('DUMMY_GR_NBR', INT2 , 'DUMMY_GR_NBR','','')
-sysfield(39) =  field('DUMMY_GRxxx', FLOAT2 , 'DUMMY_GRxxx','','')
-sysfield(40) =  field('DXRATIO', INT2, 'DXRATIO','','')
-sysfield(41) =  field('DYRATIO', INT2, 'DYRATIO','','')
-sysfield(42) =  field('EMIS', FLOAT2 , 'EMIS','','EMISsivity')
-sysfield(43) =  field('EMISFILE_GR_NBR', INT2 , 'EMISFILE_GR_NBR','','')
-sysfield(44) =  field('EMISPEC_GR_NBR', INT2 , 'EMISPEC_GR_NBR','','')
-sysfield(45) =  field('EMISTIMESxxx', INT2 , 'EMISTIMESxxx','','')
-sysfield(46) =  field('EPSM', FLOAT2, 'EPSM','','')
-sysfield(47) =  field('EPST',FLOAT2, 'EPST','','')
-sysfield(48) =  field('EVAP3D',FLOAT2, 'EVAP3D','kg kg-1 s-1','INstantaneous 3D&
- &Rain Evaporation flux')
-sysfield(49) =  field('EXNTOP',FLOAT2, 'EXNTOP','','exner function at model top')
-sysfield(50) =  field('FLALWD', FLOAT2, 'FLALWD','W m-2','Downward Long Waves on&
- &FLAT surface')
-sysfield(51) =  field('FRC', INT2, 'FRC','','')
-sysfield(52) =  field('FMU', FLOAT2, 'FMU','kg m-1 s-2','')
-sysfield(53) =  field('FMV', FLOAT2, 'FMV','kg m-1 s-2','')
-sysfield(54) =  field('GAMMA', FLOAT2 , 'GAMMA','','')
-sysfield(55) =  field('GFLUX',FLOAT2, 'GFLUX','W m-2','')
-sysfield(56) =  field('GXRVFRCxx', FLOAT2 , 'GXRVFRCxx','','')
-sysfield(57) =  field('GXTHFRCxx', FLOAT2 , 'GXTHFRCxx','','')
-sysfield(58) =  field('GYRVFRCxx', FLOAT2 , 'GYRVFRCxx','','')
-sysfield(59) =  field('GYTHFRCxx', FLOAT2 , 'GYTHFRCxx','','')
-sysfield(60) =  field('H', FLOAT2, 'H','W m-2','')
-sysfield(61) =  field('HO2IM', FLOAT2, 'HO2IM','m','')
-sysfield(62) =  field('HO2IP', FLOAT2, 'HO2IP','m','')
-sysfield(63) =  field('HO2JM', FLOAT2, 'HO2JM','m','')
-sysfield(64) =  field('HO2JP', FLOAT2, 'HO2JP','m','')
-sysfield(65) =  field('I1D', INT2, 'I1D','','')
-sysfield(66) =  field('I2D_XY', INT2, 'I2D_XY','','')
-sysfield(67) =  field('IE', INT2, 'IE','','')
-sysfield(68) =  field('IMAX', INT2, 'IMAX','','')
-sysfield(69) =  field('INPRR3D', FLOAT2, 'INPRR3D','m s-1','INstantaneous 3D Rain&
- &Precipitation flux')
-sysfield(70) =  field('INPRC', FLOAT2 , 'INPRC','mm h-1','INstantaneous Cloud&
- &Precipitation Rain Rate')
-sysfield(71) =  field('INPRG', FLOAT2 , 'INPRG','mm h-1','INstantaneous&
- &PRecipitation Graupel Rate')
-sysfield(72) =  field('INPRR', FLOAT2 , 'INPRR','mm h-1','INstantaneous&
- &Precipitation Rain Rate')
-sysfield(73) =  field('INPRS', FLOAT2 , 'INPRS','mm h-1','INstantaneous&
- &PRecipitation Snow Rate')
-sysfield(74) =  field('INPRT', FLOAT2 , 'INPRT','mm h-1','Total INstantaneaous&
- &PRecipitation rate')
-sysfield(75) =  field('JMAX', INT2, 'JMAX','','')
-sysfield(76) =  field('KMAX', INT2, 'KMAX','','')
-sysfield(77) =  field('LAT', FLOAT2, 'LAT','degrees-north','')
-sysfield(78) =  field('LBXSVMxxx', FLOAT2 , 'LBXSVM','','')
-sysfield(79) =  field('LBYSVMxxx', FLOAT2 , 'LBYSVM','','')
-sysfield(80) =  field('LBXUM', FLOAT2, 'LBXUM','m s-1','')
-sysfield(81) =  field('LBYUM', FLOAT2, 'LBYUM','m s-1','')
-sysfield(82) =  field('LBXVM', FLOAT2,'LBXVM','m s-1' ,'')
-sysfield(83) =  field('LBYVM', FLOAT2, 'LBYVM','m s-1','')
-sysfield(84) =  field('LBXWM', FLOAT2, 'LBXWM','m s-1','')
-sysfield(85) =  field('LBYWM', FLOAT2, 'LBYWM','m s-1','')
-sysfield(86) =  field('LBXTHM', FLOAT2, 'LBXTHM','K','')
-sysfield(87) =  field('LBYTHM', FLOAT2, 'LBYTHM','K','')
-sysfield(88) =  field('LBXRVM', FLOAT2, 'LBXRVM','kg kg-1','')
-sysfield(89) =  field('LBYRVM', FLOAT2, 'LBYRVM','kg kg-1','')
-sysfield(90) =  field('LON', FLOAT2, 'LON','degrees-east','')
-sysfield(91) =  field('LONOR', FLOAT2, 'LONOR','','')
-sysfield(92) =  field('LATOR', FLOAT2, 'LATOR','','')
-sysfield(93) =  field('LE', FLOAT2, 'LE','W m-2','')
-sysfield(94) =  field('LSUM', FLOAT2, 'LSUM','m s-1','large scale x-wind&
- &component')
-sysfield(95) =  field('LSVM', FLOAT2, 'LSVM','m s-1','large scale y-wind&
- &component')
-sysfield(96) =  field('LSWM',FLOAT2 , 'LSWM','m s-1','large scale z-wind&
- &component')
-sysfield(97) =  field('LSTHM',FLOAT2, 'LSTHM','K','large scale &
-          & potential temperature')
-sysfield(98) =  field('LSRVM',FLOAT2, 'LSRVM','kg kg-1','large scale vapor&
- &mixing ratio')
-sysfield(99) =  field('LSXTKEM',FLOAT2, 'LSXTKEM','','')
-sysfield(100) =  field('LSYTKEM',FLOAT2, 'LSYTKEM','','')
-sysfield(101) =  field('LSXEPSM',FLOAT2, 'LSXEPSM','','')
-sysfield(102) =  field('LSXRIM', FLOAT2, 'LSXRIM','','')
-sysfield(103) =  field('LSYRIM', FLOAT2, 'LSYRIM','','')
-sysfield(104) =  field('LSXRSM', FLOAT2, 'LSXRSM','','')
-sysfield(105) =  field('LSYRSM', FLOAT2, 'LSYRSM','','')
-sysfield(106) =  field('LSYRCM', FLOAT2, 'LSYRCM','','')
-sysfield(107) =  field('LSXRRM', FLOAT2, 'LSXRRM','','')
-sysfield(108) =  field('LSYRRM', FLOAT2, 'LSYRRM','','')
-sysfield(109) =  field('LAI', FLOAT2 , 'LAI','','')
-sysfield(110) =  field('LSXRGM', FLOAT2, 'LSXRGM','','')
-sysfield(111) =  field('LSYRGM', FLOAT2, 'LSYRGM','','')
-sysfield(112) =  field('LSXRHM', FLOAT2, 'LSXRHM','','')
-sysfield(113) =  field('LSYRHM', FLOAT2, 'LSYRHM','','')
-sysfield(114) =  field('LSXSVMxxx', FLOAT2, 'LSXSVM','','')
-sysfield(115) =  field('LSYSVMxxx', FLOAT2, 'LSYSVM','','')
-sysfield(116) =  field('LSYEPSM',FLOAT2, 'LSYEPSM','','')
-sysfield(117) =  field('LSXRCM',FLOAT2 , 'LSXRCM','','')
-sysfield(118) =  field('LAT0', FLOAT2, 'LAT0','','')
-sysfield(119) =  field('LAND', FLOAT2 , 'LAND','','')
-sysfield(120) =  field('LON0', FLOAT2, 'LON0','','')
-sysfield(121) =  field('MASDEV', INT2 , 'MASDEV','','')
-sysfield(122) =  field('MAX_ZS', FLOAT2, 'MAX_ZS','m','')
-sysfield(123) =  field('MIN_ZS', FLOAT2, 'MIN_ZS','m','')
-sysfield(124) =  field('MRC', FLOAT2, 'MRC','g kg-1','')
-sysfield(125) =  field('MRR', FLOAT2, 'MRR','g kg-1','')
-sysfield(126) =  field('MRV', FLOAT2, 'MRV','g kg-1','')
-sysfield(127) =  field('NEB', FLOAT2 , 'NEB','','')
-sysfield(128) =  field('PABSM',FLOAT2, 'PABSM','Pa','Absolute pressure')
-sysfield(129) =  field('PABST',FLOAT2, 'PABST','','')
-sysfield(130) =  field('PACCONV', FLOAT2 , 'PACCONV','','')
-sysfield(131) =  field('PRCONV', FLOAT2 , 'PRCONV','','')
-sysfield(132) =  field('PATCH_NUMBER', INT2, 'PATCH_NUMBER','','')
-sysfield(133) =  field('RCM', FLOAT2, 'RCM','kg kg-1','cloud mixing ratio')
-sysfield(134) =  field('RCT',FLOAT2, 'RCT','kg kg-1','cloud mixing ratio')
-sysfield(135) =  field('RESA', FLOAT2 , 'RESA','','')
-sysfield(136) =  field('RGL', FLOAT2 , 'RGL','','')
-sysfield(137) =  field('RGM', FLOAT2, 'RGM','kg kg-1','graupel mixing ratio')
-sysfield(138) =  field('RGT',FLOAT2, 'RGT','kg kg-1','graupel mixing ratio')
-sysfield(139) =  field('RHM', FLOAT2, 'RHM','kg kg-1','')
-sysfield(140) =  field('RHT',FLOAT2, 'RHT','kg kg-1','')
-sysfield(141) =  field('RHOS', FLOAT2 , 'RHOS','','')
-sysfield(142) =  field('RIM', FLOAT2, 'RIM','kg kg-1','ice mixing ratio')
-sysfield(143) =  field('RIMX',INT2, 'RIMX','','')
-sysfield(144) =  field('RIMY',INT2, 'RIMY','','')
-sysfield(145) =  field('RIT',FLOAT2, 'RIT','kg kg-1','ice mixing ratio')
-sysfield(146) =  field('RN', FLOAT2, 'RN','w m-2','')
-sysfield(147) =  field('RPK', FLOAT2, 'RPK','','')
-sysfield(148) =  field('RRM', FLOAT2, 'RRM','kg kg-1','rain mixing ratio')
-sysfield(149) =  field('RRT',FLOAT2, 'RRT','kg kg-1','rain mixing ratio')
-sysfield(150) =  field('RSMIN', FLOAT2 , 'RSMIN','','')
-sysfield(151) =  field('RSM', FLOAT2, 'RSM','kg kg-1','snow mixing ratio')
-sysfield(152) =  field('RST',FLOAT2, 'RST','kg kg-1','snow mixing ratio')
-sysfield(153) =  field('RSVS', FLOAT2, 'RSVS','','')
-sysfield(154) =  field('RVFRCxx', FLOAT2 , 'RVFRCxx','','')
-sysfield(155) =  field('RVM', FLOAT2, 'RVM','kg kg-1','vapor mixing ratio')
-sysfield(156) =  field('RVT',FLOAT2, 'RVT','kg kg-1','vapor mixing ratio')
-sysfield(157) =  field('RHODREF', FLOAT2, 'RHODREF','kg m-3','Dry density for&
- &reference state with orography')
-sysfield(158) =  field('RUS', FLOAT2, 'RUS','','')
-sysfield(159) =  field('RHOREFZ',FLOAT2, 'RHOREFZ','kg m-3','hodz for reference&
- &state without orography')
-sysfield(160) =  field('SAND', FLOAT2 , 'SAND','','')
-sysfield(161) =  field('SCA_ALB', FLOAT2 , 'SCA_ALB','','SCAttered ALBedo')
-sysfield(162) =  field('SCAFLASWD', FLOAT2 , 'SCAFLASWD','W m-2','scattered&
- &Downward Long Waves on FLAT surface')
-sysfield(163) =  field('SEA', FLOAT2 , 'SEA','','')
-sysfield(164) =  field('SFTHT', FLOAT2 , 'SFTHT','','')
-sysfield(165) =  field('SFRT', FLOAT2 , 'SFRT','','')
-sysfield(166) =  field('SFTHP', FLOAT2 , 'SFTHP','','')
-sysfield(167) =  field('SIGS',FLOAT2, 'SIGS','kg kg-2','sigma_s from turbulence&
- &scheme')
-sysfield(168) =  field('SSO_DIR', FLOAT2 , 'SSO_DIR','deg','')
-sysfield(169) =  field('SSO_SLOPE', FLOAT2 , 'SSO_SLOPE','','')
-sysfield(170) =  field('SSO_STDEV', FLOAT2 , 'SSO_STDEV','m','')
-sysfield(171) =  field('SSO_ANIS', FLOAT2 , 'SSO_ANIS','m','SSO_ANISOTROPY')
-sysfield(172) =  field('SST', FLOAT2 , 'SST','','')
-sysfield(173) =  field('SFRP', FLOAT2 , 'SFRP','','')
-sysfield(174) =  field('SFSVT', FLOAT2 , 'SFSVT','','')
-sysfield(175) =  field('SFSVP', FLOAT2 , 'SFSVP','','')
-sysfield(176) =  field('SRFLWD', FLOAT2 , 'SRFLWD','','')
-sysfield(177) =  field('SRFSWD', FLOAT2 , 'SRFSWD','','')
-sysfield(178) =  field('SRCM',FLOAT2, 'SRCM','kg kg-2','normalized 2nd_order&
- &moment s_r_c/2Sigma_s2')
-sysfield(179) =  field('SRCT',FLOAT2, 'SRCT','kg kg-2','normalized 2nd_order&
- &moment s_r_c/2Sigma_s2')
-sysfield(180) =  field('SVMxxx', FLOAT2, 'SVM','','')
-sysfield(181) =  field('SIL_ZS', FLOAT2, 'SIL_ZS','m','')
-sysfield(182) =  field('SVTxxx',FLOAT2, 'SVT','','')
-sysfield(183) =  field('T2', FLOAT2 , 'T2','','')
-sysfield(184) =  field('THFRCxx', FLOAT2 , 'THFRCxx','','')
-sysfield(185) =  field('THM', FLOAT2, 'THM','K','potential temperature')
-sysfield(186) =  field('THT',FLOAT2, 'THT','','potential temperature')
-sysfield(187) =  field('THVREFZ',FLOAT2, 'THVREFZ','K','thetavz for reference&
- & state without orography')
-sysfield(188) =  field('TKEM', FLOAT2, 'TKEM','m2 s-2','')
-sysfield(189) =  field('TKET',FLOAT2, 'TKET','m2 s-2','')
-sysfield(190) =  field('THVREF',FLOAT2, 'THVREF','K','')
-sysfield(191) =  field('T_ROOFx', FLOAT2, 'T_ROOFx','','')
-sysfield(192) =  field('TGx', FLOAT2, 'TGx','','')
-sysfield(193) =  field('T_ROADx', FLOAT2, 'T_ROADx','','')
-sysfield(194) =  field('TS', FLOAT2 , 'TS','','')
-sysfield(195) =  field('TSRAD', FLOAT2 , 'TSRAD','K','RADiative Surface&
- &Temperature')
-sysfield(196) =  field('T_WALLx', FLOAT2, 'T_WALLx','','')
-sysfield(197) =  field('UFRCxx', FLOAT2 , 'UFRCxx','','')
-sysfield(198) =  field('UM', FLOAT2, 'UM','m s-1','x-wind component')
-sysfield(199) =  field('UT',FLOAT2, 'U','m s-1','x-wind component')
-sysfield(200) =  field('VEG', FLOAT2 , 'VEG','','')
-sysfield(201) =  field('VFRCxx', FLOAT2 , 'VFRCxx','','')
-sysfield(202) =  field('VM', FLOAT2, 'VM','m s-1','y-wind component')
-sysfield(203) =  field('VT',FLOAT2, 'V','m s-1','y-wind component')
-sysfield(204) =  field('W2', FLOAT2 , 'W2','','')
-sysfield(205) =  field('WFRCxx', FLOAT2 , 'WFRCxx','','')
-sysfield(206) =  field('WG', FLOAT2 , 'WG','','')
-sysfield(207) =  field('WGIx', FLOAT2, 'WGIx','','')
-sysfield(208) =  field('WGx', FLOAT2, 'WGx','','')
-sysfield(209) =  field('WM', FLOAT2, 'WM','m s-1','z-wind component')
-sysfield(210) =  field('WR', FLOAT2 , 'WR','','')
-sysfield(211) =  field('WS', FLOAT2 , 'WS','','')
-sysfield(212) =  field('WSUBCONV', FLOAT2 , 'WSUBCONV','','')
-sysfield(213) =  field('WT',FLOAT2, 'W','m s-1','z-wind component')
-sysfield(214) =  field('WTHVMF', FLOAT2 , 'WTHVMF','m K s-1','')
-sysfield(215) =  field('X1D', FLOAT2, 'X1D','','')
-sysfield(216) =  field('XHAT', FLOAT2, 'XHAT','m','position x in the conformal or&
- &cartesian plane')
-sysfield(217) =  field('XOR', INT2, 'XOR','','')
-sysfield(218) =  field('YHAT', FLOAT2, 'YHAT','m','position y in the conformal or&
- &cartesian plane')
-sysfield(219) =  field('YOR', INT2, 'YOR','','')
-sysfield(220) =  field('YTEXT', TEXT, 'YTEXT','','')
-sysfield(221) =  field('Z0SEA', FLOAT2 , 'Z0SEA','','')
-sysfield(222) =  field('Z0VEG', FLOAT2 , 'Z0VEG','','')
-sysfield(223) =  field('Z0HVEG', FLOAT2 , 'Z0HVEG','','')
-sysfield(224) =  field('Z0REL', FLOAT2 , 'Z0REL','','')
-sysfield(225) =  field('Z0EFFIP', FLOAT2 , 'Z0EFFIP','','')
-sysfield(226) =  field('Z0EFFIM', FLOAT2 , 'Z0EFFIM','','')
-sysfield(227) =  field('Z0EFFJP', FLOAT2 , 'Z0EFFJP','','')
-sysfield(228) =  field('Z0EFFJM', FLOAT2 , 'Z0EFFJM','','')
-sysfield(229) =  field('ZENITH', FLOAT2 , 'ZENITH','rad','ZENITH')
-sysfield(230) =  field('ZHAT', FLOAT2, 'ZHAT','m','height level without orography')
-sysfield(231) =  field('ZR', FLOAT2, 'ZR','','')
-sysfield(232) =  field('ZS', FLOAT2, 'ZS','m','orography')
-sysfield(233) =  field('ZSMT', FLOAT2, 'ZSMT','m','smooth orography')
-END SUBROUTINE init_sysfield
-
-  FUNCTION get_ftype(hfname)
-    CHARACTER(LEN=*) :: hfname
-    INTEGER          :: get_ftype
-
-    TYPE(field) :: tzf
-
-    ! Is this a diachronic field ?
-    IF (INDEX(hfname,".TY",.TRUE.)     /=0 .OR.& 
-    &   INDEX(hfname,".TI",.TRUE.)  /=0 .OR.& 
-    &   INDEX(hfname,".UN",.TRUE.)  /=0 .OR.&
-    &   INDEX(hfname,".CO",.TRUE.)/=0) THEN
-      get_ftype = TEXT
-    ELSE IF (INDEX(hfname,".DI",.TRUE.) /= 0) THEN 
-      get_ftype = INT2
-    ELSE IF (INDEX(hfname,".PR",.TRUE.)/= 0 .OR.&
-         &   INDEX(hfname,".TR",.TRUE.)/= 0 .OR.&
-         &   INDEX(hfname,".DA",.TRUE.)/= 0) THEN
-      get_ftype = FLOAT2
-    ELSE IF (searchfield(hfname,tzf)) THEN
-    ! search in databases  
-      get_ftype = tzf%TYPE
-    ELSE
-      get_ftype = -1
-    END IF
-    
-  END FUNCTION get_ftype
-
-  FUNCTION get_ncname(hfname)
-    CHARACTER(LEN=*) :: hfname
-    CHARACTER(LEN=FM_FIELD_SIZE) :: get_ncname
-
-    TYPE(field) :: tzf
-    IF (searchfield(hfname,tzf)) THEN
-      get_ncname = tzf%ncname
-    ELSE
-      get_ncname = hfname
-    END IF
-  END FUNCTION get_ncname
-
-  FUNCTION get_ncunit(hfname)
-    CHARACTER(LEN=*) :: hfname
-    CHARACTER(LEN=FM_FIELD_SIZE) :: get_ncunit
-
-    TYPE(field) :: tzf
-    IF (searchfield(hfname,tzf)) THEN
-      get_ncunit = tzf%ncunit
-    ELSE
-      get_ncunit = ''
-    END IF
-  END FUNCTION get_ncunit
-
-  FUNCTION get_ncdes(hfname)
-    CHARACTER(LEN=*) :: hfname
-    CHARACTER(LEN=64) :: get_ncdes
-
-    TYPE(field) :: tzf
-    IF (searchfield(hfname,tzf)) THEN
-      get_ncdes = tzf%ncdes
-    ELSE
-      get_ncdes = ''
-    END IF
-  END FUNCTION get_ncdes
-  
-  FUNCTION searchfield(hfname, tpf)
-    CHARACTER(LEN=*), INTENT(IN) :: hfname
-    TYPE(field), INTENT(OUT)     :: tpf
-    LOGICAL                      :: searchfield
-
-    INTEGER :: ji,iposx
-    LOGICAL :: found
-
-    found = .FALSE.
-    
-    ! First is this a date field ?
-    DO ji=1,SIZE(datefield)
-       IF (INDEX(hfname,TRIM(datefield(ji)%name)) /= 0) THEN 
-          found = .TRUE.
-          tpf = datefield(ji)
-          EXIT
-       END IF
-    END DO
-
-    IF (.NOT. found) THEN
-       ! Next, search in user field tab
-       IF (ALLOCATED(userfield)) THEN
-          DO ji=1,SIZE(userfield)
-             IF (hfname==userfield(ji)%name) THEN
-                found = .TRUE.
-                tpf = userfield(ji)
-                EXIT
-             END IF
-          END DO
-       END IF
-       
-       IF (.NOT. found) THEN
-          ! then search in system field tab
-          DO ji=1,SIZE(sysfield)
-             IF (hfname==sysfield(ji)%name) THEN
-                found = .TRUE.
-                tpf = sysfield(ji)
-                EXIT
-!             ELSE
-!                     ! BEGIN MODIF SB
-!                iposx = INDEX(sysfield(ji)%name,'x')
-!                IF (iposx /= 0) THEN
-!                   IF (isnumeric(hfname(iposx:LEN_TRIM(sysfield(ji)%name))) .AND. &
-!                        sysfield(ji)%name(1:iposx-1)//&
-!                        hfname(iposx:LEN_TRIM(sysfield(ji)%name))==hfname) THEN 
-!                      found = .TRUE.
-!                      tpf = sysfield(ji)
-!                      EXIT
-!                      ! END MODIF SB
-!                   END IF
-!                END IF
-             END IF
-          END DO
-       END IF
-    END IF
-    
-    searchfield = found
-
-  END FUNCTION searchfield
-  
-  FUNCTION isnumeric(hname)
-    CHARACTER(LEN=*) :: hname
-    LOGICAL          :: isnumeric
-
-    INTEGER :: ji
-    
-    isnumeric = .TRUE.
-
-    DO ji = 1,LEN(hname)
-       IF (hname(ji:ji) > '9' .OR. hname(ji:ji) < '0') THEN
-          isnumeric = .FALSE.
-          EXIT
-       END IF
-    END DO
-    
-  END FUNCTION isnumeric
-
-END MODULE MODE_FIELDTYPE
-#endif
diff --git a/src/LIB/SURCOUCHE/src/modd_ncparam.f90 b/src/LIB/SURCOUCHE/src/modd_ncparam.f90
deleted file mode 100644
index e7c1825acf95b590a19dfc10e6794613635a2558..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/modd_ncparam.f90
+++ /dev/null
@@ -1,20 +0,0 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-#ifdef MNH_NCWRIT
-MODULE MODD_PARAM
-  IMPLICIT NONE 
-
-  CHARACTER(LEN=*), PARAMETER :: VERSION_ID='OUTPUT FROM MESONH MODEL'
-  INTEGER, PARAMETER :: INT2   = 1
-  INTEGER, PARAMETER :: FLOAT2 = 2
-  INTEGER, PARAMETER :: TEXT  = 3
-  INTEGER, PARAMETER :: BOOL  = 4
-
-  INTEGER, PARAMETER :: NOTFOUND = -1
-
-  INTEGER, PARAMETER :: FM_FIELD_SIZE = 32
-  
-END MODULE MODD_PARAM
-#endif
diff --git a/src/LIB/SURCOUCHE/src/mode_dimlist.f90 b/src/LIB/SURCOUCHE/src/mode_dimlist.f90
deleted file mode 100644
index d6f25ebb55744448e5c30bd42fcac567c1ff95fd..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/mode_dimlist.f90
+++ /dev/null
@@ -1,252 +0,0 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-#ifdef MNH_NCWRIT
-MODULE mode_dimlist
-! ------ BEGIN MODIF SB -----------
-USE MODD_PARAM
-!USE MODD_DIM_ll, ONLY: NIMAX_ll,NJMAX_ll
-USE MODD_DIM_n
-! ------  END  MODIF SB -----------
-  IMPLICIT NONE 
-  
-  TYPE dimCDF
-! ------ BEGIN MODIF SB -----------
-     CHARACTER(LEN=FM_FIELD_SIZE)      :: name
-! ------  END  MODIF SB -----------
-     INTEGER               :: len
-     INTEGER               :: id
-     LOGICAL               :: create
-     INTEGER               :: ndims  ! number of dim reference (when create=.FALSE.)
-     TYPE(dimCDF), POINTER :: next
-  END TYPE dimCDF
-
-  TYPE(dimCDF), POINTER, PRIVATE, SAVE :: dimlist
-  INTEGER, PRIVATE, SAVE               :: nbelt = 0
-  INTEGER, SAVE :: IDIMX = 0
-  INTEGER, SAVE :: IDIMY = 0
-  INTEGER, SAVE :: IDIMZ = 0
-  INTEGER, SAVE :: IDIMT = 0
-  INTEGER, SAVE :: IDIMN = 0
-  INTEGER, SAVE :: IDIMP = 0
-  INTEGER, SAVE :: CDIMT = 0
-  INTEGER, SAVE :: NUMDIM = 0
-  INTEGER, SAVE :: NDIMX = 0
-  INTEGER, SAVE :: NDIMXR = 0
-  INTEGER, SAVE :: NDIMY = 0
-  INTEGER, SAVE :: NDIMZ = 0
-  INTEGER, SAVE :: NDIMZR = 0
-  INTEGER, SAVE :: NDIMD = 0
-  INTEGER, SAVE :: NDIMT = 0
-  INTEGER, SAVE :: NDIMN = 0
-  INTEGER, SAVE :: NDIMP = 0
-  INTEGER, SAVE :: NDIMDATE = 0
-  INTEGER, SAVE :: NDIMWL = 0
-  LOGICAL, SAVE :: CREATET = .TRUE.
-  LOGICAL, SAVE :: CREATEX = .TRUE.
-  LOGICAL, SAVE :: CREATEY = .TRUE.
-  LOGICAL, SAVE :: CREATEZ = .TRUE.
-  LOGICAL, SAVE :: CREATEXR = .TRUE.
-  LOGICAL, SAVE :: CREATEZR = .TRUE.
-  LOGICAL, SAVE :: CREATEN = .TRUE.
-  LOGICAL, SAVE :: CREATEDATE = .TRUE.
-  LOGICAL, SAVE :: CREATEWL = .TRUE.
-  LOGICAL, SAVE :: CREATED = .TRUE.
-  LOGICAL, SAVE :: WRITETIME = .TRUE.
-  LOGICAL, SAVE :: NC_WRITE = .FALSE.
-  CHARACTER(LEN=3), SAVE      :: NC_FILE = ''
-  CHARACTER(LEN=FM_FIELD_SIZE), SAVE  :: first_var = ''
-  CHARACTER(LEN=FM_FIELD_SIZE), SAVE  :: last_var = ''
-  LOGICAL, SAVE :: DEF_NC = .TRUE.
-  INTEGER, SAVE :: KCDF_ID = 0
-  INTEGER,DIMENSION(8), SAVE :: KCDF_IOID = 0 
-  TYPE(dimCDF), POINTER :: ptdimx, ptdimy, ptdimz, ptdimt, ptdimn, ptdimp,&
-    &ptdimd , ptdimxr, ptdimzr, ptdimwl
-
-CONTAINS 
-  
-  SUBROUTINE init_dimCDF()
-  
-  NULLIFY(dimlist)
-  NULLIFY(ptdimx,ptdimy,ptdimz,ptdimt,ptdimn,ptdimp,ptdimd,ptdimzr,ptdimxr)
-    ! reservation for DIMX,DIMY,DIMZ
-   IF ( IDIMX == NIMAX_ll+2 ) THEN 
-    ptdimx=>get_dimCDF(IDIMX,.TRUE.)
-!    print * , 'get dim X'
-! ------ BEGIN MODIF SB -----------
-! change name of dimensions
-    ptdimx%name = 'X'
-   ELSEIF ( IDIMX == NIMAX_ll .AND. NIMAX_ll> 1 ) THEN
-    ptdimxr=>get_dimCDF(IDIMX,.TRUE.)
-    ptdimxr%name = 'XR'
-!    print * , 'get dim XR'
-   ELSEIF ( IDIMX == 16 ) THEN
-    ptdimd=>get_dimCDF(IDIMX,.TRUE.)
-    ptdimd%name = 'DATE'
-   END IF
-! ------  END  MODIF SB -----------
-    IF (IDIMY == NJMAX_ll+2) THEN
-    ptdimy=>get_dimCDF(IDIMY,.TRUE.)
-! ------ BEGIN MODIF SB -----------
-    ptdimy%name = 'Y'
-!    print * , 'get dim Y'
-    END IF
-! ------  END  MODIF SB -----------
-    ! PGD MesoNH files doesn't contain KMAX
-    IF (IDIMZ == NKMAX+2) THEN
-!      print * , ' IDIMZ == NKMAX+2 '
-      ptdimz=>get_dimCDF(IDIMZ,.TRUE.)
-! ------ BEGIN MODIF SB -----------
-      ptdimz%name = 'Z'
-!    print * , 'get dim Z'
-    ELSEIF (IDIMZ == NKMAX ) THEN
-     !print * , ' IDIMZ == NKMAX '
-     ptdimzr=>get_dimCDF(IDIMZ,.TRUE.)
-     ptdimzr%name = 'ZR'
-!    print * , 'get dim ZR'
-    ELSEIF (IDIMZ == 6 ) THEN
-     ptdimwl=>get_dimCDF(IDIMZ,.TRUE.)
-     ptdimwl%name = 'WL'
-    ELSEIF (IDIMZ == 3 .AND. IDIMX /= NKMAX ) THEN
-     ptdimd=>get_dimCDF(IDIMZ,.TRUE.)
-     ptdimd%name = 'D'
-    END IF
-!    print * , ' IDIMT = ' , IDIMT
-    IF (IDIMT > 1) THEN
-            ptdimt=>get_dimCDF(IDIMT,.TRUE.)
-            ptdimt%name = 'T'
-    END IF
-    IF (IDIMN > 1) THEN
-            ptdimt=>get_dimCDF(IDIMN,.TRUE.)
-            ptdimt%name = 'N'
-    END IF
-  END SUBROUTINE init_dimCDF
-
-  FUNCTION size_dimCDF()
-    INTEGER :: size_dimCDF
-
-    size_dimCDF = nbelt
-
-  END FUNCTION size_dimCDF
-
-  FUNCTION first_dimCDF()
-    TYPE(dimCDF), POINTER :: first_dimCDF
-
-    first_dimCDF=>dimlist
-
-  END FUNCTION first_dimCDF
-  
-  
-  FUNCTION get_dimCDF(len,ocreate)
-    INTEGER, INTENT(IN)   :: len
-    LOGICAL, INTENT(IN), OPTIONAL :: ocreate ! when .TRUE. create a dim CELL 
-    TYPE(dimCDF), POINTER :: get_dimCDF
-    
-
-    TYPE(dimCDF), POINTER :: tmp
-    INTEGER               :: count
-    CHARACTER(LEN=5)      :: yndim
-    LOGICAL               :: gforce
-
-    IF (PRESENT(ocreate)) THEN
-      gforce = ocreate
-    ELSE
-      gforce = .FALSE.
-    ENDIF
-    IF (len /= 1) THEN 
-       IF (gforce) THEN
-         NULLIFY(tmp)
-       ELSE 
-         count = 0
-         tmp=>dimlist
-      DO WHILE(ASSOCIATED(tmp))
-           IF (tmp%len == len) EXIT
-           tmp=>tmp%next
-           count = count+1
-         END DO
-       END IF
-       IF (.NOT. ASSOCIATED(tmp)) THEN
-          ALLOCATE(tmp)
-          nbelt = nbelt+1
-          WRITE(yndim,'(i5)') count
-          tmp%name = 'DIM'//ADJUSTL(yndim)
-          tmp%len  = len
-          tmp%id   = 0
-          IF (len == IDIMX*IDIMY .AND. IDIMY > 1 .AND. IDIMY /= CDIMT ) THEN
-             tmp%create = .FALSE.
-             tmp%ndims = 2
-             !print * , ' GUSEDIM 2D '
-          ELSEIF (len == IDIMX*IDIMY*IDIMZ .AND. IDIMY > 1 .AND. IDIMZ > 6 ) THEN
-             tmp%ndims = 3
-             tmp%create = .FALSE.
-             !print * , ' GUSEDIM 3D '
-          ELSEIF (len == IDIMX*IDIMY*IDIMZ .AND. IDIMY > 1 .AND. IDIMZ == 3 ) THEN
-             tmp%ndims = 4
-             tmp%create = .FALSE.
-             !print * , ' GUSEDIM 3D DEPTH '
-          ELSEIF (len == IDIMX*IDIMY*IDIMZ .AND. IDIMY > 1 .AND. IDIMZ == 6 ) THEN
-             tmp%ndims = 9
-             tmp%create = .FALSE.
-             !print * , ' GUSEDIM XYWL '
-          ELSEIF (IDIMZ == 6 .AND. len == IDIMX*IDIMZ ) THEN
-             tmp%ndims = 6
-             tmp%create = .FALSE.
-             !print * , ' GUSEDIM XWL '
-          ELSEIF (IDIMX > 1 .AND. len == IDIMX*IDIMZ .AND. &
-         & IDIMZ == NKMAX  ) THEN
-             tmp%ndims = 10 ! faux mais reconnu dans def_ncdf
-             tmp%create = .FALSE.
-             !print * , ' GUSEDIM XZR '
-          ELSEIF (IDIMX > 1 .AND. len == IDIMX*IDIMZ .AND. &
-         & IDIMZ == NKMAX+2  ) THEN
-             tmp%ndims = 12 ! faux mais reconnu dans def_ncdf
-             tmp%create = .FALSE.
-             !print * , ' GUSEDIM XZ '
-          ELSEIF (IDIMX == 16 .AND. IDIMY == CDIMT ) THEN
-             tmp%ndims = 16 ! faux mais reconnu dans def_ncdf
-             tmp%create = .FALSE.
-             !print * , ' GUSEDIM XT '
-          ELSEIF (IDIMT > 1 .AND. len == IDIMZ*IDIMT &
-         & .AND. IDIMZ == NKMAX ) THEN
-             tmp%ndims = 14 ! faux mais reconnu dans def_ncdf
-             tmp%create = .FALSE.
-             !print * , ' GUSEDIM ZRT '
-          ELSEIF (IDIMT > 1 .AND. len == IDIMZ*IDIMT*IDIMN &
-         & .AND. IDIMZ == NKMAX .AND. IDIMN > 1 ) THEN
-             tmp%ndims = 17 ! faux mais reconnu dans def_ncdf
-             tmp%create = .FALSE.
-             !print * , ' GUSEDIM ZRTN '
-          ELSEIF (IDIMT > 1 .AND. len == IDIMX*IDIMT &
-         & .AND. IDIMX > 1 ) THEN
-             tmp%ndims = 16 ! faux mais reconnu dans def_ncdf
-             tmp%create = .FALSE.
-             !print * , ' GUSEDIM XT '
-          ELSEIF (IDIMZ == NKMAX .AND. len == IDIMX*IDIMZ &
-         & .AND. IDIMT == 1 ) THEN
-             tmp%ndims = 15 ! faux mais reconnu dans def_ncdf
-             tmp%create = .FALSE.
-             !print * , ' GUSEDIM ZR '
-          ELSEIF (IDIMZ == NKMAX+2 .AND. IDIMX == 1 ) THEN
-             tmp%ndims = 18 ! faux mais reconnu dans def_ncdf
-             tmp%create = .FALSE.
-             !print * , ' GUSEDIM Z '
-          ELSE
-            tmp%ndims = 1
-            tmp%create = .TRUE.
-             !print * , ' GUSEDIM 1D'
-          END IF
-          tmp%next => dimlist
-          dimlist  => tmp
-       END IF
-    
-       get_dimCDF=>tmp
-
-    ELSE
-
-       NULLIFY(get_dimCDF)
-    END IF
-
-  END FUNCTION get_dimCDF
-END MODULE mode_dimlist
-#endif
diff --git a/src/LIB/SURCOUCHE/src/mode_util.f90 b/src/LIB/SURCOUCHE/src/mode_util.f90
deleted file mode 100644
index cedede681171c4aad09971cd61cfc8053ec10789..0000000000000000000000000000000000000000
--- a/src/LIB/SURCOUCHE/src/mode_util.f90
+++ /dev/null
@@ -1,729 +0,0 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-#ifdef MNH_NCWRIT
-MODULE mode_util
-  USE MODE_FIELDTYPE
-  USE MODE_DIMLIST
-  USE MODD_PARAM
-
-  IMPLICIT NONE 
-
-  TYPE workfield
-     CHARACTER(LEN=FM_FIELD_SIZE)            :: name   ! nom du champ
-     CHARACTER(LEN=FM_FIELD_SIZE)            :: ncname   ! nom du champ
-     CHARACTER(LEN=FM_FIELD_SIZE)            :: ncunit   ! unité du champ
-     CHARACTER(LEN=64)                       :: ncdes    ! description du champ
-     CHARACTER(LEN=64)                       :: long_name    ! description du champ
-     INTEGER                                 :: TYPE   ! type (entier ou reel)    
-     CHARACTER(LEN=1), DIMENSION(:), POINTER :: comment
-     TYPE(dimCDF),                   POINTER :: dim
-     INTEGER                                 :: id
-     INTEGER                                 :: grid
-  END TYPE workfield
-
-  INCLUDE 'netcdf.inc'
-
-CONTAINS 
-  FUNCTION str_replace(hstr, hold, hnew)
-    CHARACTER(LEN=*) :: hstr
-    CHARACTER(LEN=*) ::  hold, hnew
-    CHARACTER(LEN=LEN_TRIM(hstr)+MAX(0,LEN(hnew)-LEN(hold))) :: str_replace
-    
-    INTEGER :: pos
-    
-    pos = INDEX(hstr,hold)
-    IF (pos /= 0) THEN
-       str_replace = hstr(1:pos-1)//hnew//hstr(pos+LEN(hold):)
-    ELSE 
-       str_replace = hstr 
-    END IF
-
-  END FUNCTION str_replace
-
-  SUBROUTINE PARSE_PFIELD(yrecfm,kgrid,pfield,tpreclist,hcomment)
-    REAL,    DIMENSION(:), INTENT(IN)    :: pfield
-    TYPE(workfield), DIMENSION(:), POINTER   :: tpreclist    
-    INTEGER                                  :: kgrid
-
-    INTEGER                                  :: ich
-    INTEGER                                  :: fsize
-    CHARACTER(LEN=*)                         :: yrecfm
-    CHARACTER(LEN=*)                         :: hcomment
-
-    ALLOCATE(tpreclist(1))
-    fsize = IDIMX*IDIMY*IDIMZ*IDIMT*IDIMN*IDIMP
-    tpreclist(1)%name = yrecfm
-
-!    ! Phase 2 : Extract comments and dimensions for valid articles.
-!    !           Infos are put in tpreclist.
-    CALL init_dimCDF()
-    tpreclist(1)%TYPE = get_ftype(yrecfm)               
-    tpreclist(1)%ncname = get_ncname(yrecfm)               
-    tpreclist(1)%ncunit = get_ncunit(yrecfm)
-    tpreclist(1)%ncdes = get_ncdes(yrecfm)
-    tpreclist(1)%grid = kgrid
-    tpreclist(1)%long_name = hcomment
-!    tpreclist(1)%long_name = tpreclist(1)%ncdes
-    tpreclist(1)%dim=>get_dimCDF(fsize)
-!  
-  END SUBROUTINE PARSE_PFIELD
-  
-  SUBROUTINE HANDLE_ERR(status,line)
-    INTEGER :: status,line
-
-    IF (status /= NF_NOERR) THEN
-       PRINT *, 'line ',line,': ',NF_STRERROR(status)
-       STOP
-    END IF
-  END SUBROUTINE HANDLE_ERR
-
-  SUBROUTINE DEF_NCDF(tpreclist)
-    USE MODD_TIME_n, ONLY: TDTCUR,TDTMOD
-    USE MODD_DIM_n
-    USE MODD_GRID
-    USE MODD_CONF, ONLY: LCARTESIAN
-    TYPE(workfield),DIMENSION(:),POINTER :: tpreclist    
-
-    INTEGER :: status
-    TYPE(dimCDF), POINTER :: tzdim
-    INTEGER(KIND=4)     :: invdims
-    INTEGER(KIND=4), DIMENSION(10) :: ivdims
-    CHARACTER(LEN=20)                 :: ycdfvar
-    INTEGER (KIND=4)                  :: levId,timeId
-    INTEGER (KIND=4)                  :: hh,mm,ss
-    CHARACTER(len=50)                 :: date_string
-    CHARACTER(len=30)                 :: year,month,day,hour,minute,second
-
-    ! global attributes
-    status = NF_PUT_ATT_TEXT(kcdf_id,NF_GLOBAL,'TITLE'&
-         & ,LEN(VERSION_ID),VERSION_ID)
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    status = NF_PUT_ATT_INT(kcdf_id,NF_GLOBAL,'CURRENT_DATE' &
-         & ,NF_INT,3,TDTCUR%TDATE)
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    status = NF_PUT_ATT_DOUBLE(kcdf_id,NF_GLOBAL,'CURRENT_TIME' &
-         & ,NF_DOUBLE,1,TDTCUR%TIME)
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    status = NF_PUT_ATT_INT(kcdf_id,NF_GLOBAL,'SIMULATION_START_DATE' &
-         & ,NF_INT,3,TDTMOD%TDATE)
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    status = NF_PUT_ATT_DOUBLE(kcdf_id,NF_GLOBAL,'SIMULATION_START_TIME' &
-         & ,NF_DOUBLE,1,TDTMOD%TIME)
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    status = NF_PUT_ATT_TEXT(kcdf_id,NF_GLOBAL,'GRID_TYPE' &
-         & ,1,"C")
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    IF ( LCARTESIAN ) THEN
-    status = NF_PUT_ATT_TEXT(kcdf_id,NF_GLOBAL,'PROJECTION'&
-         & ,9,"cartesian")
-    ELSE
-      IF ( XRPK == 0 ) THEN
-      status = NF_PUT_ATT_TEXT(kcdf_id,NF_GLOBAL,'PROJECTION'&
-         & ,8,"mercator")
-      ELSEIF ( XRPK == 1 ) THEN
-      status = NF_PUT_ATT_TEXT(kcdf_id,NF_GLOBAL,'PROJECTION'&
-         & ,35,"polar-stereographic from north pole")
-      ELSEIF ( XRPK == -1 ) THEN
-      status = NF_PUT_ATT_TEXT(kcdf_id,NF_GLOBAL,'PROJECTION'&
-         & ,35,"polar-stereographic from south pole")
-      ELSEIF ( XRPK > -1 .AND. XRPK < 0 ) THEN
-      status = NF_PUT_ATT_TEXT(kcdf_id,NF_GLOBAL,'PROJECTION'&
-         & ,33,"lambert conformal from south pole")
-      ELSEIF ( XRPK > 0 .AND. XRPK < 1 ) THEN
-      status = NF_PUT_ATT_TEXT(kcdf_id,NF_GLOBAL,'PROJECTION'&
-         & ,33,"lambert conformal from north pole")
-      END IF
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    status = NF_PUT_ATT_DOUBLE(kcdf_id,NF_GLOBAL,'RPK' &
-         & ,NF_DOUBLE,1,XRPK)
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    status = NF_PUT_ATT_DOUBLE(kcdf_id,NF_GLOBAL,'BETA' &
-         & ,NF_DOUBLE,1,XBETA)
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    status = NF_PUT_ATT_DOUBLE(kcdf_id,NF_GLOBAL,'LAT0' &
-         & ,NF_DOUBLE,1,XLAT0)
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    status = NF_PUT_ATT_DOUBLE(kcdf_id,NF_GLOBAL,'LON0' &
-         & ,NF_DOUBLE,1,XLON0)
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    status = NF_PUT_ATT_DOUBLE(kcdf_id,NF_GLOBAL,'LATORI' &
-         & ,NF_DOUBLE,1,XLATORI)
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    status = NF_PUT_ATT_DOUBLE(kcdf_id,NF_GLOBAL,'LONORI' &
-         & ,NF_DOUBLE,1,XLONORI)
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    END IF
-
-! define DIMENSIONS
-!    print * , 'Defining dimensions def_ncdf'
-    tzdim=>first_DimCDF()
-    DO WHILE(ASSOCIATED(tzdim))
-      IF (tzdim%create) THEN
-              !print * , ' CREATE '
-        IF ( IDIMX > 1 .AND. IDIMY == 1 .AND. IDIMZ == 1 .AND. IDIMT == 1  ) THEN
-          IF ( IDIMX == NKMAX+2 .AND. IDIMX /= NIMAX_ll+2 ) THEN
-                   tzdim%name = 'Z'
-          ELSEIF ( tpreclist(1)%name == 'YHAT' ) THEN
-                   tzdim%name = 'Y'
-          ELSEIF ( tpreclist(1)%name == 'ZHAT' ) THEN
-                   tzdim%name = 'Z'
-          ELSEIF ( IDIMX == NIMAX_ll+2 ) THEN
-                 tzdim%name = 'X'
-          ELSEIF ( NIMAX_ll == 0 ) THEN
-                  !print * , 'CASE PGD'
-                   tzdim%name = 'X'
-          ELSEIF ( IDIMX == NIMAX_ll ) THEN
-                   tzdim%name = 'XR'
-          ELSEIF ( IDIMX == 16 .AND. IDIMX /= NIMAX_ll+2 ) THEN
-                   tzdim%name = 'DATE'
-          END IF
-       END IF
-      IF ( tzdim%name == 'X' .AND. CREATEX ) THEN
-!        print * , ' create dim X' 
-        CREATEX = .FALSE.
-        NUMDIM=NUMDIM+1
-        NDIMX=NUMDIM
-        status = NF_DEF_DIM(kcdf_id,tzdim%name,tzdim%len,tzdim%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-      ELSEIF ( tzdim%name == 'Y' .AND. CREATEY ) THEN
-        !print * , ' create dim Y' 
-        CREATEY = .FALSE.
-        NUMDIM=NUMDIM+1
-        NDIMY=NUMDIM
-        status = NF_DEF_DIM(kcdf_id,tzdim%name,tzdim%len,tzdim%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-      ELSEIF ( tzdim%name == 'Z' .AND. CREATEZ ) THEN
-        !print * , ' create dim Z' 
-        NUMDIM=NUMDIM+1
-        NDIMZ=NUMDIM
-        CREATEZ = .FALSE.
-        status = NF_DEF_DIM(kcdf_id,tzdim%name,tzdim%len,tzdim%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-      ELSEIF ( tzdim%name == 'XR' .AND. CREATEXR ) THEN
-           !print * , ' create dim XR' 
-        CREATEXR = .FALSE.
-        NUMDIM=NUMDIM+1
-        NDIMXR=NUMDIM
-        status = NF_DEF_DIM(kcdf_id,tzdim%name,tzdim%len,tzdim%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-      ELSEIF ( tzdim%name == 'ZR' .AND. CREATEZR ) THEN
-           !print * , ' create dim ZR' 
-        CREATEZR = .FALSE.
-        NUMDIM=NUMDIM+1
-        NDIMZR=NUMDIM
-        status = NF_DEF_DIM(kcdf_id,tzdim%name,tzdim%len,tzdim%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-      ELSEIF ( tzdim%name == 'DATE' .AND. CREATEDATE ) THEN
-           !print * , ' create dim DATE' 
-        CREATEDATE = .FALSE.
-        NUMDIM=NUMDIM+1
-        NDIMDATE=NUMDIM
-        status = NF_DEF_DIM(kcdf_id,tzdim%name,tzdim%len,tzdim%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-      ELSEIF ( tzdim%name == 'WL' .AND. CREATEWL ) THEN
-        !print * , ' create dim WAVELENGTH' 
-        CREATEWL = .FALSE.
-        NUMDIM=NUMDIM+1
-        NDIMWL=NUMDIM
-        status = NF_DEF_DIM(kcdf_id,tzdim%name,tzdim%len,tzdim%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-      ELSEIF ( tzdim%name == 'D' .AND. CREATED ) THEN
-        !print * , ' create dim DEPTH' 
-        CREATED = .FALSE.
-        NUMDIM=NUMDIM+1
-        NDIMWL=NUMDIM
-        status = NF_DEF_DIM(kcdf_id,tzdim%name,tzdim%len,tzdim%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-      ELSEIF ( IDIMT > 1 .AND. CREATET ) THEN
-           !print * , ' create dim T' 
-        tzdim%name = 'T'
-        NUMDIM=NUMDIM+1
-        NDIMT=NUMDIM
-        status = NF_DEF_DIM(kcdf_id,tzdim%name,tzdim%len,tzdim%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-        CREATET = .FALSE.
-        CDIMT = IDIMT 
-      ELSEIF ( IDIMN > 1 .AND. CREATEN ) THEN
-           !print * , ' create dim N' 
-        tzdim%name = 'N'
-        NUMDIM=NUMDIM+1
-        NDIMN=NUMDIM
-        status = NF_DEF_DIM(kcdf_id,tzdim%name,tzdim%len,tzdim%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-        CREATEN = .FALSE.
-      END IF
-    END IF
-    tzdim=>tzdim%next
-  END DO
-
-!    PRINT *,'------------- NetCDF DEFINITION ---------------'
-    ! FIRST WRITE -> DEFINE TIME ORIGIN
-  IF ( WRITETIME ) THEN
-
-    status = NF_DEF_VAR(kcdf_id,"time",NF_INT,&
-               0,0,timeId)
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    write(year,*) TDTMOD%TDATE%YEAR
-    write(month,*) TDTMOD%TDATE%MONTH
-    write(day,*) TDTMOD%TDATE%DAY
-    year = adjustl(year)
-    month = adjustl(month)
-    day = adjustl(day)
-    date_string='seconds since '//trim(year)//'-'//trim(month)//'-'//trim(day)
-    hh= TDTMOD%TIME / 3600
-    mm =  ( TDTMOD%TIME/1 - hh*3600 )  / 60
-    ss =  TDTMOD%TIME/1 - hh*3600 - mm*60 
-    write(hour,"(I2.2)") hh
-    hour = adjustl(hour)
-    write(minute,"(I2.2)") mm
-    minute = adjustl(minute)
-    write(second,"(I2.2)") ss
-    second = adjustl(second)
-    date_string = trim(date_string)//' ' &
-    &   //trim(hour)//':'//trim(minute)//':'//trim(second)
-    status = NF_PUT_ATT_TEXT(kcdf_id,timeId,'units'&
-      & ,50,date_string)
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    WRITETIME = .FALSE.
-  END IF
-
-! define VARIABLES and ATTRIBUTES
-   !print * , 'Defining variables and attributes def_ncdf'
-      
-    IF (ASSOCIATED(tpreclist(1)%dim)) THEN
-      IF ( tpreclist(1)%dim%create  ) THEN
-        IF ( tpreclist(1)%name .NE. 'XHAT' .AND. &
-           & tpreclist(1)%name .NE. 'YHAT' .AND. &
-           & tpreclist(1)%name .NE. 'ZHAT' ) THEN
-           tpreclist(1)%dim%create= .FALSE.
-           tpreclist(1)%dim%ndims= 11
-        END IF
-        IF ( NIMAX_ll /=0 .AND. NIMAX_ll == NKMAX )  THEN
-          print * , ' WARNING NIMAX=NKMAX '
-          print * , ' NIMAX = ' , NIMAX_ll
-          print * , ' NKMAX = ' , NKMAX
-          print * , ' IT IS BETTER TO USE NKMAX NOT EQUAL TO NIMAX'
-        END IF 
-        IF ( tpreclist(1)%name .EQ. 'YHAT' ) THEN
-          ivdims(1) = NDIMY
-        ELSEIF ( tpreclist(1)%name .EQ. 'ZHAT' ) THEN
-          ivdims(1) = NDIMZ
-        ELSEIF ( IDIMX == NKMAX+2 ) THEN
-          ivdims(1) = NDIMZ
-        ELSEIF ( IDIMX == CDIMT .OR. IDIMT == CDIMT ) THEN
-          ivdims(1) = NDIMT
-        ELSEIF (IDIMX == 3 .AND. IDIMY == 3 .AND. IDIMZ == 1 ) THEN
-            tpreclist(1)%dim%ndims = 2
-        ELSEIF ( IDIMX == NIMAX_ll+2 ) THEN
-          ivdims(1) = NDIMX
-        ELSEIF ( IDIMX == 16 ) THEN
-          ivdims(1) = 5
-        ELSE 
-           !print * , 'CASE PGD'
-          ivdims(1) = NDIMX
-        END IF
-      END IF
-      IF (tpreclist(1)%dim%create) THEN
-        invdims   = 1
-        ivdims(1) = tpreclist(1)%dim%id
-      ELSE
-        IF ( tpreclist(1)%dim%ndims == 1 ) THEN 
-          IF ( tpreclist(1)%name .NE. 'XHAT' .AND. &
-             & tpreclist(1)%name .NE. 'YHAT' .AND. &
-             & tpreclist(1)%name .NE. 'ZHAT') THEN
-             invdims = 11
-          END IF
-        ELSE
-          invdims = tpreclist(1)%dim%ndims
-        END IF
-!
-        SELECT CASE(invdims)
-!
-          CASE(2)
-             status = NF_INQ_DIMID(kcdf_id,'X', ivdims(1))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'Y', ivdims(2))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-!
-          CASE(3)
-             status = NF_INQ_DIMID(kcdf_id,'X', ivdims(1))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'Y', ivdims(2))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'Z', ivdims(3))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-
-          CASE(4)
-             status = NF_INQ_DIMID(kcdf_id,'X', ivdims(1))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'Y', ivdims(2))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             invdims = 2 ! on retablit la bonne valeur du nbre de dimension
-
-          CASE(5)
-             status = NF_INQ_DIMID(kcdf_id,'ZR',ivdims(1))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'X',ivdims(2))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             invdims = 2 ! on retablit la bonne valeur du nbre de dimension
-
-          CASE(6)
-             status = NF_INQ_DIMID(kcdf_id,'X', ivdims(1))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'WL', ivdims(2))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             invdims = 2 ! on retablit la bonne valeur du nbre de dimension
-
-          CASE(9)
-             status = NF_INQ_DIMID(kcdf_id,'X', ivdims(1))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'Y', ivdims(2))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'WL', ivdims(3))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             invdims = 3 ! on retablit la bonne valeur du nbre de dimension
-
-          CASE(10)
-             status = NF_INQ_DIMID(kcdf_id,'X',ivdims(1))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'ZR',ivdims(2))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             invdims = 2 ! on retablit la bonne valeur du nbre de dimension
-!
-          CASE(11)
-              invdims=1 ! on retablit la bonne valeur du nbre de dimension
-!
-          CASE(12)
-             status = NF_INQ_DIMID(kcdf_id,'X',ivdims(1))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'Z',ivdims(2))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             invdims = 2 ! on retablit la bonne valeur du nbre de dimension
-!
-          CASE(14)
-             status = NF_INQ_DIMID(kcdf_id,'ZR', ivdims(1))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'T', ivdims(2))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             invdims = 2 ! on retablit la bonne valeur du nbre de dimension
-
-          CASE(15)
-             status = NF_INQ_DIMID(kcdf_id,'ZR', ivdims(1))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             invdims = 1 ! on retablit la bonne valeur du nbre de dimension
-!
-          CASE(16)
-             status = NF_INQ_DIMID(kcdf_id,'X',ivdims(1))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'T', ivdims(2))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             invdims = 2 ! on retablit la bonne valeur du nbre de dimension
-
-          CASE(17)
-             status = NF_INQ_DIMID(kcdf_id,'ZR',ivdims(1))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'T', ivdims(2))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             status = NF_INQ_DIMID(kcdf_id,'N', ivdims(3))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             invdims = 3 ! on retablit la bonne valeur du nbre de dimension
-
-          CASE(18)
-             status = NF_INQ_DIMID(kcdf_id,'Z', ivdims(1))
-             IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-             invdims = 1 ! on retablit la bonne valeur du nbre de dimension
-!
-          CASE default
-             PRINT *,'Fatal error in NetCDF dimension definition ?'
-             STOP
-        END SELECT
-      END IF
-    ELSE
-         ! scalar variables
-          invdims   = 0
-          ivdims(1) = 0 ! ignore dans ce cas
-    END IF
-       
-! Variables definition
-
-!! NetCDF n'aime pas les '%' dans le nom des variables
-!! "%" remplaces par '_' 
-!! ni les '.' remplaces par '_'
-    ycdfvar = TRIM(tpreclist(1)%name)
-    ycdfvar = str_replace(ycdfvar,'%','_')
-    ycdfvar = str_replace(ycdfvar,'.','_')
-
-    SELECT CASE(tpreclist(1)%TYPE)
-!
-      CASE (TEXT)
-        status = NF_DEF_VAR(kcdf_id,ycdfvar,NF_CHAR,&
-                   invdims,ivdims,tpreclist(1)%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-!
-      CASE (INT2,BOOL)
-        !PRINT *,'INT,BOOL : ',tpreclist(1)%name
-        status = NF_DEF_VAR(kcdf_id,ycdfvar,NF_INT,&
-                   invdims,ivdims,tpreclist(1)%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-!
-      CASE (FLOAT2)
-        !PRINT *,'FLOAT : ',tpreclist(1)%name
-        IF ( tpreclist(1)%name == 'XHAT' ) THEN
-          ivdims(1) = NDIMX
-        END IF
-        IF ( tpreclist(1)%name == 'YHAT' ) THEN
-          ivdims(1) = NDIMY
-        END IF
-        IF ( tpreclist(1)%name == 'ZHAT' ) THEN
-          ivdims(1) = NDIMZ
-        END IF
-        status = NF_DEF_VAR(kcdf_id,ycdfvar,NF_FLOAT,&
-                 invdims,ivdims,tpreclist(1)%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-!
-      CASE default
-!        PRINT *,'ATTENTION : ',TRIM(tpreclist(1)%name),' est de&
-!             & TYPE inconnu --> force a REAL'
-        status = NF_DEF_VAR(kcdf_id,ycdfvar,NF_FLOAT,&
-                 invdims,ivdims,tpreclist(1)%id)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__) 
-!          
-    END SELECT
-
-       !  attribute definition
-       !print * , ' attribute definition '
-    status = NF_PUT_ATT_TEXT(kcdf_id,tpreclist(1)%id,'standard_name',&
-          LEN(TRIM(tpreclist(1)%ncname)),TRIM(tpreclist(1)%ncname))
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-!
-    IF (LEN(TRIM(tpreclist(1)%ncunit)) > 0 ) THEN
-      status = NF_PUT_ATT_TEXT(kcdf_id,tpreclist(1)%id,'units',&
-        LEN(TRIM(tpreclist(1)%ncunit)),TRIM(tpreclist(1)%ncunit))
-      IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    END IF
-!
-    status = NF_PUT_ATT_TEXT(kcdf_id,tpreclist(1)%id,'long_name',&
-     LEN(TRIM(tpreclist(1)%long_name)),TRIM(tpreclist(1)%long_name))
-    IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-!
-    IF ( tpreclist(1)%grid == 2 ) THEN
-      status = NF_PUT_ATT_TEXT(kcdf_id,tpreclist(1)%id,'stagger',&
-                               1,"X")
-      IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    ELSEIF ( tpreclist(1)%grid == 3 ) THEN
-      status = NF_PUT_ATT_TEXT(kcdf_id,tpreclist(1)%id,'stagger',&
-                               1,"Y")
-      IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    ELSEIF ( tpreclist(1)%grid == 4 ) THEN
-      status = NF_PUT_ATT_TEXT(kcdf_id,tpreclist(1)%id,'stagger',&
-                               1,"Z")
-      IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-    END IF
-!!
-    
-  END SUBROUTINE def_ncdf
-
-  SUBROUTINE FILL_NCDF(varID,tpreclist,pfield)
-    USE MODD_TIME_n, ONLY: TDTCUR,TDTMOD
-    USE MODD_GRID
-    USE MODD_GRID_n
-    USE MODD_CONF, ONLY: LCARTESIAN
-    TYPE(workfield), DIMENSION(:), INTENT(IN):: tpreclist    
-    REAL,DIMENSION(IDIMX*IDIMY*IDIMZ*IDIMT*IDIMN*IDIMP),TARGET,INTENT(IN) ::PFIELD
-    REAL(KIND=4),DIMENSION(IDIMX*IDIMY*IDIMZ*IDIMT*IDIMN*IDIMP) ::WFIELD
-    REAL(KIND=4)                             ::tfield
-    INTEGER                                  :: i
-    INTEGER                                  :: status
-    INTEGER                                  :: ileng
-    INTEGER                                  :: ipos
-    INTEGER                                  :: extent
-    INTEGER                                  :: ich,iiu,iju
-    INTEGER (KIND=4)                         :: levId,timeId
-    INTEGER (KIND=4)                         :: varID
-    INTEGER (KIND=4)                         :: yy,mm,dd,ss,yy_cur,mm_cur
-    REAL                                     :: D,D_cur ! day of month (+ fraction)
-    REAL                                     :: JD,JD_cur ! Julian day
-    INTEGER                                  :: A, B, A_cur, B_cur  ! intermediate variables
-
-
-    !
-
-      IF (ASSOCIATED(tpreclist(1)%dim)) THEN
-        extent = tpreclist(1)%dim%len
-      ELSE
-        extent = 1
-      END IF
-
-    ! FIRST WRITE TIME
-      IF ( WRITETIME ) THEN
-        yy = TDTMOD%TDATE%YEAR
-        mm = TDTMOD%TDATE%MONTH
-        D = TDTMOD%TDATE%DAY
-        yy_cur = TDTCUR%TDATE%YEAR
-        mm_cur = TDTCUR%TDATE%MONTH
-        D_cur = TDTCUR%TDATE%DAY
-!!!! Calcul of Julian day
-        IF (mm .LE. 2) THEN
-          yy = yy - 1
-          mm = mm + 12
-        END IF
-        IF (mm_cur .LE. 2) THEN
-          yy_cur = yy_cur - 1
-          mm_cur = mm_cur + 12
-        END IF
-        A = yy/100
-        B = 2 - A + A/4
-        JD = INT(365.25D0*(yy+4716)) + INT(30.6001D0*(mm+1)) + D + B - 1524.5D0
-        A_cur = yy_cur/100
-        B_cur = 2 - A_cur + A_cur/4
-        JD_cur = INT(365.25D0*(yy_cur+4716)) + INT(30.6001D0*(mm_cur+1)) + D_cur + B_cur - 1524.5D0
-        ss = TDTCUR%TIME-TDTMOD%TIME
-        ss = ss + (JD_cur - JD ) * (24*3600)
-        tfield=ss
-        status = NF_PUT_VAR_REAL(kcdf_id,1,tfield)
-        IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-        WRITETIME = .FALSE.
-        !!!!!!!!! Write also vertical level
-      !  status = NF_PUT_VAR_REAL(kcdf_id,2,XZZ)
-      !  IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-      END IF
-
-
-      SELECT CASE(tpreclist(1)%TYPE)
-        CASE (INT2,BOOL)
-          status = NF_PUT_VAR_INT(kcdf_id,varID,pfield)
-          IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-          
-        CASE (FLOAT2)
-          wfield=pfield
-          status = NF_PUT_VAR_REAL(kcdf_id,varID,wfield)
-          IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-
-        CASE (TEXT)
-          status = NF_PUT_VAR_TEXT(kcdf_id,varID,pfield)
-          IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-
-        CASE default
-          wfield=pfield
-          status = NF_PUT_VAR_REAL(kcdf_id,varID,wfield)
-          IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-      END SELECT
-
-    !!!! Add vertical levels ??
-
-  END SUBROUTINE fill_ncdf
-
-  SUBROUTINE NC_WRIT_ll(hvnam,hfnam,hgrid,tdim,pfield,oreal,tpreclist,hlen,hcomment)
-
-  CHARACTER(LEN=*)                         :: hvnam
-  CHARACTER(LEN=*), INTENT(IN)             :: hfnam
-  INTEGER, DIMENSION(6), INTENT(IN)        :: tdim
-  REAL, DIMENSION(tdim(1)*tdim(2)*tdim(3)*tdim(4)*tdim(5)*tdim(6)), INTENT(IN)     :: pfield
-  TYPE(workfield), DIMENSION(:),POINTER    :: tpreclist    
-  INTEGER          , INTENT(IN)            :: hgrid,hlen
-  LOGICAL,                 INTENT(IN) :: OREAL  ! TRUE IF TRANSMITTED KFIELD IS
-  CHARACTER(LEN=hlen), INTENT(IN)          :: hcomment
-  INTEGER                                  :: status
-  INTEGER (KIND=4)                         :: varID
-  CHARACTER(LEN=42)                        :: filename, basename
-  INTEGER                                  :: omode
-  LOGICAL                                  :: FEXIST
-  CHARACTER(LEN=4)                         :: ypextsrc, ypextdest
-  INTEGER                                  :: iverb
-  INTEGER                                  :: pos
-
-
-  IDIMX = tdim(1)
-  IDIMY = tdim(2)
-  IDIMZ = tdim(3)
-  IDIMT = tdim(4)
-  IDIMN = tdim(5)
-  IDIMP = tdim(6)
-
-  !   OPEN FILE IF NOT OPEN YET
-  filename = trim(hfnam)
-  ypextdest = '.nc'
-  IF ( LEN(NC_FILE) .eq. 0 ) THEN
-    filename = trim(hfnam)//ypextdest
-  ELSE
-    filename = trim(hfnam)//TRIM(NC_FILE)//ypextdest
-  END IF
-  pos = INDEX(hvnam,'%')
-  IF ( pos /= 0  ) THEN
-    hvnam = trim(hvnam)
-    hvnam = str_replace(hvnam,'%','_')
-  END IF
-  pos = INDEX(hvnam,'.')
-  IF ( pos /= 0  ) THEN
-    hvnam = trim(hvnam)
-    hvnam = str_replace(hvnam,'.','_')
-  END IF
-
-  IF ( DEF_NC .AND. NC_WRITE ) THEN
-
-    INQUIRE(FILE=TRIM(filename), EXIST=FEXIST)
-!    print * , ' FEXIST = ' , FEXIST
-
-    IF ( .not.FEXIST ) then
-      PRINT *,'--> Fichier converti : ',TRIM(filename)
-      iverb = 0
-      CALL init_sysfield()
-
-! -> NetCDF
-    
-      status = NF_CREATE(TRIM(filename), &
-            & IOR(NF_CLOBBER,NF_64BIT_OFFSET),kcdf_id)
-      IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-      status = NF_SET_FILL(kcdf_id,NF_NOFILL,omode)
-      IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-
-!!! Status for dim creation
-      CREATET = .TRUE.
-      CREATEX = .TRUE.
-      CREATEY = .TRUE.
-      CREATEZ = .TRUE.
-      CREATEXR = .TRUE.
-      CREATEZR = .TRUE.
-      CREATEN = .TRUE.
-      CREATEDATE = .TRUE.
-      CREATEWL = .TRUE.
-      CREATED = .TRUE.
-      WRITETIME = .TRUE.
-      NUMDIM = 0
-      first_var=hvnam
-
-    END IF
-!  END IF
-
-!  IF ( DEF_NC .AND. NC_WRITE ) THEN
-    status=NF_INQ_VARID(kcdf_id,hvnam,varId)
-! Check to see if variable already exist
-! because some variables a written twice ..!!??
-    IF ( status /= 0 ) THEN
-      CALL PARSE_PFIELD(hvnam,hgrid,pfield,tpreclist,hcomment)
-      CALL DEF_NCDF(tpreclist)
-      last_var=hvnam
-    END IF
-  ELSE
-    IF (hvnam.eq.first_var) then
-      status = NF_ENDDEF(kcdf_id)
-      IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-      WRITETIME=.TRUE.
-    END IF
-    CALL PARSE_PFIELD(hvnam,hgrid,pfield,tpreclist,hcomment)
-    status=NF_INQ_VARID(kcdf_id,hvnam,varId)
-    CALL FILL_NCDF(varID,tpreclist,pfield)
-!   CLOSE NETCDF FILE
-    IF (hvnam.eq.last_var) then
-      status = NF_CLOSE(kcdf_id)
-      IF (status /= NF_NOERR) CALL HANDLE_ERR(status,__LINE__)
-      NC_WRITE = .FALSE.
-    END IF
-  END IF
-
-  END SUBROUTINE NC_WRIT_ll
-
-END MODULE mode_util
-#endif
diff --git a/src/MNH/write_lfifm1_for_diag_supp.f90 b/src/MNH/write_lfifm1_for_diag_supp.f90
index fa901638e38b00ad02fc1383176f195051447618..1c0b42a312e96be3d7e7a33a828d635dad301fb5 100644
--- a/src/MNH/write_lfifm1_for_diag_supp.f90
+++ b/src/MNH/write_lfifm1_for_diag_supp.f90
@@ -233,13 +233,6 @@ ALLOCATE(ZWORK31(IIU,IJU,IKU))
 ALLOCATE(ZTEMP(IIU,IJU,IKU))
 ZTEMP(:,:,:)=XTHT(:,:,:)*(XPABST(:,:,:)/ XP00) **(XRD/XCPD)
 !
-! #ifdef MNH_NCWRIT
-! IF (LNETCDF.AND..NOT.LCARTESIAN) THEN
-!   CALL IO_WRITE_FIELD(TPFILE,'LAT',XLAT)
-!   CALL IO_WRITE_FIELD(TPFILE,'LON',XLON)
-! END IF
-! #endif
-!
 !-------------------------------------------------------------------------------
 !
 !*       1.     DIAGNOSTIC RELATED TO CONVECTION
diff --git a/src/MNH/write_lfifmn_fordiachron.f90 b/src/MNH/write_lfifmn_fordiachron.f90
index cb713df7b3eb7e33583cd9b61165dbe37dc98c13..528b58ed0d22e15f2cdb2ce885701ac41b29eb65 100644
--- a/src/MNH/write_lfifmn_fordiachron.f90
+++ b/src/MNH/write_lfifmn_fordiachron.f90
@@ -164,15 +164,6 @@ IF (.NOT.LCARTESIAN) THEN
 !
   CALL IO_WRITE_FIELD(TPFILE,'LONOR',ZLONOR)
   CALL IO_WRITE_FIELD(TPFILE,'LATOR',ZLATOR)
-!
-! #ifdef MNH_NCWRIT
-!   IF (LNETCDF) THEN
-!     LLFIFM = .FALSE.
-!     CALL IO_WRITE_FIELD(TPFILE,'LAT',XLAT)
-!     CALL IO_WRITE_FIELD(TPFILE,'LON',XLON)
-!     LLFIFM = .TRUE.
-!   END IF
-! #endif
 END IF
 !
 CALL IO_WRITE_FIELD(TPFILE,'THINSHELL',LTHINSHELL)
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index 1735119f8532ee69b9310f6c77c0e726222af254..ee365cd0db1ed4bd9edc58846db5d382ba568cb3 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -386,13 +386,6 @@ CALL IO_WRITE_FIELD(TPFILE,'YHAT',XYHAT)
 CALL IO_WRITE_FIELD(TPFILE,'ZHAT',XZHAT)
 CALL IO_WRITE_FIELD(TPFILE,'ZTOP',XZTOP)
 !
-! #ifdef MNH_NCWRIT
-! !
-! !*SB*MAY2012
-! !*SB* * WRITE ALT
-! IF (LNETCDF) CALL IO_WRITE_FIELD(TPFILE,'ALT',XZZ)
-! #endif 
-!
 IF (.NOT.LCARTESIAN) THEN
   CALL IO_WRITE_FIELD(TPFILE,'LAT',XLAT)
   CALL IO_WRITE_FIELD(TPFILE,'LON',XLON)