#ifndef __SOFIE_ASSEMBLE_ZTP_PROFILE_2006_08_23__ #define __SOFIE_ASSEMBLE_ZTP_PROFILE_2006_08_23__ /** @file Assemble_ZPT.h @author Brian Magill @creationdate 8/23/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 Assembles ZPT profile from time, Ephemeris, Solar Flux, and NCEP data */ #include #include #include "SolarFlux.h" #include "EphemData.h" class Assemble_ZPT { private: std::valarray altitude; std::valarray temperature; std::valarray pressure; std::valarray xRatioAlt; std::valarray xRatio_O; std::valarray xRatio_O2; std::valarray xRatio_N2; bool hasData; void Check_NCEP(std::valarray const & z_ncep, std::valarray const & p_ncep, std::valarray const & t_ncep); public: Assemble_ZPT() {hasData = false;}; Assemble_ZPT(long date, double sec, SolarFlux const & flux, EphemData const & ephemstd, std::valarray const & z_ncep, std::valarray const & p_ncep, std::valarray const & t_ncep ); Assemble_ZPT(Assemble_ZPT const &rhs) { altitude.resize(rhs.altitude.size() ); temperature.resize(rhs.temperature.size() ); pressure.resize(rhs.pressure.size() ); xRatioAlt.resize(rhs.xRatioAlt.size() ); xRatio_O.resize(rhs.xRatio_O.size() ); xRatio_O2.resize(rhs.xRatio_O2.size() ); xRatio_N2.resize(rhs.xRatio_N2.size() ); altitude = rhs.altitude; temperature = rhs.temperature; pressure = rhs.pressure; xRatioAlt = rhs.xRatioAlt; xRatio_O = rhs.xRatio_O; xRatio_O2 = rhs.xRatio_O2; xRatio_N2 = rhs.xRatio_N2; hasData = rhs.hasData; } Assemble_ZPT& operator = (Assemble_ZPT const &rhs) { if(&rhs == this) return *this; altitude.resize(rhs.altitude.size() ); temperature.resize(rhs.temperature.size() ); pressure.resize(rhs.pressure.size() ); xRatioAlt.resize(rhs.xRatioAlt.size() ); xRatio_O.resize(rhs.xRatio_O.size() ); xRatio_O2.resize(rhs.xRatio_O2.size() ); xRatio_N2.resize(rhs.xRatio_N2.size() ); altitude = rhs.altitude; temperature = rhs.temperature; pressure = rhs.pressure; hasData = rhs.hasData; xRatioAlt = rhs.xRatioAlt; xRatio_O = rhs.xRatio_O; xRatio_O2 = rhs.xRatio_O2; xRatio_N2 = rhs.xRatio_N2; return *this; } ~Assemble_ZPT() {}; bool HasData() { return hasData; }; std::valarray getAltitude( ) { return altitude; }; std::valarray getTemperature( ) { return temperature; }; std::valarray getPressure( ) { return pressure; }; void getAltitude(std::valarray & z ); void getTemperature(std::valarray & tem ); void getPressure(std::valarray & press); void getXRatioAlt(std::valarray & z ); void getxRatio_O(std::valarray & specie ); void getxRatio_O2(std::valarray & specie ); void getxRatio_N2(std::valarray & specie ); }; #endif