/** @file ZT_Profile.cpp @author Brian Magill @creationdate 8/15/2006 $Date:$ $Revision:$ @copyright (©) Copyright 2006 by GATS Inc. 11864 Canon Blvd., Suite 101, Newport News, VA 23606 All Rights Reserved. No part of this software or publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise without the prior written permission of GATS Inc. @brief contains a temperature profile */ #include "ZT_Profile.h" //#include "ValInterp.h" #include "VectorLinInterp.hpp" #include #include using namespace std; ZT_Profile::ZT_Profile(valarray const &z, valarray const &tem) { assert(z.size() == tem.size()); altitude.reserve(z.size() ); temperature.reserve(tem.size() ); for(unsigned long i = 0; i < z.size(); i++) { altitude.push_back(z[i]); temperature.push_back(tem[i]); } hasData = true; } ZT_Profile::ZT_Profile(valarray const &z, valarray const &tem) { assert(z.size() == tem.size()); altitude.reserve(z.size() ); temperature.reserve(tem.size() ); for(unsigned long i = 0; i < z.size(); i++) { altitude.push_back(z[i]); temperature.push_back(tem[i]); } hasData = true; } ZT_Profile::ZT_Profile(std::vector const &z, std::vector const &tem) { assert(z.size() == tem.size()); altitude = z; temperature = tem; hasData = true; } ZT_Profile::ZT_Profile(std::vector const &z, std::vector const &tem) { assert(z.size() == tem.size()); altitude.reserve(z.size() ); temperature.reserve(tem.size() ); for(unsigned long i = 0; i < z.size(); i++) { altitude.push_back(z[i]); temperature.push_back(tem[i]); } hasData = true; } double ZT_Profile::MinAlt() { return *(min_element(altitude.begin(), altitude.end() ) ); } double ZT_Profile::MaxAlt() { return *(max_element(altitude.begin(), altitude.end() ) ); } double ZT_Profile::operator()(double z) { const double ABSOLUTE_ZERO = 0.0; double interpT; VectorLinInterp interpFunc; interpT = interpFunc.Interpol(temperature, altitude, z); if (interpT < ABSOLUTE_ZERO) interpT = ABSOLUTE_ZERO; return interpT; }