diff --git a/src/common/aux/mode_io_field_write.F90 b/src/common/aux/mode_io_field_write.F90 index e1ea4aef4651b7a11ce0bd10319e08bfb59c1edb..0393ea7ed49a8f0362cff09494a51dc1717d72af 100644 --- a/src/common/aux/mode_io_field_write.F90 +++ b/src/common/aux/mode_io_field_write.F90 @@ -12,5 +12,19 @@ SUBROUTINE IO_FIELD_WRITE(TPFILE,TZFIELD,PFIELD) ! CALL ABORT END SUBROUTINE IO_FIELD_WRITE +! +SUBROUTINE IO_FIELD_WRITE_PHY(D,TPFILE,TZFIELD,PFIELD) + USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t + ! + !* 0.1 Declarations of arguments + ! + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(TFILEDATA), INTENT(IN) :: TPFILE + TYPE(TFIELDDATA), INTENT(IN) :: TZFIELD + REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! array containing the data field + ! + CALL ABORT +END SUBROUTINE IO_FIELD_WRITE_PHY +! END MODULE MODE_IO_FIELD_WRITE diff --git a/src/mesonh/aux/mode_io_field_write.f90 b/src/mesonh/aux/mode_io_field_write.f90 index b48a37b2649d4d8ae06964e24a736db43439cbaf..a4a6a28c0f76c12701db46b997a5cf1cc96fbb80 100644 --- a/src/mesonh/aux/mode_io_field_write.f90 +++ b/src/mesonh/aux/mode_io_field_write.f90 @@ -43,6 +43,7 @@ MODULE MODE_IO_FIELD_WRITE PRIVATE public :: IO_Field_write, IO_Field_write_box, IO_Field_write_lb + public :: IO_Field_write_phy public :: IO_Fieldlist_write, IO_Field_user_write public :: IO_Header_write, IO_Field_create @@ -69,6 +70,10 @@ MODULE MODE_IO_FIELD_WRITE IO_Field_write_byfield_T0,IO_Field_write_byfield_T1 END INTERFACE + INTERFACE IO_Field_write_phy + MODULE PROCEDURE IO_Field_write_phy_byfield_X2, IO_Field_write_phy_byfield_X1 + END INTERFACE + INTERFACE IO_Field_write_box MODULE PROCEDURE IO_Field_write_box_byfield_X2, IO_Field_write_box_byfield_X3, & IO_Field_write_box_byfield_X4, IO_Field_write_box_byfield_X5 @@ -619,6 +624,77 @@ end subroutine IO_Ndimlist_reduce ! END SUBROUTINE IO_Field_write_byname_X1 + SUBROUTINE IO_Field_write_phy_byfield_X2(D, TPFILE, TPFIELD, PFIELD, KRESP, koffset ) + USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t + ! + IMPLICIT NONE + ! + !* 0.1 Declarations of arguments + ! + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(TFILEDATA), INTENT(IN) :: TPFILE + TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD + REAL,DIMENSION(D%NIJT,D%NKT),TARGET, INTENT(IN) :: PFIELD ! array containing the data field + INTEGER, OPTIONAL, INTENT(OUT) :: KRESP ! return-code + integer, dimension(3), optional, intent(in) :: koffset + ! + CALL IO_Field_write_phy_unpack2D(D,TPFILE, TPFIELD, PFIELD, KRESP, koffset ) + ! + END SUBROUTINE IO_Field_write_phy_byfield_X2 +! + SUBROUTINE IO_Field_write_phy_unpack2D(D, TPFILE, TPFIELD, PFIELD, KRESP, koffset ) + USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t + ! + IMPLICIT NONE + ! + !* 0.1 Declarations of arguments + ! + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(TFILEDATA), INTENT(IN) :: TPFILE + TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD + REAL,DIMENSION(D%NIT,D%NJT,D%NKT),TARGET, INTENT(IN) :: PFIELD ! array containing the data field + INTEGER, OPTIONAL, INTENT(OUT) :: KRESP ! return-code + integer, dimension(3), optional, intent(in) :: koffset + ! + CALL IO_Field_write_byfield_X3(TPFILE, TPFIELD, PFIELD, KRESP, koffset ) + ! + END SUBROUTINE IO_Field_write_phy_unpack2D +! + SUBROUTINE IO_Field_write_phy_byfield_X1(D, TPFILE, TPFIELD, PFIELD, KRESP, koffset ) + USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t + ! + IMPLICIT NONE + ! + !* 0.1 Declarations of arguments + ! + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(TFILEDATA), INTENT(IN) :: TPFILE + TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD + REAL,DIMENSION(D%NIJT),TARGET, INTENT(IN) :: PFIELD ! array containing the data field + INTEGER, OPTIONAL, INTENT(OUT) :: KRESP ! return-code + integer, dimension(3), optional, intent(in) :: koffset + ! + CALL IO_Field_write_phy_unpack1D(D,TPFILE, TPFIELD, PFIELD, KRESP, koffset ) + ! + END SUBROUTINE IO_Field_write_phy_byfield_X1 +! + SUBROUTINE IO_Field_write_phy_unpack1D(D, TPFILE, TPFIELD, PFIELD, KRESP, koffset ) + USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t + ! + IMPLICIT NONE + ! + !* 0.1 Declarations of arguments + ! + TYPE(DIMPHYEX_t), INTENT(IN) :: D + TYPE(TFILEDATA), INTENT(IN) :: TPFILE + TYPE(TFIELDDATA), INTENT(IN) :: TPFIELD + REAL,DIMENSION(D%NIT,D%NJT),TARGET, INTENT(IN) :: PFIELD ! array containing the data field + INTEGER, OPTIONAL, INTENT(OUT) :: KRESP ! return-code + integer, dimension(3), optional, intent(in) :: koffset + ! + CALL IO_Field_write_byfield_X2(TPFILE, TPFIELD, PFIELD, KRESP, koffset ) + ! + END SUBROUTINE IO_Field_write_phy_unpack1D SUBROUTINE IO_Field_write_byfield_X1( TPFILE, TPFIELD, PFIELD, KRESP, koffset ) USE MODD_IO, ONLY: GSMONOPROC, ISP