Adding more motor manufacturers to MOTORMANUFACTURER enum class and MotorManufacturer struct
This commit is contained in:
		
							parent
							
								
									620cd80fe4
								
							
						
					
					
						commit
						c2979e3118
					
				| @ -77,11 +77,15 @@ public: | |||||||
|    enum class MOTORMANUFACTURER |    enum class MOTORMANUFACTURER | ||||||
|    { |    { | ||||||
|        AEROTECH, |        AEROTECH, | ||||||
|        CESARONI, |  | ||||||
|        LOKI, |  | ||||||
|        AMW, |        AMW, | ||||||
|        ESTES, |  | ||||||
|        APOGEE, |        APOGEE, | ||||||
|  |        CESARONI, | ||||||
|  |        CONTRAIL, | ||||||
|  |        ESTES, | ||||||
|  |        HYPERTEK, | ||||||
|  |        KLIMA, | ||||||
|  |        LOKI, | ||||||
|  |        QUEST, | ||||||
|        UNKNOWN |        UNKNOWN | ||||||
|    }; |    }; | ||||||
| 
 | 
 | ||||||
| @ -138,6 +142,11 @@ public: | |||||||
|             return std::string("OOP"); |             return std::string("OOP"); | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|  |       /**
 | ||||||
|  |        * @brief toEnum returns AVAILABILITY enum from string name | ||||||
|  |        * @param name Name of enum | ||||||
|  |        * @return AVAILABILITY enum corresponding to name | ||||||
|  |        */ | ||||||
|       static AVAILABILITY toEnum(const std::string& name) |       static AVAILABILITY toEnum(const std::string& name) | ||||||
|       { |       { | ||||||
|          if(name == "regular") |          if(name == "regular") | ||||||
| @ -182,6 +191,12 @@ public: | |||||||
|          else // UNK - Unknown
 |          else // UNK - Unknown
 | ||||||
|             return std::string("Unkown"); |             return std::string("Unkown"); | ||||||
|       } |       } | ||||||
|  | 
 | ||||||
|  |       /**
 | ||||||
|  |        * @brief toEnum returns CERTORG enum corresponding to name | ||||||
|  |        * @param name Name of enumeration | ||||||
|  |        * @return enumeration value corresponding to name | ||||||
|  |        */ | ||||||
|       static CERTORG toEnum(const std::string& name) |       static CERTORG toEnum(const std::string& name) | ||||||
|       { |       { | ||||||
|          if(name == "AMRS") |          if(name == "AMRS") | ||||||
| @ -229,6 +244,12 @@ public: | |||||||
|          else |          else | ||||||
|             return std::string("Hybrid"); |             return std::string("Hybrid"); | ||||||
|       } |       } | ||||||
|  | 
 | ||||||
|  |       /**
 | ||||||
|  |        * @brief toEnum returns enumeration corresponding to name | ||||||
|  |        * @param name Name of enumeration | ||||||
|  |        * @return enumeration corresponding to name | ||||||
|  |        */ | ||||||
|       static MOTORTYPE toEnum(const std::string& name) |       static MOTORTYPE toEnum(const std::string& name) | ||||||
|       { |       { | ||||||
|          if(name == "SU" || |          if(name == "SU" || | ||||||
| @ -278,26 +299,51 @@ public: | |||||||
|             return std::string("Loki"); |             return std::string("Loki"); | ||||||
|          case MOTORMANUFACTURER::APOGEE: |          case MOTORMANUFACTURER::APOGEE: | ||||||
|             return std::string("Apogee"); |             return std::string("Apogee"); | ||||||
|  |          case MOTORMANUFACTURER::CONTRAIL: | ||||||
|  |             return std::string("Contrail"); | ||||||
|  |          case MOTORMANUFACTURER::HYPERTEK: | ||||||
|  |             return std::string("Hypertek"); | ||||||
|  |          case MOTORMANUFACTURER::KLIMA: | ||||||
|  |             return std::string("Klima"); | ||||||
|  |          case MOTORMANUFACTURER::QUEST: | ||||||
|  |             return std::string("Quest"); | ||||||
|          case MOTORMANUFACTURER::UNKNOWN: |          case MOTORMANUFACTURER::UNKNOWN: | ||||||
|          default: |          default: | ||||||
|             return std::string("Unknown"); |             return std::string("Unknown"); | ||||||
|          } |          } | ||||||
|       } |       } | ||||||
|  | 
 | ||||||
|  |       /**
 | ||||||
|  |        * @brief toEnum returns MOTORMANUFACTURER enum value corresponding to a name | ||||||
|  |        * @param name Name of enumeration | ||||||
|  |        * @return enumeration corresponding to name | ||||||
|  |        */ | ||||||
|       static MOTORMANUFACTURER toEnum(const std::string& name) |       static MOTORMANUFACTURER toEnum(const std::string& name) | ||||||
|       { |       { | ||||||
|          if(name == "AeroTech" || |          if(name == "AeroTech" || | ||||||
|              name == "Aerotech") |              name == "Aerotech") | ||||||
|             return MOTORMANUFACTURER::AEROTECH; |             return MOTORMANUFACTURER::AEROTECH; | ||||||
|          else if(name == "AMW") |          else if(name == "AMW" || | ||||||
|  |                  name == "Animal Motor Works") | ||||||
|             return MOTORMANUFACTURER::AMW; |             return MOTORMANUFACTURER::AMW; | ||||||
|          else if(name == "Cesaroni") |          else if(name == "Cesaroni" || | ||||||
|  |                  name == "Cesaroni Technology Inc.") | ||||||
|             return MOTORMANUFACTURER::CESARONI; |             return MOTORMANUFACTURER::CESARONI; | ||||||
|          else if(name == "Estes") |          else if(name == "Estes" || | ||||||
|  |                  name == "Estes Industries, Inc.") | ||||||
|             return MOTORMANUFACTURER::ESTES; |             return MOTORMANUFACTURER::ESTES; | ||||||
|          else if(name == "Loki") |          else if(name == "Loki") | ||||||
|             return MOTORMANUFACTURER::LOKI; |             return MOTORMANUFACTURER::LOKI; | ||||||
|          else if(name == "Apogee") |          else if(name == "Apogee") | ||||||
|             return MOTORMANUFACTURER::APOGEE; |             return MOTORMANUFACTURER::APOGEE; | ||||||
|  |          else if(name == "Contrail") | ||||||
|  |             return MOTORMANUFACTURER::CONTRAIL; | ||||||
|  |          else if(name == "Hypertek") | ||||||
|  |             return MOTORMANUFACTURER::HYPERTEK; | ||||||
|  |          else if(name == "Klima") | ||||||
|  |             return MOTORMANUFACTURER::QUEST; | ||||||
|  |          else if(name == "Quest") | ||||||
|  |             return MOTORMANUFACTURER::KLIMA; | ||||||
|          else |          else | ||||||
|             return MOTORMANUFACTURER::UNKNOWN; |             return MOTORMANUFACTURER::UNKNOWN; | ||||||
|       } |       } | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ | |||||||
| // C headers
 | // C headers
 | ||||||
| // C++ headers
 | // C++ headers
 | ||||||
| #include <memory> | #include <memory> | ||||||
|  | #include <string> | ||||||
| #include <utility> // std::move | #include <utility> // std::move | ||||||
| 
 | 
 | ||||||
| // 3rd party headers
 | // 3rd party headers
 | ||||||
| @ -12,6 +13,7 @@ | |||||||
| 
 | 
 | ||||||
| // qtrocket headers
 | // qtrocket headers
 | ||||||
| #include "model/ThrustCurve.h" | #include "model/ThrustCurve.h" | ||||||
|  | #include "model/MotorModel.h" | ||||||
| #include "sim/Propagator.h" | #include "sim/Propagator.h" | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| @ -26,31 +28,93 @@ public: | |||||||
|     */ |     */ | ||||||
|    Rocket(); |    Rocket(); | ||||||
| 
 | 
 | ||||||
|  |     /**
 | ||||||
|  |     * @brief launch Propagates the Rocket object until termination, | ||||||
|  |     *        normally when altitude crosses from positive to negative | ||||||
|  |     */ | ||||||
|    void launch(); |    void launch(); | ||||||
|  | 
 | ||||||
|  |    /**
 | ||||||
|  |     * @brief getStates returns a vector of time/state pairs generated during launch() | ||||||
|  |     * @return vector of pairs of doubles, where the first value is a time and the second a state vector | ||||||
|  |     */ | ||||||
|    const std::vector<std::pair<double, std::vector<double>>>& getStates() const { return propagator.getStates(); } |    const std::vector<std::pair<double, std::vector<double>>>& getStates() const { return propagator.getStates(); } | ||||||
| 
 | 
 | ||||||
|  |    /**
 | ||||||
|  |     * @brief setInitialState sets the initial state of the Rocket. | ||||||
|  |     * @param initState initial state vector (x, y, z, xDot, yDot, zDot, pitch, yaw, roll, pitchDot, yawDot, rollDot) | ||||||
|  |     */ | ||||||
|    void setInitialState(const std::vector<double>& initState) { propagator.setInitialState(initState); } |    void setInitialState(const std::vector<double>& initState) { propagator.setInitialState(initState); } | ||||||
| 
 | 
 | ||||||
|  |    /**
 | ||||||
|  |     * @brief getMass returns the current mass of the rocket. This is the sum of all components' masses | ||||||
|  |     * @return total current mass of the Rocket | ||||||
|  |     */ | ||||||
|    double getMass() const { return mass; } |    double getMass() const { return mass; } | ||||||
|  | 
 | ||||||
|  |    /**
 | ||||||
|  |     * @brief setMass sets the current total mass of the Rocket | ||||||
|  |     * @param m total Rocket mass | ||||||
|  |     * @todo This should be dynamically computed, not set. Fix this | ||||||
|  |     */ | ||||||
|    void setMass(double m) { mass = m;} |    void setMass(double m) { mass = m;} | ||||||
| 
 | 
 | ||||||
|  |    /**
 | ||||||
|  |     * @brief setDragCoefficient sets the current total drag coefficient of the Rocket | ||||||
|  |     * @param d drag coefficient | ||||||
|  |     * @todo This should be dynamically computed, not set. Fix this | ||||||
|  |     */ | ||||||
|    void setDragCoefficient(double d) { dragCoeff = d; } |    void setDragCoefficient(double d) { dragCoeff = d; } | ||||||
|  | 
 | ||||||
|  |    /**
 | ||||||
|  |     * @brief getDragCoefficient returns the current drag coefficient | ||||||
|  |     * | ||||||
|  |     * This is intended to be called by the propagator during propagation. | ||||||
|  |     * @return the coefficient of drag | ||||||
|  |     */ | ||||||
|    double getDragCoefficient() const { return dragCoeff; } |    double getDragCoefficient() const { return dragCoeff; } | ||||||
| 
 | 
 | ||||||
|  |    /**
 | ||||||
|  |     * @brief getThrust returns current motor thrust | ||||||
|  |     * @param t current simulation time | ||||||
|  |     * @return thrust in Newtons | ||||||
|  |     */ | ||||||
|    double getThrust(double t); |    double getThrust(double t); | ||||||
|  | 
 | ||||||
|  |    /**
 | ||||||
|  |     * @brief setThrustCurve sets the current thrust curve | ||||||
|  |     * @param curve | ||||||
|  |     * @todo Remove this | ||||||
|  |     */ | ||||||
|    void setThrustCurve(const ThrustCurve& curve); |    void setThrustCurve(const ThrustCurve& curve); | ||||||
| 
 | 
 | ||||||
