Newer
Older

WAUTELET Philippe
committed
!MNH_LIC Copyright 1994-2024 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence

WAUTELET Philippe
committed
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
!-----------------------------------------------------------------
! ###################
MODULE MODD_LUNIT_n
! ###################
!
!!**** *MODD_LUNIT$n* - declaration of names and logical unit numbers of files
!!
!! PURPOSE
!! -------
! The purpose of this declarative module is to declare the names
! for the initial Meso-NH files
! and also the generic names for the output files for model n.
!
!!
!!** IMPLICIT ARGUMENTS
!! ------------------
!! None
!!
!! REFERENCE
!! ---------
!! Book2 of documentation of Meso-NH (MODD_LUNITn)
!!
!! AUTHOR
!! ------
!! V. Ducrocq *Meteo France*
!!
!! MODIFICATIONS
!! -------------
!! Original 05/05/94
!! Modification 20/10/94 (J.Stein) add the output files
!! Modification 10/03/95 (I.Mallet) add the coupling files names
!! Modification 25/09/95 (J.Stein) add the output diachronic file
!! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O

WAUTELET Philippe
committed
! P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
!

WAUTELET Philippe
committed
USE MODD_IO, ONLY: TFILEDATA, TPTR2FILE

WAUTELET Philippe
committed
USE MODD_PARAMETERS, ONLY: JPMODELMAX, NFILENAMELGTMAX

WAUTELET Philippe
committed
INTEGER, PARAMETER :: NPCPLFILEMAX = 1000 ! Maximum allowed number of CouPLing FILEs

WAUTELET Philippe
committed
CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILE = 'INIFILE' ! Name of the input FM-file

WAUTELET Philippe
committed
TYPE(TFILEDATA),POINTER :: TINIFILE => NULL() ! input FM-file

WAUTELET Philippe
committed
CHARACTER(LEN=NFILENAMELGTMAX) :: CINIFILEPGD = '' ! Name of the PGD associated to input FM-file

WAUTELET Philippe
committed
TYPE(TFILEDATA),POINTER :: TINIFILEPGD => NULL() ! PGD associated to input FM-file
TYPE(TFILEDATA),POINTER :: TDIAFILE => NULL() ! diachronic output file
TYPE(TFILEDATA),POINTER :: TLUOUT => NULL() ! output_listing file

WAUTELET Philippe
committed
CHARACTER(LEN=NFILENAMELGTMAX), DIMENSION(:), POINTER :: CCPLFILE =>NULL() ! Names of the coupling FM-files

WAUTELET Philippe
committed
TYPE(TPTR2FILE),DIMENSION(:),POINTER :: TCPLFILE => NULL() ! Coupling files
!
END TYPE LUNIT_t
TYPE(LUNIT_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: LUNIT_MODEL
LOGICAL , DIMENSION(JPMODELMAX), SAVE :: LUNIT_FIRST_CALL = .TRUE.
CHARACTER(LEN=4),SAVE :: CMASK_SURFEX='PREP'
!

WAUTELET Philippe
committed
CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: CINIFILE=>NULL()

WAUTELET Philippe
committed
TYPE(TFILEDATA), POINTER :: TINIFILE => NULL()

WAUTELET Philippe
committed
CHARACTER(LEN=NFILENAMELGTMAX), POINTER :: CINIFILEPGD =>NULL()

WAUTELET Philippe
committed
TYPE(TFILEDATA), POINTER :: TINIFILEPGD => NULL()
TYPE(TFILEDATA), POINTER :: TDIAFILE=>NULL()

WAUTELET Philippe
committed
CHARACTER(LEN=NFILENAMELGTMAX), DIMENSION(:), POINTER :: CCPLFILE=>NULL()

WAUTELET Philippe
committed
TYPE(TPTR2FILE), DIMENSION(:), POINTER :: TCPLFILE=>NULL()
CONTAINS
SUBROUTINE LUNIT_GOTO_MODEL(KFROM, KTO)

WAUTELET Philippe
committed
USE MODD_IO, ONLY : TFILE_OUTPUTLISTING
INTEGER, INTENT(IN) :: KFROM, KTO
!

WAUTELET Philippe
committed
! Save current state for allocated arrays
LUNIT_MODEL(KFROM)%CCPLFILE => CCPLFILE
LUNIT_MODEL(KFROM)%TCPLFILE => TCPLFILE
!

WAUTELET Philippe
committed
!Do this AFTER saving current state to prevent loss of the correct allocated pointers if KFROM==KTO
ALLOCATE ( LUNIT_MODEL(KTO)%CCPLFILE(NPCPLFILEMAX) )
LUNIT_MODEL(KTO)%CCPLFILE(:) = ''
! TCPLFILE allocation is done in ini_cpl directly at the right size => commented here
! ALLOCATE (LUNIT_MODEL(KTO)%TCPLFILE(NPCPLFILEMAX))
LUNIT_FIRST_CALL(KTO) = .FALSE.
!
TFILE_OUTPUTLISTING => LUNIT_MODEL(KTO)%TLUOUT
!
! Current model is set to model KTO
CINIFILE=>LUNIT_MODEL(KTO)%CINIFILE

WAUTELET Philippe
committed
TINIFILE=>LUNIT_MODEL(KTO)%TINIFILE
CINIFILEPGD=>LUNIT_MODEL(KTO)%CINIFILEPGD

WAUTELET Philippe
committed
TINIFILEPGD=>LUNIT_MODEL(KTO)%TINIFILEPGD
TDIAFILE=>LUNIT_MODEL(KTO)%TDIAFILE
CCPLFILE=>LUNIT_MODEL(KTO)%CCPLFILE

WAUTELET Philippe
committed
TCPLFILE=>LUNIT_MODEL(KTO)%TCPLFILE
END SUBROUTINE LUNIT_GOTO_MODEL
END MODULE MODD_LUNIT_n