LCOV - code coverage report
Current view: top level - air_casawvr/src - basicphys.h (source / functions) Hit Total Coverage
Test: casacpp_coverage.info Lines: 5 5 100.0 %
Date: 2024-11-06 17:42:47 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /**
       2             :    Bojan Nikolic <bn204@mrao.cam.ac.uk>, <bojan@bnikolic.co.uk>
       3             :    Initial version February 2008
       4             :    Maintained by ESO since 2013.
       5             : 
       6             :    This file is part of LibAIR and is licensed under GNU Public
       7             :    License Version 2
       8             : 
       9             :    \file basicphys.hpp
      10             :    Renamed basicphys.h 2023
      11             : 
      12             :    Basic physics definitions
      13             : */
      14             : 
      15             : #ifndef _LIBAIR_BASICPHYS_HPP__
      16             : #define _LIBAIR_BASICPHYS_HPP__
      17             : 
      18             : #include <cmath>
      19             : 
      20             : namespace LibAIR2 {
      21             : 
      22             :   /**
      23             :      Value taken from the "am" program. Units [K * cm^2 * GHz^3 /
      24             :      watt].
      25             :    */
      26             :   const double CSquared_On_TwoK = 1.0/3.0723613e-17;
      27             : 
      28             :   /** Conversion of mm of perciptible water vapour to molecules per cm
      29             :       squared.
      30             :    */
      31             :   const double pmw_mm_to_n = 3.3427e21;
      32             : 
      33             :   /** Molecular mass of the main isotope of water, in atomic mass
      34             :       units.
      35             :    */
      36             :   const double h2o_1_mass_amu = 18.0105646863;
      37             : 
      38             :   /**
      39             :      Atomic mass unit in terms of kilograms.
      40             :    */
      41             :   const double amu_kg = 1.660538782e-27;
      42             : 
      43             :   /**  Constants for standard dry air equation of state
      44             :    */
      45             :   namespace STP2 {
      46             :     /** Loschmidt constant [cm^-3] (IUPAP 1987) */
      47             :     const double N_STP = 2.686763e19;
      48             : 
      49             :     /** Standard temperature  [K] */
      50             :     const double T_STP = 273.15;
      51             :     
      52             :     /** Standard pressure  [mbar] */ 
      53             :     const double P_STP =        1013.25         ; 
      54             :   }
      55             : 
      56             : 
      57             :   /**
      58             :      Computes:
      59             :      \f$
      60             :      \frac{2h}{c^2} \frac{\nu^3}{e^{\frac{h\nu}{kT}-1}}
      61             :      \f$
      62             :    */
      63             :   template<class fT>
      64  3180215440 :   fT BPlanck( fT f, 
      65             :               fT T)
      66             :   {
      67  3180215440 :     const fT  TWOH_ON_CSQUARED = 1.4744992e-18;
      68  3180215440 :     const fT  H_ON_K           = 4.7992375e-2;
      69             : 
      70  3180215440 :     return TWOH_ON_CSQUARED * f*(f*f) /
      71  3180215440 :       ( exp( H_ON_K / T * f) -1 );
      72             : 
      73             :   }
      74             : 
      75             :   /**
      76             :      Converts water column c to extra path. c is in mm, path is mm.
      77             :      
      78             :      Equation taken from Alison Stirling's memo #496-1.
      79             :    */
      80             :   double SW_WaterToPath_Simplified( double c, 
      81             :                                     double T);
      82             : 
      83             :   /** \brief Compute the absolute humidity from relative humdity,
      84             :      pressure and temperature
      85             : 
      86             :      The current implementation of this function is after the atm
      87             :      program.
      88             :      
      89             :      \param rh relative humidity as a fraction
      90             :      \param T  Temperature of air in K
      91             :      \param P  Pressure of air in mBar
      92             : 
      93             :      \return absolue humidity in g/m^3
      94             :    */
      95             :   double AbsHum(double rh,
      96             :                 double T,
      97             :                 double P);
      98             : 
      99             : }
     100             : 
     101             : #endif

Generated by: LCOV version 1.16