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