From 5d4d643b9216c515ef2aeb7dcd349407c9e3d7f6 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Tue, 7 Feb 2017 16:40:27 +0100
Subject: [PATCH] Philippe 07/02/2017: IO: possible to write character strings
 values in output files

---
 src/LIB/SURCOUCHE/src/io_write_field.f90 | 13 +++++++++++++
 src/LIB/SURCOUCHE/src/mode_field.f90     |  6 ++++++
 2 files changed, 19 insertions(+)

diff --git a/src/LIB/SURCOUCHE/src/io_write_field.f90 b/src/LIB/SURCOUCHE/src/io_write_field.f90
index e417d71d9..61f1cc9fb 100644
--- a/src/LIB/SURCOUCHE/src/io_write_field.f90
+++ b/src/LIB/SURCOUCHE/src/io_write_field.f90
@@ -33,6 +33,19 @@ DO JI = 1,SIZE(TPOUTPUT%NFIELDLIST)
     CASE (0)
       SELECT CASE (TFIELDLIST(IDX)%NTYPE)
         !
+        !0D string
+        !
+        CASE (TYPECHAR)
+          IF ( .NOT.ALLOCATED(TFIELDLIST(IDX)%TFIELD_C0D) ) THEN
+            PRINT *,'FATAL: IO_WRITE_FIELDLIST: TFIELD_C0D is NOT allocated for ',TRIM(TFIELDLIST(IDX)%CMNHNAME)
+            STOP
+          END IF
+          IF ( .NOT.ASSOCIATED(TFIELDLIST(IDX)%TFIELD_C0D(IMI)%DATA) ) THEN
+            PRINT *,'FATAL: IO_WRITE_FIELDLIST: TFIELD_C0D%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_C0D(IMI)%DATA)
+        !
         !0D logical
         !
         CASE (TYPELOG)
diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90
index 0994e6d16..fb13c1846 100644
--- a/src/LIB/SURCOUCHE/src/mode_field.f90
+++ b/src/LIB/SURCOUCHE/src/mode_field.f90
@@ -15,6 +15,10 @@ IMPLICIT NONE
 INTEGER,PRIVATE,PARAMETER :: MAXFIELDS = 100
 INTEGER,PARAMETER :: TYPEUNDEF = -1, TYPEINT = 1, TYPELOG = 2, TYPEREAL = 3, TYPECHAR = 4, TYPEDATE = 5
 !
+TYPE TFIELDPTR_C0D
+  CHARACTER(LEN=:),     POINTER :: DATA => NULL()
+END TYPE TFIELDPTR_C0D
+!
 TYPE TFIELDPTR_L0D
   LOGICAL,              POINTER :: DATA => NULL()
 END TYPE TFIELDPTR_L0D
@@ -51,6 +55,8 @@ TYPE TFIELDDATA
   INTEGER            :: NTYPE     = TYPEUNDEF !Datatype
   INTEGER            :: NDIMS     = 0  !Number of dimensions
   !
+  TYPE(TFIELDPTR_C0D),DIMENSION(:),ALLOCATABLE :: TFIELD_C0D !Pointer to the character string fields (one per nested mesh)
+  !
   TYPE(TFIELDPTR_L0D),DIMENSION(:),ALLOCATABLE :: TFIELD_L0D !Pointer to the scalar logical fields (one per nested mesh)
   !
   TYPE(TFIELDPTR_X0D),DIMENSION(:),ALLOCATABLE :: TFIELD_X0D !Pointer to the scalar real fields (one per nested mesh)
-- 
GitLab