From b2eda318c3e38340b68e4d9d650194d3ddbbde34 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Thu, 22 Feb 2018 15:02:35 +0100
Subject: [PATCH] Philippe 22/02/2018: lfi2cdf: works with more situations (not
 yet perfect) + nc4 files have a .nc suffix

---
 LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
index 2fcdf133e..550debc64 100644
--- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
+++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90
@@ -739,15 +739,24 @@ END DO
           ndims = 0
        END IF
 
+! PRINT *,'Dimensions (',ndims,') for ',TRIM(tpreclist(ji)%name)
        idims(:) = 1
        if(ndims>0) idims(1) = ptdimx%len
        if(ndims>1) idims(2) = ptdimy%len
        if(ndims>2) idims(3) = ptdimz%len
        if(ndims>3) then
-         PRINT *,'Too many dimensions'
-         STOP
+         if(ndims==12) then
+           ndims = 2
+           idims(2) = ptdimz%len
+         else
+           PRINT *,'Too many dimensions (',ndims,') for ',TRIM(tpreclist(ji)%name)
+           STOP
+         endif
        endif
 
+!write(*,"( '----------------------------------------' )")
+!write(*,"( 'Field :',A )") trim(tpreclist(ji)%name)
+
        SELECT CASE(tpreclist(ji)%TYPE)
        CASE (INT,BOOL)
         IF (infiles%files(1)%format == LFI_FORMAT) THEN
@@ -787,7 +796,7 @@ END DO
 !TODO: works in all cases??? (X, Y, Z dimensions assumed to be ptdimx,y or z)
          SELECT CASE(ndims)
          CASE (0)
-           status = NF90_PUT_VAR(kcdf_id,tpreclist(ji)%id_out,itab(1))
+           status = NF90_PUT_VAR(kcdf_id,tpreclist(ji)%id_out,itab(1:extent),count=(/extent/))
          CASE (1)
            status = NF90_PUT_VAR(kcdf_id,tpreclist(ji)%id_out,itab(1:extent),count=(/extent/))
          CASE (2)
@@ -870,7 +879,7 @@ END DO
 !TODO: works in all cases??? (X, Y, Z dimensions assumed to be ptdimx,y or z)
          SELECT CASE(ndims)
          CASE (0)
-           status = NF90_PUT_VAR(kcdf_id,tpreclist(ji)%id_out,xtab(1))
+           status = NF90_PUT_VAR(kcdf_id,tpreclist(ji)%id_out,xtab(1:extent),count=(/extent/))
          CASE (1)
            status = NF90_PUT_VAR(kcdf_id,tpreclist(ji)%id_out,xtab(1:extent),count=(/extent/))
          CASE (2)
@@ -978,7 +987,7 @@ END DO
 !TODO: works in all cases??? (X, Y, Z dimensions assumed to be ptdimx,y or z)
          SELECT CASE(ndims)
          CASE (0)
-           status = NF90_PUT_VAR(kcdf_id,tpreclist(ji)%id_out,xtab(1))
+           status = NF90_PUT_VAR(kcdf_id,tpreclist(ji)%id_out,xtab(1:extent),count=(/extent/))
          CASE (1)
            status = NF90_PUT_VAR(kcdf_id,tpreclist(ji)%id_out,xtab(1:extent),count=(/extent/))
          CASE (2)
@@ -1203,7 +1212,7 @@ END DO
          outfiles%files(idx)%format = NETCDF_FORMAT
          outfiles%files(idx)%status = WRITING
          IF (options(OPTCDF4)%set) THEN
-            status = NF90_CREATE(TRIM(houtfile)//'.nc4', IOR(NF90_CLOBBER,NF90_NETCDF4), outfiles%files(idx)%lun_id)
+            status = NF90_CREATE(TRIM(houtfile)//'.nc', IOR(NF90_CLOBBER,NF90_NETCDF4), outfiles%files(idx)%lun_id)
          ELSE
             status = NF90_CREATE(TRIM(houtfile)//'.nc', IOR(NF90_CLOBBER,NF90_64BIT_OFFSET), outfiles%files(idx)%lun_id)
          END IF
-- 
GitLab