Skip to content
Snippets Groups Projects
Commit 61f2dbd4 authored by Juan Escobar's avatar Juan Escobar
Browse files

READ_CHEM_DATA_NETCDF_CASE introduced

parent c4eab2c0
No related branches found
No related tags found
No related merge requests found
......@@ -370,6 +370,9 @@
!! Jun 01, 2002 (O.Nuissier) filtering of tropical cyclone
!! Aou 09, 2005 (D.Barbary) add CDADATMFILE CDADBOGFILE
!! May 2006 Remove KEPS
!! Feb 02, 2012 (C. Mari) interpolation from MOZART
!! add call to READ_CHEM_NETCDF_CASE &
!! VER_PREP_NETCDF_CASE
!! Mar 2012 Add NAM_NCOUT for netcdf output
!! July 2013 (Bosseur & Filippi) Adds Forefire
!! Mars 2014 (J.Escobar) Missing 'full' UPDATE_METRICS for arp2lfi // run
......@@ -420,6 +423,8 @@ USE MODI_MNHREAD_ZS_DUMMY_n
USE MODI_MNHWRITE_ZS_DUMMY_n
USE MODI_COMPARE_DAD
USE MODI_PREP_SURF_MNH
USE MODI_READ_CHEM_DATA_NETCDF_CASE
USE MODI_VER_PREP_NETCDF_CASE
!
USE MODD_CONF ! declaration modules
USE MODD_CONF_n
......@@ -739,6 +744,8 @@ IF(LEN_TRIM(YCHEMFILE)>0)THEN
IF (GFOUND) READ(IPRE_REAL1,NAM_AERO_CONF)
IF(YCHEMFILETYPE=='GRIBEX') &
CALL READ_ALL_DATA_GRIB_CASE('CHEM',YPRE_REAL1,YCHEMFILE,YPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
IF (YCHEMFILETYPE=='NETCDF') &
CALL READ_CHEM_DATA_NETCDF_CASE(YPRE_REAL1,YCHEMFILE,YPGDFILE,ZHORI,NVERB,LDUMMY_REAL)
END IF
!
CALL CLOSE_ll(YPRE_REAL1, IOSTAT=IRESP)
......@@ -875,6 +882,9 @@ END IF
IF (LEN_TRIM(YCHEMFILE)>0 .AND. YCHEMFILETYPE=='GRIBEX') THEN
CALL VER_PREP_GRIBEX_CASE('CHEM',ZDG)
END IF
IF (LEN_TRIM(YCHEMFILE)>0 .AND. YCHEMFILETYPE=='NETCDF') THEN
CALL VER_PREP_NETCDF_CASE(ZDG)
END IF
!
CALL SECOND_MNH(ZTIME2)
ZPREP = ZTIME2 - ZTIME1 - ZDG
......
! ################################
MODULE MODI_VER_PREP_NETCDF_CASE
! ################################
INTERFACE
SUBROUTINE VER_PREP_NETCDF_CASE(PDIAG)
!
REAL, INTENT(OUT) :: PDIAG ! diagnostics computing time
!
END SUBROUTINE VER_PREP_NETCDF_CASE
END INTERFACE
END MODULE MODI_VER_PREP_NETCDF_CASE
! ####################################################################
SUBROUTINE VER_PREP_NETCDF_CASE(PDIAG)
! ####################################################################
!
!!**** *VER_PREP_NETCDF_CASE* - monitors the preparation to orographic change
!!
!! PURPOSE
!! -------
!! This routine monitors the preparation of variables to future change
!! of orography, according to the type of input file.
!!
!!** METHOD
!! ------
!!
!!
!! EXTERNAL
!! --------
!!
!! function MZF
!! function FMLOOK :to retrieve a logical unit number associated with a file
!! routine VER_INTERP_TO_MIXED_GRID
!! routine CHANGE_GRIBEX_VAR
!!
!! module MODI_SHUMAN
!! module MODI_VER_INTERP_TO_MIXED_GRID
!! module MODI_CHANGE_GRIBEX_VAR
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!! Module MODD_CONF1 : contains configuration variables for all models.
!! NVERB : verbosity level for output-listing
!! Module MODD_LUNIT : contains logical unit names for all models
!! CLUOUT0 : name of output-listing
!! Module MODD_CST : contains physical constants
!! XRD : gas constant for dry air
!! XRV : gas constant for vapor
!! XP00: reference pressure
!! XCPD: specific heat for dry air
!! XG : gravity constant
!! XRADIUS : earth radius
!!
!! REFERENCE
!! ---------
!!
!! Book 2
!!
!! AUTHOR
!! ------
!!
!! V.Masson Meteo-France
!!
!! MODIFICATIONS
!! -------------
!! Original 14/12/94
!! Jan, 31 1996 (V. Masson) duplication of the routine
!! to accept different input fields
!! May, 25 1996 (V. Masson) take into account the upper level
!! Aug, 20 1996 (V. Masson) correction on theta
!! Oct, 20 1996 (V. Masson) add deallocations
!! Dec, 06 1996 (V. Masson) add air temperature at ground
!! Dec, 12 1996 (V. Masson) add vertical wind velocity
!! May, 07 1997 (V. Masson) add null tke
!! Jun, 10 1997 (V. Masson) add null difference between
!! pressure and hydrostatic pressure
!! Jul, 11 1997 (V. Masson) add null scalar variables
!! Nov, 22 2000 (I. Mallet) add scalar variables
!! Nov, 22 2000 (P. Jabouille) change routine name
!! May 2006 Remove EPS
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
USE MODE_THERMO
USE MODE_FM
!
USE MODI_SHUMAN ! interface modules
USE MODI_CHANGE_GRIBEX_VAR
USE MODI_VER_INTERP_TO_MIXED_GRID
USE MODI_RMS_AT_Z
USE MODI_COMPUTE_EXNER_FROM_TOP
USE MODI_WATER_SUM
!
USE MODD_CONF ! declaration modules
USE MODD_CONF_n
USE MODD_LUNIT
USE MODD_CST
USE MODD_PREP_REAL
USE MODD_PARAMETERS, ONLY : JPVEXT, XUNDEF
!
IMPLICIT NONE
!
!* 0.1 Declaration of arguments
! ------------------------
!
REAL, INTENT(OUT) :: PDIAG ! diagnostics computing time
!
!* 0.2 Declaration of local variables
! ------------------------------
INTEGER :: IRESP, ILUOUT0
INTEGER :: IIU,IJU,ILU
REAL :: ZTIME1, ZTIME2
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZTH_LS ! potential temperature
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZTH_MX ! potential temperature
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZPMASS_MX ! pressure
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZHEXNFLUX_MX ! pressure function
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZHEXNMASS_MX ! pressure function
!
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZZFLUX_LS
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZZMASS_LS
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZPMHP_LS
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZTHV_LS
REAL,DIMENSION(:,:,:,:),ALLOCATABLE:: ZR_LS
REAL,DIMENSION(:,:,:,:),ALLOCATABLE:: ZSV_LS
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZHU_LS
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZU_LS
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZV_LS
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZW_LS
REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZTKE_LS
INTEGER :: JRR ! loop counter
INTEGER :: JSV ! loop counter
INTEGER :: JK ! loop counter
!-------------------------------------------------------------------------------
!
CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP)
!
!* 1. CHANGING OF VARIABLES
! ---------------------
!
IIU=SIZE(XT_SV_LS,1)
IJU=SIZE(XT_SV_LS,2)
ILU=SIZE(XT_SV_LS,3)
!
!
ALLOCATE(XPMASS_SV_LS(IIU,IJU,ILU))
ALLOCATE(XZMASS_SV_LS(IIU,IJU,ILU),XZFLUX_SV_LS(IIU,IJU,ILU))
ALLOCATE(XTHV_SV_LS(IIU,IJU,ILU),XR_SV_LS(IIU,IJU,ILU,NRR),XHU_SV_LS(IIU,IJU,ILU))
CALL CHANGE_GRIBEX_VAR(XA_SV_LS,XB_SV_LS,XP00_SV_LS,XPS_SV_LS,XZS_SV_LS, &
XT_SV_LS,XQ_SV_LS,XPMASS_SV_LS,XZFLUX_SV_LS,XZMASS_SV_LS, &
XTHV_SV_LS,XR_SV_LS,XHU_SV_LS )
!
!-------------------------------------------------------------------------------
!
!* 2. INTERPOLATION TO MIXED GRID AND DIAGNOSTIC VARIABLES
! ----------------------------------------------------
!* Add extra points below and above grids, in order to use MESONH linear
! vertical interpolation programs with all ILU physical points
!
ALLOCATE(ZZMASS_LS(IIU,IJU,ILU+2*JPVEXT))
ALLOCATE(ZSV_LS(IIU,IJU,ILU+2*JPVEXT,SIZE(XSV_LS,4)))
!
ZZMASS_LS (:,:,JPVEXT+1:JPVEXT+ILU) = XZMASS_SV_LS(:,:,:)
DO JK=1,JPVEXT
ZZMASS_LS(:,:, JK) = XZMASS_SV_LS(:,:,1) - (XZMASS_SV_LS(:,:,2) -XZMASS_SV_LS(:,:,1) )*(JPVEXT+1-JK)
ZZMASS_LS(:,:,ILU+JPVEXT+JK) = XZMASS_SV_LS(:,:,ILU) + (XZMASS_SV_LS(:,:,ILU)-XZMASS_SV_LS(:,:,ILU-1))* JK
END DO
!
!ZSV_LS = XUNDEF
ZSV_LS = -999.
!
DO JSV=1,SIZE(XSV_LS,4)
ZSV_LS (:,:,JPVEXT+1:JPVEXT+ILU,JSV) = XSV_LS (:,:,:,JSV)
END DO
!
CALL VER_INTERP_TO_MIXED_GRID('CHEM',.TRUE.,XZS_SV_LS,XZS_SV_LS,&
ZZMASS_LS,ZSV_LS )
!
DEALLOCATE(ZZMASS_LS)
DEALLOCATE(ZSV_LS)
!-------------------------------------------------------------------------------
!
!* 3. ERROR CONTROL
! -------------
!
CALL SECOND_MNH(ZTIME1)
PDIAG = ZTIME2 - ZTIME1
!
!-------------------------------------------------------------------------------
!
!* 4. DEALLOCATIONS
! -------------
!
DEALLOCATE(XA_SV_LS)
DEALLOCATE(XB_SV_LS)
DEALLOCATE(XT_SV_LS)
DEALLOCATE(XQ_SV_LS)
DEALLOCATE(XZMASS_SV_LS)
DEALLOCATE(XZFLUX_SV_LS)
DEALLOCATE(XTHV_SV_LS)
DEALLOCATE(XR_SV_LS)
DEALLOCATE(XHU_SV_LS)
DEALLOCATE(XSV_LS)
!
!
!-------------------------------------------------------------------------------
!
WRITE(ILUOUT0,*) 'Routine VER_PREP_NETCDF_CASE completed'
!
END SUBROUTINE VER_PREP_NETCDF_CASE
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment