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