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

Philippe 14/01/2021: add ALLOCBUFFER_N4 subroutine

parent 8092fd8f
No related branches found
No related tags found
No related merge requests found
!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
!-----------------------------------------------------------------
! Modifications:
! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
! P. Wautelet 14/01/2021: add ALLOCBUFFER_N4 subroutine
!-----------------------------------------------------------------
MODULE MODE_ALLOCBUFFER_ll
......@@ -16,10 +17,12 @@ IMPLICIT NONE
PRIVATE
INTERFACE ALLOCBUFFER_ll
MODULE PROCEDURE ALLOCBUFFER_X1,ALLOCBUFFER_X2,ALLOCBUFFER_X3,&
& ALLOCBUFFER_X4,ALLOCBUFFER_X5,ALLOCBUFFER_X6,&
& ALLOCBUFFER_N1,ALLOCBUFFER_N2,ALLOCBUFFER_N3,&
& ALLOCBUFFER_L1
MODULE PROCEDURE &
ALLOCBUFFER_X1, ALLOCBUFFER_X2, ALLOCBUFFER_X3, &
ALLOCBUFFER_X4, ALLOCBUFFER_X5, ALLOCBUFFER_X6, &
ALLOCBUFFER_N1, ALLOCBUFFER_N2, ALLOCBUFFER_N3, &
ALLOCBUFFER_N4, &
ALLOCBUFFER_L1
END INTERFACE
PUBLIC ALLOCBUFFER_ll
......@@ -118,6 +121,42 @@ CASE default
END SELECT
END SUBROUTINE ALLOCBUFFER_N3
SUBROUTINE ALLOCBUFFER_N4(KTAB_P,KTAB,HDIR,OALLOC)
USE MODD_IO, ONLY: LPACK, L2D
!
INTEGER, DIMENSION(:,:,:,:), POINTER, INTENT(OUT) :: KTAB_P
INTEGER, DIMENSION(:,:,:,:), TARGET, INTENT(IN) :: KTAB
CHARACTER(LEN=*), INTENT(IN) :: HDIR
LOGICAL, INTENT(OUT) :: OALLOC
INTEGER :: IIMAX,IJMAX
SELECT CASE(HDIR)
CASE('XX')
CALL GET_GLOBALDIMS_ll(IIMAX,IJMAX)
ALLOCATE(KTAB_P(IIMAX+2*JPHEXT,SIZE(KTAB,2),SIZE(KTAB,3)&
& ,SIZE(KTAB,4)))
OALLOC = .TRUE.
CASE('YY')
CALL GET_GLOBALDIMS_ll(IIMAX,IJMAX)
ALLOCATE(KTAB_P(IJMAX+2*JPHEXT,SIZE(KTAB,2),SIZE(KTAB,3)&
& ,SIZE(KTAB,4)))
OALLOC = .TRUE.
CASE('XY')
CALL GET_GLOBALDIMS_ll(IIMAX,IJMAX)
IF (LPACK .AND. L2D) THEN
! 2D compact case
ALLOCATE(KTAB_P(IIMAX+2*JPHEXT,1,SIZE(KTAB,3),SIZE(KTAB,4)))
ELSE
ALLOCATE(KTAB_P(IIMAX+2*JPHEXT,IJMAX+2*JPHEXT,SIZE(KTAB,3),SIZE(KTAB,4)))
END IF
OALLOC = .TRUE.
CASE default
KTAB_P=>KTAB
OALLOC = .FALSE.
END SELECT
END SUBROUTINE ALLOCBUFFER_N4
SUBROUTINE ALLOCBUFFER_L1(LTAB_P,LTAB,HDIR,OALLOC)
!
LOGICAL,DIMENSION(:),POINTER :: LTAB_P
......
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