!! Constant values and factors for the conversion from ! non SI units to SI units !|author: Giovanni Ravazzani ! license: GPL ! !### History ! ! current version 1.1 - 20th July 2018 ! ! | version | date | comment | ! |----------|-------------|----------| ! | 1.0 | 09/Jul/2008 | Original code | ! | 1.1 | 20/Jul/2018 | added NaN | ! ! !### License ! license: GNU GPL ! ! This file is part of ! ! MOSAICO -- MOdular library for raSter bAsed hydrologIcal appliCatiOn. ! ! Copyright (C) 2011 Giovanni Ravazzani ! !### Code Description ! Language: Fortran 90. ! ! Software Standards: "European Standards for Writing and ! Documenting Exchangeable Fortran 90 Code". ! !### Module Description ! It provides constant values and factor for the conversion from ! non SI units to SI units ! ! References and Credits: ! SI_units module by Grant W. Petty. ! MODULE Units ! Modules used: ! USE DataTypeSizes, ONLY : & ! Imported Parameters: float, double, short IMPLICIT NONE ! Global (i.e. public) Declarations: ! Constants of nature REAL(KIND = double), PUBLIC, PARAMETER :: pi = 3.141592653589793_double REAL(KIND = double), PUBLIC, PARAMETER :: speedOfLight = 2.99792458E+8_double !! (m/s) REAL(KIND = float ), PUBLIC, PARAMETER :: stefanBoltzman = 5.670367E-8_float !! ( watt/ (m2 * kelvin) ) REAL(KIND = float ), PUBLIC, PARAMETER :: gravityAccel = 9.80665_float !( m/s2 ) REAL(KIND = float ), PUBLIC, PARAMETER :: icePoint = 273.15_float !( k ) REAL(KIND = float ), PUBLIC, PARAMETER :: waterTriplePoint = 273.16_float !( k ) ! Units of length [m] REAL(KIND = double), PUBLIC, PARAMETER :: angstrom = 1E-10_double REAL(KIND = double), PUBLIC, PARAMETER :: micron = 1E-6_double REAL(KIND = float ), PUBLIC, PARAMETER :: millimeter = 1E-3_float REAL(KIND = float ), PUBLIC, PARAMETER :: mm = 1E-3_float !abbreviation REAL(KIND = float ), PUBLIC, PARAMETER :: centimeter = 1E-2_float REAL(KIND = float ), PUBLIC, PARAMETER :: cm = 1E-2_float !abbreviation REAL(KIND = float ), PUBLIC, PARAMETER :: kilometer = 1E+3_float REAL(KIND = float ), PUBLIC, PARAMETER :: km = 1E+3_float !abbreviation REAL(KIND = float ), PUBLIC, PARAMETER :: nauticalMile = 1.852E+3_float REAL(KIND = float ), PUBLIC, PARAMETER :: inch = 2.54 * cm REAL(KIND = float ), PUBLIC, PARAMETER :: foot = 12.0 * inch REAL(KIND = float ), PUBLIC, PARAMETER :: yard = 3.0 * foot REAL(KIND = float ), PUBLIC, PARAMETER :: mile = 5280.0 * foot ! Units of area [m2] REAL(KIND = float ), PUBLIC, PARAMETER :: squareMillimeter = millimeter ** 2_float REAL(KIND = float ), PUBLIC, PARAMETER :: mm2 = millimeter ** 2_float !abbreviation REAL(KIND = float ), PUBLIC, PARAMETER :: squareCentimeter = centimeter ** 2_float REAL(KIND = float ), PUBLIC, PARAMETER :: cm2 = centimeter ** 2_float !abbreviation REAL(KIND = float ), PUBLIC, PARAMETER :: squareKilometer = kilometer ** 2_float REAL(KIND = float ), PUBLIC, PARAMETER :: km2 = kilometer ** 2_float !abbreviation REAL(KIND = float ), PUBLIC, PARAMETER :: hectare = 1E+4_float REAL(KIND = float ), PUBLIC, PARAMETER :: ha = 1E+4_float !abbreviation REAL(KIND = float ), PUBLIC, PARAMETER :: squareInch = inch ** 2_float REAL(KIND = float ), PUBLIC, PARAMETER :: squareFoot = foot ** 2_float REAL(KIND = float ), PUBLIC, PARAMETER :: squareYard = yard ** 2_float REAL(KIND = float ), PUBLIC, PARAMETER :: squareMile = mile ** 2_float REAL(KIND = float ), PUBLIC, PARAMETER :: acre = 4356_float * squareFoot ! Units of volume [m3] REAL(KIND = float ), PUBLIC, PARAMETER :: liter = 1E-3_float REAL(KIND = float ), PUBLIC, PARAMETER :: cubicCentimeter = centimeter ** 3_float REAL(KIND = float ), PUBLIC, PARAMETER :: cc = centimeter ** 3_float !abbreviation REAL(KIND = float ), PUBLIC, PARAMETER :: milliLiter = centimeter ** 3_float !synonym REAL(KIND = float ), PUBLIC, PARAMETER :: cubicInch = inch ** 3_float REAL(KIND = float ), PUBLIC, PARAMETER :: cubicFoot = foot ** 3_float REAL(KIND = float ), PUBLIC, PARAMETER :: imperialGallon = 4.54609_float * liter REAL(KIND = float ), PUBLIC, PARAMETER :: usaGallon = 3.785412_float * liter REAL(KIND = float ), PUBLIC, PARAMETER :: quart = usaGallon / 4_float REAL(KIND = float ), PUBLIC, PARAMETER :: pint = usaGallon / 8_float REAL(KIND = float ), PUBLIC, PARAMETER :: cup = usaGallon / 16_float REAL(KIND = float ), PUBLIC, PARAMETER :: ounce = usaGallon / 128_float REAL(KIND = float ), PUBLIC, PARAMETER :: tableSpoon = usaGallon / 256_float REAL(KIND = float ), PUBLIC, PARAMETER :: teaSpoon = usaGallon / 768_float ! Units of time [s] REAL(KIND = float ), PUBLIC, PARAMETER :: minute = 60_float REAL(KIND = float ), PUBLIC, PARAMETER :: hour = 60_float * minute REAL(KIND = float ), PUBLIC, PARAMETER :: day = 24_float * hour REAL(KIND = float ), PUBLIC, PARAMETER :: week = 7_float * day REAL(KIND = float ), PUBLIC, PARAMETER :: month = 30.416666667_float * day REAL(KIND = float ), PUBLIC, PARAMETER :: year = 365_float * day ! Conversion factor REAL(KIND = float), PUBLIC, PARAMETER :: degToRad = pi / 180_float !!Degree to radians REAL(KIND = float), PUBLIC, PARAMETER :: radToDeg = 180_float / pi !!Degree to radians !NaN values REAL (KIND = float), PUBLIC, PARAMETER ::NaNreal = -9999.9 INTEGER (KIND = short), PUBLIC, PARAMETER ::NaNint = -9999 END MODULE Units