Skip to content
Snippets Groups Projects
Commit 14f7ef56 authored by RIETTE Sébastien's avatar RIETTE Sébastien
Browse files

Sébastien 30/11/2021 AROME->COMMON *gamma*

parent 538ca2b7
No related branches found
No related tags found
No related merge requests found
Showing
with 51 additions and 98 deletions
File moved
File moved
File moved
File moved
File moved
File moved
File moved
...@@ -50,3 +50,11 @@ phyex/micro/ice4_sedimentation_stat.F90 ...@@ -50,3 +50,11 @@ phyex/micro/ice4_sedimentation_stat.F90
phyex/micro/modi_ice4_sedimentation_split.F90 phyex/micro/modi_ice4_sedimentation_split.F90
phyex/micro/ice4_sedimentation_split.F90 phyex/micro/ice4_sedimentation_split.F90
phyex/micro/modi_ice4_sedimentation_stat.F90 phyex/micro/modi_ice4_sedimentation_stat.F90
phyex/micro/modd_blank.F90
phyex/micro/gamma.F90
phyex/micro/gamma_inc.F90
phyex/micro/general_gamma.F90
phyex/micro/modi_gamma.F90
phyex/micro/modi_gamma_inc.F90
phyex/micro/modi_general_gamma.F90
phyex/micro/moddb_intbudget.F90
! ######spl
MODULE MODD_BLANK
! #################
!
!!**** *MODD_BLANK* - Declarative module for MesoNH developpers namelist
!!
!! PURPOSE
!! -------
!!
!! Offer dummy real, integer, logical and character variables for
!! test and debugging purposes.
!!
!!** METHOD
!! ------
!!
!! Eight dummy real, integer, logical and character*80 variables are
!! defined and passed through the namelist read operations. None of the
!! MesoNH routines uses any of those variables. When a developper choses
!! to introduce temporarily a parameter to some subroutine, he has to
!! introduce a USE MODD_BLANK statement into that subroutine. Then he
!! can use any of the variables defined here and change them easily via
!! the namelist input.
!!
!! REFERENCE
!! ---------
!! None
!!
!! AUTHOR
!! ------
!! K. Suhre *Laboratoire d'Aerologie*
!!
!! MODIFICATIONS
!! -------------
!!
!! Original 25/04/96
!! updated 17/11/00 (P Jabouille) Use dummy array
!!
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
USE MODD_PARAMETERS, ONLY : JPDUMMY
!
IMPLICIT NONE
!
REAL, SAVE :: XDUMMY1, XDUMMY2, XDUMMY3, XDUMMY4, &
XDUMMY5, XDUMMY6, XDUMMY7, XDUMMY8
INTEGER, SAVE :: NDUMMY1, NDUMMY2, NDUMMY3, NDUMMY4, &
NDUMMY5, NDUMMY6, NDUMMY7, NDUMMY8
LOGICAL, SAVE :: LDUMMY1, LDUMMY2, LDUMMY3, LDUMMY4, &
LDUMMY5, LDUMMY6, LDUMMY7, LDUMMY8
CHARACTER*80, SAVE :: CDUMMY1, CDUMMY2, CDUMMY3, CDUMMY4, &
CDUMMY5, CDUMMY6, CDUMMY7, CDUMMY8
!
REAL, SAVE, DIMENSION(JPDUMMY) :: XDUMMY
INTEGER, SAVE, DIMENSION(JPDUMMY) :: NDUMMY
LOGICAL, SAVE, DIMENSION(JPDUMMY) :: LDUMMY
CHARACTER*80, SAVE, DIMENSION(JPDUMMY) :: CDUMMY
!
END MODULE MODD_BLANK
...@@ -211,7 +211,6 @@ USE MODD_CTURB ...@@ -211,7 +211,6 @@ USE MODD_CTURB
USE MODD_PARAMETERS USE MODD_PARAMETERS
USE MODD_LES USE MODD_LES
USE MODD_NSV, ONLY : NSV USE MODD_NSV, ONLY : NSV
USE MODD_BLANK
! !
USE MODI_PRANDTL USE MODI_PRANDTL
USE MODI_EMOIST USE MODI_EMOIST
......
! ######spl !MNH_LIC Copyright 1994-2014 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.
!########################
!
!--------------------------------------------------------------------------
!
!
!* 1. FUNCTION GAMMA FOR SCALAR VARIABLE
!
!
! ######################################
FUNCTION GAMMA_X0D(PX) RESULT(PGAMMA) FUNCTION GAMMA_X0D(PX) RESULT(PGAMMA)
USE PARKIND1, ONLY : JPRB USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK USE YOMHOOK , ONLY : LHOOK, DR_HOOK
...@@ -35,11 +47,9 @@ ...@@ -35,11 +47,9 @@
!! !!
!! MODIFICATIONS !! MODIFICATIONS
!! ------------- !! -------------
!! Original 7/12/95 !! Original 7/11/95
!! C. Barthe 9/11/09 add a function for 1D arguments !! C. Barthe 9/11/09 add a function for 1D arguments
!! !
!!-------------------------------------------------------------------------------
!* 0. DECLARATIONS !* 0. DECLARATIONS
! ------------ ! ------------
! !
...@@ -105,7 +115,11 @@ END FUNCTION GAMMA_X0D ...@@ -105,7 +115,11 @@ END FUNCTION GAMMA_X0D
! !
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
! !
! ######spl !
!* 1. FUNCTION GAMMA FOR 1D ARRAY
!
!
! ######################################
FUNCTION GAMMA_X1D(PX) RESULT(PGAMMA) FUNCTION GAMMA_X1D(PX) RESULT(PGAMMA)
USE PARKIND1, ONLY : JPRB USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK USE YOMHOOK , ONLY : LHOOK, DR_HOOK
...@@ -153,14 +167,14 @@ IMPLICIT NONE ...@@ -153,14 +167,14 @@ IMPLICIT NONE
! !
!* 0.1 declarations of arguments and result !* 0.1 declarations of arguments and result
! !
REAL,DIMENSION(:), INTENT(IN) :: PX REAL, DIMENSION(:), INTENT(IN) :: PX
REAL,DIMENSION(SIZE(PX)) :: PGAMMA REAL, DIMENSION(SIZE(PX)) :: PGAMMA
! !
!* 0.2 declarations of local variables !* 0.2 declarations of local variables
! !
INTEGER :: JJ ! Loop index INTEGER :: JJ ! Loop index
INTEGER :: JI ! Loop index INTEGER :: JI ! Loop index
REAL :: ZSER,ZSTP,ZTMP,ZX,ZY,ZCOEF(6) REAL :: ZSER, ZSTP, ZTMP, ZX, ZY, ZCOEF(6)
REAL :: ZPI REAL :: ZPI
! !
REAL(KIND=JPRB) :: ZHOOK_HANDLE REAL(KIND=JPRB) :: ZHOOK_HANDLE
......
! ######spl !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
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
FUNCTION GAMMA_INC(PA,PX) RESULT(PGAMMA_INC) FUNCTION GAMMA_INC(PA,PX) RESULT(PGAMMA_INC)
USE PARKIND1, ONLY : JPRB USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK USE YOMHOOK , ONLY : LHOOK, DR_HOOK
...@@ -42,10 +45,14 @@ ...@@ -42,10 +45,14 @@
!! MODIFICATIONS !! MODIFICATIONS
!! ------------- !! -------------
!! Original 7/12/95 !! Original 7/12/95
! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
! !
!* 0. DECLARATIONS !* 0. DECLARATIONS
! ------------ ! ------------
! !
USE MODE_MSG
!
USE MODI_GAMMA USE MODI_GAMMA
! !
IMPLICIT NONE IMPLICIT NONE
...@@ -67,11 +74,8 @@ REAL :: ZAN,ZB,ZC,ZD,ZH ...@@ -67,11 +74,8 @@ REAL :: ZAN,ZB,ZC,ZD,ZH
! !
REAL(KIND=JPRB) :: ZHOOK_HANDLE REAL(KIND=JPRB) :: ZHOOK_HANDLE
IF (LHOOK) CALL DR_HOOK('GAMMA_INC',0,ZHOOK_HANDLE) IF (LHOOK) CALL DR_HOOK('GAMMA_INC',0,ZHOOK_HANDLE)
IF( (PX.LT.0.0).OR.(PA.LE.0.0) ) THEN IF(PX<0.0 .OR. PA<=0.0) THEN
PRINT *,' BAD ARGUMENTS IN GAMMA_INC' CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'GAMMA_INC', 'invalid arguments: PX<0.0 .OR. PA<=0.0')
!callabortstop
CALL ABORT
STOP
END IF END IF
! !
IF( (PX.LT.PA+1.0) ) THEN IF( (PX.LT.PA+1.0) ) THEN
...@@ -87,12 +91,9 @@ IF( (PX.LT.PA+1.0) ) THEN ...@@ -87,12 +91,9 @@ IF( (PX.LT.PA+1.0) ) THEN
IF( ABS(ZDEL).LT.ABS(ZSUM)*ZEPS ) EXIT LOOP_SERIES IF( ABS(ZDEL).LT.ABS(ZSUM)*ZEPS ) EXIT LOOP_SERIES
JN = JN + 1 JN = JN + 1
IF( JN.GT.ITMAX ) THEN IF( JN.GT.ITMAX ) THEN
PRINT *,' ARGUMENT "PA" IS TOO LARGE OR "ITMAX" IS TOO SMALL, THE & CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'GAMMA_INC', 'PA argument is too large or ITMAX is too small,'// &
& INCOMPLETE GAMMA_INC FUNCTION CANNOT BE EVALUATED CORRECTLY & ' the incomplete GAMMA_INC function cannot be evaluated correctly'// &
& BY THE SERIES METHOD' ' by the series method')
!callabortstop
CALL ABORT
STOP
END IF END IF
END DO LOOP_SERIES END DO LOOP_SERIES
PGAMMA_INC = ZSUM * EXP( -PX+PA*ALOG(PX)-ALOG(GAMMA(PA)) ) PGAMMA_INC = ZSUM * EXP( -PX+PA*ALOG(PX)-ALOG(GAMMA(PA)) )
...@@ -106,7 +107,7 @@ CALL ABORT ...@@ -106,7 +107,7 @@ CALL ABORT
JN = 1 JN = 1
! !
LOOP_FRACTION: DO LOOP_FRACTION: DO
ZAN = -FLOAT(JN)*(FLOAT(JN)-PA) ZAN = -REAL(JN)*(REAL(JN)-PA)
ZB = ZB + 2.0 ZB = ZB + 2.0
ZD = ZAN*ZD + ZB ZD = ZAN*ZD + ZB
IF( ABS(ZD).LT.TINY(PX) ) THEN IF( ABS(ZD).LT.TINY(PX) ) THEN
...@@ -122,12 +123,9 @@ CALL ABORT ...@@ -122,12 +123,9 @@ CALL ABORT
IF( ABS(ZDEL-1.0).LT.ZEPS ) EXIT LOOP_FRACTION IF( ABS(ZDEL-1.0).LT.ZEPS ) EXIT LOOP_FRACTION
JN = JN + 1 JN = JN + 1
IF( JN.GT.ITMAX ) THEN IF( JN.GT.ITMAX ) THEN
PRINT *,' ARGUMENT "PA" IS TOO LARGE OR "ITMAX" IS TOO SMALL, THE & CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'GAMMA_INC', 'PA argument is too large or ITMAX is too small,'// &
& INCOMPLETE GAMMA_INC FUNCTION CANNOT BE EVALUATED CORRECTLY & ' the incomplete GAMMA_INC function cannot be evaluated correctly'// &
& BY THE CONTINUOUS FRACTION METHOD' ' by the continuous fraction method')
!callabortstop
CALL ABORT
STOP
END IF END IF
END DO LOOP_FRACTION END DO LOOP_FRACTION
PGAMMA_INC = 1.0 - ZH*EXP( -PX+PA*ALOG(PX)-ALOG(GAMMA(PA)) ) PGAMMA_INC = 1.0 - ZH*EXP( -PX+PA*ALOG(PX)-ALOG(GAMMA(PA)) )
......
! ######spl !MNH_LIC Copyright 1994-2014 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.
FUNCTION GENERAL_GAMMA(PALPHA,PNU,PLBDA,PX) RESULT(PGENERAL_GAMMA) FUNCTION GENERAL_GAMMA(PALPHA,PNU,PLBDA,PX) RESULT(PGENERAL_GAMMA)
USE PARKIND1, ONLY : JPRB USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK USE YOMHOOK , ONLY : LHOOK, DR_HOOK
......
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