Update of /cvsroot/jsbsim/JSBSim/utils/aeromatic++ In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv10827 Modified Files: AeroJetTransport.cpp AeroPropTransport.cpp Aircraft.cpp Aircraft.h aeromatic.cpp version Log Message: Fix a number of issues that arise when the minimum number of input parameters was provided. Especially when no stall speed was specified Index: AeroJetTransport.cpp =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/utils/aeromatic++/AeroJetTransport.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -r1.14 -r1.15 *** AeroJetTransport.cpp 19 Aug 2016 10:20:42 -0000 1.14 --- AeroJetTransport.cpp 3 Sep 2016 09:45:56 -0000 1.15 *************** *** 177,181 **** float const JetTransport::_fuselage_diameter_t[1][5] = { ! { 3.5f, 4.5f, 11.0f, 19.0f, 22.5f } }; --- 177,181 ---- float const JetTransport::_fuselage_diameter_t[1][5] = { ! { 3.5f, 4.5f, 10.0f, 19.0f, 22.5f } }; Index: AeroPropTransport.cpp =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/utils/aeromatic++/AeroPropTransport.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -r1.13 -r1.14 *** AeroPropTransport.cpp 19 Aug 2016 10:20:42 -0000 1.13 --- AeroPropTransport.cpp 3 Sep 2016 09:45:56 -0000 1.14 *************** *** 176,180 **** float const PropTransport::_fuselage_diameter_t[1][5] = { ! { 4.5f, 5.75f, 10.0f, 11.0f, 12.0f } }; --- 176,180 ---- float const PropTransport::_fuselage_diameter_t[1][5] = { ! { 4.5f, 7.4f, 9.0f, 11.0f, 12.0f } }; Index: Aircraft.cpp =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/utils/aeromatic++/Aircraft.cpp,v retrieving revision 1.75 retrieving revision 1.76 diff -C2 -r1.75 -r1.76 *** Aircraft.cpp 20 Aug 2016 09:00:58 -0000 1.75 --- Aircraft.cpp 3 Sep 2016 09:45:56 -0000 1.76 *************** *** 66,69 **** --- 66,94 ---- } + const char* + Aircraft::get_verbose_description(int no_engines) + { + static char desc[1024]; + int num = _subclasses.size(); + std::string rv; + + if (no_engines < 0 || num == 0) { + rv = _description; + if (num) rv += " ("; + } + + if (num) + { + for (int i=0; i<num; i++) { + rv += _subclasses[i]; + if (i < (num-1)) rv += ", "; + } + if (no_engines < 0) rv += ')'; + } + + snprintf(desc, 1024, "%s", rv.c_str()); + return desc; + } + Aeromatic::Aeromatic() : Aircraft(), _atype(LIGHT), *************** *** 136,148 **** _aircraft[0] = new Light(this); ! param->add_option(_aircraft[0]->get_description()); _aircraft[1] = new Performance(this); ! param->add_option(_aircraft[1]->get_description()); _aircraft[2] = new Fighter(this); ! param->add_option(_aircraft[2]->get_description()); _aircraft[3] = new JetTransport(this); ! param->add_option(_aircraft[3]->get_description()); _aircraft[4] = new PropTransport(this); ! param->add_option(_aircraft[4]->get_description()); Aircraft::_aircraft = this; --- 161,173 ---- _aircraft[0] = new Light(this); ! param->add_option(_aircraft[0]->get_verbose_description()); _aircraft[1] = new Performance(this); ! param->add_option(_aircraft[1]->get_verbose_description()); _aircraft[2] = new Fighter(this); ! param->add_option(_aircraft[2]->get_verbose_description()); _aircraft[3] = new JetTransport(this); ! param->add_option(_aircraft[3]->get_verbose_description()); _aircraft[4] = new PropTransport(this); ! param->add_option(_aircraft[4]->get_verbose_description()); Aircraft::_aircraft = this; *************** *** 279,285 **** // float Ws = _stall_weight; float Vs = _stall_speed * KNOTS_TO_FPS; ! float sweep = _wing.sweep * DEG_TO_RAD; ! float TC = 0.051f * _wing.area * powf(cosf(sweep), 5.0f)/Vs; ! _wing.thickness = TC * _wing.chord_mean; } --- 304,316 ---- // float Ws = _stall_weight; float Vs = _stall_speed * KNOTS_TO_FPS; ! if (Vs > 0) ! { ! float sweep = _wing.sweep * DEG_TO_RAD; ! float TC = 0.051f * _wing.area * powf(cosf(sweep), 5.0f)/Vs; ! _wing.thickness = TC * _wing.chord_mean; ! } ! else { ! _wing.thickness = 0.15f * _wing.chord_mean; ! } } *************** *** 515,541 **** file << " name: " << _name << std::endl; file << " type: "; ! switch(_atype) ! { ! case LIGHT: ! if (_no_engines == 0) { ! file << "glider" << std::endl; ! } else { ! file << "light commuter with " << _no_engines << " engines" << std::endl; ! } ! break; ! case PERFORMANCE: ! file << "WWII fighter, subsonic sport, aerobatic" << std::endl; ! break; ! case FIGHTER: ! file << _no_engines << " engine transonic/supersonic fighter" << std::endl; ! break; ! case JET_TRANSPORT: ! file << _no_engines << " engine transonic transport" << std::endl; ! break; ! case PROP_TRANSPORT: ! file << "multi-engine prop transport" << std::endl; ! break; } - file << " stall speed: " << _stall_speed << "kts" << std::endl; file << " max weight: " << _max_weight << " lb" << std::endl; file << " length: " << _length << " ft" << std::endl; --- 546,559 ---- file << " name: " << _name << std::endl; file << " type: "; ! if (_no_engines == 0) file << "No engine "; ! else if (_no_engines == 1) file << "Single engine "; ! else file << "Multi-engine "; ! file << _aircraft[_atype]->get_verbose_description(_no_engines) << std::endl; ! file << " stall speed: "; ! if (_stall_speed > 0.5f) { ! file << _stall_speed << "kts" << std::endl; ! } else { ! file << "unspecified" << std::endl; } file << " max weight: " << _max_weight << " lb" << std::endl; file << " length: " << _length << " ft" << std::endl; Index: Aircraft.h =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/utils/aeromatic++/Aircraft.h,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -r1.28 -r1.29 *** Aircraft.h 18 Aug 2016 12:52:40 -0000 1.28 --- Aircraft.h 3 Sep 2016 09:45:56 -0000 1.29 *************** *** 49,52 **** --- 49,54 ---- }; + const char* get_verbose_description(int no_engines = -1); + const std::vector<std::string> get_subclasses() { return _subclasses; Index: aeromatic.cpp =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/utils/aeromatic++/aeromatic.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -r1.10 -r1.11 *** aeromatic.cpp 20 Aug 2016 08:04:10 -0000 1.10 --- aeromatic.cpp 3 Sep 2016 09:45:56 -0000 1.11 *************** *** 83,87 **** getline(in, input); ! if (!input.empty()) { if (input == "?" || input == "h" || input == "help") --- 83,87 ---- getline(in, input); ! if (!input.empty() && input[0] != ' ') { if (input == "?" || input == "h" || input == "help") *************** *** 90,94 **** getline(in, input); } ! if (!input.empty()) { param->set(input); } --- 90,94 ---- getline(in, input); } ! if (!input.empty() && input[0] != ' ') { param->set(input); } Index: version =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/utils/aeromatic++/version,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -r1.21 -r1.22 *** version 20 Aug 2016 08:04:10 -0000 1.21 --- version 3 Sep 2016 09:45:56 -0000 1.22 *************** *** 1 **** ! 3.3.7 --- 1 ---- ! 3.3.8 |