SUBROUTINE SUCST(KULOUT) 1 C C**** *SUCST * - Routine to initialize the constants of the model. C C Purpose. C -------- C Initialize and print the common YOMCST C C Author. C ------- C Mats Hamrud and Philippe Courtier *ECMWF* * * Revision: * JM Belanger CMDA/SMC Aug 2000 * . 32 bits conversion * (enforce double precision constants) C C Modifications. C -------------- C Original : 87-10-15 C Additions : 90-07-30 (J.-F. Geleyn) C Modifications: 92-05-15 (P. Gauthier *ARMA/AES) C 94-03-10 (p. KOCLAS CMC/CMDA) RPECIS (NEC) C 97-11-24 (p. KOCLAS CMC/CMDA) NR8SIZ C 98-11-19 (c.charette *ARMA/AES) RMBTPA,RPATMB. C Initialize thermodynamics constants. C RG,RD changed to match GRAV,RGASD C from thermodynamics constants C S. Pellerin *ARMA/SMC May 2000 C . introduction of specific humidity threshold and C t-td max C Y.J. Rochon *ARQX/EC April 2006 (in 3D-Var-Chem) C . Changed value of RMINHU to 1E-7 kg/kg following C agreement between Pierre Gauthier, Simon Chabrillat, C Jean de Grandpre, Martin Charron, Cecilien Charette, C Alain Robichaud, Stephane Laroche, and Yves J. Rochon. C Y.J. Rochon *ARQX/EC Feb 2010 C . Changed value of RMINHU back to 2.5E-6 for consistency C with operational 3D-Var. C C ------------------------------------------------------------------ IMPLICIT NONE #include "comcst.cdk"
INTEGER KULOUT INTEGER QQQR8SZ C ----------------------------------------------------------------- C C* 1. Define fundamental constants. C . ----------------------------- C 100 CONTINUE C WRITE(UNIT=KULOUT,FMT='(//,4x S ,"- SUCST: definition of Physical constants ***",/)') RPI=2.0D0*ASIN(1.0D0) RCLUM=299792458.D0 RHPLA=6.6260755D-34 RKBOL=1.380658D-23 RNAVO=6.0221367D+23 WRITE(UNIT=KULOUT,FMT='(/," *** FUNDAMENTAL CONSTANTS ***")') WRITE(UNIT=KULOUT,FMT='(" PI = ",E13.7," -")')RPI WRITE(UNIT=KULOUT,FMT='(" c = ",E13.7,"m s-1")') S RCLUM WRITE(UNIT=KULOUT,FMT='(" h = ",E13.7,"J s")') S RHPLA WRITE(UNIT=KULOUT,FMT='(" K = ",E13.7,"J K-1")') S RKBOL WRITE(UNIT=KULOUT,FMT='(" N = ",E13.7,"mol-1")') S RNAVO C C ---------------------------------------------------------------- C C* 2. DEFINE ASTRONOMICAL CONSTANTS. C ------------------------------ C 200 CONTINUE C RDAY=86400.D0 REA=149597870000.D0 REPSM=0.409093D0 C RSIYEA=365.25D0*RDAY*2.*RPI/6.283076D0 RSIDAY=RDAY/(1.D0+RDAY/RSIYEA) ROMEGA=2.D0*RPI/RSIDAY C WRITE(UNIT=KULOUT,FMT='(" *** ASTRONOMICAL CONSTANTS ***")') WRITE(UNIT=KULOUT,FMT='(" Day (RDAY) = " S ,E13.7," s")')RDAY WRITE(UNIT=KULOUT,FMT='(" Half g. Axis (REA) = " S ,E13.7," m")')REA WRITE(UNIT=KULOUT,FMT='(" Mean Anomaly (REPSM) = " S ,E13.7," -")')REPSM WRITE(UNIT=KULOUT,FMT='(" Sideral Year (RSIYEA) = " S ,E13.7," s")')RSIYEA WRITE(UNIT=KULOUT,FMT='(" Sideral Day (RSIDAY) = " S ,E13.7," s")')RSIDAY WRITE(UNIT=KULOUT,FMT='(" Omega (ROMEGA) = " S ,E13.7," s-1")')ROMEGA C C C* 3. Define geoid C . ------------ C 300 CONTINUE C RG=9.80616D0 RA=6371229.D0 cjmb R1SA=SNGL(1.D0/DBLE(RA)) R1SA=1.D0/DBLE(RA) C WRITE(UNIT=KULOUT,FMT='(" *** GEOID ***")') WRITE(UNIT=KULOUT,FMT='(" Gravity (RG) = " S ,E13.7," m s-2")') RG WRITE(UNIT=KULOUT,FMT='(" Earth radius (RA) = " S ,E13.7," m")')RA WRITE(UNIT=KULOUT,FMT='(" Inverse E.R. (R1SA) = " S ,E13.7," m")')R1SA C C* 4. Define radiation constants. C . --------------------------- 400 CONTINUE C RSIGMA = 5.66961D-8 RI0=1370.D0 C WRITE(UNIT=KULOUT,FMT='(" *** RADIATION ***")') WRITE(UNIT=KULOUT,FMT='(" Stefan-Bol. (RSIGMA) = " S ,E13.7," W m-2 K-4")') RSIGMA WRITE(UNIT=KULOUT,FMT='(" Solar const. (RIO) = " S ,E13.7," W m-2")') RI0 C C* 5. Define thermodynamic constants, gas phase. C . ------------------------------------------ C 500 CONTINUE C R = RNAVO*RKBOL RMD = 28.9644D0 RMV = 18.0153D0 ccc RD = 1000.D0*R/RMD RD = 287.05D0 RV = 1000.D0*R/RMV RCPD = 3.5D0*RD RCVD = RCPD-RD RCPV = 4.D0 *RV RCVV = RCPV-RV RKAPPA = RD/RCPD RETV = RV/RD-1.D0 RHO_STP = 1.293D0 RDCJ = 8.31D0 RAV = 6.023D23 C C 6. Definition of constants used in units conversion C . ------------------------------------------------ C 600 CONTINUE RKNTMS = 1.94246D0 cjmb RMSKNT = SNGL(1.D0/DBLE(RKNTMS)) RMSKNT = 1.D0/DBLE(RKNTMS) RMBTPA = 1.0D2 RPATMB = 1.0D-2 C WRITE(UNIT=KULOUT,FMT='(" *** THERMODYNAMIC, GAS ***")') WRITE(UNIT=KULOUT,FMT='(" Perfect gas (R) = " S ,e13.7)') R WRITE(UNIT=KULOUT,FMT='(" Dry air mass (RMD) = " S ,e13.7)') RMD WRITE(UNIT=KULOUT,FMT='(" Vapour mass (RMV) = " S ,e13.7)') RMV WRITE(UNIT=KULOUT,FMT='(" Dry air cst. (RD) = " S ,e13.7)') RD WRITE(UNIT=KULOUT,FMT='(" Vapour cst. (RV) = " S ,e13.7)') RV WRITE(UNIT=KULOUT,FMT='(" Cpd (RCPD) = " S ,e13.7)') RCPD WRITE(UNIT=KULOUT,FMT='(" Cvd (RCVD) = " S ,e13.7)') RCVD WRITE(UNIT=KULOUT,FMT='(" Cpv (RCPV) = " S ,e13.7)') RCPV WRITE(UNIT=KULOUT,FMT='(" Cvv (RCVV) = " S ,e13.7)') RCVV WRITE(UNIT=KULOUT,FMT='(" Rd/Cpd (RKAPPA) = " S ,e13.7)') RKAPPA WRITE(UNIT=KULOUT,FMT='(" Rv/Rd-1 (RETV) = " S ,e13.7)') RETV WRITE(UNIT=KULOUT,FMT=9600)RKNTMS,RMSKNT 9600 FORMAT(/,6X,'RKNTMS (winds from M/S to Knots) : ', S G12.6,/,6X,'RMSKNT (winds from Knots to M/S) : ', S G12.6) WRITE(UNIT=KULOUT,FMT=9610)RMBTPA,RPATMB 9610 FORMAT(/,6X,'RMBTMA (pressure from millibar to pascal) : ', S G12.6,/,6X,'RPATMB (pressure from pascal to millibar) : ', S G12.6) C C 7. Definition of constants used in thermodynamics conversion C . ---------------------------------------------- 700 CONTINUE WRITE(UNIT=KULOUT,FMT=9620) 9620 FORMAT(/,6X,'Initialize thermodynamics constants from physics ', S /,6x,'and store in comdeck comphy.cdk ') C CALL INCTPHYV C rminhu = 2.5D-6 cyjr rminhu = 1.0D-7 rmaxes = 30.D0 C C 8. Constants associated with the machine accuracy C . ---------------------------------------------- 800 CONTINUE NR8SIZ=QQQR8SZ() #if defined (C910) RINFINI = 1.D+35 RZERO = 1.D-35 RPRECIS = 1.D-6 #else RINFINI = 1.D+75 RZERO = 1.D-79 RPRECIS = 1.D-12 #endif RETURN END