From 69704a4ec0c3beb3f04cc94ed9f24eb6c0887fc9 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Fri, 6 Jan 2017 15:43:44 +0100
Subject: [PATCH] Philippe 06/01/2017: IO: * added TFIELD_X1D field to
 TFIELDDATA type * possible to write 1D real arrays in output files

---
 src/LIB/SURCOUCHE/src/io_write_field.f90 | 25 ++++++++++++++++++++++++
 src/LIB/SURCOUCHE/src/mode_field.f90     |  5 +++++
 2 files changed, 30 insertions(+)

diff --git a/src/LIB/SURCOUCHE/src/io_write_field.f90 b/src/LIB/SURCOUCHE/src/io_write_field.f90
index c872a5ae0..806f50b5d 100644
--- a/src/LIB/SURCOUCHE/src/io_write_field.f90
+++ b/src/LIB/SURCOUCHE/src/io_write_field.f90
@@ -28,6 +28,31 @@ DO JI = 1,SIZE(TPOUTPUT%NFIELDLIST)
   IDX = TPOUTPUT%NFIELDLIST(JI)
   SELECT CASE (TFIELDLIST(IDX)%NDIMS)
     !
+    !1D output
+    !
+    CASE (1)
+      SELECT CASE (TFIELDLIST(IDX)%NTYPE)
+        !
+        !1D real
+        !
+        CASE (TYPEREAL)
+          IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_X1D) ) THEN
+            PRINT *,'FATAL: IO_WRITE_FIELDLIST: TFIELD_X1D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
+            STOP
+          END IF
+          IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_X1D(IMI)%DATA) ) THEN
+            PRINT *,'FATAL: IO_WRITE_FIELDLIST: TFIELD_X1D%DATA is not associated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
+            STOP
+          END IF
+          CALL IO_WRITE_FIELD(TPOUTPUT%TFILE,TFIELDLIST(IDX),HFIPRI,IRESP,TFIELDLIST(IDX)%TFIELD_X1D(IMI)%DATA)
+        !
+        !1D other types
+        !
+        CASE DEFAULT
+          PRINT *,'FATAL: IO_WRITE_FIELDLIST: type not yet supported for 1D output of ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
+          STOP
+      END SELECT
+    !
     !2D output
     !
     CASE (2)
diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90
index ab1df4010..b73202083 100644
--- a/src/LIB/SURCOUCHE/src/mode_field.f90
+++ b/src/LIB/SURCOUCHE/src/mode_field.f90
@@ -11,6 +11,10 @@ IMPLICIT NONE
 INTEGER,PRIVATE,PARAMETER :: MAXFIELDS = 100
 INTEGER,PARAMETER :: TYPEUNDEF = -1, TYPEINT = 1, TYPELOG = 2, TYPEREAL = 3, TYPECHAR = 4
 !
+TYPE TFIELDPTR_X1D
+  REAL,DIMENSION(:),    POINTER :: DATA => NULL()
+END TYPE TFIELDPTR_X1D
+!
 TYPE TFIELDPTR_X2D
   REAL,DIMENSION(:,:),  POINTER :: DATA => NULL()
 END TYPE TFIELDPTR_X2D
@@ -30,6 +34,7 @@ TYPE TFIELDDATA
   INTEGER            :: NGRID     = -1 !Localization on the model grid
   INTEGER            :: NTYPE     = TYPEUNDEF !Datatype
   INTEGER            :: NDIMS     = 0  !Number of dimensions
+  TYPE(TFIELDPTR_X1D),DIMENSION(:),ALLOCATABLE :: TFIELD_X1D !Pointer to the real 1D fields (one per nested mesh)
   TYPE(TFIELDPTR_X2D),DIMENSION(:),ALLOCATABLE :: TFIELD_X2D !Pointer to the real 2D fields (one per nested mesh)
   TYPE(TFIELDPTR_X3D),DIMENSION(:),ALLOCATABLE :: TFIELD_X3D !Pointer to the real 3D fields (one per nested mesh)
 END TYPE TFIELDDATA
-- 
GitLab