diff --git a/wing_design/src/taw/cantilever/cantileverWingDesignTaw.cpp b/wing_design/src/taw/cantilever/cantileverWingDesignTaw.cpp index 24fca9910801367896f1abaf08f915107b9ab5a9..c53a997b969f40c905d41e286485f482347e009c 100644 --- a/wing_design/src/taw/cantilever/cantileverWingDesignTaw.cpp +++ b/wing_design/src/taw/cantilever/cantileverWingDesignTaw.cpp @@ -284,22 +284,27 @@ geom2::Point_3 Wing::calculate_wing_position() { const double fuselage_maximum_width = geom2::measure::width_max(data->fuselage); const double fuselage_maximum_height = geom2::measure::height_max(data->fuselage); - double fuselage_upper_z; - double fuselage_lower_z; + /* Set fuselage upper and lower z to the center of the fuselage */ + double fuselage_upper_z = data->fuselage.origin.z(); + double fuselage_lower_z = data->fuselage.origin.z(); /* Keel beam height as fraction of fuselage height*/ double keel_beam_height = 0.005 * fuselage_maximum_height; // Assumed 0.5% of fuselage height /* Define wing position limits */ if (data->specification_wing_mounting.value() == "low") { - fuselage_upper_z = data->fuselage.origin.z(); + /* Limit to lower fuselage half*/ fuselage_lower_z = data->fuselage.origin.z() - fuselage_maximum_height * 0.5; keel_beam_height = 0.005 * (fuselage_upper_z - fuselage_lower_z); z_limits = {fuselage_lower_z + keel_beam_height, fuselage_upper_z}; } else if (data->specification_wing_mounting.value() == "high") { + /* Limit to upper fuselage half*/ + fuselage_upper_z += fuselage_maximum_height * 0.5; + keel_beam_height = 0.005 * (fuselage_upper_z - fuselage_lower_z); z_limits = {fuselage_lower_z, fuselage_upper_z - keel_beam_height}; } else { - z_limits = {fuselage_lower_z, fuselage_upper_z}; + /* Allow variation between +- 10% of overall fuselage max height */ + z_limits = {fuselage_lower_z - 0.10 * fuselage_maximum_height, fuselage_upper_z + 0.10 * fuselage_maximum_height}; } // Assume center position