LCOV - code coverage report
Current view: top level - air_casawvr/src - taumodel.cc (source / functions) Hit Total Coverage
Test: casacpp_coverage.info Lines: 0 57 0.0 %
Date: 2024-10-28 15:53:10 Functions: 0 15 0.0 %

          Line data    Source code
       1             : /**
       2             :    \file taumodel.cpp
       3             :    
       4             :    Bojan Nikolic <b.nikolic@mrao.cam.ac.uk>, <bojan@bnikolic.co.uk>
       5             :    
       6             :    Renamed taumodel.cc 2023
       7             : 
       8             : */
       9             : 
      10             : #include <cmath>
      11             : #include "taumodel.h"
      12             : #include "tbutils.h"
      13             : 
      14             : namespace LibAIR2 {
      15             : 
      16           0 :   TauModel::TauModel(void):
      17           0 :     n(0.1),
      18           0 :     TPhy(275),
      19           0 :     TBack(2.7),
      20           0 :     TBackRJ(PlanckToRJ(183.3, TBack))
      21             :   {
      22           0 :   }
      23             : 
      24           0 :   double TauModel::eval(size_t ch) const
      25             :   {
      26             :     (void) ch; // use not yet implemented
      27           0 :     return TBackRJ * exp(-n)+ TPhy*(1-exp(-n));
      28             :   }
      29             : 
      30           0 :   void TauModel::eval(std::vector<double> & res) const
      31             :   {
      32           0 :     res.resize(1);
      33           0 :     res[0]=eval(0);
      34           0 :   }
      35             : 
      36           0 :   double TauModel::dTdc (size_t ch) const
      37             :   {
      38             :     (void) ch; // use not yet implemented
      39           0 :     return -1;
      40             :   }
      41             : 
      42           0 :   double TauModel::dTdL_ND (size_t ch) const
      43             :   {
      44             :     (void) ch; // use not yet implemented
      45           0 :     return -1;
      46             :   }
      47             : 
      48           0 :   void TauModel::dTdL_ND(std::vector<double> &res) const
      49             :   {
      50           0 :     res.resize(1);
      51           0 :     res[0]=-1;
      52           0 :   }
      53             :   
      54           0 :   void TauModel::AddParams(std::vector<Minim::DParamCtr> &pars)
      55             :   {
      56           0 :     pars.push_back(Minim::DParamCtr (&n ,      
      57             :                                      "n", 
      58             :                                      true     ,                       
      59             :                                      "Opacity per unit airmass"
      60             :                                       ));
      61             : 
      62           0 :     pars.push_back(Minim::DParamCtr (&TPhy ,      
      63             :                                      "TPhy", 
      64             :                                      true     ,                       
      65             :                                      "Physical temperature"
      66             :                                       ));
      67           0 :   }
      68             : 
      69           0 :   LapseTauModel::LapseTauModel(double Gamma,
      70             :                                double hS,
      71           0 :                                double hT):
      72           0 :     Gamma(Gamma),
      73           0 :     nkappa(1.0/(hS*(1-exp(-hT/hS)))),
      74           0 :     hS(hS)
      75             :   {
      76           0 :   }
      77             :   
      78           0 :   double LapseTauModel::eval(size_t ch) const
      79             :   {
      80             :     (void) ch; // use not yet implemented
      81           0 :     return TBackRJ * exp(-n) + 
      82           0 :       TPhy*(1-exp(-n)) +
      83           0 :       Gamma / ( nkappa * n) * ( 1 - (n+1)*exp(-n));
      84             :   }  
      85             : 
      86           0 :   void LapseTauModel::AddParams(std::vector<Minim::DParamCtr> &pars)
      87             :   {
      88           0 :     TauModel::AddParams(pars);
      89             :     
      90           0 :     pars.push_back(Minim::DParamCtr (&Gamma ,      
      91             :                                      "gamma", 
      92             :                                      false,                       
      93             :                                      "Atmospheric lapse rate"
      94             :                                       ));
      95             : 
      96           0 :   }
      97             : 
      98             : 
      99           0 :   NumLapseTau::NumLapseTau(double Gamma,
     100             :                            double hS,
     101             :                            double hT,
     102           0 :                            size_t nstep):
     103             :     LapseTauModel(Gamma, hS, hT),
     104           0 :     nstep(nstep)
     105             :   {
     106           0 :   }
     107             : 
     108           0 :   double NumLapseTau::htau(double ntau) const
     109             :   {
     110           0 :     return -hS * log( 1- ntau/nkappa/hS);
     111             :   }
     112             : 
     113           0 :   double NumLapseTau::eval(size_t ch) const
     114             :   {
     115             :     (void) ch; // use not yet implemented
     116           0 :     const double deltan = n/nstep;
     117             : 
     118           0 :     double Tt = TBackRJ;
     119           0 :     for (size_t i=0; i < nstep; ++i)
     120             :     {
     121           0 :       const double TLocal=TPhy + Gamma * htau(i*deltan/n);
     122           0 :       Tt= Tt*exp(-deltan) + TLocal*(1-exp(-deltan));
     123             :     }
     124             : 
     125           0 :     return Tt;
     126             :   }
     127             : 
     128           0 :   OffsetTauModel::OffsetTauModel(double nfix):
     129           0 :     nfix(nfix)
     130             :   {
     131           0 :   }
     132             :   
     133           0 :   double OffsetTauModel::eval(size_t ch) const
     134             :   {
     135             :     (void) ch; // use not yet implemented
     136           0 :     const double ntot=nfix+n;
     137           0 :     return TBackRJ * exp(-ntot)+ TPhy*(1-exp(-ntot));
     138             :   }
     139             : 
     140             : }
     141             : 
     142             : 

Generated by: LCOV version 1.16