Line data Source code
1 : /** 2 : \file layers.cpp 3 : Bojan Nikolic <bn204@mrao.cam.ac.uk>, <bojan@bnikolic.co.uk> 4 : Initial version February 2008 5 : Maintained by ESO since 2013. 6 : 7 : Renamed layers.cc 2023 8 : 9 : */ 10 : 11 : #include "layers.h" 12 : #include "slice.h" 13 : 14 : namespace LibAIR2 { 15 : 16 0 : Layer::Layer(void) 17 : { 18 0 : } 19 : 20 0 : Layer::~Layer(void) 21 : { 22 0 : } 23 : 24 0 : void Layer::addSliceFar(pSlice_t s) 25 : { 26 0 : sliceL.push_front( s); 27 0 : } 28 : 29 0 : void Layer::AddColumn (const Column & c) 30 : { 31 0 : for (sliceL_t::iterator i=sliceL.begin(); 32 0 : i!=sliceL.end(); 33 : i++) 34 : { 35 0 : (*i)->AddColumn(c); 36 : } 37 0 : } 38 : 39 : Layer::sliceL_t::const_iterator 40 0 : Layer::getFar(void) const 41 : { 42 0 : return sliceL.begin(); 43 : } 44 : 45 : Layer::sliceL_t::const_iterator 46 0 : Layer::getEnd(void) const 47 : { 48 0 : return sliceL.end(); 49 : } 50 : 51 0 : const Slice & Layer::getNear(void) const 52 : { 53 0 : return *sliceL.back(); 54 : } 55 : 56 : const double IsoTLayer::slice_dP=5; 57 : 58 0 : IsoTLayer::IsoTLayer(double T, double PBase, double PDrop) 59 : { 60 0 : for ( double c=0; c <= PDrop ; c += slice_dP) 61 : { 62 : double f; 63 0 : if ( c + slice_dP <= PDrop) 64 0 : f=slice_dP/PDrop; 65 : else 66 0 : f=(PDrop-c)/PDrop; 67 : 68 0 : addSliceFar(pSlice_t(new Slice(T, 69 : PBase-c, 70 0 : f))); 71 : } 72 0 : } 73 : 74 0 : void IsoTLayer::setT(double T) 75 : { 76 0 : for (sliceL_t::iterator i=sliceL.begin(); 77 0 : i!=sliceL.end(); 78 : i++) 79 : { 80 0 : (*i)->setT(T); 81 : } 82 0 : } 83 : 84 0 : void IsoTLayer::setP(double P) 85 : { 86 0 : for (sliceL_t::iterator i= sliceL.end(); 87 0 : i!=sliceL.begin(); 88 : i--) 89 : { 90 0 : const double newP= P - (sliceL.end()-i)* slice_dP; 91 0 : (*(i-1))->setP(newP); 92 : } 93 : 94 0 : } 95 : 96 : 97 : 98 : 99 : } 100 : 101 :