Newer
Older

WAUTELET Philippe
committed
!MNH_LIC Copyright 1995-2019 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.
!-----------------------------------------------------------------
!! ##############################
SUBROUTINE CH_INIT_DIAGNOSTICS
!! ##############################
!!
!!**** *CH_INIT_DIAGNOSTICS*
!!
!! PURPOSE
!! -------
!! prepare diagnostics
!!
!! METHOD
!! ------
!! the diagnostics file CDIAGFILE (default: "BOX.DIAG") will be opened
!! and the headder will be written, containing general information
!! on the saved variables, actually the following variables will be saved:
!! CONC, reaction rates, PROD, LOSS, TERMS;
!! these variables are calculated by CH_PRODLOSS, CH_TERMS, and CH_GET_RATES
!!
!! REFERENCE
!! ---------
!!
!! AUTHOR
!! ------
!! K. Suhre
!!
!! MODIFICATIONS
!! -------------
!! Original 14/05/95
!! 27/07/96 (K. Suhre) restructured
!! 01/12/03 (Gazen) change Chemical scheme interface

WAUTELET Philippe
committed
!! Philippe Wautelet: 10/01/2019: use newunit argument to open files
!!
!! EXTERNAL
!! --------
!! none
!!
!! IMPLICIT ARGUMENTS
!! ------------------
USE MODD_CH_MODEL0D, ONLY: CDIAGFILE, CRUNID, CDIAGFORMAT, &
NDIAGIO, XTSIMUL
USE MODD_CH_M9_n, ONLY: NEQ, NREAC, NNONZEROTERMS, CNAMES, CREACS
USE MODE_MODELN_HANDLER
!!
!!
!!
!!
!------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! -----------------
IMPLICIT NONE
!
!* 0.1 declaration of arguments
! -----------------------------
!
!* 0.2 Declaration of local variables
! ----------------------------------
!

WAUTELET Philippe
committed
CHARACTER(len=8) :: YDATE ! for retrieval of date and time
CHARACTER(len=10) :: YTIME ! dito
!
INTEGER :: JI
!INTEGER, DIMENSION(2, NNONZEROTERMS) :: IINDEX ! indices of non-zero terms
INTEGER, DIMENSION(:,:), ALLOCATABLE :: IINDEX ! indices of non-zero terms
INTEGER :: IMI ! model index
!
IMI = GET_CURRENT_MODEL_INDEX()
! Allocate IINDEX
ALLOCATE(IINDEX(2,NNONZEROTERMS))
!
!* EXECUTABLE STATEMENTS
! ---------------------
!
! open the file

WAUTELET Philippe
committed
OPEN(NEWUNIT = NDIAGIO, &
FILE = CDIAGFILE, &
FORM = "FORMATTED", &
STATUS = "UNKNOWN" )
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
PRINT *, "CH_INIT_DIAGNOSTICS: opening unit ", NDIAGIO, " for file ", CDIAGFILE
!
! write the headder
CALL DATE_AND_TIME(YDATE, YTIME)
WRITE(NDIAGIO,'(4A)')'MODEL0D DIAGNOSTICS VERSION 1.1 AT ',YDATE,":",YTIME
WRITE(NDIAGIO,'(A)') CRUNID
!
! number of variables and their names
WRITE(NDIAGIO,'(4I10)') 1+NEQ+NREAC+2*NEQ+NNONZEROTERMS, &
NEQ, NREAC, NNONZEROTERMS
!
! diagnostics time
WRITE(NDIAGIO, '(A)') "XTSIMUL"
!
! the concentrations
DO JI = 1, NEQ
WRITE(NDIAGIO, '(A)') CNAMES(JI)
ENDDO
!
! the reaction rates
DO JI = 1, NREAC
WRITE(NDIAGIO, '(A)') CREACS(JI)
ENDDO
!
! the production terms
DO JI = 1, NEQ
WRITE(NDIAGIO, '(A)') CNAMES(JI) // "-PROD"
ENDDO
!
! the destruction terms terms
DO JI = 1, NEQ
WRITE(NDIAGIO, '(A)') CNAMES(JI) // "-LOSS"
ENDDO
!
! get the indices of the explicit contributions
! (only non-zero terms will be stored)
CALL CH_NONZEROTERMS(IMI,IINDEX, NNONZEROTERMS)
DO JI = 1, NNONZEROTERMS
WRITE(NDIAGIO, '(A)') CNAMES(IINDEX(1,JI)) // "-" // CREACS(IINDEX(2,JI))
ENDDO
DO JI = 1, NNONZEROTERMS
WRITE(NDIAGIO, '(2I5)') IINDEX(1,JI), IINDEX(2,JI)
ENDDO
!
! write format of following data
WRITE(NDIAGIO,'(A)') CDIAGFORMAT
!
DEALLOCATE(IINDEX)
!
END SUBROUTINE CH_INIT_DIAGNOSTICS