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