From 1fd0afab4235b6453c68dfb8b5c92f232d24353b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Riette?= <sebastien.riette@meteo.fr> Date: Mon, 17 Apr 2023 10:37:20 +0200 Subject: [PATCH] S. Riette 17 Apr 2023: minor bugfixes - remove old file mesonh/micro/ini_rain_ice.f90 which prevented mesonh compilation on belenos - forgottent modification for LOCND2 case in arome namelists - use of 'set -o pipefail' in check_commit scripts - treatment of broken links in check_commit_mesonh --- src/mesonh/micro/ini_rain_ice.f90 | 1514 ----------------- tools/check_commit_ial.sh | 2 + tools/check_commit_mesonh.sh | 125 +- tools/check_commit_testprogs.sh | 1 + .../conf_tests/small_3D_alt9/aro48t3_nam1.sh | 2 +- .../conf_tests/small_3D_alt9/aro48t3_nam2.sh | 2 +- .../conf_tests/small_3D_alt9/aro48t3_nam3.sh | 2 +- .../conf_tests/small_3D_alt9/aro48t3_nam4.sh | 2 +- .../conf_tests/small_3D_alt9/aro48t3_nam5.sh | 2 +- .../conf_tests/small_3D_alt9/aro48t3_nam6.sh | 2 +- .../conf_tests/small_3D_alt9/aro48t3_nam7.sh | 2 +- .../conf_tests/small_3D_alt9/aro48t3_nam8.sh | 2 +- 12 files changed, 77 insertions(+), 1581 deletions(-) delete mode 100644 src/mesonh/micro/ini_rain_ice.f90 diff --git a/src/mesonh/micro/ini_rain_ice.f90 b/src/mesonh/micro/ini_rain_ice.f90 deleted file mode 100644 index 1118b9aaf..000000000 --- a/src/mesonh/micro/ini_rain_ice.f90 +++ /dev/null @@ -1,1514 +0,0 @@ -!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. -!----------------------------------------------------------------- -! ######spl - SUBROUTINE INI_RAIN_ICE ( KLUOUT, PTSTEP, PDZMIN, KSPLITR, HCLOUD ) -! ########################################################### -! -!!**** *INI_RAIN_ICE * - initialize the constants necessary for the warm and -!! cold microphysical schemes. -!! -!! PURPOSE -!! ------- -!! The purpose of this routine is to initialize the constants used to -!! resolve the mixed phase microphysical scheme. The collection kernels of -!! the precipitating particles are recomputed if necessary if some parameters -!! defining the ice categories have been modified. The number of small -!! time steps leading to stable scheme for the rain, ice, snow and ggraupeln -!! sedimentation is also computed (time-splitting technique). -!! -!!** METHOD -!! ------ -!! The constants are initialized to their numerical values and the number -!! of small time step is computed by dividing the 2* Deltat time interval of -!! the Leap-frog scheme so that the stability criterion for the rain -!! sedimentation is fulfilled for a Raindrop maximal fall velocity equal -!! VTRMAX. The parameters defining the collection kernels are read and are -!! checked against the new ones. If any change occurs, these kernels are -!! recomputed and their numerical values are written in the output listing. -!! -!! EXTERNAL -!! -------- -!! GAMMA : gamma function -!! -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! Module MODD_CST -!! XPI ! -!! XP00 ! Reference pressure -!! XRD ! Gaz constant for dry air -!! XRHOLW ! Liquid water density -!! Module MODD_REF -!! XTHVREFZ ! Reference virtual pot.temp. without orography -!! Module MODD_PARAMETERS -!! JPVEXT ! -!! Module MODD_RAIN_ICE_DESCR -!! Module MODD_RAIN_ICE_PARAM -!! -!! REFERENCE -!! --------- -!! Book2 of documentation ( routine INI_RAIN_ICE ) -!! -!! AUTHOR -!! ------ -!! J.-P. Pinty * Laboratoire d'Aerologie* -!! -!! MODIFICATIONS -!! ------------- -!! Original 04/12/95 -!! J.-P. Pinty 05/04/96 Add automatic control and regeneration of the -!! collection kernels -!! J.-P. Pinty 10/05/96 Correction of ZRATE and computations of RIM -!! J.-P. Pinty 24/11/97 Sedimentation of ice made for Columns and bug for XAG -!! J.-P. Lafore 23/11/98 Back to Lin et al. 83 formulation for RIAUTS -!! with a Critical ice content set to .5 g/Kg -!! N. Asencio 13/08/98 parallel code: PDZMIN is computed outside in ini_modeln -!! J.-P. Lafore 12/8/98 In case of nesting microphysics constants of -!! MODD_RAIN_ICE_PARAM are computed only once. -!! Only KSPLTR is computed for each model. -!! J. Stein 20/04/99 remove 2 unused local variables -!! G Molinie 21/05/99 Bug in XEXRCFRI and XRCFRI -!! J.-P. Pinty 24/06/00 Bug in RCRIMS -!! J.-P. Pinty 24/12/00 Update hail case -!! J.-P. Chaboureau & J.-P. Pinty -!! 24/03/01 Update XCRIAUTI for cirrus cases -!! J.-P. Pinty 24/11/01 Update ICE3/ICE4 options -!! S. Riette 2016-11: new ICE3/ICE4 options -!! P. Wautelet 22/01/2019 bug correction: incorrect write -! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function -! J. Wurtz 03/2022: New snow characteristics with LSNOW_T -! -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_CST -USE MODD_LUNIT -USE MODD_PARAMETERS -USE MODD_PARAM_ICE -USE MODD_RAIN_ICE_DESCR -USE MODD_RAIN_ICE_PARAM -USE MODD_REF -! -USE MODI_GAMMA -USE MODI_GAMMA_INC -USE MODE_RRCOLSS, ONLY: RRCOLSS -USE MODE_RZCOLX, ONLY: RZCOLX -USE MODE_RSCOLRG, ONLY: RSCOLRG -USE MODE_READ_XKER_RACCS, ONLY: READ_XKER_RACCS -USE MODE_READ_XKER_SDRYG, ONLY: READ_XKER_SDRYG -USE MODE_READ_XKER_RDRYG, ONLY: READ_XKER_RDRYG -USE MODE_READ_XKER_SWETH, ONLY: READ_XKER_SWETH -USE MODE_READ_XKER_GWETH, ONLY: READ_XKER_GWETH -USE MODE_READ_XKER_RWETH, ONLY: READ_XKER_RWETH -! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK -! -IMPLICIT NONE -! -!* 0.1 Declarations of dummy arguments : -! -! -INTEGER, INTENT(IN) :: KLUOUT ! Logical unit number for prints -INTEGER, INTENT(OUT):: KSPLITR ! Number of small time step - ! integration for rain - ! sedimendation -! -REAL, INTENT(IN) :: PTSTEP ! Effective Time step -! -REAL, INTENT(IN) :: PDZMIN ! minimun vertical mesh size -! -CHARACTER (LEN=4), INTENT(IN) :: HCLOUD ! Indicator of the cloud scheme -! -! -! -!* 0.2 Declarations of local variables : -! -INTEGER :: IKB ! Coordinates of the first physical - ! points along z -INTEGER :: J1,J2 ! Internal loop indexes -REAL :: ZT ! Work variable -REAL :: ZVTRMAX ! Raindrop maximal fall velocity -REAL :: ZRHO00 ! Surface reference air density -REAL :: ZE, ZRV ! Work array for ZRHO00 computation -REAL :: ZRATE ! Geometrical growth of Lbda in the tabulated - ! functions and kernels -REAL :: ZBOUND ! XDCSLIM*Lbda_s: upper bound for the partial - ! integration of the riming rate of the aggregates -REAL :: ZEGS, ZEGR, ZEHS, & ! Bulk collection efficiencies - & ZEHG, ZEHR -! -INTEGER :: IND ! Number of interval to integrate the kernels -REAL :: ZESR ! Mean efficiency of rain-aggregate collection -REAL :: ZFDINFTY ! Factor used to define the "infinite" diameter -! -! -! -LOGICAL :: GFLAG ! Logical flag for printing the constatnts on the output - ! listing -REAL :: ZCONC_MAX ! Maximal concentration for snow -REAL :: ZGAMC,ZGAMC2 ! parameters - ! involving various moments of the generalized gamma law -REAL :: ZFACT_NUCL! Amplification factor for the minimal ice concentration -REAL :: ZXR ! Value of x_r in N_r = C_r lambda_r ** x_r -! -INTEGER :: KND -INTEGER :: KACCLBDAS,KACCLBDAR,KDRYLBDAG,KDRYLBDAS,KDRYLBDAR -INTEGER :: KWETLBDAS,KWETLBDAG,KWETLBDAR,KWETLBDAH -REAL :: PALPHAR,PALPHAS,PALPHAG,PALPHAH -REAL :: PNUR,PNUS,PNUG,PNUH -REAL :: PBR,PBS,PBG -REAL :: PCR,PCS,PCG,PCH -REAL :: PDR,PDS,PFVELOS,PDG,PDH -REAL :: PESR,PEGS,PEGR,PEHS,PEHG,PEHR -REAL :: PFDINFTY -REAL :: PACCLBDAS_MAX,PACCLBDAR_MAX,PACCLBDAS_MIN,PACCLBDAR_MIN -REAL :: PDRYLBDAG_MAX,PDRYLBDAS_MAX,PDRYLBDAG_MIN,PDRYLBDAS_MIN -REAL :: PDRYLBDAR_MAX,PDRYLBDAR_MIN -REAL :: PWETLBDAS_MAX,PWETLBDAG_MAX,PWETLBDAS_MIN,PWETLBDAG_MIN -REAL :: PWETLBDAR_MAX,PWETLBDAH_MAX,PWETLBDAR_MIN,PWETLBDAH_MIN -! -REAL(KIND=JPRB) :: ZHOOK_HANDLE -!------------------------------------------------------------------------------- -IF (LHOOK) CALL DR_HOOK('INI_RAIN_ICE',0,ZHOOK_HANDLE) -! -IF(.NOT.ASSOCIATED(XCEXVT)) CALL RAIN_ICE_DESCR_ASSOCIATE() -IF(.NOT.ASSOCIATED(XFSEDC)) CALL RAIN_ICE_PARAM_ASSOCIATE() -! -! -!* 0. FUNCTION STATEMENTS -! ------------------- -! -! -!* 0.1 p_moment of the Generalized GAMMA function -! -! -! -! 1. COMPUTE KSPLTR FOR EACH MODEL -! --------------------------------------------------------- -! -!* 1.1 Set the hailstones maximum fall velocity -! -IF (CSEDIM == 'SPLI' .AND. .NOT. LRED ) THEN - IF (HCLOUD == 'ICE4') THEN - ZVTRMAX = 40. - ELSE IF (HCLOUD == 'ICE3') THEN - ZVTRMAX = 10. - END IF -END IF -! -!* 1.2 Compute the number of small time step integration -! -KSPLITR = 1 -IF (CSEDIM == 'SPLI' .AND. .NOT. LRED ) THEN - SPLIT : DO - ZT = PTSTEP / REAL(KSPLITR) - IF ( ZT * ZVTRMAX / PDZMIN .LT. 1.) EXIT SPLIT - KSPLITR = KSPLITR + 1 - END DO SPLIT -END IF -! -IF (ASSOCIATED(XRTMIN)) THEN ! In case of nesting microphysics constants of - ! MODD_RAIN_ICE_PARAM are computed only once, - ! but if INI_RAIN_ICE has been called already - ! one must change the XRTMIN size. - CALL RAIN_ICE_DESCR_DEALLOCATE() -END IF -! -IF (HCLOUD == 'ICE4') THEN - CALL RAIN_ICE_DESCR_ALLOCATE(7) -ELSE IF (HCLOUD == 'ICE3') THEN - CALL RAIN_ICE_DESCR_ALLOCATE(6) -END IF -! -XRTMIN(1) = 1.0E-20 -XRTMIN(2) = 1.0E-20 -XRTMIN(3) = 1.0E-20 -XRTMIN(4) = 1.0E-20 -XRTMIN(5) = 1.0E-15 -XRTMIN(6) = 1.0E-15 -IF (HCLOUD == 'ICE4') XRTMIN(7) = 1.0E-15 -! -!------------------------------------------------------------------------------- -! -!* 2. CHARACTERISTICS OF THE SPECIES -! ------------------------------ -! -! -!* 2.1 Cloud droplet and Raindrop characteristics -! -XAC = (XPI/6.0)*XRHOLW -XBC = 3.0 -XCC = XRHOLW*XG/(18.0*1.7E-5) ! Stokes flow (Pruppacher p 322 for T=273K) -XDC = 2.0 -! -! -XAR = (XPI/6.0)*XRHOLW -XBR = 3.0 -XCR = 842. -XDR = 0.8 -! -!XCCR = 1.E7 ! N0_r = XCXR * lambda_r ** ZXR -XCCR = 8.E6 ! N0_r = XCXR * lambda_r ** ZXR -ZXR = -1. ! -! -XF0R = 1.00 -XF1R = 0.26 -! -XC1R = 1./2. -! -! -!* 2.2 Ice crystal characteristics -! -! -SELECT CASE (CPRISTINE_ICE) - CASE('PLAT') - XAI = 0.82 ! Plates - XBI = 2.5 ! Plates - XC_I = 800. ! Plates - XDI = 1.0 ! Plates - XC1I = 1./XPI ! Plates - CASE('COLU') - XAI = 2.14E-3 ! Columns - XBI = 1.7 ! Columns - XC_I = 2.1E5 ! Columns - XDI = 1.585 ! Columns - XC1I = 0.8 ! Columns - CASE('BURO') - XAI = 44.0 ! Bullet rosettes - XBI = 3.0 ! Bullet rosettes - XC_I = 4.3E5 ! Bullet rosettes - XDI = 1.663 ! Bullet rosettes - XC1I = 0.5 ! Bullet rosettes -END SELECT -! -! Note that XCCI=N_i (a locally predicted value) and XCXI=0.0, implicitly -! -XF0I = 1.00 -XF2I = 0.14 -! -! -!* 2.3 Snowflakes/aggregates characteristics -! -! -XAS = 0.02 -XBS = 1.9 -IF (LSNOW_T) THEN - !Cas Gamma generalisee - XCS = 11.52 - XDS = 0.39 - XFVELOS =0.097 - !Cas MP - !XCS = 13.2 - !XDS = 0.423 - !XFVELOS = 25.14 -ELSE - XCS = 5.1 - XDS = 0.27 - XFVELOS = 0. -END IF -! -IF (.NOT. LSNOW_T) THEN - XCCS = 5.0 - XCXS = 1.0 -END IF -! -XF0S = 0.86 -XF1S = 0.28 -! -XC1S = 1./XPI -! -! -!* 2.4 Graupel/Frozen drop characteristics -! -! -XAG = 19.6 ! Lump graupel case -XBG = 2.8 ! Lump graupel case -XCG = 124. ! Lump graupel case -XDG = 0.66 ! Lump graupel case -! -XCCG = 5.E5 -XCXG = -0.5 -! XCCG = 4.E4 ! Test of Ziegler (1988) -! XCXG = -1.0 ! Test of Ziegler (1988) -! -XF0G = 0.86 -XF1G = 0.28 -! -XC1G = 1./2. -! -! -!* 2.5 Hailstone characteristics -! -! -XAH = 470. -XBH = 3.0 -XCH = 207. -XDH = 0.64 -! -!XCCH = 5.E-4 -!XCXH = 2.0 -!!!!!!!!!!!! - XCCH = 4.E4 ! Test of Ziegler (1988) - XCXH = -1.0 ! Test of Ziegler (1988) -!!! XCCH = 5.E5 ! Graupel_like -!!! XCXH = -0.5 ! Graupel_like -!!!!!!!!!!!! -! -XF0H = 0.86 -XF1H = 0.28 -! -XC1H = 1./2. -! -!------------------------------------------------------------------------------- -! -!* 3. DIMENSIONAL DISTRIBUTIONS OF THE SPECIES -! ---------------------------------------- -! -! -! 3.1 Cloud droplet distribution -! -! Over land -XALPHAC = 1.0 ! Gamma law of the Cloud droplet (here volume-like distribution) -XNUC = 3.0 ! Gamma law with little dispersion -! -! -! Over sea -XALPHAC2 = 3.0 ! Gamma law of the Cloud droplet (here volume-like distribution) -XNUC2 = 1.0 ! Gamma law with little dispersion -! -!* 3.2 Raindrops distribution -! -XALPHAR = 1.0 ! Exponential law -XNUR = 1.0 ! Exponential law -! -!* 3.3 Ice crystal distribution -! -XALPHAI = 3.0 ! Gamma law for the ice crystal volume -XNUI = 3.0 ! Gamma law with little dispersion -! -IF (LSNOW_T) THEN -!Cas GAMMAGEN - XALPHAS = .214 ! Generalized gamma law - XNUS = 43.7 ! Generalized gamma law - XTRANS_MP_GAMMAS = SQRT( ( GAMMA(XNUS + 2./XALPHAS)*GAMMA(XNUS + 4./XALPHAS) ) / & - ( 8.* GAMMA(XNUS + 1./XALPHAS)*GAMMA(XNUS + 3./XALPHAS) ) ) -ELSE - XALPHAS = 1.0 ! Exponential law - XNUS = 1.0 ! Exponential law - XTRANS_MP_GAMMAS = 1. -END IF -! -XALPHAG = 1.0 ! Exponential law -XNUG = 1.0 ! Exponential law -! -XALPHAH = 1.0 ! Gamma law -XNUH = 8.0 ! Gamma law with little dispersion -! -!* 3.4 Constants for shape parameter -! -ZGAMC = MOMG(XALPHAC,XNUC,3.) -ZGAMC2 = MOMG(XALPHAC2,XNUC2,3.) -XLBC(1) = XAR*ZGAMC -XLBC(2) = XAR*ZGAMC2 -XLBEXC = 1.0/XBC -! -XLBEXR = 1.0/(-1.0-XBR) -XLBR = ( XAR*XCCR*MOMG(XALPHAR,XNUR,XBR) )**(-XLBEXR) -! -XLBEXI = 1.0/(-XBI) -XLBI = ( XAI*MOMG(XALPHAI,XNUI,XBI) )**(-XLBEXI) -! -#if defined(REPRO48) -#else -XNS = 1.0/(XAS*MOMG(XALPHAS,XNUS,XBS)) -#endif -XLBEXS = 1.0/(XCXS-XBS) -XLBS = ( XAS*XCCS*MOMG(XALPHAS,XNUS,XBS) )**(-XLBEXS) -! -XLBEXG = 1.0/(XCXG-XBG) -XLBG = ( XAG*XCCG*MOMG(XALPHAG,XNUG,XBG) )**(-XLBEXG) -! -XLBEXH = 1.0/(XCXH-XBH) -XLBH = ( XAH*XCCH*MOMG(XALPHAH,XNUH,XBH) )**(-XLBEXH) -! -!* 3.5 Minimal values allowed for the mixing ratios -! -XLBDAS_MAX = 100000.0 -! -ZCONC_MAX = 1.E6 ! Maximal concentration for falling particules set to 1 per cc -IF(XCCS>0. .AND. XCXS>0. )XLBDAS_MAX = ( ZCONC_MAX/XCCS )**(1./XCXS) -#if defined(REPRO48) -#else -IF (LSNOW_T) XLBDAS_MAX = 1.E6 -XLBDAS_MIN = 1.E-10 -#endif -! -XCONC_SEA=1E8 ! 100/cm3 -XCONC_LAND=3E8 ! 300/cm3 -XCONC_URBAN=5E8 ! 500/cm3 -! -!------------------------------------------------------------------------------- -! -!* 4. CONSTANTS FOR THE SEDIMENTATION -! ------------------------------- -! -! -!* 4.1 Exponent of the fall-speed air density correction -! -XCEXVT = 0.4 -! -IKB = 1 + JPVEXT -!ZRHO00 = XP00/(XRD*XTHVREFZ(IKB)) -!According to Foote and Du Toit (1969) and List (1958), ZRHO00 must be computed for Hu=50%, P=101325Pa and T=293.15K -ZE = (50./100.) * EXP(XALPW-XBETAW/293.15-XGAMW*LOG(293.15)) -ZRV = (XRD/XRV) * ZE / (101325.-ZE) -ZRHO00 = 101325.*(1.+ZRV)/(XRD+ZRV*XRV)/293.15 -! -!* 4.2 Constants for sedimentation -! -XFSEDC(1) = GAMMA(XNUC+(XDC+3.)/XALPHAC)/GAMMA(XNUC+3./XALPHAC)* & - (ZRHO00)**XCEXVT -XFSEDC(2) = GAMMA(XNUC2+(XDC+3.)/XALPHAC2)/GAMMA(XNUC2+3./XALPHAC2)* & - (ZRHO00)**XCEXVT -! -XEXSEDR = (XBR+XDR+1.0)/(XBR+1.0) -XFSEDR = XCR*XAR*XCCR*MOMG(XALPHAR,XNUR,XBR+XDR)* & - (XAR*XCCR*MOMG(XALPHAR,XNUR,XBR))**(-XEXSEDR)*(ZRHO00)**XCEXVT -! -XEXRSEDI = (XBI+XDI)/XBI -XEXCSEDI = 1.0-XEXRSEDI -XFSEDI = (4.*XPI*900.)**(-XEXCSEDI) * & - XC_I*XAI*MOMG(XALPHAI,XNUI,XBI+XDI) * & - ((XAI*MOMG(XALPHAI,XNUI,XBI)))**(-XEXRSEDI) * & - (ZRHO00)**XCEXVT -!When we do not use computations for columns, I think we must uncomment line just below -!XEXCSEDI = XEXCSEDI * 3. to be checked -! -! Computations made for Columns -! -XEXRSEDI = 1.9324 -XEXCSEDI =-0.9324 -XFSEDI = 3.89745E11*MOMG(XALPHAI,XNUI,3.285)* & - MOMG(XALPHAI,XNUI,1.7)**(-XEXRSEDI)*(ZRHO00)**XCEXVT -XEXCSEDI =-0.9324*3.0 -WRITE (KLUOUT,FMT=*)' PRISTINE ICE SEDIMENTATION for columns XFSEDI =',XFSEDI -! -! -#if defined(REPRO48) -XEXSEDS = (XBS+XDS-XCXS)/(XBS-XCXS) -XFSEDS = XCS*XAS*XCCS*MOMG(XALPHAS,XNUS,XBS+XDS)* & - (XAS*XCCS*MOMG(XALPHAS,XNUS,XBS))**(-XEXSEDS)*(ZRHO00)**XCEXVT -#else -IF (LRED) THEN - XEXSEDS = -XDS-XBS - XFSEDS = XCS*MOMG(XALPHAS,XNUS,XBS+XDS)/(MOMG(XALPHAS,XNUS,XBS)) & - *(ZRHO00)**XCEXVT -ELSE - XEXSEDS = (XBS+XDS-XCXS)/(XBS-XCXS) - XFSEDS = XCS*XAS*XCCS*MOMG(XALPHAS,XNUS,XBS+XDS)* & - (XAS*XCCS*MOMG(XALPHAS,XNUS,XBS))**(-XEXSEDS)*(ZRHO00)**XCEXVT -END IF -#endif -! -XEXSEDG = (XBG+XDG-XCXG)/(XBG-XCXG) -XFSEDG = XCG*XAG*XCCG*MOMG(XALPHAG,XNUG,XBG+XDG)* & - (XAG*XCCG*MOMG(XALPHAG,XNUG,XBG))**(-XEXSEDG)*(ZRHO00)**XCEXVT -! -XEXSEDH = (XBH+XDH-XCXH)/(XBH-XCXH) -XFSEDH = XCH*XAH*XCCH*MOMG(XALPHAH,XNUH,XBH+XDH)* & - (XAH*XCCH*MOMG(XALPHAH,XNUH,XBH))**(-XEXSEDH)*(ZRHO00)**XCEXVT -! -! -!------------------------------------------------------------------------------- -! -!* 5. CONSTANTS FOR THE SLOW COLD PROCESSES -! ------------------------------------- -! -! -!* 5.1 Constants for ice nucleation -! -SELECT CASE (CPRISTINE_ICE) - CASE('PLAT') - ZFACT_NUCL = 1.0 ! Plates - CASE('COLU') - ZFACT_NUCL = 25.0 ! Columns - CASE('BURO') - ZFACT_NUCL = 17.0 ! Bullet rosettes -END SELECT -! -XNU10 = 50.*ZFACT_NUCL -XALPHA1 = 4.5 -XBETA1 = 0.6 -! -XNU20 = 1000.*ZFACT_NUCL -XALPHA2 = 12.96 -XBETA2 = 0.639 -! -XMNU0 = 6.88E-13 -! -GFLAG = .TRUE. -IF (GFLAG) THEN - WRITE(UNIT=KLUOUT,FMT='(" Heterogeneous nucleation")') - WRITE(UNIT=KLUOUT,FMT='(" NU10=",E13.6," ALPHA1=",E13.6," BETA1=",E13.6)') & - XNU10,XALPHA1,XBETA1 - WRITE(UNIT=KLUOUT,FMT='(" NU20=",E13.6," ALPHA2=",E13.6," BETA2=",E13.6)') & - XNU20,XALPHA2,XBETA2 - WRITE(UNIT=KLUOUT,FMT='(" mass of embryo XMNU0=",E13.6)') XMNU0 -END IF -! -XALPHA3 = -3.075 -XBETA3 = 81.00356 -XHON = (XPI/6.)*((2.0*3.0*4.0*5.0*6.0)/(2.0*3.0))*(1.1E5)**(-3.0) ! - ! Pi/6 * (G_c(6)/G_c(3)) * (1/Lbda_c**3) - ! avec Lbda_c=1.1E5 m^-1 - ! the formula is equivalent to - ! rho_dref * r_c G(6) - ! Pi/6 * -------------- * --------- - ! rho_lw * N_c G(3)*G(3) -! -GFLAG = .TRUE. -IF (GFLAG) THEN - WRITE(UNIT=KLUOUT,FMT='(" Homogeneous nucleation")') - WRITE(UNIT=KLUOUT,FMT='(" ALPHA3=",E13.6," BETA3=",E13.6)') XALPHA3,XBETA3 - WRITE(UNIT=KLUOUT,FMT='(" constant XHON=",E13.6)') XHON -END IF -! -! -!* 5.2 Constants for vapor deposition on ice -! -XSCFAC = (0.63**(1./3.))*SQRT((ZRHO00)**XCEXVT) ! One assumes Sc=0.63 -! -X0DEPI = (4.0*XPI)*XC1I*XF0I*MOMG(XALPHAI,XNUI,1.) -X2DEPI = (4.0*XPI)*XC1I*XF2I*XC_I*MOMG(XALPHAI,XNUI,XDI+2.0) -! -#if defined(REPRO48) -X0DEPS = (4.0*XPI)*XCCS*XC1S*XF0S*MOMG(XALPHAS,XNUS,1.) -X1DEPS = (4.0*XPI)*XCCS*XC1S*XF1S*SQRT(XCS)*MOMG(XALPHAS,XNUS,0.5*XDS+1.5) -XEX0DEPS = XCXS-1.0 -XEX1DEPS = XCXS-0.5*(XDS+3.0) -XRDEPSRED = 1.0 -#else -X0DEPS = XNS*(4.0*XPI)*XC1S*XF0S*MOMG(XALPHAS,XNUS,1.) -X1DEPS = XNS*(4.0*XPI)*XC1S*XF1S*SQRT(XCS)*MOMG(XALPHAS,XNUS,0.5*XDS+1.5) -XEX0DEPS = -1.0 -XEX1DEPS = -0.5*(XDS+3.0) -#endif -! -X0DEPG = (4.0*XPI)*XCCG*XC1G*XF0G*MOMG(XALPHAG,XNUG,1.) -X1DEPG = (4.0*XPI)*XCCG*XC1G*XF1G*SQRT(XCG)*MOMG(XALPHAG,XNUG,0.5*XDG+1.5) -XEX0DEPG = XCXG-1.0 -XEX1DEPG = XCXG-0.5*(XDG+3.0) -XRDEPGRED = 1.0 -! -X0DEPH = (4.0*XPI)*XCCH*XC1H*XF0H*MOMG(XALPHAH,XNUH,1.) -X1DEPH = (4.0*XPI)*XCCH*XC1H*XF1H*SQRT(XCH)*MOMG(XALPHAH,XNUH,0.5*XDH+1.5) -XEX0DEPH = XCXH-1.0 -XEX1DEPH = XCXH-0.5*(XDH+3.0) - -GFLAG = .TRUE. -IF (GFLAG) THEN - WRITE(UNIT=KLUOUT,FMT='(" factors sublimation snow/groupel")') - WRITE(UNIT=KLUOUT,FMT='(" mod sublim snow =",E13.6)') XRDEPSRED - WRITE(UNIT=KLUOUT,FMT='(" mod sublim graupel =",E13.6)') XRDEPGRED -END IF - -! -!* 5.3 Constants for pristine ice autoconversion -! -XTIMAUTI = 1.E-3 ! Time constant at T=T_t -XTEXAUTI = 0.015 ! Temperature factor of the I+I collection efficiency -!!XCRIAUTI = 0.25E-3 ! Critical ice content for the autoconversion to occur -XCRIAUTI = 0.2E-4 ! Critical ice content for the autoconversion to occur - ! Revised value by Chaboureau et al. (2001) -XACRIAUTI=0.06 -XBCRIAUTI=-3.5 -XT0CRIAUTI=(LOG10(XCRIAUTI)-XBCRIAUTI)/0.06 - -! -GFLAG = .TRUE. -IF (GFLAG) THEN - WRITE(UNIT=KLUOUT,FMT='(" pristine ice autoconversion")') - WRITE(UNIT=KLUOUT,FMT='(" Time constant XTIMAUTI=",E13.6)') XTIMAUTI - WRITE(UNIT=KLUOUT,FMT='(" Temp. factor XTEXAUTI=",E13.6)') XTEXAUTI - WRITE(UNIT=KLUOUT,FMT='(" Crit. ice cont. XCRIAUTI=",E13.6)') XCRIAUTI - WRITE(UNIT=KLUOUT,FMT='(" A Coef. for cirrus law XACRIAUTI=",E13.6)')XACRIAUTI - WRITE(UNIT=KLUOUT,FMT='(" B Coef. for cirrus law XBCRIAUTI=",E13.6)')XBCRIAUTI - WRITE(UNIT=KLUOUT,FMT='(" Temp degC at which cirrus law starts to be used=",E13.6)') XT0CRIAUTI -END IF -! -! -!* 5.4 Constants for snow aggregation -! -XCOLIS = 0.25 ! Collection efficiency of I+S -XCOLEXIS = 0.05 ! Temperature factor of the I+S collection efficiency -#if defined(REPRO48) -XFIAGGS = (XPI/4.0)*XCOLIS*XCCS*XCS*(ZRHO00**XCEXVT)*MOMG(XALPHAS,XNUS,XDS+2.0) -XEXIAGGS = XCXS-XDS-2.0 -#else -XFIAGGS = XNS*(XPI/4.0)*XCOLIS*XCS*(ZRHO00**XCEXVT)*MOMG(XALPHAS,XNUS,XDS+2.0) -XEXIAGGS = -XDS - 2.0 ! GAMMGEN LH_EXTENDED -#endif -! -GFLAG = .TRUE. -IF (GFLAG) THEN - WRITE(UNIT=KLUOUT,FMT='(" snow aggregation")') - WRITE(UNIT=KLUOUT,FMT='(" Coll. efficiency XCOLIS=",E13.6)') XCOLIS - WRITE(UNIT=KLUOUT,FMT='(" Temp. factor XCOLEXIS=",E13.6)') XCOLEXIS -END IF -! -! -!------------------------------------------------------------------------------- -! -!* 6. CONSTANTS FOR THE SLOW WARM PROCESSES -! ------------------------------------- -! -! -!* 6.1 Constants for the cloud droplets autoconversion -! -XTIMAUTC = 1.E-3 -XCRIAUTC = 0.5E-3 -! -GFLAG = .TRUE. -IF (GFLAG) THEN - WRITE(UNIT=KLUOUT,FMT='(" cloud droplets autoconversion")') - WRITE(UNIT=KLUOUT,FMT='(" Time constant XTIMAUTC=",E13.6)') XTIMAUTC - WRITE(UNIT=KLUOUT,FMT='(" Crit. ice cont. XCRIAUTC=",E13.6)') XCRIAUTC -END IF -! -!* 6.2 Constants for the accretion of cloud droplets by raindrops -! -XFCACCR = (XPI/4.0)*XCCR*XCR*(ZRHO00**XCEXVT)*MOMG(XALPHAR,XNUR,XDR+2.0) -XEXCACCR = -XDR-3.0 -! -!* 6.3 Constants for the evaporation of the raindrops -! -X0EVAR = (4.0*XPI)*XCCR*XC1R*XF0R*MOMG(XALPHAR,XNUR,1.) -X1EVAR = (4.0*XPI)*XCCR*XC1R*XF1R*SQRT(XCR)*MOMG(XALPHAR,XNUR,0.5*XDR+1.5) -XEX0EVAR = -2.0 -XEX1EVAR = -1.0-0.5*(XDR+3.0) -! -! -!------------------------------------------------------------------------------- -! -!* 7. CONSTANTS FOR THE FAST COLD PROCESSES FOR THE AGGREGATES -! -------------------------------------------------------- -! -! -!* 7.1 Constants for the riming of the aggregates -! -XDCSLIM = 0.007 ! D_cs^lim = 7 mm as suggested by Farley et al. (1989) -XCOLCS = 1.0 -#if defined(REPRO48) -XEXCRIMSS= XCXS-XDS-2.0 -XCRIMSS = (XPI/4.0)*XCOLCS*XCCS*XCS*(ZRHO00**XCEXVT)*MOMG(XALPHAS,XNUS,XDS+2.0) -#else -XEXCRIMSS= -XDS-2.0 -XCRIMSS = XNS * (XPI/4.0)*XCOLCS*XCS*(ZRHO00**XCEXVT)*MOMG(XALPHAS,XNUS,XDS+2.0) -#endif -XEXCRIMSG= XEXCRIMSS -XCRIMSG = XCRIMSS -#if defined(REPRO48) -XSRIMCG = XCCS*XAS*MOMG(XALPHAS,XNUS,XBS) -XEXSRIMCG= XCXS-XBS -XSRIMCG2 = XCCS*XAG*MOMG(XALPHAS,XNUS,XBG) -XSRIMCG3 = XFRACM90 -XEXSRIMCG2=XCXS-XBG -#else -XSRIMCG = XNS*XAS*MOMG(XALPHAS,XNUS,XBS) -XEXSRIMCG = -XBS -XSRIMCG2 = XNS*XAG*MOMG(XALPHAS,XNUS,XBG) -XSRIMCG3 = XFRACM90 -XEXSRIMCG2=XBS-XBG -#endif -! -GFLAG = .TRUE. -IF (GFLAG) THEN - WRITE(UNIT=KLUOUT,FMT='(" riming of the aggregates")') - WRITE(UNIT=KLUOUT,FMT='(" D_cs^lim (Farley et al.) XDCSLIM=",E13.6)') XDCSLIM - WRITE(UNIT=KLUOUT,FMT='(" Coll. efficiency XCOLCS=",E13.6)') XCOLCS -END IF -! -NGAMINC = 80 -XGAMINC_BOUND_MIN = 1.0E-1 ! Minimal value of (Lbda * D_cs^lim)**alpha -XGAMINC_BOUND_MAX = 1.0E7 ! Maximal value of (Lbda * D_cs^lim)**alpha -ZRATE = EXP(LOG(XGAMINC_BOUND_MAX/XGAMINC_BOUND_MIN)/REAL(NGAMINC-1)) -! -IF( .NOT.ASSOCIATED(XGAMINC_RIM1) ) CALL RAIN_ICE_PARAM_ALLOCATE('XGAMINC_RIM1', NGAMINC) -IF( .NOT.ASSOCIATED(XGAMINC_RIM2) ) CALL RAIN_ICE_PARAM_ALLOCATE('XGAMINC_RIM2', NGAMINC) -IF( .NOT.ASSOCIATED(XGAMINC_RIM4) ) CALL RAIN_ICE_PARAM_ALLOCATE('XGAMINC_RIM4', NGAMINC) -! -DO J1=1,NGAMINC - ZBOUND = XGAMINC_BOUND_MIN*ZRATE**(J1-1) - XGAMINC_RIM1(J1) = GAMMA_INC(XNUS+(2.0+XDS)/XALPHAS,ZBOUND) - XGAMINC_RIM2(J1) = GAMMA_INC(XNUS+XBS/XALPHAS ,ZBOUND) - XGAMINC_RIM4(J1) = GAMMA_INC(XNUS+XBG/XALPHAS ,ZBOUND) -END DO -! -XRIMINTP1 = XALPHAS / LOG(ZRATE) -XRIMINTP2 = 1.0 + XRIMINTP1*LOG( XDCSLIM/(XGAMINC_BOUND_MIN)**(1.0/XALPHAS) ) -! -!* 7.2 Constants for the accretion of raindrops onto aggregates -! -#if defined(REPRO48) -XFRACCSS = ((XPI**2)/24.0)*XCCS*XCCR*XRHOLW*(ZRHO00**XCEXVT) -#else -XFRACCSS = XNS*((XPI**2)/24.0)*XCCR*XRHOLW*(ZRHO00**XCEXVT) -#endif -! -XLBRACCS1 = MOMG(XALPHAS,XNUS,2.)*MOMG(XALPHAR,XNUR,3.) -XLBRACCS2 = 2.*MOMG(XALPHAS,XNUS,1.)*MOMG(XALPHAR,XNUR,4.) -XLBRACCS3 = MOMG(XALPHAR,XNUR,5.) -! -#if defined(REPRO48) -XFSACCRG = (XPI/4.0)*XAS*XCCS*XCCR*(ZRHO00**XCEXVT) -#else -XFSACCRG = XNS*(XPI/4.0)*XAS*XCCR*(ZRHO00**XCEXVT) -#endif -! -XLBSACCR1 = MOMG(XALPHAR,XNUR,2.)*MOMG(XALPHAS,XNUS,XBS) -XLBSACCR2 = 2.*MOMG(XALPHAR,XNUR,1.)*MOMG(XALPHAS,XNUS,XBS+1.) -XLBSACCR3 = MOMG(XALPHAS,XNUS,XBS+2.) -! -!* 7.2.1 Defining the ranges for the computation of the kernels -! -! Notice: One magnitude of lambda discretized over 10 points for rain -! Notice: One magnitude of lambda discretized over 10 points for snow -! -NACCLBDAS = 40 -XACCLBDAS_MIN = 5.0E1 ! Minimal value of Lbda_s to tabulate XKER_RACCS -XACCLBDAS_MAX = 5.0E5 ! Maximal value of Lbda_s to tabulate XKER_RACCS -ZRATE = LOG(XACCLBDAS_MAX/XACCLBDAS_MIN)/REAL(NACCLBDAS-1) -XACCINTP1S = 1.0 / ZRATE -XACCINTP2S = 1.0 - LOG( XACCLBDAS_MIN ) / ZRATE -NACCLBDAR = 40 -XACCLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RACCS -XACCLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RACCS -ZRATE = LOG(XACCLBDAR_MAX/XACCLBDAR_MIN)/REAL(NACCLBDAR-1) -XACCINTP1R = 1.0 / ZRATE -XACCINTP2R = 1.0 - LOG( XACCLBDAR_MIN ) / ZRATE -! -!* 7.2.2 Computations of the tabulated normalized kernels -! -IND = 50 ! Interval number, collection efficiency and infinite diameter -ZESR = 1.0 ! factor used to integrate the dimensional distributions when -ZFDINFTY = 20.0 ! computing the kernels XKER_RACCSS, XKER_RACCS and XKER_SACCRG -! -IF( .NOT.ASSOCIATED(XKER_RACCSS) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_RACCSS', NACCLBDAS,NACCLBDAR) -IF( .NOT.ASSOCIATED(XKER_RACCS ) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_RACCS', NACCLBDAS,NACCLBDAR) -IF( .NOT.ASSOCIATED(XKER_SACCRG) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_SACCRG', NACCLBDAR,NACCLBDAS) -! -CALL READ_XKER_RACCS (KACCLBDAS,KACCLBDAR,KND, & - PALPHAS,PNUS,PALPHAR,PNUR,PESR,PBS,PBR,PCS,PDS,PFVELOS,PCR,PDR, & - PACCLBDAS_MAX,PACCLBDAR_MAX,PACCLBDAS_MIN,PACCLBDAR_MIN, & - PFDINFTY ) -IF( (KACCLBDAS/=NACCLBDAS) .OR. (KACCLBDAR/=NACCLBDAR) .OR. (KND/=IND) .OR. & - (PALPHAS/=XALPHAS) .OR. (PNUS/=XNUS) .OR. & - (PALPHAR/=XALPHAR) .OR. (PNUR/=XNUR) .OR. & - (PESR/=ZESR) .OR. (PBS/=XBS) .OR. (PBR/=XBR) .OR. & - (PCS/=XCS) .OR. (PDS/=XDS) .OR. (PFVELOS/=XFVELOS) .OR. (PCR/=XCR) .OR. (PDR/=XDR) .OR. & - (PACCLBDAS_MAX/=XACCLBDAS_MAX) .OR. (PACCLBDAR_MAX/=XACCLBDAR_MAX) .OR. & - (PACCLBDAS_MIN/=XACCLBDAS_MIN) .OR. (PACCLBDAR_MIN/=XACCLBDAR_MIN) .OR. & - (PFDINFTY/=ZFDINFTY) ) THEN - CALL RRCOLSS ( IND, XALPHAS, XNUS, XALPHAR, XNUR, & - ZESR, XBR, XCS, XDS, XFVELOS, XCR, XDR, & - XACCLBDAS_MAX, XACCLBDAR_MAX, XACCLBDAS_MIN, XACCLBDAR_MIN, & - ZFDINFTY, XKER_RACCSS, XAG, XBS, XAS ) - CALL RZCOLX ( IND, XALPHAS, XNUS, XALPHAR, XNUR, & - ZESR, XBR, XCS, XDS, XFVELOS, XCR, XDR, 0., & - XACCLBDAS_MAX, XACCLBDAR_MAX, XACCLBDAS_MIN, XACCLBDAR_MIN, & - ZFDINFTY, XKER_RACCS ) - CALL RSCOLRG ( IND, XALPHAS, XNUS, XALPHAR, XNUR, & - ZESR, XBS, XCS, XDS, XFVELOS, XCR, XDR, & - XACCLBDAS_MAX, XACCLBDAR_MAX, XACCLBDAS_MIN, XACCLBDAR_MIN, & - ZFDINFTY, XKER_SACCRG, XAG, XBS, XAS ) - WRITE(UNIT=KLUOUT,FMT='("*****************************************")') - WRITE(UNIT=KLUOUT,FMT='("**** UPDATE NEW SET OF RACSS KERNELS ****")') - WRITE(UNIT=KLUOUT,FMT='("**** UPDATE NEW SET OF RACS KERNELS ****")') - WRITE(UNIT=KLUOUT,FMT='("**** UPDATE NEW SET OF SACRG KERNELS ****")') - WRITE(UNIT=KLUOUT,FMT='("*****************************************")') - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("KND=",I3)') IND - WRITE(UNIT=KLUOUT,FMT='("KACCLBDAS=",I3)') NACCLBDAS - WRITE(UNIT=KLUOUT,FMT='("KACCLBDAR=",I3)') NACCLBDAR - WRITE(UNIT=KLUOUT,FMT='("PALPHAS=",E13.6)') XALPHAS - WRITE(UNIT=KLUOUT,FMT='("PNUS=",E13.6)') XNUS - WRITE(UNIT=KLUOUT,FMT='("PALPHAR=",E13.6)') XALPHAR - WRITE(UNIT=KLUOUT,FMT='("PNUR=",E13.6)') XNUR - WRITE(UNIT=KLUOUT,FMT='("PESR=",E13.6)') ZESR - WRITE(UNIT=KLUOUT,FMT='("PBS=",E13.6)') XBS - WRITE(UNIT=KLUOUT,FMT='("PBR=",E13.6)') XBR - WRITE(UNIT=KLUOUT,FMT='("PCS=",E13.6)') XCS - WRITE(UNIT=KLUOUT,FMT='("PDS=",E13.6)') XDS - WRITE(UNIT=KLUOUT,FMT='("PFVELOS=",E13.6)') XFVELOS - WRITE(UNIT=KLUOUT,FMT='("PCR=",E13.6)') XCR - WRITE(UNIT=KLUOUT,FMT='("PDR=",E13.6)') XDR - WRITE(UNIT=KLUOUT,FMT='("PACCLBDAS_MAX=",E13.6)') & - XACCLBDAS_MAX - WRITE(UNIT=KLUOUT,FMT='("PACCLBDAR_MAX=",E13.6)') & - XACCLBDAR_MAX - WRITE(UNIT=KLUOUT,FMT='("PACCLBDAS_MIN=",E13.6)') & - XACCLBDAS_MIN - WRITE(UNIT=KLUOUT,FMT='("PACCLBDAR_MIN=",E13.6)') & - XACCLBDAR_MIN - WRITE(UNIT=KLUOUT,FMT='("PFDINFTY=",E13.6)') ZFDINFTY - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("IF( PRESENT(PKER_RACCSS) ) THEN")') - DO J1 = 1 , NACCLBDAS - DO J2 = 1 , NACCLBDAR - WRITE(UNIT=KLUOUT,FMT='(" PKER_RACCSS(",I3,",",I3,") = ",E13.6)') & - J1,J2,XKER_RACCSS(J1,J2) - END DO - END DO - WRITE(UNIT=KLUOUT,FMT='("END IF")') - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("IF( PRESENT(PKER_RACCS ) ) THEN")') - DO J1 = 1 , NACCLBDAS - DO J2 = 1 , NACCLBDAR - WRITE(UNIT=KLUOUT,FMT='(" PKER_RACCS (",I3,",",I3,") = ",E13.6)') & - J1,J2,XKER_RACCS (J1,J2) - END DO - END DO - WRITE(UNIT=KLUOUT,FMT='("END IF")') - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("IF( PRESENT(PKER_SACCRG) ) THEN")') - DO J1 = 1 , NACCLBDAR - DO J2 = 1 , NACCLBDAS - WRITE(UNIT=KLUOUT,FMT='(" PKER_SACCRG(",I3,",",I3,") = ",E13.6)') & - J1,J2,XKER_SACCRG(J1,J2) - END DO - END DO - WRITE(UNIT=KLUOUT,FMT='("END IF")') - ELSE - CALL READ_XKER_RACCS (KACCLBDAS,KACCLBDAR,KND, & - PALPHAS,PNUS,PALPHAR,PNUR,PESR,PBS,PBR,PCS,PDS,PFVELOS,PCR,PDR, & - PACCLBDAS_MAX,PACCLBDAR_MAX,PACCLBDAS_MIN,PACCLBDAR_MIN, & - PFDINFTY,XKER_RACCSS,XKER_RACCS,XKER_SACCRG ) - WRITE(UNIT=KLUOUT,FMT='(" Read XKER_RACCSS")') - WRITE(UNIT=KLUOUT,FMT='(" Read XKER_RACCS ")') - WRITE(UNIT=KLUOUT,FMT='(" Read XKER_SACCRG")') -END IF -! -!* 7.3 Constant for the conversion-melting rate -! -XFSCVMG = 2.0 -! -GFLAG = .TRUE. -IF (GFLAG) THEN - WRITE(UNIT=KLUOUT,FMT='(" conversion-melting of the aggregates")') - WRITE(UNIT=KLUOUT,FMT='(" Conv. factor XFSCVMG=",E13.6)') XFSCVMG -END IF -! -! -!------------------------------------------------------------------------------- -! -!* 8. CONSTANTS FOR THE FAST COLD PROCESSES FOR THE GRAUPELN -! ------------------------------------------------------ -! -! -!* 8.1 Constants for the rain contact freezing -! -XCOLIR = 1.0 -! -XEXRCFRI = -XDR-5.0+ZXR -XRCFRI = ((XPI**2)/24.0)*XCCR*XRHOLW*XCOLIR*XCR*(ZRHO00**XCEXVT) & - *MOMG(XALPHAR,XNUR,XDR+5.0) -XEXICFRR = -XDR-2.0+ZXR -XICFRR = (XPI/4.0)*XCOLIR*XCR*(ZRHO00**XCEXVT) & - *XCCR*MOMG(XALPHAR,XNUR,XDR+2.0) -! -GFLAG = .TRUE. -IF (GFLAG) THEN - WRITE(UNIT=KLUOUT,FMT='(" rain contact freezing")') - WRITE(UNIT=KLUOUT,FMT='(" Coll. efficiency XCOLIR=",E13.6)') XCOLIR -END IF -! -! -!* 8.2 Constants for the dry growth of the graupeln -! -!* 8.2.1 Constants for the cloud droplet collection by the graupeln -! -XFCDRYG = (XPI/4.0)*XCCG*XCG*(ZRHO00**XCEXVT)*MOMG(XALPHAG,XNUG,XDG+2.0) -! -!* 8.2.2 Constants for the cloud ice collection by the graupeln -! -XCOLIG = 0.25 ! Collection efficiency of I+G -XCOLEXIG = 0.05 ! Temperature factor of the I+G collection efficiency -XCOLIG = 0.01 ! Collection efficiency of I+G -XCOLEXIG = 0.1 ! Temperature factor of the I+G collection efficiency -WRITE (KLUOUT, FMT=*) ' NEW Constants for the cloud ice collection by the graupeln' -WRITE (KLUOUT, FMT=*) ' XCOLIG, XCOLEXIG = ',XCOLIG,XCOLEXIG -XFIDRYG = (XPI/4.0)*XCOLIG*XCCG*XCG*(ZRHO00**XCEXVT)*MOMG(XALPHAG,XNUG,XDG+2.0) -XEXFIDRYG=(XCXG-XDG-2.)/(XCXG-XBG) -XFIDRYG2=XFIDRYG/XCOLIG*(XAG*XCCG*MOMG(XALPHAG,XNUG,XBG))**(-XEXFIDRYG) -! -GFLAG = .TRUE. -IF (GFLAG) THEN - WRITE(UNIT=KLUOUT,FMT='(" cloud ice collection by the graupeln")') - WRITE(UNIT=KLUOUT,FMT='(" Coll. efficiency XCOLIG=",E13.6)') XCOLIG - WRITE(UNIT=KLUOUT,FMT='(" Temp. factor XCOLEXIG=",E13.6)') XCOLEXIG -END IF -! -!* 8.2.3 Constants for the aggregate collection by the graupeln -! -XCOLSG = 0.25 ! Collection efficiency of S+G -XCOLEXSG = 0.05 ! Temperature factor of the S+G collection efficiency -XCOLSG = 0.01 ! Collection efficiency of S+G -XCOLEXSG = 0.1 ! Temperature factor of the S+G collection efficiency -WRITE (KLUOUT, FMT=*) ' NEW Constants for the aggregate collection by the graupeln' -WRITE (KLUOUT, FMT=*) ' XCOLSG, XCOLEXSG = ',XCOLSG,XCOLEXSG -#if defined(REPRO48) -XFSDRYG = (XPI/4.0)*XCOLSG*XCCG*XCCS*XAS*(ZRHO00**XCEXVT) -#else -XFSDRYG = XNS*(XPI/4.0)*XCOLSG*XCCG*XAS*(ZRHO00**XCEXVT) -#endif -! -XLBSDRYG1 = MOMG(XALPHAG,XNUG,2.)*MOMG(XALPHAS,XNUS,XBS) -XLBSDRYG2 = 2.*MOMG(XALPHAG,XNUG,1.)*MOMG(XALPHAS,XNUS,XBS+1.) -XLBSDRYG3 = MOMG(XALPHAS,XNUS,XBS+2.) -! -GFLAG = .TRUE. -IF (GFLAG) THEN - WRITE(UNIT=KLUOUT,FMT='(" aggregate collection by the graupeln")') - WRITE(UNIT=KLUOUT,FMT='(" Coll. efficiency XCOLSG=",E13.6)') XCOLSG - WRITE(UNIT=KLUOUT,FMT='(" Temp. factor XCOLEXSG=",E13.6)') XCOLEXSG -END IF -! -!* 8.2.4 Constants for the raindrop collection by the graupeln -! -XFRDRYG = ((XPI**2)/24.0)*XCCG*XCCR*XRHOLW*(ZRHO00**XCEXVT) -! -XLBRDRYG1 = MOMG(XALPHAG,XNUG,2.)*MOMG(XALPHAR,XNUR,3.) -XLBRDRYG2 = 2.*MOMG(XALPHAG,XNUG,1.)*MOMG(XALPHAR,XNUR,4.) -XLBRDRYG3 = MOMG(XALPHAR,XNUR,5.) -! -! Notice: One magnitude of lambda discretized over 10 points -! -NDRYLBDAR = 40 -XDRYLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RDRYG -XDRYLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RDRYG -ZRATE = LOG(XDRYLBDAR_MAX/XDRYLBDAR_MIN)/REAL(NDRYLBDAR-1) -XDRYINTP1R = 1.0 / ZRATE -XDRYINTP2R = 1.0 - LOG( XDRYLBDAR_MIN ) / ZRATE -NDRYLBDAS = 80 -XDRYLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SDRYG -XDRYLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SDRYG -ZRATE = LOG(XDRYLBDAS_MAX/XDRYLBDAS_MIN)/REAL(NDRYLBDAS-1) -XDRYINTP1S = 1.0 / ZRATE -XDRYINTP2S = 1.0 - LOG( XDRYLBDAS_MIN ) / ZRATE -NDRYLBDAG = 40 -XDRYLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG -XDRYLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_SDRYG,XKER_RDRYG -ZRATE = LOG(XDRYLBDAG_MAX/XDRYLBDAG_MIN)/REAL(NDRYLBDAG-1) -XDRYINTP1G = 1.0 / ZRATE -XDRYINTP2G = 1.0 - LOG( XDRYLBDAG_MIN ) / ZRATE -! -!* 8.2.5 Computations of the tabulated normalized kernels -! -IND = 50 ! Interval number, collection efficiency and infinite diameter -ZEGS = 1.0 ! factor used to integrate the dimensional distributions when -ZFDINFTY = 20.0 ! computing the kernels XKER_SDRYG -! -IF( .NOT.ASSOCIATED(XKER_SDRYG) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_SDRYG', NDRYLBDAG,NDRYLBDAS) -! -CALL READ_XKER_SDRYG (KDRYLBDAG,KDRYLBDAS,KND, & - PALPHAG,PNUG,PALPHAS,PNUS,PEGS,PBS,PCG,PDG,PCS,PDS,PFVELOS, & - PDRYLBDAG_MAX,PDRYLBDAS_MAX,PDRYLBDAG_MIN,PDRYLBDAS_MIN, & - PFDINFTY ) -IF( (KDRYLBDAG/=NDRYLBDAG) .OR. (KDRYLBDAS/=NDRYLBDAS) .OR. (KND/=IND) .OR. & - (PALPHAG/=XALPHAG) .OR. (PNUG/=XNUG) .OR. & - (PALPHAS/=XALPHAS) .OR. (PNUS/=XNUS) .OR. & - (PEGS/=ZEGS) .OR. (PBS/=XBS) .OR. & - (PCG/=XCG) .OR. (PDG/=XDG) .OR. (PCS/=XCS) .OR. (PDS/=XDS) .OR. (PFVELOS/=XFVELOS) .OR. & - (PDRYLBDAG_MAX/=XDRYLBDAG_MAX) .OR. (PDRYLBDAS_MAX/=XDRYLBDAS_MAX) .OR. & - (PDRYLBDAG_MIN/=XDRYLBDAG_MIN) .OR. (PDRYLBDAS_MIN/=XDRYLBDAS_MIN) .OR. & - (PFDINFTY/=ZFDINFTY) ) THEN - CALL RZCOLX ( IND, XALPHAG, XNUG, XALPHAS, XNUS, & - ZEGS, XBS, XCG, XDG, 0., XCS, XDS, XFVELOS, & - XDRYLBDAG_MAX, XDRYLBDAS_MAX, XDRYLBDAG_MIN, XDRYLBDAS_MIN, & - ZFDINFTY, XKER_SDRYG ) - WRITE(UNIT=KLUOUT,FMT='("*****************************************")') - WRITE(UNIT=KLUOUT,FMT='("**** UPDATE NEW SET OF SDRYG KERNELS ****")') - WRITE(UNIT=KLUOUT,FMT='("*****************************************")') - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("KND=",I3)') IND - WRITE(UNIT=KLUOUT,FMT='("KDRYLBDAG=",I3)') NDRYLBDAG - WRITE(UNIT=KLUOUT,FMT='("KDRYLBDAS=",I3)') NDRYLBDAS - WRITE(UNIT=KLUOUT,FMT='("PALPHAG=",E13.6)') XALPHAG - WRITE(UNIT=KLUOUT,FMT='("PNUG=",E13.6)') XNUG - WRITE(UNIT=KLUOUT,FMT='("PALPHAS=",E13.6)') XALPHAS - WRITE(UNIT=KLUOUT,FMT='("PNUS=",E13.6)') XNUS - WRITE(UNIT=KLUOUT,FMT='("PEGS=",E13.6)') ZEGS - WRITE(UNIT=KLUOUT,FMT='("PBS=",E13.6)') XBS - WRITE(UNIT=KLUOUT,FMT='("PCG=",E13.6)') XCG - WRITE(UNIT=KLUOUT,FMT='("PDG=",E13.6)') XDG - WRITE(UNIT=KLUOUT,FMT='("PCS=",E13.6)') XCS - WRITE(UNIT=KLUOUT,FMT='("PDS=",E13.6)') XDS - WRITE(UNIT=KLUOUT,FMT='("PFVELOS=",E13.6)') XFVELOS - WRITE(UNIT=KLUOUT,FMT='("PDRYLBDAG_MAX=",E13.6)') & - XDRYLBDAG_MAX - WRITE(UNIT=KLUOUT,FMT='("PDRYLBDAS_MAX=",E13.6)') & - XDRYLBDAS_MAX - WRITE(UNIT=KLUOUT,FMT='("PDRYLBDAG_MIN=",E13.6)') & - XDRYLBDAG_MIN - WRITE(UNIT=KLUOUT,FMT='("PDRYLBDAS_MIN=",E13.6)') & - XDRYLBDAS_MIN - WRITE(UNIT=KLUOUT,FMT='("PFDINFTY=",E13.6)') ZFDINFTY - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("IF( PRESENT(PKER_SDRYG) ) THEN")') - DO J1 = 1 , NDRYLBDAG - DO J2 = 1 , NDRYLBDAS - WRITE(UNIT=KLUOUT,FMT='("PKER_SDRYG(",I3,",",I3,") = ",E13.6)') & - J1,J2,XKER_SDRYG(J1,J2) - END DO - END DO - WRITE(UNIT=KLUOUT,FMT='("END IF")') - ELSE - CALL READ_XKER_SDRYG (KDRYLBDAG,KDRYLBDAS,KND, & - PALPHAG,PNUG,PALPHAS,PNUS,PEGS,PBS,PCG,PDG,PCS,PDS,PFVELOS, & - PDRYLBDAG_MAX,PDRYLBDAS_MAX,PDRYLBDAG_MIN,PDRYLBDAS_MIN, & - PFDINFTY,XKER_SDRYG ) - WRITE(UNIT=KLUOUT,FMT='(" Read XKER_SDRYG")') -END IF -! -! -IND = 50 ! Number of interval used to integrate the dimensional -ZEGR = 1.0 ! distributions when computing the kernel XKER_RDRYG -ZFDINFTY = 20.0 -! -IF( .NOT.ASSOCIATED(XKER_RDRYG) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_RDRYG', NDRYLBDAG,NDRYLBDAR) -! -CALL READ_XKER_RDRYG (KDRYLBDAG,KDRYLBDAR,KND, & - PALPHAG,PNUG,PALPHAR,PNUR,PEGR,PBR,PCG,PDG,PCR,PDR, & - PDRYLBDAG_MAX,PDRYLBDAR_MAX,PDRYLBDAG_MIN,PDRYLBDAR_MIN, & - PFDINFTY ) -IF( (KDRYLBDAG/=NDRYLBDAG) .OR. (KDRYLBDAR/=NDRYLBDAR) .OR. (KND/=IND) .OR. & - (PALPHAG/=XALPHAG) .OR. (PNUG/=XNUG) .OR. & - (PALPHAR/=XALPHAR) .OR. (PNUR/=XNUR) .OR. & - (PEGR/=ZEGR) .OR. (PBR/=XBR) .OR. & - (PCG/=XCG) .OR. (PDG/=XDG) .OR. (PCR/=XCR) .OR. (PDR/=XDR) .OR. & - (PDRYLBDAG_MAX/=XDRYLBDAG_MAX) .OR. (PDRYLBDAR_MAX/=XDRYLBDAR_MAX) .OR. & - (PDRYLBDAG_MIN/=XDRYLBDAG_MIN) .OR. (PDRYLBDAR_MIN/=XDRYLBDAR_MIN) .OR. & - (PFDINFTY/=ZFDINFTY) ) THEN - CALL RZCOLX ( IND, XALPHAG, XNUG, XALPHAR, XNUR, & - ZEGR, XBR, XCG, XDG, 0., XCR, XDR, 0., & - XDRYLBDAG_MAX, XDRYLBDAR_MAX, XDRYLBDAG_MIN, XDRYLBDAR_MIN, & - ZFDINFTY, XKER_RDRYG ) - WRITE(UNIT=KLUOUT,FMT='("*****************************************")') - WRITE(UNIT=KLUOUT,FMT='("**** UPDATE NEW SET OF RDRYG KERNELS ****")') - WRITE(UNIT=KLUOUT,FMT='("*****************************************")') - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("KND=",I3)') IND - WRITE(UNIT=KLUOUT,FMT='("KDRYLBDAG=",I3)') NDRYLBDAG - WRITE(UNIT=KLUOUT,FMT='("KDRYLBDAR=",I3)') NDRYLBDAR - WRITE(UNIT=KLUOUT,FMT='("PALPHAG=",E13.6)') XALPHAG - WRITE(UNIT=KLUOUT,FMT='("PNUG=",E13.6)') XNUG - WRITE(UNIT=KLUOUT,FMT='("PALPHAR=",E13.6)') XALPHAR - WRITE(UNIT=KLUOUT,FMT='("PNUR=",E13.6)') XNUR - WRITE(UNIT=KLUOUT,FMT='("PEGR=",E13.6)') ZEGR - WRITE(UNIT=KLUOUT,FMT='("PBR=",E13.6)') XBR - WRITE(UNIT=KLUOUT,FMT='("PCG=",E13.6)') XCG - WRITE(UNIT=KLUOUT,FMT='("PDG=",E13.6)') XDG - WRITE(UNIT=KLUOUT,FMT='("PCR=",E13.6)') XCR - WRITE(UNIT=KLUOUT,FMT='("PDR=",E13.6)') XDR - WRITE(UNIT=KLUOUT,FMT='("PDRYLBDAG_MAX=",E13.6)') & - XDRYLBDAG_MAX - WRITE(UNIT=KLUOUT,FMT='("PDRYLBDAR_MAX=",E13.6)') & - XDRYLBDAR_MAX - WRITE(UNIT=KLUOUT,FMT='("PDRYLBDAG_MIN=",E13.6)') & - XDRYLBDAG_MIN - WRITE(UNIT=KLUOUT,FMT='("PDRYLBDAR_MIN=",E13.6)') & - XDRYLBDAR_MIN - WRITE(UNIT=KLUOUT,FMT='("PFDINFTY=",E13.6)') ZFDINFTY - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("IF( PRESENT(PKER_RDRYG) ) THEN")') - DO J1 = 1 , NDRYLBDAG - DO J2 = 1 , NDRYLBDAR - WRITE(UNIT=KLUOUT,FMT='("PKER_RDRYG(",I3,",",I3,") = ",E13.6)') & - J1,J2,XKER_RDRYG(J1,J2) - END DO - END DO - WRITE(UNIT=KLUOUT,FMT='("END IF")') - ELSE - CALL READ_XKER_RDRYG (KDRYLBDAG,KDRYLBDAR,KND, & - PALPHAG,PNUG,PALPHAR,PNUR,PEGR,PBR,PCG,PDG,PCR,PDR, & - PDRYLBDAG_MAX,PDRYLBDAR_MAX,PDRYLBDAG_MIN,PDRYLBDAR_MIN, & - PFDINFTY,XKER_RDRYG ) - WRITE(UNIT=KLUOUT,FMT='(" Read XKER_RDRYG")') -END IF - -! 8.2.6 Constants for possible modifying some processes related to -! graupeln in XFRMIN(1:8), IN - concentration in XFRMIN(9) and Kogan -! autoconversion in XFRMIN(10:11). May be used for e.g. ensemble spread - XFRMIN(1:6)=0. - XFRMIN(7:9)=1. - XFRMIN(10) =10. - XFRMIN(11) =1. - XFRMIN(12) =100. !0 in suparar - XFRMIN(13) =1.0E-15 - XFRMIN(14) =120. - XFRMIN(15) =1.0E-4 - XFRMIN(16:20)=0. - XFRMIN(21:22)=1. - XFRMIN(23)=0.5 - XFRMIN(24)=1.5 - XFRMIN(25)=30. - XFRMIN(26:38)=0. - XFRMIN(39)=0.25 - XFRMIN(40)=0.15 -! -! -!------------------------------------------------------------------------------- -! -!* 9. CONSTANTS FOR THE FAST COLD PROCESSES FOR THE HAILSTONES -! -------------------------------------------------------- -! -!* 9.2 Constants for the wet growth of the hailstones -! -! -!* 9.2.1 Constant for the cloud droplet and cloud ice collection -! by the hailstones -! -XCOLIH = 0.01 ! Collection efficiency of I+H -XCOLEXIH = 0.1 ! Temperature factor of the I+H collection efficiency -XFWETH = (XPI/4.0)*XCCH*XCH*(ZRHO00**XCEXVT)*MOMG(XALPHAH,XNUH,XDH+2.0) -! -!* 9.2.2 Constants for the aggregate collection by the hailstones -! -XCOLSH = 0.01 ! Collection efficiency of S+H -XCOLEXSH = 0.1 ! Temperature factor of the S+H collection efficiency -#if defined(REPRO48) -XFSWETH = (XPI/4.0)*XCCH*XCCS*XAS*(ZRHO00**XCEXVT) -#else -XFSWETH = XNS*(XPI/4.0)*XCCH*XAS*(ZRHO00**XCEXVT) ! Wurtz -#endif -! -XLBSWETH1 = MOMG(XALPHAH,XNUH,2.)*MOMG(XALPHAS,XNUS,XBS) -XLBSWETH2 = 2.*MOMG(XALPHAH,XNUH,1.)*MOMG(XALPHAS,XNUS,XBS+1.) -XLBSWETH3 = MOMG(XALPHAS,XNUS,XBS+2.) -! -!* 9.2.3 Constants for the graupel collection by the hailstones -! -XCOLGH = 0.01 ! Collection efficiency of G+H -XCOLEXGH = 0.1 ! Temperature factor of the G+H collection efficiency -XFGWETH = (XPI/4.0)*XCCH*XCCG*XAG*(ZRHO00**XCEXVT) -! -XLBGWETH1 = MOMG(XALPHAH,XNUH,2.)*MOMG(XALPHAG,XNUG,XBG) -XLBGWETH2 = 2.*MOMG(XALPHAH,XNUH,1.)*MOMG(XALPHAG,XNUG,XBG+1.) -XLBGWETH3 = MOMG(XALPHAG,XNUG,XBG+2.) -! -!* 9.2.3 bis Constants for the rain collection by the hailstones -! -XFRWETH = (XPI/4.0)*XCCH*XCCR*XAR*(ZRHO00**XCEXVT) -! -XLBRWETH1 = MOMG(XALPHAH,XNUH,2.)*MOMG(XALPHAR,XNUR,XBR) -XLBRWETH2 = 2.*MOMG(XALPHAH,XNUH,1.)*MOMG(XALPHAR,XNUR,XBR+1.) -XLBRWETH3 = MOMG(XALPHAR,XNUR,XBR+2.) -! -! Notice: One magnitude of lambda discretized over 10 points -! -NWETLBDAS = 80 -XWETLBDAS_MIN = 2.5E1 ! Minimal value of Lbda_s to tabulate XKER_SWETH -XWETLBDAS_MAX = 2.5E9 ! Maximal value of Lbda_s to tabulate XKER_SWETH -ZRATE = LOG(XWETLBDAS_MAX/XWETLBDAS_MIN)/REAL(NWETLBDAS-1) -XWETINTP1S = 1.0 / ZRATE -XWETINTP2S = 1.0 - LOG( XWETLBDAS_MIN ) / ZRATE -NWETLBDAG = 40 -XWETLBDAG_MIN = 1.0E3 ! Min value of Lbda_g to tabulate XKER_GWETH -XWETLBDAG_MAX = 1.0E7 ! Max value of Lbda_g to tabulate XKER_GWETH -ZRATE = LOG(XWETLBDAG_MAX/XWETLBDAG_MIN)/REAL(NWETLBDAG-1) -XWETINTP1G = 1.0 / ZRATE -XWETINTP2G = 1.0 - LOG( XWETLBDAG_MIN ) / ZRATE -NWETLBDAR = 40 -XWETLBDAR_MIN = 1.0E3 ! Minimal value of Lbda_r to tabulate XKER_RWETH -XWETLBDAR_MAX = 1.0E7 ! Maximal value of Lbda_r to tabulate XKER_RWETH -ZRATE = LOG(XWETLBDAR_MAX/XWETLBDAR_MIN)/REAL(NWETLBDAR-1) -XWETINTP1R = 1.0 / ZRATE -XWETINTP2R = 1.0 - LOG( XWETLBDAR_MIN ) / ZRATE -NWETLBDAH = 40 -XWETLBDAH_MIN = 1.0E3 ! Min value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH,XKER_RWETH -XWETLBDAH_MAX = 1.0E7 ! Max value of Lbda_h to tabulate XKER_SWETH,XKER_GWETH,XKER_RWETH -ZRATE = LOG(XWETLBDAH_MAX/XWETLBDAH_MIN)/REAL(NWETLBDAH-1) -XWETINTP1H = 1.0 / ZRATE -XWETINTP2H = 1.0 - LOG( XWETLBDAH_MIN ) / ZRATE -! -!* 9.2.4 Computations of the tabulated normalized kernels -! -IND = 50 ! Interval number, collection efficiency and infinite diameter -ZEHS = 1.0 ! factor used to integrate the dimensional distributions when -ZFDINFTY = 20.0 ! computing the kernels XKER_SWETH -! -IF( .NOT.ASSOCIATED(XKER_SWETH) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_SWETH', NWETLBDAH,NWETLBDAS) -! -CALL READ_XKER_SWETH (KWETLBDAH,KWETLBDAS,KND, & - PALPHAH,PNUH,PALPHAS,PNUS,PEHS,PBS,PCH,PDH,PCS,PDS,PFVELOS, & - PWETLBDAH_MAX,PWETLBDAS_MAX,PWETLBDAH_MIN,PWETLBDAS_MIN, & - PFDINFTY ) -IF( (KWETLBDAH/=NWETLBDAH) .OR. (KWETLBDAS/=NWETLBDAS) .OR. (KND/=IND) .OR. & - (PALPHAH/=XALPHAH) .OR. (PNUH/=XNUH) .OR. & - (PALPHAS/=XALPHAS) .OR. (PNUS/=XNUS) .OR. & - (PEHS/=ZEHS) .OR. (PBS/=XBS) .OR. & - (PCH/=XCH) .OR. (PDH/=XDH) .OR. (PCS/=XCS) .OR. (PDS/=XDS) .OR. (PFVELOS/=XFVELOS) .OR. & - (PWETLBDAH_MAX/=XWETLBDAH_MAX) .OR. (PWETLBDAS_MAX/=XWETLBDAS_MAX) .OR. & - (PWETLBDAH_MIN/=XWETLBDAH_MIN) .OR. (PWETLBDAS_MIN/=XWETLBDAS_MIN) .OR. & - (PFDINFTY/=ZFDINFTY) ) THEN - CALL RZCOLX ( IND, XALPHAH, XNUH, XALPHAS, XNUS, & - ZEHS, XBS, XCH, XDH, 0., XCS, XDS, XFVELOS, & - XWETLBDAH_MAX, XWETLBDAS_MAX, XWETLBDAH_MIN, XWETLBDAS_MIN, & - ZFDINFTY, XKER_SWETH ) - WRITE(UNIT=KLUOUT,FMT='("*****************************************")') - WRITE(UNIT=KLUOUT,FMT='("**** UPDATE NEW SET OF SWETH KERNELS ****")') - WRITE(UNIT=KLUOUT,FMT='("*****************************************")') - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("KND=",I3)') IND - WRITE(UNIT=KLUOUT,FMT='("KWETLBDAH=",I3)') NWETLBDAH - WRITE(UNIT=KLUOUT,FMT='("KWETLBDAS=",I3)') NWETLBDAS - WRITE(UNIT=KLUOUT,FMT='("PALPHAH=",E13.6)') XALPHAH - WRITE(UNIT=KLUOUT,FMT='("PNUH=",E13.6)') XNUH - WRITE(UNIT=KLUOUT,FMT='("PALPHAS=",E13.6)') XALPHAS - WRITE(UNIT=KLUOUT,FMT='("PNUS=",E13.6)') XNUS - WRITE(UNIT=KLUOUT,FMT='("PEHS=",E13.6)') ZEHS - WRITE(UNIT=KLUOUT,FMT='("PBS=",E13.6)') XBS - WRITE(UNIT=KLUOUT,FMT='("PCH=",E13.6)') XCH - WRITE(UNIT=KLUOUT,FMT='("PDH=",E13.6)') XDH - WRITE(UNIT=KLUOUT,FMT='("PCS=",E13.6)') XCS - WRITE(UNIT=KLUOUT,FMT='("PDS=",E13.6)') XDS - WRITE(UNIT=KLUOUT,FMT='("PFVELOS=",E13.6)') XFVELOS - WRITE(UNIT=KLUOUT,FMT='("PWETLBDAH_MAX=",E13.6)') & - XWETLBDAH_MAX - WRITE(UNIT=KLUOUT,FMT='("PWETLBDAS_MAX=",E13.6)') & - XWETLBDAS_MAX - WRITE(UNIT=KLUOUT,FMT='("PWETLBDAH_MIN=",E13.6)') & - XWETLBDAH_MIN - WRITE(UNIT=KLUOUT,FMT='("PWETLBDAS_MIN=",E13.6)') & - XWETLBDAS_MIN - WRITE(UNIT=KLUOUT,FMT='("PFDINFTY=",E13.6)') ZFDINFTY - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("IF( PRESENT(PKER_SWETH) ) THEN")') - DO J1 = 1 , NWETLBDAH - DO J2 = 1 , NWETLBDAS - WRITE(UNIT=KLUOUT,FMT='("PKER_SWETH(",I3,",",I3,") = ",E13.6)') & - J1,J2,XKER_SWETH(J1,J2) - END DO - END DO - WRITE(UNIT=KLUOUT,FMT='("END IF")') - ELSE - CALL READ_XKER_SWETH (KWETLBDAH,KWETLBDAS,KND, & - PALPHAH,PNUH,PALPHAS,PNUS,PEHS,PBS,PCH,PDH,PCS,PDS,PFVELOS, & - PWETLBDAH_MAX,PWETLBDAS_MAX,PWETLBDAH_MIN,PWETLBDAS_MIN, & - PFDINFTY,XKER_SWETH ) - WRITE(UNIT=KLUOUT,FMT='(" Read XKER_SWETH")') -END IF -! -! -IND = 50 ! Number of interval used to integrate the dimensional -ZEHG = 1.0 ! distributions when computing the kernel XKER_GWETH -ZFDINFTY = 20.0 -! -IF( .NOT.ASSOCIATED(XKER_GWETH) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_GWETH', NWETLBDAH,NWETLBDAG) -! -CALL READ_XKER_GWETH (KWETLBDAH,KWETLBDAG,KND, & - PALPHAH,PNUH,PALPHAG,PNUG,PEHG,PBG,PCH,PDH,PCG,PDG, & - PWETLBDAH_MAX,PWETLBDAG_MAX,PWETLBDAH_MIN,PWETLBDAG_MIN, & - PFDINFTY ) -IF( (KWETLBDAH/=NWETLBDAH) .OR. (KWETLBDAG/=NWETLBDAG) .OR. (KND/=IND) .OR. & - (PALPHAH/=XALPHAH) .OR. (PNUH/=XNUH) .OR. & - (PALPHAG/=XALPHAG) .OR. (PNUG/=XNUG) .OR. & - (PEHG/=ZEHG) .OR. (PBG/=XBG) .OR. & - (PCH/=XCH) .OR. (PDH/=XDH) .OR. (PCG/=XCG) .OR. (PDG/=XDG) .OR. & - (PWETLBDAH_MAX/=XWETLBDAH_MAX) .OR. (PWETLBDAG_MAX/=XWETLBDAG_MAX) .OR. & - (PWETLBDAH_MIN/=XWETLBDAH_MIN) .OR. (PWETLBDAG_MIN/=XWETLBDAG_MIN) .OR. & - (PFDINFTY/=ZFDINFTY) ) THEN - CALL RZCOLX ( IND, XALPHAH, XNUH, XALPHAG, XNUG, & - ZEHG, XBG, XCH, XDH, 0., XCG, XDG, 0., & - XWETLBDAH_MAX, XWETLBDAG_MAX, XWETLBDAH_MIN, XWETLBDAG_MIN, & - ZFDINFTY, XKER_GWETH ) - WRITE(UNIT=KLUOUT,FMT='("*****************************************")') - WRITE(UNIT=KLUOUT,FMT='("**** UPDATE NEW SET OF GWETH KERNELS ****")') - WRITE(UNIT=KLUOUT,FMT='("*****************************************")') - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("KND=",I3)') IND - WRITE(UNIT=KLUOUT,FMT='("KWETLBDAH=",I3)') NWETLBDAH - WRITE(UNIT=KLUOUT,FMT='("KWETLBDAG=",I3)') NWETLBDAG - WRITE(UNIT=KLUOUT,FMT='("PALPHAH=",E13.6)') XALPHAH - WRITE(UNIT=KLUOUT,FMT='("PNUH=",E13.6)') XNUH - WRITE(UNIT=KLUOUT,FMT='("PALPHAG=",E13.6)') XALPHAG - WRITE(UNIT=KLUOUT,FMT='("PNUG=",E13.6)') XNUG - WRITE(UNIT=KLUOUT,FMT='("PEHG=",E13.6)') ZEHG - WRITE(UNIT=KLUOUT,FMT='("PBG=",E13.6)') XBG - WRITE(UNIT=KLUOUT,FMT='("PCH=",E13.6)') XCH - WRITE(UNIT=KLUOUT,FMT='("PDH=",E13.6)') XDH - WRITE(UNIT=KLUOUT,FMT='("PCG=",E13.6)') XCG - WRITE(UNIT=KLUOUT,FMT='("PDG=",E13.6)') XDG - WRITE(UNIT=KLUOUT,FMT='("PWETLBDAH_MAX=",E13.6)') & - XWETLBDAH_MAX - WRITE(UNIT=KLUOUT,FMT='("PWETLBDAG_MAX=",E13.6)') & - XWETLBDAG_MAX - WRITE(UNIT=KLUOUT,FMT='("PWETLBDAH_MIN=",E13.6)') & - XWETLBDAH_MIN - WRITE(UNIT=KLUOUT,FMT='("PWETLBDAG_MIN=",E13.6)') & - XWETLBDAG_MIN - WRITE(UNIT=KLUOUT,FMT='("PFDINFTY=",E13.6)') ZFDINFTY - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("IF( PRESENT(PKER_GWETH) ) THEN")') - DO J1 = 1 , NWETLBDAH - DO J2 = 1 , NWETLBDAG - WRITE(UNIT=KLUOUT,FMT='("PKER_GWETH(",I3,",",I3,") = ",E13.6)') & - J1,J2,XKER_GWETH(J1,J2) - END DO - END DO - WRITE(UNIT=KLUOUT,FMT='("END IF")') - ELSE - CALL READ_XKER_GWETH (KWETLBDAH,KWETLBDAG,KND, & - PALPHAH,PNUH,PALPHAG,PNUG,PEHG,PBG,PCH,PDH,PCG,PDG, & - PWETLBDAH_MAX,PWETLBDAG_MAX,PWETLBDAH_MIN,PWETLBDAG_MIN, & - PFDINFTY,XKER_GWETH ) - WRITE(UNIT=KLUOUT,FMT='(" Read XKER_GWETH")') -END IF -! -! -IND = 50 ! Number of interval used to integrate the dimensional -ZEHR = 1.0 ! distributions when computing the kernel XKER_RWETH -ZFDINFTY = 20.0 -! -IF( .NOT.ASSOCIATED(XKER_RWETH) ) CALL RAIN_ICE_PARAM_ALLOCATE('XKER_RWETH', NWETLBDAH,NWETLBDAR) -! -CALL READ_XKER_RWETH (KWETLBDAH,KWETLBDAR,KND, & - PALPHAH,PNUH,PALPHAR,PNUR,PEHR,PBR,PCH,PDH,PCR,PDR, & - PWETLBDAH_MAX,PWETLBDAR_MAX,PWETLBDAH_MIN,PWETLBDAR_MIN, & - PFDINFTY ) -IF( (KWETLBDAH/=NWETLBDAH) .OR. (KWETLBDAR/=NWETLBDAR) .OR. (KND/=IND) .OR. & - (PALPHAH/=XALPHAH) .OR. (PNUH/=XNUH) .OR. & - (PALPHAR/=XALPHAR) .OR. (PNUR/=XNUR) .OR. & - (PEHR/=ZEHR) .OR. (PBR/=XBR) .OR. & - (PCH/=XCH) .OR. (PDH/=XDH) .OR. (PCR/=XCR) .OR. (PDR/=XDR) .OR. & - (PWETLBDAH_MAX/=XWETLBDAH_MAX) .OR. (PWETLBDAR_MAX/=XWETLBDAR_MAX) .OR. & - (PWETLBDAH_MIN/=XWETLBDAH_MIN) .OR. (PWETLBDAR_MIN/=XWETLBDAR_MIN) .OR. & - (PFDINFTY/=ZFDINFTY) ) THEN - CALL RZCOLX ( IND, XALPHAH, XNUH, XALPHAR, XNUR, & - ZEHR, XBR, XCH, XDH, 0., XCR, XDR, 0., & - XWETLBDAH_MAX, XWETLBDAR_MAX, XWETLBDAH_MIN, XWETLBDAR_MIN, & - ZFDINFTY, XKER_RWETH ) - WRITE(UNIT=KLUOUT,FMT='("*****************************************")') - WRITE(UNIT=KLUOUT,FMT='("**** UPDATE NEW SET OF RWETH KERNELS ****")') - WRITE(UNIT=KLUOUT,FMT='("*****************************************")') - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("KND=",I3)') IND - WRITE(UNIT=KLUOUT,FMT='("KWETLBDAH=",I3)') NWETLBDAH - WRITE(UNIT=KLUOUT,FMT='("KWETLBDAR=",I3)') NWETLBDAR - WRITE(UNIT=KLUOUT,FMT='("PALPHAH=",E13.6)') XALPHAH - WRITE(UNIT=KLUOUT,FMT='("PNUH=",E13.6)') XNUH - WRITE(UNIT=KLUOUT,FMT='("PALPHAR=",E13.6)') XALPHAR - WRITE(UNIT=KLUOUT,FMT='("PNUR=",E13.6)') XNUR - WRITE(UNIT=KLUOUT,FMT='("PEHR=",E13.6)') ZEHR - WRITE(UNIT=KLUOUT,FMT='("PBR=",E13.6)') XBR - WRITE(UNIT=KLUOUT,FMT='("PCH=",E13.6)') XCH - WRITE(UNIT=KLUOUT,FMT='("PDH=",E13.6)') XDH - WRITE(UNIT=KLUOUT,FMT='("PCR=",E13.6)') XCR - WRITE(UNIT=KLUOUT,FMT='("PDR=",E13.6)') XDR - WRITE(UNIT=KLUOUT,FMT='("PWETLBDAH_MAX=",E13.6)') & - XWETLBDAH_MAX - WRITE(UNIT=KLUOUT,FMT='("PWETLBDAR_MAX=",E13.6)') & - XWETLBDAR_MAX - WRITE(UNIT=KLUOUT,FMT='("PWETLBDAH_MIN=",E13.6)') & - XWETLBDAH_MIN - WRITE(UNIT=KLUOUT,FMT='("PWETLBDAR_MIN=",E13.6)') & - XWETLBDAR_MIN - WRITE(UNIT=KLUOUT,FMT='("PFDINFTY=",E13.6)') ZFDINFTY - WRITE(UNIT=KLUOUT,FMT='("!")') - WRITE(UNIT=KLUOUT,FMT='("IF( PRESENT(PKER_RWETH) ) THEN")') - DO J1 = 1 , NWETLBDAH - DO J2 = 1 , NWETLBDAR - WRITE(UNIT=KLUOUT,FMT='("PKER_RWETH(",I3,",",I3,") = ",E13.6)') & - J1,J2,XKER_RWETH(J1,J2) - END DO - END DO - WRITE(UNIT=KLUOUT,FMT='("END IF")') - ELSE - CALL READ_XKER_RWETH (KWETLBDAH,KWETLBDAR,KND, & - PALPHAH,PNUH,PALPHAR,PNUR,PEHR,PBR,PCH,PDH,PCR,PDR, & - PWETLBDAH_MAX,PWETLBDAR_MAX,PWETLBDAH_MIN,PWETLBDAR_MIN, & - PFDINFTY,XKER_RWETH ) - WRITE(UNIT=KLUOUT,FMT='(" Read XKER_RWETH")') -END IF -! -! -!------------------------------------------------------------------------------- -! -!* 10. SOME PRINTS FOR CONTROL -! ----------------------- -! -! -GFLAG = .TRUE. -IF (GFLAG) THEN - WRITE(UNIT=KLUOUT,FMT='(" Summary of the ice particule characteristics")') - WRITE(UNIT=KLUOUT,FMT='(" PRISTINE ICE")') - WRITE(UNIT=KLUOUT,FMT='(" masse: A=",E13.6," B=",E13.6)') & - XAI,XBI - WRITE(UNIT=KLUOUT,FMT='(" vitesse: C=",E13.6," D=",E13.6)') & - XC_I,XDI - WRITE(UNIT=KLUOUT,FMT='(" distribution:AL=",E13.6,"NU=",E13.6)') & - XALPHAI,XNUI - WRITE(UNIT=KLUOUT,FMT='(" SNOW")') - WRITE(UNIT=KLUOUT,FMT='(" masse: A=",E13.6," B=",E13.6)') & - XAS,XBS - WRITE(UNIT=KLUOUT,FMT='(" vitesse: C=",E13.6," D=",E13.6)') & - XCS,XDS - WRITE(UNIT=KLUOUT,FMT='(" concentration:CC=",E13.6," x=",E13.6)') & - XCCS,XCXS - WRITE(UNIT=KLUOUT,FMT='(" distribution:AL=",E13.6,"NU=",E13.6)') & - XALPHAS,XNUS - WRITE(UNIT=KLUOUT,FMT='(" GRAUPEL")') - WRITE(UNIT=KLUOUT,FMT='(" masse: A=",E13.6," B=",E13.6)') & - XAG,XBG - WRITE(UNIT=KLUOUT,FMT='(" vitesse: C=",E13.6," D=",E13.6)') & - XCG,XDG - WRITE(UNIT=KLUOUT,FMT='(" concentration:CC=",E13.6," x=",E13.6)') & - XCCG,XCXG - WRITE(UNIT=KLUOUT,FMT='(" distribution:AL=",E13.6,"NU=",E13.6)') & - XALPHAG,XNUG - WRITE(UNIT=KLUOUT,FMT='(" HAIL")') - WRITE(UNIT=KLUOUT,FMT='(" masse: A=",E13.6," B=",E13.6)') & - XAH,XBH - WRITE(UNIT=KLUOUT,FMT='(" vitesse: C=",E13.6," D=",E13.6)') & - XCH,XDH - WRITE(UNIT=KLUOUT,FMT='(" concentration:CC=",E13.6," x=",E13.6)') & - XCCH,XCXH - WRITE(UNIT=KLUOUT,FMT='(" distribution:AL=",E13.6,"NU=",E13.6)') & - XALPHAH,XNUH -END IF -IF (LHOOK) CALL DR_HOOK('INI_RAIN_ICE',1,ZHOOK_HANDLE) -CONTAINS -! -!------------------------------------------------------------------------------ -! - FUNCTION MOMG(PALPHA,PNU,PP) RESULT (PMOMG) -! -! auxiliary routine used to compute the Pth moment order of the generalized -! gamma law -! - USE MODI_GAMMA -! - IMPLICIT NONE -! - REAL :: PALPHA ! first shape parameter of the dimensionnal distribution - REAL :: PNU ! second shape parameter of the dimensionnal distribution - REAL :: PP ! order of the moment - REAL :: PMOMG ! result: moment of order ZP -! -!------------------------------------------------------------------------------ -! -! - PMOMG = GAMMA(PNU+PP/PALPHA)/GAMMA(PNU) -! - END FUNCTION MOMG -! -!------------------------------------------------------------------------------- -! -! -END SUBROUTINE INI_RAIN_ICE diff --git a/tools/check_commit_ial.sh b/tools/check_commit_ial.sh index 58496ace4..df230d3a5 100755 --- a/tools/check_commit_ial.sh +++ b/tools/check_commit_ial.sh @@ -2,6 +2,7 @@ #set -x set -e +set -o pipefail #abort if left command on a pipe fails #This script: # - compiles the AROME model using a specific commit for the externalised physics @@ -43,6 +44,7 @@ set -e #The small_3D_lima is not included in the list of available tests because it needs to be compared against a special commit. # Indeed, the lima version in arome has been changed. +# The reference commit is d095d11 (20 March 2023) #Special pack names: # - recompil: original source code (everything under mpa) diff --git a/tools/check_commit_mesonh.sh b/tools/check_commit_mesonh.sh index 19fb4c1b4..af975e310 100755 --- a/tools/check_commit_mesonh.sh +++ b/tools/check_commit_mesonh.sh @@ -2,6 +2,7 @@ #set -x set -e +set -o pipefail #abort if left command on a pipe fails #The folowing environment variables can be defined: # REFDIR: directory in which the reference compilation directory can be found @@ -138,7 +139,11 @@ name=${refversion}-$tag #They are done in the current pack except if the reference pack #already contains a tested simulation #To check this, we use the case 007_16janvier/008_run2_turb3D -run_in_ref=$(ls -d $REFDIR/${refversion}/MY_RUN/KTEST/007_16janvier/008_run2_turb3D_* 2> /dev/null | tail -1 |wc -l) +if [ $(ls -d $REFDIR/${refversion}/MY_RUN/KTEST/007_16janvier/008_run2_turb3D_* 2> /dev/null | wc -l) -gt 0 ]; then + run_in_ref=1 +else + run_in_ref=0 +fi if [ $run_in_ref -eq 1 ]; then path_user_beg=$REFDIR/${refversion} #pack directory containing the simulation path_user_end=_$tag #to be appended to the 'run' simulation directory @@ -188,9 +193,8 @@ if [ $compilation -eq 1 ]; then mv ${refversion} $name cd $name/src # Routine that changed names - set +e - mv -f PHYEX/turb/modd_diag_in_run.f90 MNH/. #To be removed once, this is done in MNH-git-lfs repo before inclusion of last version of PHYEX - set -e + + [ -f PHYEX/turb/modd_diag_in_run.f90 ] && mv -f PHYEX/turb/modd_diag_in_run.f90 MNH/. #To be removed once, this is done in MNH-git-lfs repo before inclusion of last version of PHYEX rm -rf PHYEX @@ -263,6 +267,7 @@ if [ $compilation -eq 1 ]; then set +e #file ends with a test that can return false . ../conf/profile_mesonh-* #This lines modifies the list of loaded modules set -e + rm -f ../exe/* #Suppress old executables, if any make -j 8 2>&1 | tee ../Output_compilation make installmaster 2>&1 | tee -a ../Output_compilation command -v module && module load $modulelist #restore loaded modules @@ -291,7 +296,7 @@ if [ $run -ge 1 ]; then #Loop on the directories for rep in *; do - if [ -d "$rep" ]; then + if [[ -d "$rep" || ( -L "$rep" && ! -e "$rep" ) ]]; then #directory (or a link to a directory) or a broken link if echo $availTests | grep ${case}/$rep > /dev/null; then #This directory is a test case if [ $rep == ${exedir} ]; then @@ -316,7 +321,9 @@ if [ $run -ge 1 ]; then [ $compilation -eq 0 ] && . $MNHPACK/$name/conf/profile_mesonh-* set -e ./clean_mesonh_xyz + set +o pipefail #We want to go through all tests ./run_mesonh_xyz | tee Output_run + set -o pipefail done fi @@ -365,21 +372,21 @@ if [ $check -eq 1 ]; then fi if [ $case == 007_16janvier ]; then - echo "Compare with python..." # Compare variable of both Synchronous and Diachronic files with printing difference file1=$path_user/16JAN.1.12B18.001.nc file2=$path_ref/16JAN.1.12B18.001.nc file3=$path_user/16JAN.1.12B18.000.nc file4=$path_ref/16JAN.1.12B18.000.nc - set +e - $PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2 --f3 $file3 --f4 $file4 - t=$? - set -e - allt=$(($allt+$t)) - - #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks) - echo "Compare with ncdump..." if [ -f $file1 -a -f $file2 ]; then + echo "Compare with python..." + set +e + $PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2 --f3 $file3 --f4 $file4 + t=$? + set -e + allt=$(($allt+$t)) + + #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks) + echo "Compare with ncdump..." set +e bit_diff=57100 diff <(ncdump $file1 | head -c $bit_diff) <(ncdump $file2 | head -c $bit_diff) @@ -394,19 +401,19 @@ if [ $check -eq 1 ]; then fi if [ $case == COLD_BUBBLE ]; then - echo "Compare with python..." # Compare variable of both Synchronous files with printing difference file1=$path_user/BUBBL.1.CEN4T.001.nc file2=$path_ref/BUBBL.1.CEN4T.001.nc - set +e - $PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2 - t=$? - set -e - allt=$(($allt+$t)) - - #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks) - echo "Compare with ncdump..." if [ -f $file1 -a -f $file2 ]; then + echo "Compare with python..." + set +e + $PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2 + t=$? + set -e + allt=$(($allt+$t)) + + #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks) + echo "Compare with ncdump..." set +e bit_diff=27300 diff <(ncdump $file1 | head -c $bit_diff) <(ncdump $file2 | head -c $bit_diff) @@ -421,19 +428,19 @@ if [ $check -eq 1 ]; then fi if [ $case == OCEAN_LES ]; then - echo "Compare with python..." # Compare variable of both Synchronous files with printing difference file1=$path_user/SPWAN.2.25m00.001.nc file2=$path_ref/SPWAN.2.25m00.001.nc - set +e - $PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2 - t=$? - set -e - allt=$(($allt+$t)) - - #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks) - echo "Compare with ncdump..." if [ -f $file1 -a -f $file2 ]; then + echo "Compare with python..." + set +e + $PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2 + t=$? + set -e + allt=$(($allt+$t)) + + #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks) + echo "Compare with ncdump..." set +e bit_diff=18400 diff <(ncdump $file1 | head -c $bit_diff) <(ncdump $file2 | head -c $bit_diff) @@ -448,21 +455,21 @@ if [ $check -eq 1 ]; then fi if [ $case == COLD_BUBBLE_3D ]; then - echo "Compare with python..." # Compare variable of both Synchronous and Diachronic files with printing difference file1=$path_user/BUBBL.1.CEN4T.001.nc file2=$path_ref/BUBBL.1.CEN4T.001.nc file3=$path_user/BUBBL.1.CEN4T.000.nc file4=$path_ref/BUBBL.1.CEN4T.000.nc - set +e - $PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2 --f3 $file3 --f4 $file4 - t=$? - set -e - allt=$(($allt+$t)) - - #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks) - echo "Compare with ncdump..." if [ -f $file1 -a -f $file2 ]; then + echo "Compare with python..." + set +e + $PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2 --f3 $file3 --f4 $file4 + t=$? + set -e + allt=$(($allt+$t)) + + #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks) + echo "Compare with ncdump..." set +e diff <(ncdump $file1 | head -c 27300) <(ncdump $file2 | head -c 27300) t=$? @@ -476,21 +483,21 @@ if [ $check -eq 1 ]; then fi if [ $case == ARMLES ]; then - echo "Compare with python..." # Compare variable of both Synchronous and Diachronic files with printing difference file1=$path_user/ARM__.1.CEN4T.001.nc file2=$path_ref/ARM__.1.CEN4T.001.nc file3=$path_user/ARM__.1.CEN4T.000.nc file4=$path_ref/ARM__.1.CEN4T.000.nc - set +e - $PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2 --f3 $file3 --f4 $file4 - t=$? - set -e - allt=$(($allt+$t)) - - #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks) - echo "Compare with ncdump..." if [ -f $file1 -a -f $file2 ]; then + echo "Compare with python..." + set +e + $PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2 --f3 $file3 --f4 $file4 + t=$? + set -e + allt=$(($allt+$t)) + + #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks) + echo "Compare with ncdump..." set +e bit_diff=76300 diff <(ncdump $file1 | head -c $bit_diff) <(ncdump $file2 | head -c $bit_diff) @@ -505,21 +512,21 @@ if [ $check -eq 1 ]; then fi if [ $case == 014_LIMA ]; then - echo "Compare with python..." # Compare variable of both Synchronous and Diachronic files with printing difference file1=$path_user/XPREF.1.SEG01.002.nc file2=$path_ref/XPREF.1.SEG01.002.nc file3=$path_user/XPREF.1.SEG01.000.nc file4=$path_ref/XPREF.1.SEG01.000.nc - set +e - $PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2 --f3 $file3 --f4 $file4 - t=$? - set -e - allt=$(($allt+$t)) - - #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks) - echo "Compare with ncdump..." if [ -f $file1 -a -f $file2 ]; then + echo "Compare with python..." + set +e + $PHYEXTOOLSDIR/compare.py --f1 $file1 --f2 $file2 --f3 $file3 --f4 $file4 + t=$? + set -e + allt=$(($allt+$t)) + + #Check bit-repro before date of creation of Synchronous file from ncdump of all values (pb with direct .nc file checks) + echo "Compare with ncdump..." set +e bit_diff=32200 diff <(ncdump $file1 | head -c $bit_diff) <(ncdump $file2 | head -c $bit_diff) diff --git a/tools/check_commit_testprogs.sh b/tools/check_commit_testprogs.sh index 77e43312f..04fb62c16 100755 --- a/tools/check_commit_testprogs.sh +++ b/tools/check_commit_testprogs.sh @@ -2,6 +2,7 @@ #set -x set -e +set -o pipefail #abort if left command on a pipe fails #This script: # - compiles the PHYEX package using a specific commit diff --git a/tools/conf_tests/small_3D_alt9/aro48t3_nam1.sh b/tools/conf_tests/small_3D_alt9/aro48t3_nam1.sh index 498e19b91..07d652d05 100755 --- a/tools/conf_tests/small_3D_alt9/aro48t3_nam1.sh +++ b/tools/conf_tests/small_3D_alt9/aro48t3_nam1.sh @@ -728,10 +728,10 @@ $NPRTRW_NPRTRV XCRIAUTC_NAM=0.001, XCRIAUTI_NAM=0.0002, XT0CRIAUTI_NAM=-5., + LOCND2=.TRUE., / &NAMPARAR CMICRO='ICE3', - LOCND2=.TRUE., LFPREC3D=.TRUE., LOLSMC=.TRUE., LOSIGMAS=.TRUE., diff --git a/tools/conf_tests/small_3D_alt9/aro48t3_nam2.sh b/tools/conf_tests/small_3D_alt9/aro48t3_nam2.sh index 52ff2e943..b15efbdf9 100755 --- a/tools/conf_tests/small_3D_alt9/aro48t3_nam2.sh +++ b/tools/conf_tests/small_3D_alt9/aro48t3_nam2.sh @@ -728,12 +728,12 @@ $NPRTRW_NPRTRV XCRIAUTC_NAM=0.001, XCRIAUTI_NAM=0.0002, XT0CRIAUTI_NAM=-5., + LOCND2=.TRUE., / &NAM_PARAM_MFSHALLn / &NAMPARAR CMICRO='ICE3', - LOCND2=.TRUE., LFPREC3D=.TRUE., LOLSMC=.TRUE., LOSIGMAS=.TRUE., diff --git a/tools/conf_tests/small_3D_alt9/aro48t3_nam3.sh b/tools/conf_tests/small_3D_alt9/aro48t3_nam3.sh index fcf1edb64..b8574ae81 100755 --- a/tools/conf_tests/small_3D_alt9/aro48t3_nam3.sh +++ b/tools/conf_tests/small_3D_alt9/aro48t3_nam3.sh @@ -728,6 +728,7 @@ $NPRTRW_NPRTRV XCRIAUTC_NAM=0.001, XCRIAUTI_NAM=0.0002, XT0CRIAUTI_NAM=-5., + LOCND2=.TRUE., / &NAM_PARAM_MFSHALLN / @@ -738,7 +739,6 @@ $NPRTRW_NPRTRV / &NAMPARAR CMICRO='ICE3', - LOCND2=.TRUE., LFPREC3D=.TRUE., LOLSMC=.TRUE., NPRINTFR=10000, diff --git a/tools/conf_tests/small_3D_alt9/aro48t3_nam4.sh b/tools/conf_tests/small_3D_alt9/aro48t3_nam4.sh index 8e62e2562..817cb151b 100755 --- a/tools/conf_tests/small_3D_alt9/aro48t3_nam4.sh +++ b/tools/conf_tests/small_3D_alt9/aro48t3_nam4.sh @@ -728,6 +728,7 @@ $NPRTRW_NPRTRV XCRIAUTC_NAM=0.001, XCRIAUTI_NAM=0.0002, XT0CRIAUTI_NAM=-5., + LOCND2=.TRUE., / &NAM_PARAM_MFSHALLN / @@ -738,7 +739,6 @@ $NPRTRW_NPRTRV / &NAMPARAR CMICRO='ICE3', - LOCND2=.TRUE., LFPREC3D=.TRUE., LOLSMC=.TRUE., NPRINTFR=10000, diff --git a/tools/conf_tests/small_3D_alt9/aro48t3_nam5.sh b/tools/conf_tests/small_3D_alt9/aro48t3_nam5.sh index ab8f900c0..da67482db 100755 --- a/tools/conf_tests/small_3D_alt9/aro48t3_nam5.sh +++ b/tools/conf_tests/small_3D_alt9/aro48t3_nam5.sh @@ -730,6 +730,7 @@ $NPRTRW_NPRTRV XCRIAUTC_NAM=0.001, XCRIAUTI_NAM=0.0002, XT0CRIAUTI_NAM=-5., + LOCND2=.TRUE., / &NAM_PARAM_MFSHALLN / @@ -740,7 +741,6 @@ $NPRTRW_NPRTRV / &NAMPARAR CMICRO='ICE3', - LOCND2=.TRUE., LFPREC3D=.TRUE., LOLSMC=.TRUE., NPRINTFR=10000, diff --git a/tools/conf_tests/small_3D_alt9/aro48t3_nam6.sh b/tools/conf_tests/small_3D_alt9/aro48t3_nam6.sh index 76f640eeb..14bbd536c 100755 --- a/tools/conf_tests/small_3D_alt9/aro48t3_nam6.sh +++ b/tools/conf_tests/small_3D_alt9/aro48t3_nam6.sh @@ -730,6 +730,7 @@ $NPRTRW_NPRTRV XCRIAUTC_NAM=0.001, XCRIAUTI_NAM=0.0002, XT0CRIAUTI_NAM=-5., + LOCND2=.TRUE., / &NAM_PARAM_MFSHALLN / @@ -740,7 +741,6 @@ $NPRTRW_NPRTRV / &NAMPARAR CMICRO='ICE3', - LOCND2=.TRUE., LFPREC3D=.TRUE., LOLSMC=.TRUE., NPRINTFR=10000, diff --git a/tools/conf_tests/small_3D_alt9/aro48t3_nam7.sh b/tools/conf_tests/small_3D_alt9/aro48t3_nam7.sh index e9a934e92..c18d4527c 100755 --- a/tools/conf_tests/small_3D_alt9/aro48t3_nam7.sh +++ b/tools/conf_tests/small_3D_alt9/aro48t3_nam7.sh @@ -733,6 +733,7 @@ $NPRTRW_NPRTRV XCRIAUTC_NAM=0.001, XCRIAUTI_NAM=0.0002, XT0CRIAUTI_NAM=-5., + LOCND2=.TRUE., / &NAM_PARAM_MFSHALLN / @@ -740,7 +741,6 @@ $NPRTRW_NPRTRV / &NAMPARAR CMICRO='ICE3', - LOCND2=.TRUE., LFPREC3D=.TRUE., LOLSMC=.TRUE., NPRINTFR=10000, diff --git a/tools/conf_tests/small_3D_alt9/aro48t3_nam8.sh b/tools/conf_tests/small_3D_alt9/aro48t3_nam8.sh index e9a934e92..c18d4527c 100755 --- a/tools/conf_tests/small_3D_alt9/aro48t3_nam8.sh +++ b/tools/conf_tests/small_3D_alt9/aro48t3_nam8.sh @@ -733,6 +733,7 @@ $NPRTRW_NPRTRV XCRIAUTC_NAM=0.001, XCRIAUTI_NAM=0.0002, XT0CRIAUTI_NAM=-5., + LOCND2=.TRUE., / &NAM_PARAM_MFSHALLN / @@ -740,7 +741,6 @@ $NPRTRW_NPRTRV / &NAMPARAR CMICRO='ICE3', - LOCND2=.TRUE., LFPREC3D=.TRUE., LOLSMC=.TRUE., NPRINTFR=10000, -- GitLab