Skip to content
Snippets Groups Projects
Commit e25fb1cf authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 26/06/2024: IO_Field_read: 3D fields: ensure that data can not be...

Philippe 26/06/2024: IO_Field_read: 3D fields: ensure that data can not be overwritten in case of read error + other improvements
parent 58e71187
No related branches found
No related tags found
No related merge requests found
...@@ -17,11 +17,11 @@ IMPLICIT NONE ...@@ -17,11 +17,11 @@ IMPLICIT NONE
PRIVATE PRIVATE
INTERFACE ALLOCBUFFER_ll INTERFACE ALLOCBUFFER_ll
MODULE PROCEDURE & MODULE PROCEDURE &
ALLOCBUFFER_X1, ALLOCBUFFER_NEW_X1, ALLOCBUFFER_X2, ALLOCBUFFER_NEW_X2, ALLOCBUFFER_X3, & ALLOCBUFFER_X1, ALLOCBUFFER_NEW_X1, ALLOCBUFFER_X2, ALLOCBUFFER_NEW_X2, ALLOCBUFFER_X3, ALLOCBUFFER_NEW_X3, &
ALLOCBUFFER_X4, ALLOCBUFFER_X5, ALLOCBUFFER_X6, & ALLOCBUFFER_X4, ALLOCBUFFER_X5, ALLOCBUFFER_X6, &
ALLOCBUFFER_N1, ALLOCBUFFER_NEW_N1, ALLOCBUFFER_N2, ALLOCBUFFER_NEW_N2, ALLOCBUFFER_N3, & ALLOCBUFFER_N1, ALLOCBUFFER_NEW_N1, ALLOCBUFFER_N2, ALLOCBUFFER_NEW_N2, ALLOCBUFFER_N3, ALLOCBUFFER_NEW_N3, &
ALLOCBUFFER_N4, & ALLOCBUFFER_N4, &
ALLOCBUFFER_L1, ALLOCBUFFER_NEW_L1 ALLOCBUFFER_L1, ALLOCBUFFER_NEW_L1
END INTERFACE END INTERFACE
...@@ -171,6 +171,35 @@ CASE default ...@@ -171,6 +171,35 @@ CASE default
END SELECT END SELECT
END SUBROUTINE ALLOCBUFFER_N3 END SUBROUTINE ALLOCBUFFER_N3
SUBROUTINE ALLOCBUFFER_NEW_N3( KTAB_OUT, KTAB_IN, HDIR )
USE MODD_IO, ONLY: LPACK, L2D
!
INTEGER, DIMENSION(:,:,:), ALLOCATABLE, INTENT(OUT) :: KTAB_OUT
INTEGER, DIMENSION(:,:,:), INTENT(IN) :: KTAB_IN
CHARACTER(LEN=*), INTENT(IN) :: HDIR
INTEGER :: IIMAX, IJMAX
SELECT CASE(HDIR)
CASE('XX')
CALL GET_GLOBALDIMS_ll(IIMAX,IJMAX)
ALLOCATE(KTAB_OUT(IIMAX+2*JPHEXT,SIZE(KTAB_IN,2),SIZE(KTAB_IN,3)))
CASE('YY')
CALL GET_GLOBALDIMS_ll(IIMAX,IJMAX)
ALLOCATE(KTAB_OUT(IJMAX+2*JPHEXT,SIZE(KTAB_IN,2),SIZE(KTAB_IN,3)))
CASE('XY')
CALL GET_GLOBALDIMS_ll(IIMAX,IJMAX)
IF (LPACK .AND. L2D) THEN
! 2D compact case
ALLOCATE(KTAB_OUT(IIMAX+2*JPHEXT,1,SIZE(KTAB_IN,3)))
ELSE
ALLOCATE(KTAB_OUT(IIMAX+2*JPHEXT,IJMAX+2*JPHEXT,SIZE(KTAB_IN,3)))
END IF
CASE default
ALLOCATE( KTAB_OUT, MOLD = KTAB_IN )
END SELECT
END SUBROUTINE ALLOCBUFFER_NEW_N3
SUBROUTINE ALLOCBUFFER_N4(KTAB_P,KTAB,HDIR,OALLOC) SUBROUTINE ALLOCBUFFER_N4(KTAB_P,KTAB,HDIR,OALLOC)
USE MODD_IO, ONLY: LPACK, L2D USE MODD_IO, ONLY: LPACK, L2D
! !
...@@ -448,6 +477,34 @@ CASE default ...@@ -448,6 +477,34 @@ CASE default
END SELECT END SELECT
END SUBROUTINE ALLOCBUFFER_X3 END SUBROUTINE ALLOCBUFFER_X3
SUBROUTINE ALLOCBUFFER_NEW_X3( PTAB_OUT, PTAB_IN, HDIR )
USE MODD_IO, ONLY: LPACK, L2D
!
REAL, DIMENSION(:,:,:), ALLOCATABLE, INTENT(OUT) :: PTAB_OUT
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTAB_IN
CHARACTER(LEN=*), INTENT(IN) :: HDIR
INTEGER :: IIMAX,IJMAX
SELECT CASE(HDIR)
CASE('XX')
CALL GET_GLOBALDIMS_ll(IIMAX,IJMAX)
ALLOCATE(PTAB_OUT(IIMAX+2*JPHEXT,SIZE(PTAB_IN,2),SIZE(PTAB_IN,3)))
CASE('YY')
CALL GET_GLOBALDIMS_ll(IIMAX,IJMAX)
ALLOCATE(PTAB_OUT(IJMAX+2*JPHEXT,SIZE(PTAB_IN,2),SIZE(PTAB_IN,3)))
CASE('XY')
CALL GET_GLOBALDIMS_ll(IIMAX,IJMAX)
IF (LPACK .AND. L2D) THEN ! 2D compact case
ALLOCATE(PTAB_OUT(IIMAX+2*JPHEXT,1,SIZE(PTAB_IN,3)))
ELSE
ALLOCATE(PTAB_OUT(IIMAX+2*JPHEXT,IJMAX+2*JPHEXT,SIZE(PTAB_IN,3)))
END IF
CASE default
ALLOCATE( PTAB_OUT, MOLD = PTAB_IN )
END SELECT
END SUBROUTINE ALLOCBUFFER_NEW_X3
SUBROUTINE ALLOCBUFFER_X4(PTAB_P,PTAB,HDIR,OALLOC) SUBROUTINE ALLOCBUFFER_X4(PTAB_P,PTAB,HDIR,OALLOC)
USE MODD_IO, ONLY: LPACK, L2D USE MODD_IO, ONLY: LPACK, L2D
! !
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment