diff --git a/systems_design/src/standardSystemsDesign.cpp b/systems_design/src/standardSystemsDesign.cpp index 3a3a781282842a24a3291a775fccb206c336c0b0..125a1669de622ab0cadca52913b00e3b57a70d45 100644 --- a/systems_design/src/standardSystemsDesign.cpp +++ b/systems_design/src/standardSystemsDesign.cpp @@ -40,10 +40,10 @@ void standardSystemsDesign::initialize() { /* Initializing IOData */ data_ = std::make_shared<systemsIOData>(*rtIO_, config, rtIO_->getMissionDataDir()); /* Read geometry components from aircraft xml */ - data_->readFuselages(rtIO_->acxml, rtIO_->getIODir()+"/"); - data_->readNacelles(rtIO_->acxml, rtIO_->getIODir()+"/"); - data_->readWing(rtIO_->acxml, rtIO_->getIODir()+"/"); - data_->readEmpennage(rtIO_->acxml, rtIO_->getIODir()+"/"); + data_->readFuselages(rtIO_->acxml, rtIO_->getGeometryDir()); + data_->readNacelles(rtIO_->acxml, rtIO_->getGeometryDir()); + data_->readWing(rtIO_->acxml, rtIO_->getAirfoilDataDir()); + data_->readEmpennage(rtIO_->acxml, rtIO_->getAirfoilDataDir()); /* Initializing values with data from the aircraft xml */ data_->readPropulsion(rtIO_->acxml, rtIO_->getEngineDataDir()); diff --git a/systems_design/src/systemsIOData.cpp b/systems_design/src/systemsIOData.cpp index 39614175f570326af802f5426fa8923486132240..7f9f754a206a6905a0b1de65d208a9bc21fdaf3f 100644 --- a/systems_design/src/systemsIOData.cpp +++ b/systems_design/src/systemsIOData.cpp @@ -63,18 +63,19 @@ std::string systemsIOData::getMissionFile(std::string mission_data_dir) { } if (!fileExists(mission_data_dir + "/" + missionFile)) { std::stringstream errorMsg; - errorMsg << "Mission file \"" << missionFile << "\" for the " << missionType << " does not exist. Please activate switch in createMissionXML. Abort program."; + errorMsg << "Mission file \"" << mission_data_dir << "/" << missionFile << "\" for the " << missionType + << " does not exist. Please activate switch in createMissionXML. Abort program."; throwError(__FILE__, __func__, __LINE__, errorMsg.str()); } return missionFile; } -void systemsIOData::readWing(const node& acxml, const std::string& ioDir) { +void systemsIOData::readWing(const node& acxml, const std::string& airfoilDir) { std::vector<node*> wingVector = acxml.getVector("aircraft_exchange_file/component_design/wing/specific/geometry/aerodynamic_surface"); std::shared_ptr<node> ACXML = std::make_shared<node>(acxml); // wing factory requires this format node aircraftXML = acxml; std::shared_ptr<node> AcXML = std::make_shared<node>(aircraftXML); - geom2::WingFactory theWingfactory{ACXML, ioDir + "geometryData/airfoilData"}; // wing factory + geom2::WingFactory theWingfactory{ACXML, airfoilDir}; // wing factory for (size_t i = 0; i < wingVector.size(); i++) { Wing newWing; newWing.aerodynamicSurface = theWingfactory.create("wing/specific/geometry/aerodynamic_surface@0"); @@ -85,7 +86,7 @@ void systemsIOData::readWing(const node& acxml, const std::string& ioDir) { try { std::vector<node*> controlDeviceVector = acxml.getVector("aircraft_exchange_file/component_design/wing/specific/geometry/aerodynamic_surface/parameters/control_devices/control_device"); - geom2::ControlDeviceFactory theControlDevicefactory{ACXML, "./geometryData/airfoilData"}; // control device factory + geom2::ControlDeviceFactory theControlDevicefactory{ACXML, airfoilDir}; // control device factory for (size_t j = 0; j < controlDeviceVector.size(); j++) { theWing.at(i).controlSurface.push_back(theControlDevicefactory.create("wing/specific/geometry/aerodynamic_surface@" + num2Str(i) + "/control_devices/control_device@" + num2Str(j))); @@ -111,7 +112,7 @@ void systemsIOData::readWing(const node& acxml, const std::string& ioDir) { } } -void systemsIOData::readEmpennage(const node& acxml, const std::string& ioDir) { +void systemsIOData::readEmpennage(const node& acxml, const std::string& airfoilDir) { std::vector<node*> empennageVector = acxml.getVector("aircraft_exchange_file/component_design/empennage/specific/geometry/aerodynamic_surface"); std::shared_ptr<node> ACXML = std::make_shared<node>(acxml); // factory requires this format for (size_t i = 0; i < empennageVector.size(); i++) { @@ -119,7 +120,7 @@ void systemsIOData::readEmpennage(const node& acxml, const std::string& ioDir) { myRuntimeInfo->out << "Create: Empennage " << tmp_name << " ..." << std::endl; if (tmp_name == "vertical_stabiliser" || tmp_name == "horizontal_stabiliser" || tmp_name == "vertical_stabilizer" || tmp_name == "horizontal_stabilizer") { - geom2::WingFactory Finfactory{ACXML, ioDir + "geometryData/airfoilData"}; + geom2::WingFactory Finfactory{ACXML, airfoilDir}; Empennage newEmpennage; newEmpennage.aerodynamicSurface = Finfactory.create("empennage/specific/geometry/aerodynamic_surface@" + num2Str(i)); theEmpennage.push_back(newEmpennage); @@ -131,7 +132,7 @@ void systemsIOData::readEmpennage(const node& acxml, const std::string& ioDir) { acxml.getVector("aircraft_exchange_file/component_design/empennage/specific/geometry/aerodynamic_surface@" + num2Str(i) + "/parameters/control_devices"); for (size_t j = 0; j < EmpennageControlDeviceVector.size(); j++) { - geom2::ControlDeviceFactory theControlDevicefactory{ACXML, "./geometryData/airfoilData"}; // control device factory + geom2::ControlDeviceFactory theControlDevicefactory{ACXML, airfoilDir}; // control device factory theEmpennage.at(i).controlSurface.push_back(theControlDevicefactory.create("empennage/specific/geometry/aerodynamic_surface@" + num2Str(i) + "/control_devices/control_device@" + num2Str(j))); theEmpennage.at(i).controlSurface.back().name = acxml.at("aircraft_exchange_file/component_design/empennage/specific/geometry/aerodynamic_surface@" + num2Str(i) + @@ -144,11 +145,11 @@ void systemsIOData::readEmpennage(const node& acxml, const std::string& ioDir) { } } -void systemsIOData::readFuselages(const node& acxml, const std::string& ioDir) { +void systemsIOData::readFuselages(const node& acxml, const std::string& geometryDir) { std::shared_ptr<node> ACXML = std::make_shared<node>(acxml); //fuselage factory requires this format std::vector<node*> fuselageVector = acxml.getVector("aircraft_exchange_file/component_design/fuselage/specific/geometry/fuselage"); std::string path_to_fuselage = "aircraft_exchange_file/component_design/fuselage"; - geom2::FuselageFactory fuselageFactory{ACXML, ioDir + "geometryData"}; + geom2::FuselageFactory fuselageFactory{ACXML, geometryDir}; for (size_t i(0); i < fuselageVector.size(); ++i) { theFuselage.push_back(fuselageFactory.create("fuselage/specific/geometry/fuselage@" + num2Str(i))); myRuntimeInfo->out << "Create: " << theFuselage.at(i).name << " ..." << std::endl; @@ -158,10 +159,10 @@ void systemsIOData::readFuselages(const node& acxml, const std::string& ioDir) { } } -void systemsIOData::readNacelles(const node& acxml, const std::string& ioDir) { +void systemsIOData::readNacelles(const node& acxml, const std::string& geometryDir) { std::shared_ptr<node> ACXML = std::make_shared<node>(acxml); // hull factory requires this format std::vector<node*> propulsorVector = acxml.getVector("aircraft_exchange_file/requirements_and_specifications/design_specification/propulsion/propulsor/"); - geom2::HullFactory nacelleFactory(ACXML, ioDir + "geometryData"); + geom2::HullFactory nacelleFactory(ACXML, geometryDir); for (size_t j(0); j < propulsorVector.size(); j++) { std::vector<node*> nacelleVector = acxml.getVector("aircraft_exchange_file/component_design/propulsion/specific/propulsion@" + num2Str(j) + "/nacelle"); diff --git a/systems_design/src/systemsIOData.h b/systems_design/src/systemsIOData.h index 799dbba2325ce51a0400ba1a461aa768f659e7d3..6f833006c95f5d32909b4139a3c93fc60b4f3fca 100644 --- a/systems_design/src/systemsIOData.h +++ b/systems_design/src/systemsIOData.h @@ -206,36 +206,36 @@ class systemsIOData { * \brief Reads all wing surface geometry and the wings control surfaces and spars from * the acxml. * \param acxml aircraft xml - * \param ioDir IO directory (needed for geometry files) + * \param airfoilDir airfoil directory * \return void */ - void readWing(const node& acxml, const std::string& ioDir); + void readWing(const node& acxml, const std::string& airfoilDir); /** * \brief Reads all empennage surfaces and their control devices from the acxml. * \note current implementation checks for fin and horizontal tail since aircraft systems * do not yet have methods for v-tail or other unconventional tails. * \param acxml aircraft xml - * \param ioDir IO directory (needed for geometry files) + * \param airfoilDir airfoil directory * \return void */ - void readEmpennage(const node& acxml, const std::string& ioDir); + void readEmpennage(const node& acxml, const std::string& airfoilDir); /** * \brief Reads all fuselages from the acxml. * \param acxml aircraft xml - * \param ioDir IO directory (needed for geometry files) + * \param geometryDir geometry directory (needed for geometry files) * \return void */ - void readFuselages(const node& acxml, const std::string& ioDir); + void readFuselages(const node& acxml, const std::string& geometryDir); /** * \brief Reads all nacelles from acxml (for all propulsors) * \param acxml aircraft xml - * \param ioDir IO directory (needed for geometry files) + * \param geometryDir geometry directory (needed for geometry files) * \return void */ - void readNacelles(const node& acxml, const std::string& ioDir); + void readNacelles(const node& acxml, const std::string& geometryDir); /** * \brief Reads strut length and landing gear name of each gear from the acxml.