diff --git a/src/LIB/SURCOUCHE/src/io_write_field.f90 b/src/LIB/SURCOUCHE/src/io_write_field.f90 index c872a5ae0ef2e202daa53b1bc43d6fbf54aa1ce7..806f50b5d6323230fd1f048242c9fa6962b36fc4 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 ab1df4010e98ed77652cbd31491cc93db90531ac..b73202083aac2dafe0ac99d433925abf4a0950dd 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