|  |    /**
 | ||||||
|  |     * @brief setMotorModel | ||||||
|  |     * @param motor | ||||||
|  |     */ | ||||||
|  |    void setMotorModel(const model::MotorModel& motor); | ||||||
|  | 
 | ||||||
|  |    /**
 | ||||||
|  |     * @brief terminateCondition returns true or false, whether the passed-in time/state matches the terminate condition | ||||||
|  |     * @param cond time/state pair | ||||||
|  |     * @return true if the passed-in time/state satisfies the terminate condition | ||||||
|  |     */ | ||||||
|    bool terminateCondition(const std::pair<double, std::vector<double>>& cond); |    bool terminateCondition(const std::pair<double, std::vector<double>>& cond); | ||||||
| 
 | 
 | ||||||
|  |    /**
 | ||||||
|  |     * @brief setName sets the rocket name | ||||||
|  |     * @param n name to set the Rocket | ||||||
|  |     */ | ||||||
|    void setName(const std::string& n) { name = n; } |    void setName(const std::string& n) { name = n; } | ||||||
| private: | private: | ||||||
| 
 | 
 | ||||||
|    std::string name; |    std::string name; /// Rocket name
 | ||||||
|    sim::Propagator propagator; |    sim::Propagator propagator; /// propagator
 | ||||||
|    double dragCoeff; |    double dragCoeff; /// @todo get rid of this, should be dynamically calculated
 | ||||||
|    double mass; |    double mass; /// @todo get rid of this, should be dynamically computed, but is the current rocket mass
 | ||||||
| 
 | 
 | ||||||
|    ThrustCurve tc; |    model::MotorModel mm; /// Current Motor Model
 | ||||||
|  |    ThrustCurve tc; /// @todo get rid of this, should be returned from the MotorModel
 | ||||||
| 
 | 
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,8 +7,6 @@ | |||||||
| #include <vector> | #include <vector> | ||||||
| 
 | 
 | ||||||
| // 3rd party headers
 | // 3rd party headers
 | ||||||
| #include <boost/archive/text_iarchive.hpp> |  | ||||||
| #include <boost/archive/text_oarchive.hpp> |  | ||||||
| /// \endcond
 | /// \endcond
 | ||||||
| 
 | 
 | ||||||
| class ThrustCurve | class ThrustCurve | ||||||
| @ -59,27 +57,14 @@ public: | |||||||
|    void setIgnitionTime(double t); |    void setIgnitionTime(double t); | ||||||
| 
 | 
 | ||||||
|    /**
 |    /**
 | ||||||
|  * TODO: Get rid of this. This is for temporary testing |     * TODO: Get rid of this. This is for temporary testing | ||||||
|  */ |     */ | ||||||
|    void setThrustCurveVector(const std::vector<std::pair<double, double>>& v); |    void setThrustCurveVector(const std::vector<std::pair<double, double>>& v); | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| private: | private: | ||||||
|    // We're using boost::serialize for data storage and retrieval
 |  | ||||||
|    friend class boost::serialization::access; |  | ||||||
|    template<class Archive> |  | ||||||
|    void serialize(Archive& ar, const unsigned int version); |  | ||||||
| 
 |  | ||||||
|    std::vector<std::pair<double, double>> thrustCurve; |    std::vector<std::pair<double, double>> thrustCurve; | ||||||
|    double maxTime{0.0}; |    double maxTime{0.0}; | ||||||
|    double ignitionTime{0.0}; |    double ignitionTime{0.0}; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| template<class Archive> |  | ||||||
| void ThrustCurve::serialize(Archive& ar, const unsigned int version) |  | ||||||
| { |  | ||||||
|    ar & maxTime; |  | ||||||
|    ar & thrustCurve; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #endif // MODEL_THRUSTCURVE_H
 | #endif // MODEL_THRUSTCURVE_H
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user