Skip to content
Snippets Groups Projects
Commit 2bec4631 authored by Gaelle TANGUY's avatar Gaelle TANGUY
Browse files

C.Lac 15/11/2016 : Add visibility diagnostic

parent 3e4f37e7
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@
!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.
! $Source$ $Revision$ $Date$
! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/diag.f90,v $ $Revision: 1.3.2.4.2.4.2.5.2.6.2.3.2.6 $ $Date: 2015/11/26 14:55:02 $
!-----------------------------------------------------------------
! ############
PROGRAM DIAG
......@@ -76,6 +76,7 @@
!! 04/2016 (G.Delautier) replace print by write in OUTPUT LISTING
!! 06/2016 (G.Delautier) phasage surfex 8
!! 09/2016 (JP Pinty) Add LIMA
!! 10/2016 (C.LAC) add LVISI
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
......@@ -222,7 +223,7 @@ NAMELIST/NAM_DIAG/ CISO, LVAR_RS, LVAR_LS, &
XGRID,NBELEV,XELEV,NBRAD,LQUAD,LFALL,LWBSCS,LWREFL,&
XREFLMIN,XREFLVDOPMIN,LSNRT,XSNRMIN,&
LLIDAR,CVIEW_LIDAR,XALT_LIDAR,XWVL_LIDAR,&
LISOPR,XISOPR,LISOTH,XISOTH, LHU_FLX, LLIMA_DIAG
LISOPR,XISOPR,LISOTH,XISOTH, LHU_FLX,LVISI, LLIMA_DIAG
!
NAMELIST/NAM_DIAG_FILE/ YINIFILE,YINIFILEPGD, YSUFFIX
NAMELIST/NAM_STO_FILE/ CFILES, NSTART_SUPP
......@@ -285,6 +286,7 @@ NCAPE=-1
LBV_FR=.FALSE.
LRADAR=.FALSE.
LBLTOP=.FALSE.
LVISI=.FALSE.
LVAR_FRC=.FALSE.
LCHEMDIAG=.FALSE.
CAERDIAG='CLIM'
......
......@@ -72,7 +72,7 @@ END MODULE MODI_INI_POSPROFILER_n
!! MODIFICATIONS
!! -------------
!! P. Tulet 15/01/2002
!!
!! C.Lac 10/2016 Add visibility diagnostic
!! --------------------------------------------------------------------------
!
!* 0. DECLARATIONS
......@@ -182,6 +182,8 @@ ALLOCATE(TPROFILER%ZZ (ISTORE,IKU,NUMBPROFILER))
ALLOCATE(TPROFILER%TH (ISTORE,IKU,NUMBPROFILER))
ALLOCATE(TPROFILER%THV (ISTORE,IKU,NUMBPROFILER))
ALLOCATE(TPROFILER%RHOD (ISTORE,IKU,NUMBPROFILER))
ALLOCATE(TPROFILER%VISI (ISTORE,IKU,NUMBPROFILER))
ALLOCATE(TPROFILER%VISIKUN(ISTORE,IKU,NUMBPROFILER))
ALLOCATE(TPROFILER%RARE (ISTORE,IKU,NUMBPROFILER))
ALLOCATE(TPROFILER%R (ISTORE,IKU,NUMBPROFILER,KRR))
ALLOCATE(TPROFILER%SV (ISTORE,IKU,NUMBPROFILER,KSV))
......@@ -223,6 +225,8 @@ TPROFILER%ZZ = XUNDEF
TPROFILER%TH = XUNDEF
TPROFILER%THV = XUNDEF
TPROFILER%RHOD = XUNDEF
TPROFILER%VISI = XUNDEF
TPROFILER%VISIKUN = XUNDEF
TPROFILER%RARE = XUNDEF
TPROFILER%IWV = XUNDEF
TPROFILER%ZTD = XUNDEF
......
......@@ -5,7 +5,7 @@
!-----------------------------------------------------------------
!--------------- special set of characters for RCS information
!-----------------------------------------------------------------
! $Source$ $Revision$
! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/modd_diag_flag.f90,v $ $Revision: 1.2.4.1.2.2.10.2.2.1 $
! masdev4_8 modd 2008/06/30 15:13:13
!-----------------------------------------------------------------
! #####################
......@@ -37,6 +37,7 @@
!! J.-P. Chaboureau 15/04/03 add LRAD_SUBG_COND
!! L. Leriche 21/04/06 add aqueous phase chemistry LCHAQDIAG
!! D.Ricard 2015 : add LMOIST_ES
!! C.Lac 10/2016 Add visibility diagnostic
!!
!-------------------------------------------------------------------------------
!
......@@ -91,6 +92,7 @@ INTEGER :: NCAPE ! CAPE, DCAPE, CIN, CAPEMAX, CINMAX
LOGICAL :: LBV_FR
LOGICAL :: LRADAR
LOGICAL :: LBLTOP
LOGICAL :: LVISI
LOGICAL :: LTRAJ ! to compute trajectories
LOGICAL :: LCHEMDIAG = .FALSE. ! flag for chemistry
CHARACTER (LEN=4) :: CAERDIAG ! aerosols optical thickness type
......
......@@ -5,7 +5,7 @@
!-----------------------------------------------------------------
!--------------- special set of characters for RCS information
!-----------------------------------------------------------------
! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/modd_type_profiler.f90,v $ $Revision: 1.2.4.1.2.1.10.2.2.2 $
! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/modd_type_profiler.f90,v $ $Revision: 1.2.4.1.2.1.10.2.2.1 $
! MASDEV4_7 modd 2006/06/27 12:27:06
!-----------------------------------------------------------------
! ############################
......@@ -36,6 +36,7 @@ IMPLICIT NONE
!! MODIFICATIONS
!! -------------
!! Original 15/01/02
!! C.Lac 10/2016 Add visibility diagnostic
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
......@@ -77,6 +78,8 @@ REAL, DIMENSION(:,:,:), POINTER :: ZZ=>NULL() ! altitude(n)
REAL, DIMENSION(:,:,:), POINTER :: TKE=>NULL() ! tke(n)
REAL, DIMENSION(:,:,:), POINTER :: TH=>NULL() ! th(n)
REAL, DIMENSION(:,:,:), POINTER :: THV=>NULL() ! thv(n)
REAL, DIMENSION(:,:,:), POINTER :: VISI=>NULL() ! VISI(n)
REAL, DIMENSION(:,:,:), POINTER :: VISIKUN=>NULL() ! VISI KUNKEL(n)
REAL, DIMENSION(:,:,:), POINTER :: RARE=>NULL() ! radar reflectivity (n)
REAL, DIMENSION(:,:,:), POINTER :: RHOD=>NULL() ! density of dry air/moist air
REAL, DIMENSION(:,:,:,:), POINTER :: R=>NULL() ! r*(n)
......@@ -84,7 +87,7 @@ REAL, DIMENSION(:,:,:,:), POINTER :: SV=>NULL() ! Sv*(n)
REAL, DIMENSION(:,:,:,:), POINTER :: AER=>NULL() ! AER*(n) aerosol extinction
REAL, DIMENSION(:,:), POINTER :: DATIME=>NULL() ! record for diachro
!
REAL, DIMENSION(:,:), POINTER :: T2M=>NULL() ! 2 m air temperature (°C)
REAL, DIMENSION(:,:), POINTER :: T2M=>NULL() ! 2 m air temperature (°C)
REAL, DIMENSION(:,:), POINTER :: Q2M=>NULL() ! 2 m humidity (kg/kg)
REAL, DIMENSION(:,:), POINTER :: HU2M=>NULL() ! 2 m relative humidity (%)
REAL, DIMENSION(:,:), POINTER :: ZON10M=>NULL() ! 10 m zonal wind (m/s)
......
......@@ -5,7 +5,7 @@
!-----------------------------------------------------------------
!--------------- special set of characters for RCS information
!-----------------------------------------------------------------
! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/profilern.f90,v $ $Revision: 1.3.4.1.2.1.10.2.2.3 $
! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/profilern.f90,v $ $Revision: 1.3.4.1.2.1.10.2.2.4 $
! MASDEV4_7 profiler 2006/06/01 09:51:49
!-----------------------------------------------------------------
! ##########################
......@@ -18,7 +18,7 @@ INTERFACE
TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR, &
PXHAT, PYHAT, PZ,PRHODREF, &
PU, PV, PW, PTH, PR, PSV, PTKE, &
PTS,PP, PAER, PCLDFR, PCIT)
PTS,PP, PAER, PCLDFR, PCIT)
!
USE MODD_TYPE_DATE
!
......@@ -58,7 +58,7 @@ END MODULE MODI_PROFILER_n
TPDTEXP, TPDTMOD, TPDTSEG, TPDTCUR, &
PXHAT, PYHAT, PZ,PRHODREF, &
PU, PV, PW, PTH, PR, PSV, PTKE, &
PTS,PP, PAER, PCLDFR, PCIT)
PTS, PP, PAER, PCLDFR, PCIT)
! ########################################################
!
!
......@@ -93,6 +93,7 @@ END MODULE MODI_PROFILER_n
!! Original 15/02/2002
!! March 2013 : C.Lac : Corrections for 1D + new fields (RARE,THV,DD,FF)
!! April 2014 : C.Lac : Call RADAR only if ICE3
!! C.Lac 10/2016 Add visibility diagnostic
!!
!!
!! --------------------------------------------------------------------------
......@@ -109,6 +110,7 @@ USE MODD_CST
USE MODD_GRID
USE MODD_DIAG_IN_RUN
USE MODD_CONF
USE MODD_NSV
!
USE MODE_ll
!
......@@ -206,9 +208,6 @@ REAL :: ZZHD_PROFILER ! ZHD at station location
REAL :: ZZWD_PROFILER ! ZWD at station location
REAL :: ZZHDR ! ZHD correction at station location
REAL :: ZZWDR ! ZWD correction at station location
!-------- Calculation parameters --------
REAL :: ZK1,ZK2,ZK3 ! k1, k2 and K3 atmospheric refractivity constants
REAL :: ZRDSRV ! XRD/XRV
!
INTEGER :: IINFO_ll ! return code
INTEGER :: ILUOUT ! logical unit
......@@ -218,6 +217,9 @@ INTEGER :: I ! loop for stations
REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2)) :: ZZTD,ZZHD,ZZWD
REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3)) :: ZTEMP,ZRARE,ZTHV,ZTEMPV
REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3)) :: ZWORK32,ZWORK33,ZWORK34,ZCIT
REAL,DIMENSION(SIZE(PTH,1),SIZE(PTH,2),SIZE(PTH,3)) :: ZVISI,ZVISIKUN
REAL :: ZK1,ZK2,ZK3 ! k1, k2 and K3 atmospheric refractivity constants
REAL :: ZRDSRV ! XRD/XRV
!----------------------------------------------------------------------------
!
!* 2. PRELIMINARIES
......@@ -404,6 +406,19 @@ ZTHV(:,:,:) = PTH(:,:,:) / (1.+WATER_SUM(PR(:,:,:,:)))*(1.+PR(:,:,:,1)/ZRDSRV)
! virtual temperature
ZTEMPV(:,:,:)=ZTHV(:,:,:)*(PP(:,:,:)/ XP00) **(XRD/XCPD)
CALL GPS_ZENITH_GRID(PR(:,:,:,1),ZTEMP,PP,ZZTD,ZZHD,ZZWD)
! Kunkel formulation
IF (SIZE(PR,2) >= 2) THEN
WHERE ( PR(:,:,:,2) /=0 )
ZVISIKUN(:,:,:) =0.027/(PR(:,:,:,2)*PRHODREF(:,:,:))**0.88
END WHERE
END IF
! Gultepe formulation
IF ((SIZE(PR,2) >= 2) .AND. NSV_C2R2END /= 0 ) THEN
WHERE ( (PR(:,:,:,2) /=0. ) .AND. (PSV(:,:,:,NSV_C2R2BEG+1) /=0. ) )
ZVISI(:,:,:) =1.002/(PR(:,:,:,2)*PRHODREF(:,:,:)*PSV(:,:,:,NSV_C2R2BEG+1))**0.6473
END WHERE
END IF
!
IF (GSTORE) THEN
IF (TPROFILER%TIME(IN) /= XUNDEF) THEN
DO I=1,NUMBPROFILER
......@@ -493,6 +508,8 @@ IF (GSTORE) THEN
TPROFILER%W (IN,:,I) = PROFILER_INTERP(PW)
TPROFILER%TH (IN,:,I) = PROFILER_INTERP(PTH)
TPROFILER%THV (IN,:,I) = PROFILER_INTERP(ZTHV)
TPROFILER%VISI(IN,:,I) = PROFILER_INTERP(ZVISI)
TPROFILER%VISIKUN(IN,:,I) = PROFILER_INTERP(ZVISIKUN)
TPROFILER%ZZ (IN,:,I) = ZZ(:)
TPROFILER%RHOD(IN,:,I) = ZRHOD(:)
IF (SIZE(PR,4) == 6) TPROFILER%RARE(IN,:,I) = PROFILER_INTERP(ZRARE)
......@@ -574,6 +591,8 @@ IF (GSTORE) THEN
CALL DISTRIBUTE_PROFILER(TPROFILER%ZZ (IN,JK,I))
CALL DISTRIBUTE_PROFILER(TPROFILER%TH (IN,JK,I))
CALL DISTRIBUTE_PROFILER(TPROFILER%THV (IN,JK,I))
CALL DISTRIBUTE_PROFILER(TPROFILER%VISI(IN,JK,I))
CALL DISTRIBUTE_PROFILER(TPROFILER%VISIKUN(IN,JK,I))
CALL DISTRIBUTE_PROFILER(TPROFILER%RHOD(IN,JK,I))
CALL DISTRIBUTE_PROFILER(TPROFILER%RARE(IN,JK,I))
CALL DISTRIBUTE_PROFILER(TPROFILER%IWV(IN,I))
......
......@@ -60,6 +60,7 @@ END MODULE MODI_WRITE_PROFILER_n
!! -------------
!! Original 15/02/2002
!! 2016 : G.DELAUTIER : LIMA
!! Oct, 2016 (C.Lac) Add visibility diagnostics for fog
!!
!! --------------------------------------------------------------------------
!
......@@ -153,7 +154,7 @@ IF (TPROFILER%X(II)==XUNDEF) RETURN
IF (TPROFILER%Y(II)==XUNDEF) RETURN
IKU = SIZE(TPROFILER%W,2) !nbre de niveaux sur la verticale SIZE(TPROFILER%W,2)
!
IPROC = 22 + SIZE(TPROFILER%R,4) + SIZE(TPROFILER%SV,4)
IPROC = 24 + SIZE(TPROFILER%R,4) + SIZE(TPROFILER%SV,4)
IF (LDIAG_IN_RUN) IPROC = IPROC + 13
IF (LORILAM) IPROC = IPROC + JPMODE*3
IF (LDUST) IPROC = IPROC + NMODE_DST*3
......@@ -190,6 +191,18 @@ YCOMMENT (JPROC) = 'Virtual Potential temperature'
ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%THV(:,IK,II)
!
JPROC = JPROC + 1
YTITLE (JPROC) = 'VISI'
YUNIT (JPROC) = 'km'
YCOMMENT (JPROC) = 'Visibility'
ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%VISI(:,IK,II)
!
JPROC = JPROC + 1
YTITLE (JPROC) = 'VISIKUN'
YUNIT (JPROC) = 'km'
YCOMMENT (JPROC) = 'Visibility Kunkel'
ZWORK6 (1,1,IK,:,1,JPROC) = TPROFILER%VISIKUN(:,IK,II)
!
JPROC = JPROC + 1
YTITLE (JPROC) = 'RARE'
YUNIT (JPROC) = 'dBz'
YCOMMENT (JPROC) = 'Radar reflectivity'
......
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