!-------------------------------------- LICENCE BEGIN ------------------------------------ !Environment Canada - Atmospheric Science and Technology License/Disclaimer, ! version 3; Last Modified: May 7, 2008. !This is free but copyrighted software; you can use/redistribute/modify it under the terms !of the Environment Canada - Atmospheric Science and Technology License/Disclaimer !version 3 or (at your option) any later version that should be found at: !http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html ! !This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; !without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. !See the above mentioned License/Disclaimer for more details. !You should have received a copy of the License/Disclaimer along with this software; !if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec), !CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca !-------------------------------------- LICENCE END -------------------------------------- !SUBROUTINE SUCST(KULOUT) 1,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* C C Revision: C JM Belanger CMDA/SMC Aug 2000 C . 32 bits conversion C (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 C L. Fillion - ARMA/MSC - 5 July 05: Add further thermodynamical constants. C L. Fillion ARMA/MSC May 2006: Mesovar upgrade to v10_0_0. C L. Fillion ARMA/EC - 15 Aug 2007 - Update lam4d to v_10_0_3. C C ------------------------------------------------------------------ IMPLICIT NONE #include "comcst.cdk"
#include "comphy.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 RTRPL = 0.2731600000000E+03 RCHLC = 0.2501000000000E+07 RCHLF = 0.3340000000000E+06 RCHLS = 0.28340000000000E+07 EPS1 = RD/RV EPS2 = 1.d0 - EPS1 DELTA = 1.d0/EPS1 - 1.d0 C C 5.1 liquid phase C RHOW = 1.0e3 C C 5.2 Useful thermodynamic constants C REPSI = RMV/RMD 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 RGZ = 1.0d1*rg RDECAM = 1.D0/RGZ rdeg2rad=rpi/180. rrad2deg=1.D0/rdeg2rad 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 rmaxes = 30.D0 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