From 52b37c134b85150f1e3fd5e2536428092c968d68 Mon Sep 17 00:00:00 2001
From: BA Kayra <kayra.yazici@rwth-aachen.de>
Date: Wed, 19 Mar 2025 14:36:34 +0100
Subject: [PATCH] front names except design cpp

---
 .../src/tandem/tandemCalculatePolar.cpp       |  12 +
 .../src/tandem/tandemCalculatePolar.h         |   2 +
 .../src/tandem/tandemCalculatePolarConfig.cpp |   3 +
 .../src/tandem/tandemDefaultStrategy.cpp      |   4 +-
 .../cantilever/cantileverTandemWingDesign.cpp | 254 +++++++++---------
 .../cantilever/cantileverTandemWingDesign.h   |  22 +-
 .../cantileverTandemWingDesignPlot.cpp        |  36 +--
 .../cantileverTandemWingDesignReport.cpp      | 142 +++++-----
 .../src/tandem/tandemWingDesignConfig.cpp     | 132 ++++-----
 .../src/tandem/tandemWingDesignConfig.h       |  70 ++---
 .../src/tandem/tandemWingDesignData.cpp       |  34 +--
 wing_design/src/tandem/tandemWingDesignData.h |  22 +-
 12 files changed, 375 insertions(+), 358 deletions(-)

diff --git a/aerodynamic_analysis/src/tandem/tandemCalculatePolar.cpp b/aerodynamic_analysis/src/tandem/tandemCalculatePolar.cpp
index 3b383cfb..cac1f282 100644
--- a/aerodynamic_analysis/src/tandem/tandemCalculatePolar.cpp
+++ b/aerodynamic_analysis/src/tandem/tandemCalculatePolar.cpp
@@ -80,6 +80,18 @@ void tandemCalculatePolar::report() {
     myDefaultStrategy->writePolarData();
     myRuntimeInfo->out << "Calculate Polar for tandem: Report..." << endl;
     myDefaultStrategy->writeViscDragData();
+   /* myRuntimeInfo->out << "Calculate Polar for TAW: Report..." << endl;
+    if (rtIO_->plotOn) {
+        myRuntimeInfo->out << "    - Calculate Polar for TAW: Write Polar Data..." << endl;
+        myDefaultStrategy->writePolarData();
+        myDefaultStrategy->writeViscDragData();
+    }
+    if (rtIO_->reportOn) {
+        myRuntimeInfo->out << "    - Calculate Polar for TAW: Create HTML Report Body ..." << endl;
+        set_html_body();
+    }
+    report_.generateReports();*/   //TODO kayra: new versions
+
 }
 
 void tandemCalculatePolar::save() {
diff --git a/aerodynamic_analysis/src/tandem/tandemCalculatePolar.h b/aerodynamic_analysis/src/tandem/tandemCalculatePolar.h
index 9f80cc31..ba27b99f 100644
--- a/aerodynamic_analysis/src/tandem/tandemCalculatePolar.h
+++ b/aerodynamic_analysis/src/tandem/tandemCalculatePolar.h
@@ -43,6 +43,8 @@ class tandemCalculatePolar : public Strategy {
     void save();
     void selectAeroStrategy();
 
+    //void set_html_body();  TODO kayra:new versions
+
  private:
     std::shared_ptr<RuntimeIO> rtIO_; /*<-- RuntimeIO object*/
     std::shared_ptr<tandemCalculatePolarConfig> config_;
diff --git a/aerodynamic_analysis/src/tandem/tandemCalculatePolarConfig.cpp b/aerodynamic_analysis/src/tandem/tandemCalculatePolarConfig.cpp
index 8b0f7798..b64f1d82 100644
--- a/aerodynamic_analysis/src/tandem/tandemCalculatePolarConfig.cpp
+++ b/aerodynamic_analysis/src/tandem/tandemCalculatePolarConfig.cpp
@@ -26,6 +26,9 @@
 #include <string>
 #include <vector>
 #include <utility>  // make_pair
+#include <iostream> //TODO kayra:new versions
+#include <sstream>  //TODO kayra:new versions
+
 
 #ifdef _WIN32
     #include <fileapi.h>
diff --git a/aerodynamic_analysis/src/tandem/tandemDefaultStrategy.cpp b/aerodynamic_analysis/src/tandem/tandemDefaultStrategy.cpp
index 01cb5fdc..f1ea09e4 100644
--- a/aerodynamic_analysis/src/tandem/tandemDefaultStrategy.cpp
+++ b/aerodynamic_analysis/src/tandem/tandemDefaultStrategy.cpp
@@ -119,10 +119,12 @@ void tandemDefaultStrategy::createAircraftGeometry(const double backWingAngle) {
     // back wing
     geom2::MultisectionSurface<geom2::AirfoilSection> backWing = wingFactory.create("wing/specific/geometry/aerodynamic_surface@1");
     backWing.origin += offset; 
-    for (auto& section : backWing.sections) {
+    for (auto& section : backWing.sections) {       //TODO kayra: 0 section da dönsün mü?
         double designBackWingAngle = section.get_twist_angle();
         section.set_twist_angle(designBackWingAngle + convertUnit(DEGREE, RADIAN, backWingAngle));
     }
+    myRuntimeInfo->out<< "back wing twist and back wing angle in [deg]!" << convertUnit(RADIAN, DEGREE, backWing.sections.back().get_twist_angle()) << endl; //TODO kayra:aux yanlis sanirim
+
     /* double designBackWingAngle = backWing.sections.front().get_twist_angle(); //TODO Kayra: ausprobierern mit stl für backwing //TODO kayra:denemek icin bu eskisi
     backWing.sections.front().set_twist_angle(designBackWingAngle + convertUnit(DEGREE, RADIAN, backWingAngle)); */
     liftingSurfaces.push_back(backWing);
diff --git a/wing_design/src/tandem/cantilever/cantileverTandemWingDesign.cpp b/wing_design/src/tandem/cantilever/cantileverTandemWingDesign.cpp
index b4ba039a..c9c3676f 100644
--- a/wing_design/src/tandem/cantilever/cantileverTandemWingDesign.cpp
+++ b/wing_design/src/tandem/cantilever/cantileverTandemWingDesign.cpp
@@ -107,7 +107,7 @@ void Wing::report() {
   /* Generate reports */
   reporter.generateReports();
   /* Generate wing stl */
-  geom2::Mesh front_wing_mesh = geom2::transform::to_mesh(data->wing);
+  geom2::Mesh front_wing_mesh = geom2::transform::to_mesh(data->front_wing);
   CGAL::IO::write_STL("front_wing_left.stl", front_wing_mesh);
   geom2::Mesh back_wing_mesh = geom2::transform::to_mesh(data->back_wing);
   CGAL::IO::write_STL("back_wing_left.stl", back_wing_mesh);
@@ -139,11 +139,11 @@ void Wing::standard_design() {
   }
 
   /* check seperately if wings are kinked */  
-  bool is_wing_kinked = is_wing_kinked_check();
+  bool is_wing_kinked = is_front_wing_kinked_check();
   bool is_back_wing_kinked = is_back_wing_kinked_check();
 
   /* get maximum thickness to chord ratios of wings */
-  double max_thickness_to_chord_ratio = get_max_thickness_to_chord_ratio();
+  double max_thickness_to_chord_ratio = get_front_max_thickness_to_chord_ratio();
   myRuntimeInfo->out << "max_thickness_to_chord_ratio for front wing: " << max_thickness_to_chord_ratio << std::endl;
   double back_max_thickness_to_chord_ratio = get_back_max_thickness_to_chord_ratio();
   myRuntimeInfo->out << "back_max_thickness_to_chord_ratio for back wing: " << back_max_thickness_to_chord_ratio << std::endl;
@@ -175,10 +175,10 @@ void Wing::standard_design() {
   // Compute front wing quarter chord based on selected mode            
   myRuntimeInfo->out << "1/4 sweep of front Wing: " << std::endl;
   const double installed_quarter_chord_sweep = get_wing_quarter_chord_sweep(
-      config->sweep_calculation_mode.value(), config->user_sweep_angle_at_quarter_chord.value(),
+      config->sweep_calculation_mode.value(), config->user_front_sweep_angle_at_quarter_chord.value(),
       data->specification_design_mach.value(), data->sizing_point_wing_loading.value(),
       data->specification_design_altitude.value(), max_thickness_to_chord_ratio,
-      config->delta_drag_divergence_to_mach_design.value(), config->korn_technology_factor.value()); 
+      config->front_delta_drag_divergence_to_mach_design.value(), config->front_korn_technology_factor.value()); 
  
   myRuntimeInfo->out << "1/4 sweep of rear Wing: " << std::endl;    
   // Compute back wing quarter chord based on selected mode          
@@ -199,7 +199,7 @@ void Wing::standard_design() {
   /* Compute aspect ratios based on selected modes*/
   myRuntimeInfo->out <<"initial AR_1 of front wing: "<< std::endl;          
   double aspect_ratio = get_design_aspect_ratio(config->aspect_ratio_calculation_mode.value(),
-                                                config->user_aspect_ratio.value(), installed_quarter_chord_sweep);
+                                                config->user_front_aspect_ratio.value(), installed_quarter_chord_sweep);
                                                 
   myRuntimeInfo->out <<"initial AR_2 of back wing: "<< std::endl; 
   double back_aspect_ratio = get_design_aspect_ratio(config->aspect_ratio_calculation_mode.value(),
@@ -272,7 +272,7 @@ void Wing::standard_design() {
   // Compute taper ratios based on selected modes
   myRuntimeInfo->out <<"Taper Ratio of forward wing: "<< std::endl;
   const double installed_taper_ratio =
-      get_design_taper_ratio(config->taper_ratio_calculation_mode.value(), config->user_taper_ratio.value(),
+      get_design_taper_ratio(config->taper_ratio_calculation_mode.value(), config->user_front_taper_ratio.value(),
                              installed_aspect_ratio, installed_quarter_chord_sweep);
   myRuntimeInfo->out <<"Taper Ratio of rear wing: "<< std::endl;
   const double installed_back_taper_ratio =
@@ -286,47 +286,47 @@ void Wing::standard_design() {
     
     myRuntimeInfo->out << "Dihedral angle calculation mode: user-defined" << std::endl;
     
-     dihedral = config->user_dihedral.value();
+     dihedral = config->user_front_dihedral.value();
      back_dihedral = config->user_back_dihedral.value();
   }else if(config->dihedral_calculation_mode.value() == "mode_1"){
 
     myRuntimeInfo->out << "Dihedral angle calculation mode: Schiktanz dihedral excess method" << std::endl;
 
     double total_dihedral = get_total_dihedral(installed_quarter_chord_sweep , installed_back_quarter_chord_sweep);
-    if(total_dihedral < 0 && data->specification_wing_mounting.value() == "low" && (data->specification_back_wing_mounting.value() == "mid" || data->specification_back_wing_mounting.value() == "high")){
+    if(total_dihedral < 0 && data->specification_front_wing_mounting.value() == "low" && (data->specification_back_wing_mounting.value() == "mid" || data->specification_back_wing_mounting.value() == "high")){
        dihedral = total_dihedral;
        back_dihedral = 0;
-    }else if(total_dihedral < 0 && data->specification_wing_mounting.value() == "low" && data->specification_back_wing_mounting.value() == "low"){
+    }else if(total_dihedral < 0 && data->specification_front_wing_mounting.value() == "low" && data->specification_back_wing_mounting.value() == "low"){
        dihedral = 0;        //better for high AOAs
        back_dihedral = total_dihedral;
-    }else if(total_dihedral < 0 && data->specification_wing_mounting.value() == "mid" &&  data->specification_back_wing_mounting.value() == "high"){
+    }else if(total_dihedral < 0 && data->specification_front_wing_mounting.value() == "mid" &&  data->specification_back_wing_mounting.value() == "high"){
        dihedral = total_dihedral; 
        back_dihedral = 0;
-    }else if(total_dihedral < 0 && data->specification_wing_mounting.value() == "mid" && (data->specification_back_wing_mounting.value() == "mid" ||data->specification_back_wing_mounting.value() == "low")){
+    }else if(total_dihedral < 0 && data->specification_front_wing_mounting.value() == "mid" && (data->specification_back_wing_mounting.value() == "mid" ||data->specification_back_wing_mounting.value() == "low")){
        dihedral = 0;
        back_dihedral = total_dihedral;
-    }else if(total_dihedral < 0 && data->specification_wing_mounting.value() == "high" && (data->specification_back_wing_mounting.value() == "mid" || data->specification_back_wing_mounting.value() == "low")){
+    }else if(total_dihedral < 0 && data->specification_front_wing_mounting.value() == "high" && (data->specification_back_wing_mounting.value() == "mid" || data->specification_back_wing_mounting.value() == "low")){
        dihedral = 0;
        back_dihedral = total_dihedral;
-    }else if(total_dihedral < 0 && data->specification_wing_mounting.value() == "high" && data->specification_back_wing_mounting.value() == "high"){
+    }else if(total_dihedral < 0 && data->specification_front_wing_mounting.value() == "high" && data->specification_back_wing_mounting.value() == "high"){
        dihedral = 0;
        back_dihedral = total_dihedral;
-    }else if(total_dihedral > 0 && data->specification_wing_mounting.value() == "low" && (data->specification_back_wing_mounting.value() == "mid" || data->specification_back_wing_mounting.value() == "high")){
+    }else if(total_dihedral > 0 && data->specification_front_wing_mounting.value() == "low" && (data->specification_back_wing_mounting.value() == "mid" || data->specification_back_wing_mounting.value() == "high")){
        dihedral = 0;
        back_dihedral = total_dihedral;
-    }else if(total_dihedral > 0 && data->specification_wing_mounting.value() == "low" && data->specification_back_wing_mounting.value() == "low"){
+    }else if(total_dihedral > 0 && data->specification_front_wing_mounting.value() == "low" && data->specification_back_wing_mounting.value() == "low"){
        dihedral = total_dihedral;  //better for high AOAs
        back_dihedral = 0;
-    }else if(total_dihedral > 0 && data->specification_wing_mounting.value() == "mid" &&  data->specification_back_wing_mounting.value() == "high"){
+    }else if(total_dihedral > 0 && data->specification_front_wing_mounting.value() == "mid" &&  data->specification_back_wing_mounting.value() == "high"){
        dihedral = 0; 
        back_dihedral = total_dihedral;
-    }else if(total_dihedral > 0 && data->specification_wing_mounting.value() == "mid" && (data->specification_back_wing_mounting.value() == "mid" || data->specification_back_wing_mounting.value() == "low")){
+    }else if(total_dihedral > 0 && data->specification_front_wing_mounting.value() == "mid" && (data->specification_back_wing_mounting.value() == "mid" || data->specification_back_wing_mounting.value() == "low")){
        dihedral = total_dihedral;
        back_dihedral = 0;
-    }else if(total_dihedral > 0 && data->specification_wing_mounting.value() == "high" && (data->specification_back_wing_mounting.value() == "mid" || data->specification_back_wing_mounting.value() == "low")){
+    }else if(total_dihedral > 0 && data->specification_front_wing_mounting.value() == "high" && (data->specification_back_wing_mounting.value() == "mid" || data->specification_back_wing_mounting.value() == "low")){
        dihedral = total_dihedral;
        back_dihedral = 0;
-    }else if(total_dihedral > 0 && data->specification_wing_mounting.value() == "high" && data->specification_back_wing_mounting.value() == "high"){
+    }else if(total_dihedral > 0 && data->specification_front_wing_mounting.value() == "high" && data->specification_back_wing_mounting.value() == "high"){
        dihedral = total_dihedral;       //better for high AOAs
        back_dihedral = 0;    
     }
@@ -342,12 +342,12 @@ void Wing::standard_design() {
   // Generate wings
   myRuntimeInfo->out <<"FORWARD WING PROFILE: "<< std::endl;
   if (is_wing_kinked) {
-    data->wing =
-        calculate_kinked_wing_geometry(installed_taper_ratio, installed_aspect_ratio, installed_quarter_chord_sweep,
+    data->front_wing =
+        calculate_kinked_front_wing_geometry(installed_taper_ratio, installed_aspect_ratio, installed_quarter_chord_sweep,
                                        installed_dihedral, installed_front_wing_area, installed_span);
   } else {
-    data->wing =
-        calculate_unkinked_wing_geometry(installed_taper_ratio, installed_aspect_ratio, installed_quarter_chord_sweep,
+    data->front_wing =
+        calculate_unkinked_front_wing_geometry(installed_taper_ratio, installed_aspect_ratio, installed_quarter_chord_sweep,
                                          installed_dihedral, installed_front_wing_area, installed_span);
   }
   myRuntimeInfo->out <<"REAR WING PROFILE: "<< std::endl;
@@ -362,10 +362,10 @@ void Wing::standard_design() {
   }
 
   // Set wing names to constant names
-  data->wing.name = "FRONT WING";
+  data->front_wing.name = "FRONT WING";
   data->back_wing.name ="BACK WING";
 
-  data->wing_position.set_xyz(calculate_wing_position());
+  data->wing_position.set_xyz(calculate_front_wing_position());
 
   myRuntimeInfo->out << "front wing position" << " X:" <<data->wing_position.x.value()<<" Y:"<<data->wing_position.y.value()<<" Z:"<<data->wing_position.z.value()<< std::endl;
   
@@ -375,7 +375,7 @@ void Wing::standard_design() {
 
 
   // Set spar devices 
-  data->spars = get_spars(config->spars_mode.value(), config->user_defined_spars);
+  data->front_spars = get_spars(config->front_spars_mode.value(), config->user_defined_front_spars);
 
   data->back_spars = get_spars(config->back_spars_mode.value(), config->user_defined_back_spars);
   // Set control devices
@@ -383,10 +383,10 @@ void Wing::standard_design() {
   double eta_kink = 0.;
   double back_eta_kink = 0.;
 
-  if (is_wing_kinked_check()) {
+  if (is_front_wing_kinked_check()) {
     eta_kink = get_design_relative_kink_position(
-        config->relative_kink_position_calculation_mode.value(), config->user_relative_kink.value(),
-        config->track_based_initial_relative_kink.value(), data->track_based_relative_kink.value());
+        config->front_relative_kink_position_calculation_mode.value(), config->user_front_relative_kink.value(),
+        config->track_based_front_initial_relative_kink.value(), data->track_based_front_relative_kink.value());
   }
     if (is_back_wing_kinked_check()) {
     back_eta_kink = get_design_relative_kink_position(
@@ -394,26 +394,26 @@ void Wing::standard_design() {
         config->track_based_back_initial_relative_kink.value(), data->track_based_back_relative_kink.value());
   }
 
-  auto [devices, deflections] = get_control_devices(config->control_device_mode.value(), config->user_defined_control_devices, 
-                                              data->spars, data->wing, data->fuselage, is_wing_kinked_check(), eta_kink,
-                                              config->high_lift_device_type_leading_edge.value(),
-                                              config->high_lift_device_type_trailing_edge.value());
+  auto [devices, deflections] = get_control_devices(config->front_control_device_mode.value(), config->user_defined_front_control_devices, 
+                                              data->front_spars, data->front_wing, data->fuselage, is_front_wing_kinked_check(), eta_kink,
+                                              config->front_high_lift_device_type_leading_edge.value(),
+                                              config->front_high_lift_device_type_trailing_edge.value());
 
   auto [back_devices, back_deflections] = get_control_devices(config->back_control_device_mode.value(), config->user_defined_back_control_devices,
                                               data->back_spars, data->back_wing, data->fuselage, is_back_wing_kinked_check(), back_eta_kink,
                                               config->back_high_lift_device_type_leading_edge.value(),
                                               config->back_high_lift_device_type_trailing_edge.value());
 
-  data->control_devices = devices;
-  data->control_devices_deflections = deflections;
+  data->front_control_devices = devices;
+  data->front_control_devices_deflections = deflections;
   data->back_control_devices = back_devices;
   data->back_control_devices_deflections = back_deflections;
 
   /* Check control device boundaries - if inside fuselage */  //TODO kayra: max fus width is considered to keep control devices distant from fuselage flow and keep effectiveness
-  if ((config->control_device_mode.value() == "mode_0") &&
+  if ((config->front_control_device_mode.value() == "mode_0") &&
       (rtIO->aircraft_configuration_type() == "tandem")) {
-    double eta_fuselage_max = geom2::measure::width_max(data->fuselage) / geom2::measure::span(data->wing); 
-    for (auto& device : data->control_devices) {
+    double eta_fuselage_max = geom2::measure::width_max(data->fuselage) / geom2::measure::span(data->front_wing); 
+    for (auto& device : data->front_control_devices) {
       size_t sec_id = 0;
       for (auto& section : device.sections) {
         if (section.origin.z() < eta_fuselage_max * 1.1) {
@@ -446,11 +446,11 @@ void Wing::standard_design() {
   }
 }
 
-bool Wing::is_wing_kinked_check() {
+bool Wing::is_front_wing_kinked_check() {
   myRuntimeInfo->out << "Front Wing kink check ..." << std::endl;
 
   /* Check if front wing mounting is low &  landing gear mounted on front wing */
-  if (data->specification_wing_mounting.value()== "low" &&
+  if (data->specification_front_wing_mounting.value()== "low" &&
       data->specification_landing_gear_mounting.value() == "wing_mounted") {
     myRuntimeInfo->out << "Front Wing is kinked  ... [TRUE]" << std::endl;
     return true;
@@ -474,18 +474,18 @@ bool Wing::is_back_wing_kinked_check() {
   }
 }
 
-double Wing::get_max_thickness_to_chord_ratio() {
+double Wing::get_front_max_thickness_to_chord_ratio() {
   // Get maximum thickness to chord ratio based on wing profile and thickness mode
   // If user - get maximum thickness from elements
   // Else use max_thickness to chord ratio from sweep calculation method
-  if (config->wing_profile_and_thickness_calculation_mode.value() == "mode_0") {
+  if (config->front_wing_profile_and_thickness_calculation_mode.value() == "mode_0") {
     std::vector<double> to_check;
-    for (auto item : config->user_thickness_to_chord) {
+    for (auto item : config->user_front_thickness_to_chord) {
       to_check.push_back(item.value());
     }
     return *std::max_element(to_check.begin(), to_check.end());
   } else {
-    return config->max_thickness_to_chord_ratio.value();
+    return config->front_max_thickness_to_chord_ratio.value();
   }
 }
 
@@ -517,11 +517,11 @@ double Wing::get_total_dihedral(const double quarter_chord_sweep , const double
   double dih_swp_2;
   double total_dihedral_deg;
   
-  if(data->specification_wing_mounting.value()== "low"){
+  if(data->specification_front_wing_mounting.value()== "low"){
     dih_pos_1 = -5;
-  } else if(data->specification_wing_mounting.value()== "mid") {
+  } else if(data->specification_front_wing_mounting.value()== "mid") {
     dih_pos_1 = -1.5;
-  } else if(data->specification_wing_mounting.value()== "high") {
+  } else if(data->specification_front_wing_mounting.value()== "high") {
     dih_pos_1 = 2;
   }
 
@@ -546,7 +546,7 @@ double Wing::get_total_dihedral(const double quarter_chord_sweep , const double
 }
 
 
-geom2::Point_3 Wing::calculate_wing_position() {
+geom2::Point_3 Wing::calculate_front_wing_position() {
 
   std::tuple<double, double> z_limits;
 
@@ -561,12 +561,12 @@ geom2::Point_3 Wing::calculate_wing_position() {
   double keel_beam_height = 0.005 * fuselage_height;  // Assumed 0.5% of fuselage height
 
   /* Define wing position limits */
-  if (data->specification_wing_mounting.value() == "low") {
+  if (data->specification_front_wing_mounting.value() == "low") {
     /* Limit to lower fuselage half*/
     fuselage_lower_z = data->fuselage.origin.z() - fuselage_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") {
+  } else if (data->specification_front_wing_mounting.value() == "high") {
     /* Limit to upper fuselage half*/
     fuselage_upper_z += fuselage_height * 0.5;
     keel_beam_height = 0.005 * (fuselage_upper_z - fuselage_lower_z);
@@ -579,9 +579,9 @@ geom2::Point_3 Wing::calculate_wing_position() {
   auto const [lim_low, lim_up] = z_limits;
   double z_position;
 
-  if (data->specification_wing_mounting.value() == "low") {
+  if (data->specification_front_wing_mounting.value() == "low") {
     z_position = lim_low + 0.4 * (lim_up - lim_low);
-  } else if (data->specification_wing_mounting.value() == "high") {
+  } else if (data->specification_front_wing_mounting.value() == "high") {
     z_position = lim_low + 0.8 * (lim_up - lim_low);
   } else {
     z_position = lim_low + 0.5 * (lim_up - lim_low);
@@ -635,15 +635,15 @@ geom2::Point_3 Wing::calculate_back_wing_position() {
 }
 
 
-geom2::MultisectionSurface<geom2::AirfoilSection> Wing::calculate_kinked_wing_geometry(
+geom2::MultisectionSurface<geom2::AirfoilSection> Wing::calculate_kinked_front_wing_geometry(
     const double taper_ratio, const double aspect_ratio, const double quarter_chord_sweep, const double dihedral,
     const double wing_area, const double span) {
   double maximum_inner_trailing_edge_sweep = get_design_maximum_inner_trailing_edge_sweep(
-      config->relative_kink_position_calculation_mode.value(),
-      config->user_max_inner_trailing_edge_sweep.value(),          // old converted to radians
-      config->track_based_max_inner_trailing_edge_sweep.value());  // old converted to radians
+      config->front_relative_kink_position_calculation_mode.value(),
+      config->user_front_max_inner_trailing_edge_sweep.value(),          // old converted to radians
+      config->track_based_front_max_inner_trailing_edge_sweep.value());  // old converted to radians
 
-  const double max_thickness_to_chord_ratio = get_max_thickness_to_chord_ratio();
+  const double max_thickness_to_chord_ratio = get_front_max_thickness_to_chord_ratio();
 
   // Get normalized half span values - eta
   const double half_span = 0.5 * span;
@@ -656,17 +656,17 @@ geom2::MultisectionSurface<geom2::AirfoilSection> Wing::calculate_kinked_wing_ge
   std::vector<double> eta_values = {eta_centerline, eta_fuselage, eta_tip};
 
   double eta_kink = get_design_relative_kink_position(
-      config->relative_kink_position_calculation_mode.value(), config->user_relative_kink.value(),
-      config->track_based_initial_relative_kink.value(), data->track_based_relative_kink.value());
+      config->front_relative_kink_position_calculation_mode.value(), config->user_front_relative_kink.value(),
+      config->track_based_front_initial_relative_kink.value(), data->track_based_front_relative_kink.value());
   eta_values.push_back(eta_kink);
 
   std::vector<std::tuple<double, double, std::string>> wing_profile_and_thickness_vector =
-      get_wing_profile_and_thickness(config->wing_profile_and_thickness_calculation_mode.value(),
-                                     config->user_wing_profiles_and_thickness_vector,
-                                     config->torenbeek_jenkinson_wing_profile.value(), max_thickness_to_chord_ratio,
-                                     config->airfoil_critical_factor.value(), data->specification_design_mach.value(),
+      get_wing_profile_and_thickness(config->front_wing_profile_and_thickness_calculation_mode.value(),
+                                     config->user_front_wing_profiles_and_thickness_vector,
+                                     config->front_torenbeek_jenkinson_wing_profile.value(), max_thickness_to_chord_ratio,
+                                     config->front_airfoil_critical_factor.value(), data->specification_design_mach.value(),
                                      data->specification_design_altitude.value(), quarter_chord_sweep,
-                                     config->delta_drag_divergence_to_mach_design.value(),
+                                     config->front_delta_drag_divergence_to_mach_design.value(),
                                      data->sizing_point_wing_loading.value(), eta_fuselage, eta_values);
 
   // Geometry computation functions
@@ -947,10 +947,10 @@ geom2::MultisectionSurface<geom2::AirfoilSection> Wing::calculate_kinked_back_wi
 }
 
 
-geom2::MultisectionSurface<geom2::AirfoilSection> Wing::calculate_unkinked_wing_geometry(
+geom2::MultisectionSurface<geom2::AirfoilSection> Wing::calculate_unkinked_front_wing_geometry(
     const double taper_ratio, const double aspect_ratio, const double quarter_chord_sweep, const double dihedral,
     const double wing_area, const double span) {
-  const double max_thickness_to_chord_ratio = get_max_thickness_to_chord_ratio();
+  const double max_thickness_to_chord_ratio = get_front_max_thickness_to_chord_ratio();
 
   // Get normalized half span values - eta
   const double half_span = 0.5 * span;
@@ -962,12 +962,12 @@ geom2::MultisectionSurface<geom2::AirfoilSection> Wing::calculate_unkinked_wing_
   std::vector<double> eta_values = {eta_centerline, eta_fuselage, eta_tip};
 
   std::vector<std::tuple<double, double, std::string>> wing_profile_and_thickness_vector =
-      get_wing_profile_and_thickness(config->wing_profile_and_thickness_calculation_mode.value(),
-                                     config->user_wing_profiles_and_thickness_vector,
-                                     config->torenbeek_jenkinson_wing_profile.value(), max_thickness_to_chord_ratio,
-                                     config->airfoil_critical_factor.value(), data->specification_design_mach.value(),
+      get_wing_profile_and_thickness(config->front_wing_profile_and_thickness_calculation_mode.value(),
+                                     config->user_front_wing_profiles_and_thickness_vector,
+                                     config->front_torenbeek_jenkinson_wing_profile.value(), max_thickness_to_chord_ratio,
+                                     config->front_airfoil_critical_factor.value(), data->specification_design_mach.value(),
                                      data->specification_design_altitude.value(), quarter_chord_sweep,
-                                     config->delta_drag_divergence_to_mach_design.value(),
+                                     config->front_delta_drag_divergence_to_mach_design.value(),
                                      data->sizing_point_wing_loading.value(), eta_fuselage, eta_values);
 
   // Geometry computation functions
@@ -1102,14 +1102,14 @@ void Wing::flops_mass() {
   // Unit conversions and reference values for front and back wing
   const double to_foot = convertUnit(METER, FOOT, 1.0);
   const double to_meter = 1. / to_foot;
-  const double taper_ratio = geom2::measure::taper_ratio(data->wing);
-  const double span_ft = geom2::measure::span(data->wing) * to_foot;
-  const double wing_area_sqrft = geom2::measure::reference_area(data->wing) * to_foot * to_foot;
-  const double aspect_ratio = geom2::measure::aspect_ratio(data->wing);
-  const double t_to_c_root = get_max_thickness_to_chord_ratio(data->wing.sections.front());
-  const double t_to_c_tip = get_max_thickness_to_chord_ratio(data->wing.sections.back());
+  const double taper_ratio = geom2::measure::taper_ratio(data->front_wing);
+  const double span_ft = geom2::measure::span(data->front_wing) * to_foot;
+  const double wing_area_sqrft = geom2::measure::reference_area(data->front_wing) * to_foot * to_foot;
+  const double aspect_ratio = geom2::measure::aspect_ratio(data->front_wing);
+  const double t_to_c_root = get_max_thickness_to_chord_ratio(data->front_wing.sections.front());
+  const double t_to_c_tip = get_max_thickness_to_chord_ratio(data->front_wing.sections.back());
   const double quarter_chord_sweep =
-      geom2::measure::sweep(data->wing, 0.25 * span_ft * to_meter, 0.25);  // measure at 50% half span -> 25% of span
+      geom2::measure::sweep(data->front_wing, 0.25 * span_ft * to_meter, 0.25);  // measure at 50% half span -> 25% of span
 
   const double to_lb = convertUnit(KILO, GRAM, NOPREFIX, POUND, 1.0);
   const double to_kg = 1 / to_lb;
@@ -1155,10 +1155,10 @@ void Wing::flops_mass() {
   double SLAM = TLAM / (sqrt(1 + TLAM * TLAM));
 
   // Factor Eq. 15 of front wing
-  double C4 = 1.0 - 0.5 * config->flops_faert.value();
+  double C4 = 1.0 - 0.5 * config->front_flops_faert.value();
 
   // Factor Eq. 16 of front wing
-  double C6 = 0.5 * config->flops_faert.value() - 0.16 * config->flops_fstrt.value();
+  double C6 = 0.5 * config->front_flops_faert.value() - 0.16 * config->front_flops_fstrt.value();
 
   // Aspect ratio defined factor Eq. 17 of front wing
   double CAYA = aspect_ratio > 5. ? aspect_ratio - 5.0 : 0.;
@@ -1166,7 +1166,7 @@ void Wing::flops_mass() {
   double CAYL = (1.0 - SLAM * SLAM) * (1.0 + C6 * SLAM * SLAM + 0.03 * CAYA * C4 * SLAM);
 
   // Wing strut bracing factor of front wing (for cantilever w/o wing strut)
-  double EMS = 1.0 - 0.25 * config->flops_fstrt.value();
+  double EMS = 1.0 - 0.25 * config->front_flops_fstrt.value();
   // Weighted average of the wing thickness to chord ratio of front wing (Jenkinson 1999 formulation)
   double TCA = 0.25 * (3. * t_to_c_tip + t_to_c_root);
   // wing equivalent bending material factor of front wing Dimension [-]
@@ -1194,7 +1194,7 @@ void Wing::flops_mass() {
 
   // Wing bending material weight of front wing, not including the effects of inertia [lb]
   const double W1NIR = A1 * BT * (1.0 + sqrt(A2 / span_ft)) * ULF * span_ft *
-                       (1.0 - 0.4 * config->flops_fcomp.value()) * (1.0 - 0.1 * config->flops_faert.value()) * CAYF *
+                       (1.0 - 0.4 * config->front_flops_fcomp.value()) * (1.0 - 0.1 * config->front_flops_faert.value()) * CAYF *
                        VFACT * PCTL / 1000000.0;
 
   // Total wing shear material and control surface weight of front wing
@@ -1204,16 +1204,16 @@ void Wing::flops_mass() {
 
   // total movable wing surface area of front wing including flaps, elevators, spoilers etc [ft^2]
 
-  const double SFLAP = get_control_device_area_in_fraction_of_wing_area() *
+  const double SFLAP = get_front_control_device_area_in_fraction_of_front_wing_area() *
                        wing_area_sqrft;  // set to 20% of wing_area - testing only TODO
 
-  const double W2 = A3 * (1.0 - 0.17 * config->flops_fcomp.value()) * pow(SFLAP, A4) * pow(dg, A5);
+  const double W2 = A3 * (1.0 - 0.17 * config->front_flops_fcomp.value()) * pow(SFLAP, A4) * pow(dg, A5);
 
   // Total wing miscellaneous items weight of front wing
   const double A6 = 0.035;
   const double A7 = 1.50;
 
-  const double W3 = A6 * (1.0 - 0.3 * config->flops_fcomp.value()) * pow(wing_area_sqrft, A7);
+  const double W3 = A6 * (1.0 - 0.3 * config->front_flops_fcomp.value()) * pow(wing_area_sqrft, A7);
 
   // Wing bending material weight intertia relief adjustment of front wing
   const int NEW = data->specification_number_of_wing_mounted_engines;
@@ -1225,12 +1225,12 @@ void Wing::flops_mass() {
   const double W4 = 0.0;
 
   // Total wing weight of front wing
-  const double wing_mass = config->flops_technology_factor.value() * (W1 + W2 + W3 + W4) * to_kg;
+  const double wing_mass = config->front_flops_technology_factor.value() * (W1 + W2 + W3 + W4) * to_kg;
 
   myRuntimeInfo->out << "Calculated front wing mass ... " << wing_mass << "[kg]" << std::endl;
-  myRuntimeInfo->out << "Wing bending material mass of front wing... " << config->flops_technology_factor.value() * W1 * to_kg << "[kg]" << std::endl;
-  myRuntimeInfo->out << "Wing shear material and control surface mass of front wing ... " << config->flops_technology_factor.value() * W2 * to_kg << "[kg]" << std::endl;
-  myRuntimeInfo->out << "Wing miscellaneous items mass of front wing ... " << config->flops_technology_factor.value() * W3 * to_kg << "[kg]" << std::endl;
+  myRuntimeInfo->out << "Wing bending material mass of front wing... " << config->front_flops_technology_factor.value() * W1 * to_kg << "[kg]" << std::endl;
+  myRuntimeInfo->out << "Wing shear material and control surface mass of front wing ... " << config->front_flops_technology_factor.value() * W2 * to_kg << "[kg]" << std::endl;
+  myRuntimeInfo->out << "Wing miscellaneous items mass of front wing ... " << config->front_flops_technology_factor.value() * W3 * to_kg << "[kg]" << std::endl;
 
 
 
@@ -1337,16 +1337,16 @@ void Wing::flops_mass() {
 
   // Calculate wing center of gravity of front wing according to Howe 2005 page 252
   myRuntimeInfo->out << "Calculate Center of Gravity of front wing ..." << std::endl;
-  const double half_span_mac_position = geom2::measure::mean_aerodynamic_chord_position(data->wing);
-  const double mean_chord = geom2::measure::reference_area(data->wing) / geom2::measure::span(data->wing);
-  const double mac = geom2::measure::chord(data->wing, half_span_mac_position);
-  const geom2::Point_3 leading_edge_point = geom2::measure::offset_LE(data->wing, half_span_mac_position); 
-  const double CoG_x = data->wing_position.x.value() + leading_edge_point.x() + 0.25 * mac * cos(geom2::measure::twist(data->wing, half_span_mac_position)) +
+  const double half_span_mac_position = geom2::measure::mean_aerodynamic_chord_position(data->front_wing);
+  const double mean_chord = geom2::measure::reference_area(data->front_wing) / geom2::measure::span(data->front_wing);
+  const double mac = geom2::measure::chord(data->front_wing, half_span_mac_position);
+  const geom2::Point_3 leading_edge_point = geom2::measure::offset_LE(data->front_wing, half_span_mac_position); 
+  const double CoG_x = data->wing_position.x.value() + leading_edge_point.x() + 0.25 * mac * cos(geom2::measure::twist(data->front_wing, half_span_mac_position)) +
                                                  0.1 * mean_chord;
   // Transform values into global coordinate system z-> -y z
   const double CoG_y = data->wing_position.y.value() + fabs(leading_edge_point.z()) -
                                                  fabs(leading_edge_point.z());
-  const double CoG_z = data->wing_position.z.value() + leading_edge_point.y() + 0.25 * mac * sin(geom2::measure::twist(data->wing, half_span_mac_position));
+  const double CoG_z = data->wing_position.z.value() + leading_edge_point.y() + 0.25 * mac * sin(geom2::measure::twist(data->front_wing, half_span_mac_position));
 
   myRuntimeInfo->out << "CG Position of front wing..." << std::endl;
   myRuntimeInfo->out << "x ... " << CoG_x << std::endl;
@@ -1447,7 +1447,7 @@ void Wing::chiozzotto_wer_mass() {
       {"CFRP ASW", {15.3, 3.104, 0.909}}, {"CFRP USW", {13.6, 2.569, 0.910}}, {"CFRP FSW", {24.7, 2.117, 1.148}}};
 
 
-  const double ref_area = geom2::measure::reference_area(data->wing);             
+  const double ref_area = geom2::measure::reference_area(data->front_wing);             
   const double back_ref_area = geom2::measure::reference_area(data->back_wing);
 
   const double area_portion = ref_area / (ref_area + back_ref_area);
@@ -1466,9 +1466,9 @@ void Wing::chiozzotto_wer_mass() {
 
   atmosphere isa;
   const double mtom = data->mtom_mass_properties.data["mass"].value() * area_portion;  //TODO kayra: lift generation and load carriage prop. to its area portion: first assumption
-  const double aspect_ratio = geom2::measure::aspect_ratio(data->wing);
-  const double taper_ratio = geom2::measure::taper_ratio(data->wing);
-  const double half_span = geom2::measure::span(data->wing) * 0.5;
+  const double aspect_ratio = geom2::measure::aspect_ratio(data->front_wing);
+  const double taper_ratio = geom2::measure::taper_ratio(data->front_wing);
+  const double half_span = geom2::measure::span(data->front_wing) * 0.5;
   const double speed_of_sound_at_zero = isa.getSpeedOfSoundISA(0.0);
   const double pressure_at_zero = isa.getPressureISA(0.0);
   const double pressure_at_design_altitude = isa.getPressureISA(data->specification_design_altitude.value());
@@ -1480,10 +1480,10 @@ void Wing::chiozzotto_wer_mass() {
                               sqrt(pressure_at_design_altitude / pressure_at_zero);
 
   // No LRA sweep existent - use 1/4 chord sweep (deviation from chiozzotto P.112 -> referred to figure 5.3)
-  const double quarter_chord_sweep = -geom2::measure::sweep(data->wing, 0.5 * half_span, 0.25);
+  const double quarter_chord_sweep = -geom2::measure::sweep(data->front_wing, 0.5 * half_span, 0.25);
 
   // Get material selection
-  std::string material = config->chiozzotto_material.value() + " ";
+  std::string material = config->front_chiozzotto_material.value() + " ";
   if (quarter_chord_sweep > ACCURACY_LOW) {
     material += "ASW";
   } else if (quarter_chord_sweep < -ACCURACY_LOW) {
@@ -1494,32 +1494,32 @@ void Wing::chiozzotto_wer_mass() {
   myRuntimeInfo->out << "Wing material used for front wing ... " << material << std::endl;
 
   // Get design relative kink -
-  double t_to_c_kink = geom2::measure::thickness_max(data->wing.sections.front()) / geom2::measure::chord(data->wing, 0.0); //TODO kayra : initialized so that mass is calculated properly for an unkinked wing
+  double t_to_c_kink = geom2::measure::thickness_max(data->front_wing.sections.front()) / geom2::measure::chord(data->front_wing, 0.0); //TODO kayra : initialized so that mass is calculated properly for an unkinked wing
   double eta_kink = 0.0;
-  if (is_wing_kinked_check()) {
+  if (is_front_wing_kinked_check()) {
     eta_kink = get_design_relative_kink_position(
-        config->relative_kink_position_calculation_mode.value(), config->user_relative_kink.value(),
-        config->track_based_initial_relative_kink.value(), data->track_based_relative_kink.value());
+        config->front_relative_kink_position_calculation_mode.value(), config->user_front_relative_kink.value(),
+        config->track_based_front_initial_relative_kink.value(), data->track_based_front_relative_kink.value());
   }
 
   // Find thickness to chord ratio
-  const double chord_at_kink = geom2::measure::chord(data->wing, eta_kink * half_span);
+  const double chord_at_kink = geom2::measure::chord(data->front_wing, eta_kink * half_span);
 
   double eta_position_last = 0.;
   double max_thickness_last = 0.0;
   double eta_position_next = 0.;
   double max_thickness_next = 0.0;
-  for (size_t idx = 0; idx < data->wing.sections.size() - 1; ++idx) {
-    eta_position_last = fabs(data->wing.sections.at(idx).origin.z()) / half_span;
-    eta_position_next = fabs(data->wing.sections.at(idx + 1).origin.z()) / half_span;
+  for (size_t idx = 0; idx < data->front_wing.sections.size() - 1; ++idx) {
+    eta_position_last = fabs(data->front_wing.sections.at(idx).origin.z()) / half_span;
+    eta_position_next = fabs(data->front_wing.sections.at(idx + 1).origin.z()) / half_span;
     // If kink at a specified section
     if (fabs(eta_position_last - eta_kink) < ACCURACY_MEDIUM) {
-      t_to_c_kink = geom2::measure::thickness_max(data->wing.sections.at(idx)) / chord_at_kink;
+      t_to_c_kink = geom2::measure::thickness_max(data->front_wing.sections.at(idx)) / chord_at_kink;
     } else if (fabs(eta_position_next - eta_kink) < ACCURACY_MEDIUM) {
-      t_to_c_kink = geom2::measure::thickness_max(data->wing.sections.at(idx)) / chord_at_kink;
+      t_to_c_kink = geom2::measure::thickness_max(data->front_wing.sections.at(idx)) / chord_at_kink;
     } else if (eta_position_last > eta_kink && eta_position_next < eta_kink) {
-      double max_thickness_last = geom2::measure::thickness_max(data->wing.sections.at(idx));
-      double max_thickness_next = geom2::measure::thickness_max(data->wing.sections.at(idx));
+      double max_thickness_last = geom2::measure::thickness_max(data->front_wing.sections.at(idx));
+      double max_thickness_next = geom2::measure::thickness_max(data->front_wing.sections.at(idx));
       double dimensionless_position = (eta_kink - eta_position_last) / (eta_position_last - eta_position_next);
       t_to_c_kink = std::lerp(max_thickness_last, max_thickness_next, dimensionless_position) / chord_at_kink;
     } else {
@@ -1564,7 +1564,7 @@ void Wing::chiozzotto_wer_mass() {
     k_e *= (1 - C_er * pow(engine_relative_spanwise_position, E_eta_er) * pow(engine_mass / mtom, E_K_er));
   }
   // Secondary structure mass
-  double mass_secondary_structure = 0.0443 * mtom * config->chiozzotto_technology_factor.value();
+  double mass_secondary_structure = 0.0443 * mtom * config->front_chiozzotto_technology_factor.value();
 
   // Mass of covers
   const auto [C_cov, mtom_cov, w_to_s_cov, ar_cov, cos_lambda_cov, t_to_c_kink_cov, v_eas_design_cov,
@@ -1572,7 +1572,7 @@ void Wing::chiozzotto_wer_mass() {
   double mass_covers = (k_e * C_cov * pow(mtom, mtom_cov) * pow(wing_loading, w_to_s_cov) * pow(aspect_ratio, ar_cov) *
                         pow(cos(quarter_chord_sweep), cos_lambda_cov) * pow(t_to_c_kink, t_to_c_kink_cov) *
                         pow(v_eas_design, v_eas_design_cov) * pow(1 + taper_ratio, one_plus_taper_cov)) *
-                       config->chiozzotto_technology_factor.value();
+                       config->front_chiozzotto_technology_factor.value();
 
   // Mass of spars and ribs
   const auto [C_sr, mtom_sr, w_to_s_sr, ar_sr, cos_lambda_sr, t_to_c_kink_sr, v_eas_design_sr, one_plus_taper_sr] =
@@ -1580,7 +1580,7 @@ void Wing::chiozzotto_wer_mass() {
   double mass_spars_and_ribs = (C_sr * pow(mtom, mtom_sr) * pow(wing_loading, w_to_s_sr) * pow(aspect_ratio, ar_sr) *
                                 pow(cos(quarter_chord_sweep), cos_lambda_sr) * pow(t_to_c_kink, t_to_c_kink_sr) *
                                 pow(v_eas_design, v_eas_design_sr) * pow(1 + taper_ratio, one_plus_taper_sr)) *
-                               config->chiozzotto_technology_factor.value();
+                               config->front_chiozzotto_technology_factor.value();
 
   double wing_mass = mass_covers + mass_spars_and_ribs + mass_secondary_structure;
 
@@ -1739,16 +1739,16 @@ void Wing::chiozzotto_wer_mass() {
   
   // Calculate wing center of gravity of front wing according to Howe 2005 page 252
   myRuntimeInfo->out << "Calculate Center of Gravity of front wing ..." << std::endl;
-  const double half_span_mac_position = geom2::measure::mean_aerodynamic_chord_position(data->wing);
-  const double mean_chord = geom2::measure::reference_area(data->wing) / geom2::measure::span(data->wing);
-  const double mac = geom2::measure::chord(data->wing, half_span_mac_position);
-  const geom2::Point_3 leading_edge_point = geom2::measure::offset_LE(data->wing, half_span_mac_position); 
-  const double CoG_x = data->wing_position.x.value() + leading_edge_point.x() + 0.25 * mac * cos(geom2::measure::twist(data->wing, half_span_mac_position)) +
+  const double half_span_mac_position = geom2::measure::mean_aerodynamic_chord_position(data->front_wing);
+  const double mean_chord = geom2::measure::reference_area(data->front_wing) / geom2::measure::span(data->front_wing);
+  const double mac = geom2::measure::chord(data->front_wing, half_span_mac_position);
+  const geom2::Point_3 leading_edge_point = geom2::measure::offset_LE(data->front_wing, half_span_mac_position); 
+  const double CoG_x = data->wing_position.x.value() + leading_edge_point.x() + 0.25 * mac * cos(geom2::measure::twist(data->front_wing, half_span_mac_position)) +
                                                  0.1 * mean_chord;
   // Transform values into global coordinate system z-> -y z
   const double CoG_y = data->wing_position.y.value() + fabs(leading_edge_point.z()) -
                                                  fabs(leading_edge_point.z());
-  const double CoG_z = data->wing_position.z.value() + leading_edge_point.y() + 0.25 * mac * sin(geom2::measure::twist(data->wing, half_span_mac_position));
+  const double CoG_z = data->wing_position.z.value() + leading_edge_point.y() + 0.25 * mac * sin(geom2::measure::twist(data->front_wing, half_span_mac_position));
 
   myRuntimeInfo->out << "CG Position of front wing..." << std::endl;
   myRuntimeInfo->out << "x ... " << CoG_x << std::endl;
@@ -1805,11 +1805,11 @@ bool Wing::chiozzotto_wer_check_limits(std::tuple<double, double>& min_max, doub
   }
 }
 
-double Wing::get_control_device_area_in_fraction_of_wing_area() {
+double Wing::get_front_control_device_area_in_fraction_of_front_wing_area() {
   double overall_control_device_area = 0.0;
-  double wing_area = geom2::measure::reference_area(data->wing);
-  for (auto& item : data->control_devices) {
-    auto cd = geom2::transform::to_absolute(item, data->wing);
+  double wing_area = geom2::measure::reference_area(data->front_wing);
+  for (auto& item : data->front_control_devices) {
+    auto cd = geom2::transform::to_absolute(item, data->front_wing);
     overall_control_device_area += geom2::measure::area(cd);
   }
   return overall_control_device_area / wing_area;
diff --git a/wing_design/src/tandem/cantilever/cantileverTandemWingDesign.h b/wing_design/src/tandem/cantilever/cantileverTandemWingDesign.h
index 45dd2bcb..5672168b 100644
--- a/wing_design/src/tandem/cantilever/cantileverTandemWingDesign.h
+++ b/wing_design/src/tandem/cantilever/cantileverTandemWingDesign.h
@@ -1,5 +1,5 @@
 /**
- * \file lowWingDesignTaw.h
+ * \file cantileverTandemWingDesign.h
  * \author Christopher Ruwisch (christopher.ruwisch@tu-berlin.de)
  * \brief
  * \version 0.1
@@ -94,7 +94,7 @@ class Wing : public Strategy {
    * \return true if kinked 
    * \return false if not kinked
    */
-  bool is_wing_kinked_check();
+  bool is_front_wing_kinked_check();
 
   /**
    * \brief Check if designed back wing is a kinked or not  
@@ -109,7 +109,7 @@ class Wing : public Strategy {
    * 
    * \return double 
    */
-  double get_max_thickness_to_chord_ratio();
+  double get_front_max_thickness_to_chord_ratio();
 
   /**
    * \brief Get the max thickness to chord ratio value for back wing
@@ -137,7 +137,7 @@ class Wing : public Strategy {
    * 
    * \return double 
    */
-  double get_control_device_area_in_fraction_of_wing_area();
+  double get_front_control_device_area_in_fraction_of_front_wing_area();
 
   /**
    * \brief Get the back wing control device area in fraction of back wing area value
@@ -152,7 +152,7 @@ class Wing : public Strategy {
    * 
    * \return geom2::Point_3 
    */
-  geom2::Point_3 calculate_wing_position();
+  geom2::Point_3 calculate_front_wing_position();
 
   /**
    * \brief Calculates the back wing position based on the fuselage length
@@ -173,7 +173,7 @@ class Wing : public Strategy {
    * \param span 
    * \return geom2::MultisectionSurface<geom2::AirfoilSection> object 
    */
-  geom2::MultisectionSurface<geom2::AirfoilSection> calculate_kinked_wing_geometry(
+  geom2::MultisectionSurface<geom2::AirfoilSection> calculate_kinked_front_wing_geometry(
       const double taper_ratio, const double aspect_ratio, const double quarter_chord_sweep, const double dihedral,
       const double wing_area, const double span);
 
@@ -211,7 +211,7 @@ class Wing : public Strategy {
    * \param span 
    * \return geom2::MultisectionSurface<geom2::AirfoilSection> object 
    */
-  geom2::MultisectionSurface<geom2::AirfoilSection> calculate_unkinked_wing_geometry(
+  geom2::MultisectionSurface<geom2::AirfoilSection> calculate_unkinked_front_wing_geometry(
       const double taper_ratio, const double aspect_ratio, const double quarter_chord_sweep, const double dihedral,
       const double wing_area, const double span);
 
@@ -241,7 +241,7 @@ class Wing : public Strategy {
    * 
    * \return fs::path relative path between reportpage and wing planform plot
    */
-  fs::path plot_wing_planform();
+  fs::path plot_front_wing_planform();
 
     /**
    * \brief Generate plot for back wing planform
@@ -255,7 +255,7 @@ class Wing : public Strategy {
    * 
    * \return fs::path relative path between reportpage and thickness and twist distribution plot
    */
-  fs::path plot_thickness_and_twist_distribution();
+  fs::path plot_front_thickness_and_twist_distribution();
 
   /**
    * \brief Generate plots for thickness and twist of back wing
@@ -269,7 +269,7 @@ class Wing : public Strategy {
    * 
    * \return std::vector<fs::path> vector of relative paths between reportpage and thickness and twist distribution plot
    */
-  std::vector<fs::path> plot_airfoils();
+  std::vector<fs::path> plot_front_airfoils();
 
   /**
    * \brief Generate airfoil plots for back wing
@@ -286,11 +286,9 @@ class Wing : public Strategy {
 
   std::string selected_design_mode;
   std::string selected_mass_mode;
-  std::string selected_back_mass_mode;
 
   std::map<std::string, std::function<void(void)>> design_mode_runner;
   std::map<std::string, std::function<void(void)>> mass_mode_runner;
-  std::map<std::string, std::function<void(void)>> back_mass_mode_runner;
 
 
   std::shared_ptr<Airfoils> airfoils_library;
diff --git a/wing_design/src/tandem/cantilever/cantileverTandemWingDesignPlot.cpp b/wing_design/src/tandem/cantilever/cantileverTandemWingDesignPlot.cpp
index 30ee4bfd..92263ba6 100644
--- a/wing_design/src/tandem/cantilever/cantileverTandemWingDesignPlot.cpp
+++ b/wing_design/src/tandem/cantilever/cantileverTandemWingDesignPlot.cpp
@@ -1,7 +1,7 @@
 /**
- * \file cantileverWingDesignPlot.cpp
+ * \file cantileverTandemWingDesignPlot.cpp
  * \author Christopher Ruwisch (christopher.ruwisch@tu-berlin.de)
- * \brief Plots for cantileverWingDesign
+ * \brief Plots for cantileverTandemWingDesign
  * \version 0.1
  * \date 2024-05-22
  *
@@ -110,17 +110,17 @@ namespace cantilever {
 
 
 
-fs::path Wing::plot_wing_planform() {
+fs::path Wing::plot_front_wing_planform() {
   /* Plot active */
   if (!rtIO->plotOn) {
     return "";
   }
 
-  auto coordinates_xy = geom2::transform::outline_2d(data->wing, geom2::Direction_3(0, 0, 1));
+  auto coordinates_xy = geom2::transform::outline_2d(data->front_wing, geom2::Direction_3(0, 0, 1));
   std::deque<double> spanwise;
   std::deque<double> chordwise;
-  auto half_span = 0.5 * geom2::measure::span(data->wing);
-  auto sections = data->wing.sections;
+  auto half_span = 0.5 * geom2::measure::span(data->front_wing);
+  auto sections = data->front_wing.sections;
   auto fuselage_half = geom2::measure::width(data->fuselage , data->wing_position.x.value())*0.5;
 
   /* Loop coordinates from out to inside for LE and TE */
@@ -132,9 +132,9 @@ fs::path Wing::plot_wing_planform() {
   }
 
   /* Get mac coordinates */
-  auto mac_position_y = geom2::measure::mean_aerodynamic_chord_position(data->wing);
-  auto mac_position = geom2::measure::offset_LE(data->wing,mac_position_y);
-  auto mac = geom2::measure::chord(data->wing,mac_position_y);
+  auto mac_position_y = geom2::measure::mean_aerodynamic_chord_position(data->front_wing);
+  auto mac_position = geom2::measure::offset_LE(data->front_wing,mac_position_y);
+  auto mac = geom2::measure::chord(data->front_wing,mac_position_y);
 
 
 
@@ -150,14 +150,14 @@ fs::path Wing::plot_wing_planform() {
   legend_strings.push_back("MAC");
 
   /* Plot spars */
-  for(auto& spar : data->spars) {
-    const auto [x,y,_] = gen_polygon_tandem(data->wing, spar);
+  for(auto& spar : data->front_spars) {
+    const auto [x,y,_] = gen_polygon_tandem(data->front_wing, spar);
     (void)_;
     ax->plot(y,x)->color(spar_color_tandem).line_width(1).line_style("--");
     legend_strings.push_back("spar");
   }
-  for(auto& device : data->control_devices) {
-    const auto [x,y,name] = gen_polygon_tandem(data->wing, device);
+  for(auto& device : data->front_control_devices) {
+    const auto [x,y,name] = gen_polygon_tandem(data->front_wing, device);
     ax->plot(y,x)->color(control_device_colormap_tandem[name]).line_width(1.5);
     legend_strings.push_back(device.name);
   }
@@ -258,7 +258,7 @@ fs::path Wing::plot_back_wing_planform() {
   return fs::relative(plot_path, fs::path(rtIO->getHtmlDir()));
 }
 
-fs::path Wing::plot_thickness_and_twist_distribution() {
+fs::path Wing::plot_front_thickness_and_twist_distribution() {
   /* Plot active */
   if (!rtIO->plotOn) {
     return "";
@@ -266,8 +266,8 @@ fs::path Wing::plot_thickness_and_twist_distribution() {
   std::vector<double> eta;
   std::vector<double> thickness_to_chord_ratio;
   std::vector<double> twist;
-  double half_span = geom2::measure::span(data->wing) * 0.5;
-  for (auto section : data->wing.sections) {
+  double half_span = geom2::measure::span(data->front_wing) * 0.5;
+  for (auto section : data->front_wing.sections) {
     eta.push_back(-section.origin.z() / half_span);
     thickness_to_chord_ratio.push_back(section.get_thickness_scale() * geom2::measure::thickness_max(section) /
                                        section.get_chord_length());
@@ -388,7 +388,7 @@ fs::path Wing::plot_back_thickness_and_twist_distribution() {
  *
  * \return fs::path
  */
-std::vector<fs::path> Wing::plot_airfoils() {
+std::vector<fs::path> Wing::plot_front_airfoils() {
   /* Plot active */
   if (!rtIO->plotOn) {
     return {""};
@@ -396,7 +396,7 @@ std::vector<fs::path> Wing::plot_airfoils() {
   std::map<std::string, std::vector<geom2::Point_2>> airfoils_data{};
   std::vector<fs::path> airfoil_plots_path;
 
-  for (auto section : data->wing.sections) {
+  for (auto section : data->front_wing.sections) {
     if (airfoils_data.find(section.name) != airfoils_data.end()) {
       continue;
     } else {
diff --git a/wing_design/src/tandem/cantilever/cantileverTandemWingDesignReport.cpp b/wing_design/src/tandem/cantilever/cantileverTandemWingDesignReport.cpp
index 10189b5c..1c440cf3 100644
--- a/wing_design/src/tandem/cantilever/cantileverTandemWingDesignReport.cpp
+++ b/wing_design/src/tandem/cantilever/cantileverTandemWingDesignReport.cpp
@@ -1,7 +1,7 @@
 /**
- * \file cantileverWingDesignReport.cpp
+ * \file cantileverTandemWingDesignReport.cpp
  * \author Christopher Ruwisch (christopher.ruwisch@tu-berlin.de)
- * \brief Report for cantilever wing design
+ * \brief Report for cantilever tandem wing design
  * \version 0.1
  * \date 2024-02-14
  *
@@ -35,14 +35,14 @@ void Wing::set_html_body() {
   << "<tbody>\n"
   << "<tr>\n"
   << std::format("<td>Horizontal LE position of front wing</td><td>x<sub>front,LE</sub></td><td>m</td><td>{:.4f}</td>\n",
-                 (data->wing_position.x.value() + data->wing.origin.x()))
+                 (data->wing_position.x.value() + data->front_wing.origin.x()))
   << "</tr>\n"
   << std::format("<td>Horizontal LE position of back wing</td><td>x<sub>back,LE</sub></td><td>m</td><td>{:.4f}</td>\n",
                  (data->wing_position.x.value() + data->back_wing.origin.x()))
   << "</tr>\n"
   << "<tr>\n"
   << std::format("<td>Verical LE position of front wing</td><td>z<sub>front,LE</sub></td><td>m</td><td>{:.4f}</td>\n",
-                 (data->wing_position.z.value() + data->wing.origin.z()))
+                 (data->wing_position.z.value() + data->front_wing.origin.z()))
   << "</tr>\n"
   << "<tr>\n"
   << std::format("<td>Verical LE position of back wing</td><td>z<sub>back,LE</sub></td><td>m</td><td>{:.4f}</td>\n",
@@ -50,11 +50,11 @@ void Wing::set_html_body() {
   << "</tr>\n"
   << "<tr>\n"
   << std::format("<td>Leading edge stagger</td><td>St<sub>LE</sub></td><td>m</td><td>{:.4f}</td>\n",
-                 (data->back_wing.origin.x() - data->wing.origin.x()))
+                 (data->back_wing.origin.x() - data->front_wing.origin.x()))
   << "</tr>\n"
   << "<tr>\n"
   << std::format("<td>Relative leading edge stagger</td><td>St<sub>rel,LE</sub></td><td>1</td><td>{:.4f}</td>\n",
-                 (data->back_wing.origin.x() - data->wing.origin.x()) / geom2::measure::length(data->fuselage))
+                 (data->back_wing.origin.x() - data->front_wing.origin.x()) / geom2::measure::length(data->fuselage))
   << "</tr>\n"
   << "<tr>\n"
   << std::format("<td>1/4 MAC stagger</td><td>St<sub>25_MAC</sub></td><td>m</td><td>{:.4f}</td>\n",
@@ -62,10 +62,10 @@ void Wing::set_html_body() {
                 + geom2::measure::offset_LE(data->back_wing, geom2::measure::mean_aerodynamic_chord_position(data->back_wing)).x() 
                 + 0.25 * geom2::measure::chord(data->back_wing, geom2::measure::mean_aerodynamic_chord_position(data->back_wing))
                 * cos(geom2::measure::twist(data->back_wing, geom2::measure::mean_aerodynamic_chord_position(data->back_wing))))
-                - (data->wing.origin.x()
-                + geom2::measure::offset_LE(data->wing, geom2::measure::mean_aerodynamic_chord_position(data->wing)).x() 
-                + 0.25 * geom2::measure::chord(data->wing, geom2::measure::mean_aerodynamic_chord_position(data->wing))
-                * cos(geom2::measure::twist(data->wing, geom2::measure::mean_aerodynamic_chord_position(data->wing))))) 
+                - (data->front_wing.origin.x()
+                + geom2::measure::offset_LE(data->front_wing, geom2::measure::mean_aerodynamic_chord_position(data->front_wing)).x() 
+                + 0.25 * geom2::measure::chord(data->front_wing, geom2::measure::mean_aerodynamic_chord_position(data->front_wing))
+                * cos(geom2::measure::twist(data->front_wing, geom2::measure::mean_aerodynamic_chord_position(data->front_wing))))) 
                 )  
                             
   << "</tr>\n"
@@ -75,20 +75,20 @@ void Wing::set_html_body() {
                 + geom2::measure::offset_LE(data->back_wing, geom2::measure::mean_aerodynamic_chord_position(data->back_wing)).x() 
                 + 0.25 * geom2::measure::chord(data->back_wing, geom2::measure::mean_aerodynamic_chord_position(data->back_wing))
                 * cos(geom2::measure::twist(data->back_wing, geom2::measure::mean_aerodynamic_chord_position(data->back_wing))))
-                - (data->wing.origin.x()
-                + geom2::measure::offset_LE(data->wing, geom2::measure::mean_aerodynamic_chord_position(data->wing)).x() 
-                + 0.25 * geom2::measure::chord(data->wing, geom2::measure::mean_aerodynamic_chord_position(data->wing))
-                * cos(geom2::measure::twist(data->wing, geom2::measure::mean_aerodynamic_chord_position(data->wing))))) 
+                - (data->front_wing.origin.x()
+                + geom2::measure::offset_LE(data->front_wing, geom2::measure::mean_aerodynamic_chord_position(data->front_wing)).x() 
+                + 0.25 * geom2::measure::chord(data->front_wing, geom2::measure::mean_aerodynamic_chord_position(data->front_wing))
+                * cos(geom2::measure::twist(data->front_wing, geom2::measure::mean_aerodynamic_chord_position(data->front_wing))))) 
                 / geom2::measure::length(data->fuselage))
                             
   << "</tr>\n"
   << "<tr>\n"
   << std::format("<td>Vertical leading edge gap</td><td>G<sub>LE</sub></td><td>m</td><td>{:.4f}</td>\n", 
-                data->back_wing.origin.z() - data->wing.origin.z())
+                data->back_wing.origin.z() - data->front_wing.origin.z())
   << "</tr>\n"
   << "<tr>\n"
   << std::format("<td>Relative vertical leading edge gap</td><td>G<sub>rel,LE</sub></td><td>1</td><td>{:.4f}</td>\n", 
-                (data->back_wing.origin.z() - data->wing.origin.z()) / geom2::measure::height_max(data->fuselage))
+                (data->back_wing.origin.z() - data->front_wing.origin.z()) / geom2::measure::height_max(data->fuselage))
   << "</tr>\n"
   << "<tr>\n"
   << std::format("<td>Vertical 1/4 MAC gap</td><td>G<sub>25_MAC</sub></td><td>m</td><td>{:.4f}</td>\n", 
@@ -96,10 +96,10 @@ void Wing::set_html_body() {
                 + geom2::measure::offset_LE(data->back_wing, geom2::measure::mean_aerodynamic_chord_position(data->back_wing)).y() 
                 + 0.25 * geom2::measure::chord(data->back_wing, geom2::measure::mean_aerodynamic_chord_position(data->back_wing))
                 * sin(geom2::measure::twist(data->back_wing, geom2::measure::mean_aerodynamic_chord_position(data->back_wing))))
-                - (data->wing.origin.z()
-                + geom2::measure::offset_LE(data->wing, geom2::measure::mean_aerodynamic_chord_position(data->wing)).y() 
-                + 0.25 * geom2::measure::chord(data->wing, geom2::measure::mean_aerodynamic_chord_position(data->wing))
-                * sin(geom2::measure::twist(data->wing, geom2::measure::mean_aerodynamic_chord_position(data->wing))))) 
+                - (data->front_wing.origin.z()
+                + geom2::measure::offset_LE(data->front_wing, geom2::measure::mean_aerodynamic_chord_position(data->front_wing)).y() 
+                + 0.25 * geom2::measure::chord(data->front_wing, geom2::measure::mean_aerodynamic_chord_position(data->front_wing))
+                * sin(geom2::measure::twist(data->front_wing, geom2::measure::mean_aerodynamic_chord_position(data->front_wing))))) 
                 )  
   << "</tr>\n"
 
@@ -109,10 +109,10 @@ void Wing::set_html_body() {
                 + geom2::measure::offset_LE(data->back_wing, geom2::measure::mean_aerodynamic_chord_position(data->back_wing)).y() 
                 + 0.25 * geom2::measure::chord(data->back_wing, geom2::measure::mean_aerodynamic_chord_position(data->back_wing))
                 * sin(geom2::measure::twist(data->back_wing, geom2::measure::mean_aerodynamic_chord_position(data->back_wing))))
-                - (data->wing.origin.z()
-                + geom2::measure::offset_LE(data->wing, geom2::measure::mean_aerodynamic_chord_position(data->wing)).y() 
-                + 0.25 * geom2::measure::chord(data->wing, geom2::measure::mean_aerodynamic_chord_position(data->wing))
-                * sin(geom2::measure::twist(data->wing, geom2::measure::mean_aerodynamic_chord_position(data->wing))))) 
+                - (data->front_wing.origin.z()
+                + geom2::measure::offset_LE(data->front_wing, geom2::measure::mean_aerodynamic_chord_position(data->front_wing)).y() 
+                + 0.25 * geom2::measure::chord(data->front_wing, geom2::measure::mean_aerodynamic_chord_position(data->front_wing))
+                * sin(geom2::measure::twist(data->front_wing, geom2::measure::mean_aerodynamic_chord_position(data->front_wing))))) 
                 / geom2::measure::height_max(data->fuselage))
   << "</tr>\n"
 
@@ -146,22 +146,22 @@ void Wing::set_html_body() {
       << "<tbody>\n"
       << "<tr>\n"
       << std::format("<td>Reference area</td><td>S<sub>ref</sub></td><td>m<sup>2</sup></td><td>{:.2f}</td>\n",
-                     geom2::measure::reference_area(data->wing))
+                     geom2::measure::reference_area(data->front_wing))
       << "</tr>\n"
       << "<tr>\n"
       << std::format("<td>Mean aero. chord</td><td>MAC</td><td>m</td><td>{:.2f}</td>\n",
-                     geom2::measure::mean_aerodynamic_chord(data->wing))
+                     geom2::measure::mean_aerodynamic_chord(data->front_wing))
       << "</tr>\n"
       << "<tr>\n"
-      << std::format("<td>Span</td><td>b</td><td>m</td><td>{:.2f}</td>\n", geom2::measure::span(data->wing))
+      << std::format("<td>Span</td><td>b</td><td>m</td><td>{:.2f}</td>\n", geom2::measure::span(data->front_wing))
       << "</tr>\n"
       << "<tr>\n"
       << std::format("<td>Aspect ratio</td><td>AR</td><td>1</td><td>{:.2f}</td>\n",
-                     geom2::measure::aspect_ratio(data->wing))
+                     geom2::measure::aspect_ratio(data->front_wing))
       << "</tr>\n"
       << "<tr>\n"
       << std::format("<td>Taper ratio</td><td>&lambda;</td><td>1</td><td>{:.2f}</td>\n",
-                     geom2::measure::taper_ratio(data->wing))
+                     geom2::measure::taper_ratio(data->front_wing))
       << "</tr>\n"
       << "</tbody>\n"
       << "</table>\n";
@@ -204,7 +204,7 @@ void Wing::set_html_body() {
                               << "<thead>\n"
                               << "<tr>\n"
                               << "<th>parameter</th><th>symbol</th><th>unit</th>";
-  for (size_t i = 0; i < data->wing.sections.size(); ++i) {
+  for (size_t i = 0; i < data->front_wing.sections.size(); ++i) {
     reporter.htmlReportStream() << std::format("<th>S<sub>{:02d}</sub></th>", i);
   }
   reporter.htmlReportStream() << "\n</tr>\n"
@@ -213,67 +213,67 @@ void Wing::set_html_body() {
                               /* Dimensionless half span - eta*/
                               << "<tr>\n"
                               << "<td>Dimensionless half span</td><td>&eta;</td><td>1</td>";
-  for (auto section : data->wing.sections) {
+  for (auto section : data->front_wing.sections) {
     reporter.htmlReportStream() << std::format("<td>{:.2f}</td>",
-                                               -2 * section.origin.z() / geom2::measure::span(data->wing));
+                                               -2 * section.origin.z() / geom2::measure::span(data->front_wing));
   }
   /* Spanwise coordinate - y*/
   reporter.htmlReportStream() << "\n</tr>\n"
                               << "<td>Spanwise coordinate</td><td>y</td><td>m</td>";
-  for (auto section : data->wing.sections) {
+  for (auto section : data->front_wing.sections) {
     reporter.htmlReportStream() << std::format("<td>{:.2f}</td>", -section.origin.z());
   }
   reporter.htmlReportStream() << "\n</tr>\n"
                               /* Chord - c*/
                               << "<tr>\n"
                               << "<td>Chord</td><td>c</td><td>m</td>";
-  for (auto section : data->wing.sections) {
+  for (auto section : data->front_wing.sections) {
     reporter.htmlReportStream() << std::format("<td>{:.2f}</td>", section.get_chord_length());
   }
   reporter.htmlReportStream() << "\n</tr>\n"
                               /* Sweep - Leading edge - phi_LE*/
                               << "<tr>\n"
                               << "<td>Sweep leading edge</td><td>&phi;<sub>LE</sub></td><td>&deg;</td>";
-  for (auto section : data->wing.sections) {
+  for (auto section : data->front_wing.sections) {
     reporter.htmlReportStream() << std::format(
-        "<td>{:.2f}</td>", -geom2::detail::to_degrees * geom2::measure::sweep(data->wing, section.origin.z(), 0.0));
+        "<td>{:.2f}</td>", -geom2::detail::to_degrees * geom2::measure::sweep(data->front_wing, section.origin.z(), 0.0));
   }
   reporter.htmlReportStream() << "\n</tr>\n"
                               /* Sweep - 25 percent - phi_25%*/
                               << "<tr>\n"
                               << "<td>Sweep quarter chord</td><td>&phi;<sub>25</sub></td><td>&deg;</td>";
-  for (auto section : data->wing.sections) {
+  for (auto section : data->front_wing.sections) {
     reporter.htmlReportStream() << std::format(
-        "<td>{:.2f}</td>", -geom2::detail::to_degrees * geom2::measure::sweep(data->wing, section.origin.z(), 0.25));
+        "<td>{:.2f}</td>", -geom2::detail::to_degrees * geom2::measure::sweep(data->front_wing, section.origin.z(), 0.25));
   }
   reporter.htmlReportStream() << "\n</tr>\n"
                               /* Sweep - Trailing edge percent - phi_TE*/
                               << "<tr>\n"
                               << "<td>Sweep Trailing edge</td><td>&phi;<sub>TE</sub></td><td>&deg;</td>";
-  for (auto section : data->wing.sections) {
+  for (auto section : data->front_wing.sections) {
     reporter.htmlReportStream() << std::format(
-        "<td>{:.2f}</td>", -geom2::detail::to_degrees * geom2::measure::sweep(data->wing, section.origin.z(), 1.0));
+        "<td>{:.2f}</td>", -geom2::detail::to_degrees * geom2::measure::sweep(data->front_wing, section.origin.z(), 1.0));
   }
   reporter.htmlReportStream() << "\n</tr>\n"
                               /* Dihedral - nu*/
                               << "<tr>\n"
                               << "<td>Dihedral</td><td>&nu;</td><td>&deg;</td>";
-  for (auto section : data->wing.sections) {
+  for (auto section : data->front_wing.sections) {
     reporter.htmlReportStream() << std::format(
-        "<td>{:.2f}</td>", geom2::detail::to_degrees * geom2::measure::dihedral(data->wing, section.origin.z()));
+        "<td>{:.2f}</td>", geom2::detail::to_degrees * geom2::measure::dihedral(data->front_wing, section.origin.z()));
   }
   reporter.htmlReportStream() << "\n</tr>\n"
                               /* Twist - epsilon*/
                               << "<tr>\n"
                               << "<td>Twist angle</td><td>&epsilon;</td><td>&deg;</td>";
-  for (auto section : data->wing.sections) {
+  for (auto section : data->front_wing.sections) {
     reporter.htmlReportStream() << std::format("<td>{:.2f}</td>", geom2::detail::to_degrees * section.rotation_z);
   }
   reporter.htmlReportStream() << "\n</tr>\n"
                               /* Thickness to chord - epsilon*/
                               << "<tr>\n"
                               << "<td>Thickness ratio</td><td>t/c</td><td>%</td>";
-  for (auto section : data->wing.sections) {
+  for (auto section : data->front_wing.sections) {
     reporter.htmlReportStream() << std::format(
         "<td>{:.2f}</td>", 100 * geom2::measure::thickness_max(section) / section.get_chord_length());
   }
@@ -281,7 +281,7 @@ void Wing::set_html_body() {
                               /* Airfoil - none */
                               << "<tr>\n"
                               << "<td>Airfoil</td><td>-</td><td>-</td>";
-  for (auto section : data->wing.sections) {
+  for (auto section : data->front_wing.sections) {
     reporter.htmlReportStream() << std::format("<td>{}</td>", section.name);
   }
   reporter.htmlReportStream() << "\n</tr>\n"
@@ -380,7 +380,7 @@ void Wing::set_html_body() {
 
 
   /* Table 5 - Spar parameters of Front Wing*/
-  for (size_t spar_id = 0; spar_id < data->spars.size(); ++spar_id) {
+  for (size_t spar_id = 0; spar_id < data->front_spars.size(); ++spar_id) {
     reporter.htmlReportStream() << "<table class=\"content-table\">\n";
     if (spar_id == 0) {
       reporter.htmlReportStream() << "<caption>Spar parameters of front wing</caption>\n";
@@ -388,22 +388,22 @@ void Wing::set_html_body() {
     reporter.htmlReportStream() << "<thead>\n"
                                 << "<tr>\n"
                                 << std::format("<th>{:<10}</th><th>&eta; [1]<th>x/c [%]</th>",
-                                               data->spars.at(spar_id).name)
+                                               data->front_spars.at(spar_id).name)
                                 << "\n</tr>\n"
                                 << "</thead>\n"
                                 << "<tbody>\n";
     /* Spar name - eta, x/c*/
-    for (size_t i = 0; i < data->spars.at(spar_id).sections.size(); ++i) {
+    for (size_t i = 0; i < data->front_spars.at(spar_id).sections.size(); ++i) {
       reporter.htmlReportStream() << "<tr>\n";
       std::string tag = "";
       if (i == 0) {
         tag = "from";
-      } else if (i == data->spars.at(spar_id).sections.size() - 1) {
+      } else if (i == data->front_spars.at(spar_id).sections.size() - 1) {
         tag = "to";
       }
       reporter.htmlReportStream() << std::format("<td>{}</td><td>{:.2f}</td><td>{:.2f}</td>\n", tag,
-                                                 data->spars.at(spar_id).sections.at(i).origin.z(),
-                                                 data->spars.at(spar_id).sections.at(i).get_contour().vertex(0).x());
+                                                 data->front_spars.at(spar_id).sections.at(i).origin.z(),
+                                                 data->front_spars.at(spar_id).sections.at(i).get_contour().vertex(0).x());
       reporter.htmlReportStream() << "\n</tr>\n";
     }
     /* Spanwise coordinate - y*/
@@ -446,11 +446,11 @@ void Wing::set_html_body() {
   /* Sort devices to leading, trailing and other devices for front wing*/
   /* device data - name, eta_from, rel_chord_from_start, rel_chord_from_end, eta_to, rel_chord_to_start,
    * rel_chord_to_end */
-  using device_data = std::tuple<std::string, double, double, double, double, double, double>;
-  std::vector<device_data> leading_edge_devices;
-  std::vector<device_data> trailing_edge_devices;
-  std::vector<device_data> other_devices;
-  for (auto device : data->control_devices) {
+  using front_device_data = std::tuple<std::string, double, double, double, double, double, double>;
+  std::vector<front_device_data> front_leading_edge_devices;
+  std::vector<front_device_data> front_trailing_edge_devices;
+  std::vector<front_device_data> front_other_devices;
+  for (auto device : data->front_control_devices) {
     /* Device has only two sections (from + to) spanwise */
     double eta_from = device.sections.at(0).origin.z();
     double rel_chord_from_start = device.sections.at(0).get_contour().vertex(0).x(),
@@ -461,20 +461,20 @@ void Wing::set_html_body() {
 
     if (std::fabs(rel_chord_from_start - rel_chord_to_start) < ACCURACY_MEDIUM &&
         std::fabs(rel_chord_from_start) < ACCURACY_MEDIUM) {
-      leading_edge_devices.push_back({device.name, eta_from, rel_chord_from_start, rel_chord_from_end, eta_to,
+      front_leading_edge_devices.push_back({device.name, eta_from, rel_chord_from_start, rel_chord_from_end, eta_to,
                                       rel_chord_to_start, rel_chord_to_end});
     } else if (std::fabs(rel_chord_from_end - rel_chord_to_end) < ACCURACY_MEDIUM &&
                std::fabs(rel_chord_from_end - 1) < ACCURACY_MEDIUM) {
-      trailing_edge_devices.push_back({device.name, eta_from, rel_chord_from_start, rel_chord_from_end, eta_to,
+      front_trailing_edge_devices.push_back({device.name, eta_from, rel_chord_from_start, rel_chord_from_end, eta_to,
                                        rel_chord_to_start, rel_chord_to_end});
     } else {
-      other_devices.push_back({device.name, eta_from, rel_chord_from_start, rel_chord_from_end, eta_to,
+      front_other_devices.push_back({device.name, eta_from, rel_chord_from_start, rel_chord_from_end, eta_to,
                                rel_chord_to_start, rel_chord_to_end});
     }
   }
 
   /* Leading edge table*/
-  if (!leading_edge_devices.empty()) {
+  if (!front_leading_edge_devices.empty()) {
     reporter.htmlReportStream()
         << "<table class=\"content-table\">\n"
         << "<caption>Leading edge control devices of front wing</caption>\n"
@@ -485,7 +485,7 @@ void Wing::set_html_body() {
         << "</tr>\n"
         << "</thead>\n"
         << "<tbody>\n";
-    for (auto device : leading_edge_devices) {
+    for (auto device : front_leading_edge_devices) {
       const auto [name, eta_from, rel_chord_from_start, rel_chord_from_end, eta_to, rel_chord_to_start,
                   rel_chord_to_end] = device;
       reporter.htmlReportStream() << "<tr>\n";
@@ -500,7 +500,7 @@ void Wing::set_html_body() {
                                 << "</table>\n";
   }
 
-  if (!trailing_edge_devices.empty()) {
+  if (!front_trailing_edge_devices.empty()) {
     reporter.htmlReportStream()
         << "<table class=\"content-table\">\n"
         << "<caption>Trailing edge control devices of front wing</caption>\n"
@@ -511,7 +511,7 @@ void Wing::set_html_body() {
         << "</tr>\n"
         << "</thead>\n"
         << "<tbody>\n";
-    for (auto device : trailing_edge_devices) {
+    for (auto device : front_trailing_edge_devices) {
       const auto [name, eta_from, rel_chord_from_start, rel_chord_from_end, eta_to, rel_chord_to_start,
                   rel_chord_to_end] = device;
       reporter.htmlReportStream() << "<tr>\n";
@@ -525,7 +525,7 @@ void Wing::set_html_body() {
                                 << "</table>\n";
   }
 
-  if (!other_devices.empty()) {
+  if (!front_other_devices.empty()) {
     reporter.htmlReportStream()
         << "<table class=\"content-table\">\n"
         << "<caption>Other control devices of front wing</caption>\n"
@@ -536,7 +536,7 @@ void Wing::set_html_body() {
         << "</tr>\n"
         << "</thead>\n"
         << "<tbody>\n";
-    for (auto device : other_devices) {
+    for (auto device : front_other_devices) {
       const auto [name, eta_from, rel_chord_from_start, rel_chord_from_end, eta_to, rel_chord_to_start,
                   rel_chord_to_end] = device;
       reporter.htmlReportStream() << "<tr>\n";
@@ -685,16 +685,16 @@ void Wing::set_html_body() {
   reporter.htmlReportStream() << "<h2>Plots</h2>\n";
 
   reporter.htmlReportStream() << "<h3>Geometry of front wing</h3>\n";
-  auto planform_plot_path = plot_wing_planform();
-  reporter.htmlReportStream() << std::format("<img class=\"image-plot\" src=\"{}\"/>\n",planform_plot_path.string());
+  auto front_planform_plot_path = plot_front_wing_planform();
+  reporter.htmlReportStream() << std::format("<img class=\"image-plot\" src=\"{}\"/>\n",front_planform_plot_path.string());
 
   reporter.htmlReportStream() << "<h3>Geometry of back wing</h3>\n";
   auto back_planform_plot_path = plot_back_wing_planform();
   reporter.htmlReportStream() << std::format("<img class=\"image-plot\" src=\"{}\"/>\n",back_planform_plot_path.string());
 
-  auto airfoil_plot_paths = plot_airfoils();
+  auto front_airfoil_plot_paths = plot_front_airfoils();
   reporter.htmlReportStream() << "<h3>Airfoils of front wing</h3>\n";
-  for( auto airfoil_path : airfoil_plot_paths) {
+  for( auto airfoil_path : front_airfoil_plot_paths) {
     reporter.htmlReportStream() << std::format("<img class=\"image-plot\" src=\"{}\"/>\n", airfoil_path.string());
   }
 
@@ -705,8 +705,8 @@ void Wing::set_html_body() {
   }
 
   reporter.htmlReportStream() << "<h3>Thickness & Geometric Twist of front wing</h3>\n";
-  auto thickness_and_twist_plot_path = plot_thickness_and_twist_distribution();
-  reporter.htmlReportStream() << std::format("<img class=\"image-plot\" src=\"{}\"/>\n", thickness_and_twist_plot_path.string());
+  auto front_thickness_and_twist_plot_path = plot_front_thickness_and_twist_distribution();
+  reporter.htmlReportStream() << std::format("<img class=\"image-plot\" src=\"{}\"/>\n", front_thickness_and_twist_plot_path.string());
 
   reporter.htmlReportStream() << "<h3>Thickness & Geometric Twist of back wing</h3>\n";
   auto back_thickness_and_twist_plot_path = plot_back_thickness_and_twist_distribution();
diff --git a/wing_design/src/tandem/tandemWingDesignConfig.cpp b/wing_design/src/tandem/tandemWingDesignConfig.cpp
index 17156f96..32cfa683 100644
--- a/wing_design/src/tandem/tandemWingDesignConfig.cpp
+++ b/wing_design/src/tandem/tandemWingDesignConfig.cpp
@@ -18,11 +18,11 @@ tandem::cantilever::WingDesignConfig::WingDesignConfig()
 
       sweep_calculation_mode(
           EndnodeReadOnly<std::string>("program_settings/tandem/cantilever/calculation_methods/sweep_method/method")),
-      user_sweep_angle_at_quarter_chord(EndnodeReadOnly<double>(
+      user_front_sweep_angle_at_quarter_chord(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/sweep/parameters/mode_0/sweep_angle")),
-      korn_technology_factor(EndnodeReadOnly<double>("program_settings/tandem/cantilever/calculation_methods/front_wing/"
+      front_korn_technology_factor(EndnodeReadOnly<double>("program_settings/tandem/cantilever/calculation_methods/front_wing/"
                                                      "sweep/parameters/mode_1/korn_technology_factor")),
-      delta_drag_divergence_to_mach_design(
+      front_delta_drag_divergence_to_mach_design(
           EndnodeReadOnly<double>("program_settings/tandem/cantilever/calculation_methods/front_wing/sweep/parameters/"
                                   "mode_1/delta_drag_divergence_to_mach_design")),
       user_back_sweep_angle_at_quarter_chord(EndnodeReadOnly<double>(
@@ -35,45 +35,45 @@ tandem::cantilever::WingDesignConfig::WingDesignConfig()
 
       taper_ratio_calculation_mode(EndnodeReadOnly<std::string>(
           "program_settings/tandem/cantilever/calculation_methods/taper_ratio_method/method")),
-      user_taper_ratio(EndnodeReadOnly<double>(
+      user_front_taper_ratio(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/taper_ratio/parameters/mode_0/taper_ratio")),
       user_back_taper_ratio(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/back_wing/taper_ratio/parameters/mode_0/taper_ratio")),
 
       aspect_ratio_calculation_mode(EndnodeReadOnly<std::string>(
           "program_settings/tandem/cantilever/calculation_methods/aspect_ratio_method/method")),
-      user_aspect_ratio(EndnodeReadOnly<double>(
+      user_front_aspect_ratio(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/aspect_ratio/parameters/mode_0/aspect_ratio")),
       user_back_aspect_ratio(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/back_wing/aspect_ratio/parameters/mode_0/aspect_ratio")),
           
       dihedral_calculation_mode(EndnodeReadOnly<std::string>(
           "program_settings/tandem/cantilever/calculation_methods/dihedral_method/method")),
-      user_dihedral(EndnodeReadOnly<double>(
+      user_front_dihedral(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/dihedral/parameters/mode_0/dihedral_angle")),
       user_back_dihedral(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/back_wing/dihedral/parameters/mode_0/dihedral_angle")),
                                       
-      relative_kink_position_calculation_mode(EndnodeReadOnly<std::string>(
+      front_relative_kink_position_calculation_mode(EndnodeReadOnly<std::string>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/relative_kink_position/method")),
-      user_relative_kink(EndnodeReadOnly<double>("program_settings/tandem/cantilever/calculation_methods/front_wing/"
+      user_front_relative_kink(EndnodeReadOnly<double>("program_settings/tandem/cantilever/calculation_methods/front_wing/"
                                                  "relative_kink_position/parameters/mode_0/relative_kink_position")),
       back_relative_kink_position_calculation_mode(EndnodeReadOnly<std::string>(
           "program_settings/tandem/cantilever/calculation_methods/back_wing/relative_kink_position/method")),
       user_back_relative_kink(EndnodeReadOnly<double>("program_settings/tandem/cantilever/calculation_methods/back_wing/"
                                                  "relative_kink_position/parameters/mode_0/relative_kink_position")),
 
-      user_max_inner_trailing_edge_sweep(
+      user_front_max_inner_trailing_edge_sweep(
           EndnodeReadOnly<double>("program_settings/tandem/cantilever/calculation_methods/front_wing/"
                                   "relative_kink_position/parameters/mode_0/maximum_inner_trailing_edge_sweep")),
       user_back_max_inner_trailing_edge_sweep(
           EndnodeReadOnly<double>("program_settings/tandem/cantilever/calculation_methods/back_wing/"
                                   "relative_kink_position/parameters/mode_0/maximum_inner_trailing_edge_sweep")),
 
-      track_based_initial_relative_kink(
+      track_based_front_initial_relative_kink(
           EndnodeReadOnly<double>("program_settings/tandem/cantilever/calculation_methods/front_wing/"
                                   "relative_kink_position/parameters/mode_1/initial_relative_kink_position")),
-      track_based_max_inner_trailing_edge_sweep(
+      track_based_front_max_inner_trailing_edge_sweep(
           EndnodeReadOnly<double>("program_settings/tandem/cantilever/calculation_methods/front_wing/"
                                   "relative_kink_position/parameters/mode_1/maximum_inner_trailing_edge_sweep")),
       track_based_back_initial_relative_kink(
@@ -83,16 +83,16 @@ tandem::cantilever::WingDesignConfig::WingDesignConfig()
           EndnodeReadOnly<double>("program_settings/tandem/cantilever/calculation_methods/back_wing/"
                                   "relative_kink_position/parameters/mode_1/maximum_inner_trailing_edge_sweep")),
 
-      wing_profile_and_thickness_calculation_mode(
+      front_wing_profile_and_thickness_calculation_mode(
           EndnodeReadOnly<std::string>("program_settings/tandem/cantilever/calculation_methods/front_wing/"
                                        "wing_profile_and_thickness_distribution/method")),
-      torenbeek_jenkinson_wing_profile(
+      front_torenbeek_jenkinson_wing_profile(
           EndnodeReadOnly<std::string>("program_settings/tandem/cantilever/calculation_methods/front_wing/"
                                        "wing_profile_and_thickness_distribution/parameters/mode_1/wing_profile")),
-      max_thickness_to_chord_ratio(EndnodeReadOnly<double>(
+      front_max_thickness_to_chord_ratio(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/wing_profile_and_thickness_distribution/"
           "parameters/mode_1/max_thickness_to_chord_ratio")),
-      airfoil_critical_factor(
+      front_airfoil_critical_factor(
           EndnodeReadOnly<double>("program_settings/tandem/cantilever/calculation_methods/front_wing/"
                                   "wing_profile_and_thickness_distribution/parameters/mode_1/airfoil_critical_factor")),
       back_wing_profile_and_thickness_calculation_mode(
@@ -108,12 +108,12 @@ tandem::cantilever::WingDesignConfig::WingDesignConfig()
           EndnodeReadOnly<double>("program_settings/tandem/cantilever/calculation_methods/back_wing/"
                                   "wing_profile_and_thickness_distribution/parameters/mode_1/airfoil_critical_factor")),                                  
 
-      control_device_mode(EndnodeReadOnly<std::string>(
+      front_control_device_mode(EndnodeReadOnly<std::string>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/control_devices/method")),
-      high_lift_device_type_leading_edge(
+      front_high_lift_device_type_leading_edge(
           EndnodeReadOnly<std::string>("program_settings/tandem/cantilever/calculation_methods/front_wing/control_devices/"
                                        "parameters/mode_1/high_lift_device_type_leading_edge")),
-      high_lift_device_type_trailing_edge(
+      front_high_lift_device_type_trailing_edge(
           EndnodeReadOnly<std::string>("program_settings/tandem/cantilever/calculation_methods/front_wing/control_devices/"
                                        "parameters/mode_1/high_lift_device_type_trailing_edge")),
       back_control_device_mode(EndnodeReadOnly<std::string>(
@@ -125,18 +125,18 @@ tandem::cantilever::WingDesignConfig::WingDesignConfig()
           EndnodeReadOnly<std::string>("program_settings/tandem/cantilever/calculation_methods/back_wing/control_devices/"
                                        "parameters/mode_1/high_lift_device_type_trailing_edge")),        
 
-      spars_mode(
+      front_spars_mode(
           EndnodeReadOnly<std::string>("program_settings/tandem/cantilever/calculation_methods/front_wing/spars/method")),
       back_spars_mode(
           EndnodeReadOnly<std::string>("program_settings/tandem/cantilever/calculation_methods/back_wing/spars/method")),          
       
-      flops_fstrt(EndnodeReadOnly<double>(
+      front_flops_fstrt(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/mass/parameters/mode_0/fstrt")),
-      flops_faert(EndnodeReadOnly<double>(
+      front_flops_faert(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/mass/parameters/mode_0/faert")),
-      flops_fcomp(EndnodeReadOnly<double>(
+      front_flops_fcomp(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/mass/parameters/mode_0/fcomp")),
-      flops_technology_factor(EndnodeReadOnly<double>(
+      front_flops_technology_factor(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/mass/parameters/mode_0/technology_factor")),
       back_flops_fstrt(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/back_wing/mass/parameters/mode_0/fstrt")),
@@ -147,9 +147,9 @@ tandem::cantilever::WingDesignConfig::WingDesignConfig()
       back_flops_technology_factor(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/back_wing/mass/parameters/mode_0/technology_factor")),
 
-      chiozzotto_technology_factor(EndnodeReadOnly<double>(
+      front_chiozzotto_technology_factor(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/mass/parameters/mode_1/technology_factor")),
-      chiozzotto_material(EndnodeReadOnly<std::string>(
+      front_chiozzotto_material(EndnodeReadOnly<std::string>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/mass/parameters/mode_1/material")),
       back_chiozzotto_technology_factor(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/back_wing/mass/parameters/mode_1/technology_factor")),
@@ -169,43 +169,43 @@ void tandem::cantilever::WingDesignConfig::read(const node& xml) {
   user_relative_LE_stagger.read(xml);
   
   sweep_calculation_mode.read(xml);
-  user_sweep_angle_at_quarter_chord.read(xml);
-  korn_technology_factor.read(xml);
-  delta_drag_divergence_to_mach_design.read(xml); 
+  user_front_sweep_angle_at_quarter_chord.read(xml);
+  front_korn_technology_factor.read(xml);
+  front_delta_drag_divergence_to_mach_design.read(xml); 
   user_back_sweep_angle_at_quarter_chord.read(xml);
   back_korn_technology_factor.read(xml);
   back_delta_drag_divergence_to_mach_design.read(xml);
 
   taper_ratio_calculation_mode.read(xml);
-  user_taper_ratio.read(xml);
+  user_front_taper_ratio.read(xml);
   user_back_taper_ratio.read(xml);
 
   aspect_ratio_calculation_mode.read(xml);
-  user_aspect_ratio.read(xml);
+  user_front_aspect_ratio.read(xml);
   user_back_aspect_ratio.read(xml);
 
   dihedral_calculation_mode.read(xml);
-  user_dihedral.read(xml);
+  user_front_dihedral.read(xml);
   user_back_dihedral.read(xml);
 
-  relative_kink_position_calculation_mode.read(xml);
-  user_relative_kink.read(xml);
+  front_relative_kink_position_calculation_mode.read(xml);
+  user_front_relative_kink.read(xml);
   back_relative_kink_position_calculation_mode.read(xml);
   user_back_relative_kink.read(xml);
 
-  user_max_inner_trailing_edge_sweep.read(xml);
+  user_front_max_inner_trailing_edge_sweep.read(xml);
   user_back_max_inner_trailing_edge_sweep.read(xml);
     //TODO kayra: seperate mode switches after that
-  track_based_initial_relative_kink.read(xml);
-  track_based_max_inner_trailing_edge_sweep.read(xml);
+  track_based_front_initial_relative_kink.read(xml);
+  track_based_front_max_inner_trailing_edge_sweep.read(xml);
   track_based_back_initial_relative_kink.read(xml);
   track_based_back_max_inner_trailing_edge_sweep.read(xml);
 
-  wing_profile_and_thickness_calculation_mode.read(xml);
-  torenbeek_jenkinson_wing_profile.read(xml);
-  max_thickness_to_chord_ratio.read(xml);
-  airfoil_critical_factor.read(xml);
-  control_device_mode.read(xml);
+  front_wing_profile_and_thickness_calculation_mode.read(xml);
+  front_torenbeek_jenkinson_wing_profile.read(xml);
+  front_max_thickness_to_chord_ratio.read(xml);
+  front_airfoil_critical_factor.read(xml);
+  front_control_device_mode.read(xml);
 
   back_wing_profile_and_thickness_calculation_mode.read(xml);
   back_torenbeek_jenkinson_wing_profile.read(xml);
@@ -213,37 +213,37 @@ void tandem::cantilever::WingDesignConfig::read(const node& xml) {
   back_airfoil_critical_factor.read(xml);
 
 
-  control_device_mode.read(xml);
-  high_lift_device_type_leading_edge.read(xml);
-  high_lift_device_type_trailing_edge.read(xml);
+  front_control_device_mode.read(xml);
+  front_high_lift_device_type_leading_edge.read(xml);
+  front_high_lift_device_type_trailing_edge.read(xml);
 
   back_control_device_mode.read(xml);
   back_high_lift_device_type_leading_edge.read(xml);
   back_high_lift_device_type_trailing_edge.read(xml);
 
 
-  spars_mode.read(xml);
+  front_spars_mode.read(xml);
   back_spars_mode.read(xml);
   
-  flops_fstrt.read(xml);
-  flops_faert.read(xml);
-  flops_fcomp.read(xml);
+  front_flops_fstrt.read(xml);
+  front_flops_faert.read(xml);
+  front_flops_fcomp.read(xml);
 
-  flops_technology_factor.read(xml);
+  front_flops_technology_factor.read(xml);
   back_flops_fstrt.read(xml);
   back_flops_faert.read(xml);
   back_flops_fcomp.read(xml);
   back_flops_technology_factor.read(xml);
   
-  chiozzotto_technology_factor.read(xml);
-  chiozzotto_material.read(xml);
+  front_chiozzotto_technology_factor.read(xml);
+  front_chiozzotto_material.read(xml);
   back_chiozzotto_technology_factor.read(xml);
   back_chiozzotto_material.read(xml);
   
   common_airfoil_data_path.read(xml);
 
   // Read user wing profiles thickness and half span position
-  if (user_wing_profiles.empty()) {
+  if (user_front_wing_profiles.empty()) {
     node* result;
     int to_count = 0;
     do {
@@ -256,23 +256,23 @@ void tandem::cantilever::WingDesignConfig::read(const node& xml) {
     to_count--;
     for (int i = 0; i < to_count; ++i) {
       std::string id = std::to_string(i);
-      user_wing_profiles.push_back(EndnodeReadOnly<std::string>(
+      user_front_wing_profiles.push_back(EndnodeReadOnly<std::string>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/wing_profile_and_thickness_distribution/"
           "parameters/mode_0/wing_profile_and_thickness@" +
           id + "/wing_profile"));
-      user_thickness_to_chord.push_back(EndnodeReadOnly<double>(
+      user_front_thickness_to_chord.push_back(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/wing_profile_and_thickness_distribution/"
           "parameters/mode_0/wing_profile_and_thickness@" +
           id + "/thickness_to_chord/ratio"));
-      user_eta.push_back(EndnodeReadOnly<double>(
+      user_front_eta.push_back(EndnodeReadOnly<double>(
           "program_settings/tandem/cantilever/calculation_methods/front_wing/wing_profile_and_thickness_distribution/"
           "parameters/mode_0/wing_profile_and_thickness@" +
           id + "/thickness_to_chord/at_half_span"));
-      user_wing_profiles[i].read(xml);
-      user_thickness_to_chord[i].read(xml);
-      user_eta[i].read(xml);
-      user_wing_profiles_and_thickness_vector.push_back(
-          {user_eta[i].value(), user_thickness_to_chord[i].value(), user_wing_profiles[i].value()});
+      user_front_wing_profiles[i].read(xml);
+      user_front_thickness_to_chord[i].read(xml);
+      user_front_eta[i].read(xml);
+      user_front_wing_profiles_and_thickness_vector.push_back(
+          {user_front_eta[i].value(), user_front_thickness_to_chord[i].value(), user_front_wing_profiles[i].value()});
     }
   }
 
@@ -310,7 +310,7 @@ void tandem::cantilever::WingDesignConfig::read(const node& xml) {
   }
 
   // read user defined control surfaces
-  if (user_defined_control_devices.empty()) {
+  if (user_defined_front_control_devices.empty()) {
     node* result;
     int to_count = 0;
     do {
@@ -322,11 +322,11 @@ void tandem::cantilever::WingDesignConfig::read(const node& xml) {
     } while (result != nullptr);
     to_count--;
     for (int i = 0; i < to_count; ++i) {
-      user_defined_control_devices.push_back(
+      user_defined_front_control_devices.push_back(
           ControlDevice("program_settings/tandem/cantilever/calculation_methods/front_wing/control_devices/"
                         "parameters/mode_0/control_device@" +
                         std::to_string(i) + "/"));
-      user_defined_control_devices.back().read(xml);
+      user_defined_front_control_devices.back().read(xml);
     }
   }
 
@@ -351,7 +351,7 @@ void tandem::cantilever::WingDesignConfig::read(const node& xml) {
   }
   
   // read user defined spars
-  if (user_defined_spars.empty()) {
+  if (user_defined_front_spars.empty()) {
     node* result;
     int to_count = 0;
     do {
@@ -363,11 +363,11 @@ void tandem::cantilever::WingDesignConfig::read(const node& xml) {
     } while (result != nullptr);
     to_count--;
     for (int i = 0; i < to_count; ++i) {
-      user_defined_spars.push_back(
+      user_defined_front_spars.push_back(
           Spar("program_settings/tandem/cantilever/calculation_methods/front_wing/spars/"
                "parameters/mode_0/spar@" +
                std::to_string(i) + "/"));
-      user_defined_spars.back().read(xml);
+      user_defined_front_spars.back().read(xml);
     }
   }
 
diff --git a/wing_design/src/tandem/tandemWingDesignConfig.h b/wing_design/src/tandem/tandemWingDesignConfig.h
index 637f4262..7b739939 100644
--- a/wing_design/src/tandem/tandemWingDesignConfig.h
+++ b/wing_design/src/tandem/tandemWingDesignConfig.h
@@ -1,7 +1,7 @@
 /**
- * \file tawWingDesignConfig.h
+ * \file tandemWingDesignConfig.h
  * \author Christopher Ruwisch (christopher.ruwisch@tu-berlin.de)
- * \brief Wing design configuration for tube and wing aircrafts
+ * \brief Wing design configuration for tandem aircrafts
  * \version 0.1
  * \date 2023-12-14
  *
@@ -34,7 +34,7 @@ class WingDesignConfig {
   EndnodeReadOnly<std::string> wing_design_mode;
   EndnodeReadOnly<std::string> wing_configuration_mode;
   EndnodeReadOnly<std::string> wing_mass_mode;
-  //EndnodeReadOnly<std::string> back_wing_mass_mode;
+
 
   /* Design */
   /* Data for method - wing area calculation */
@@ -46,9 +46,9 @@ class WingDesignConfig {
 
   /* Data for method - quarter chord sweep calculation */
   EndnodeReadOnly<std::string> sweep_calculation_mode;
-  EndnodeReadOnly<double> user_sweep_angle_at_quarter_chord;
-  EndnodeReadOnly<double> korn_technology_factor;
-  EndnodeReadOnly<double> delta_drag_divergence_to_mach_design;
+  EndnodeReadOnly<double> user_front_sweep_angle_at_quarter_chord;
+  EndnodeReadOnly<double> front_korn_technology_factor;
+  EndnodeReadOnly<double> front_delta_drag_divergence_to_mach_design;
 
   EndnodeReadOnly<double> user_back_sweep_angle_at_quarter_chord;
   EndnodeReadOnly<double> back_korn_technology_factor;
@@ -56,46 +56,46 @@ class WingDesignConfig {
 
   /* Data for method - taper ratio calculation */
   EndnodeReadOnly<std::string> taper_ratio_calculation_mode;
-  EndnodeReadOnly<double> user_taper_ratio;
+  EndnodeReadOnly<double> user_front_taper_ratio;
 
   EndnodeReadOnly<double> user_back_taper_ratio;
 
   /* Data for method - aspect ratio calculation */
   EndnodeReadOnly<std::string> aspect_ratio_calculation_mode;
-  EndnodeReadOnly<double> user_aspect_ratio;
+  EndnodeReadOnly<double> user_front_aspect_ratio;
 
   EndnodeReadOnly<double> user_back_aspect_ratio;
 
   /* Data for method - dihedral calculation*/
   EndnodeReadOnly<std::string> dihedral_calculation_mode;
-  EndnodeReadOnly<double> user_dihedral;
+  EndnodeReadOnly<double> user_front_dihedral;
 
   EndnodeReadOnly<double> user_back_dihedral;
-    //TODO kayra: seperate mode switches after that
-  EndnodeReadOnly<std::string> relative_kink_position_calculation_mode;
-  EndnodeReadOnly<double> user_relative_kink;
+    //TODO kayra: seperated mode switches after here
+  EndnodeReadOnly<std::string> front_relative_kink_position_calculation_mode;
+  EndnodeReadOnly<double> user_front_relative_kink;
 
   EndnodeReadOnly<std::string> back_relative_kink_position_calculation_mode;
   EndnodeReadOnly<double> user_back_relative_kink;
 
-  EndnodeReadOnly<double> user_max_inner_trailing_edge_sweep;
+  EndnodeReadOnly<double> user_front_max_inner_trailing_edge_sweep;
 
   EndnodeReadOnly<double> user_back_max_inner_trailing_edge_sweep;
 
-  EndnodeReadOnly<double> track_based_initial_relative_kink;
-  EndnodeReadOnly<double> track_based_max_inner_trailing_edge_sweep;
+  EndnodeReadOnly<double> track_based_front_initial_relative_kink;
+  EndnodeReadOnly<double> track_based_front_max_inner_trailing_edge_sweep;
   EndnodeReadOnly<double> track_based_back_initial_relative_kink;
   EndnodeReadOnly<double> track_based_back_max_inner_trailing_edge_sweep;
 
   /* Data for method - wing profile and thickness calculation */
-  EndnodeReadOnly<std::string> wing_profile_and_thickness_calculation_mode;
-  std::vector<EndnodeReadOnly<std::string>> user_wing_profiles;
-  std::vector<EndnodeReadOnly<double>> user_thickness_to_chord;
-  std::vector<EndnodeReadOnly<double>> user_eta;
-  std::vector<std::tuple<double, double, std::string>> user_wing_profiles_and_thickness_vector;
-  EndnodeReadOnly<std::string> torenbeek_jenkinson_wing_profile;
-  EndnodeReadOnly<double> max_thickness_to_chord_ratio;
-  EndnodeReadOnly<double> airfoil_critical_factor;
+  EndnodeReadOnly<std::string> front_wing_profile_and_thickness_calculation_mode;
+  std::vector<EndnodeReadOnly<std::string>> user_front_wing_profiles;
+  std::vector<EndnodeReadOnly<double>> user_front_thickness_to_chord;
+  std::vector<EndnodeReadOnly<double>> user_front_eta;
+  std::vector<std::tuple<double, double, std::string>> user_front_wing_profiles_and_thickness_vector;
+  EndnodeReadOnly<std::string> front_torenbeek_jenkinson_wing_profile;
+  EndnodeReadOnly<double> front_max_thickness_to_chord_ratio;
+  EndnodeReadOnly<double> front_airfoil_critical_factor;
 
   EndnodeReadOnly<std::string> back_wing_profile_and_thickness_calculation_mode;
   std::vector<EndnodeReadOnly<std::string>> user_back_wing_profiles;
@@ -110,10 +110,10 @@ class WingDesignConfig {
 
 
   // flops mass method
-  EndnodeReadOnly<double> flops_fstrt;
-  EndnodeReadOnly<double> flops_faert;
-  EndnodeReadOnly<double> flops_fcomp;
-  EndnodeReadOnly<double> flops_technology_factor;
+  EndnodeReadOnly<double> front_flops_fstrt;
+  EndnodeReadOnly<double> front_flops_faert;
+  EndnodeReadOnly<double> front_flops_fcomp;
+  EndnodeReadOnly<double> front_flops_technology_factor;
 
   EndnodeReadOnly<double> back_flops_fstrt;
   EndnodeReadOnly<double> back_flops_faert;
@@ -121,17 +121,17 @@ class WingDesignConfig {
   EndnodeReadOnly<double> back_flops_technology_factor;
 
   // chiozzotto wer mass method
-  EndnodeReadOnly<double> chiozzotto_technology_factor;
-  EndnodeReadOnly<std::string> chiozzotto_material;
+  EndnodeReadOnly<double> front_chiozzotto_technology_factor;
+  EndnodeReadOnly<std::string> front_chiozzotto_material;
 
   EndnodeReadOnly<double> back_chiozzotto_technology_factor;
   EndnodeReadOnly<std::string> back_chiozzotto_material;
 
   /* Data for method - control devices */
-  EndnodeReadOnly<std::string> control_device_mode;
-  std::vector<ControlDevice> user_defined_control_devices;
-  EndnodeReadOnly<std::string> high_lift_device_type_leading_edge;
-  EndnodeReadOnly<std::string> high_lift_device_type_trailing_edge;
+  EndnodeReadOnly<std::string> front_control_device_mode;
+  std::vector<ControlDevice> user_defined_front_control_devices;
+  EndnodeReadOnly<std::string> front_high_lift_device_type_leading_edge;
+  EndnodeReadOnly<std::string> front_high_lift_device_type_trailing_edge;
 
   EndnodeReadOnly<std::string> back_control_device_mode;
   std::vector<ControlDevice> user_defined_back_control_devices;
@@ -139,8 +139,8 @@ class WingDesignConfig {
   EndnodeReadOnly<std::string> back_high_lift_device_type_trailing_edge;
 
   /* Data for method - spars */
-  EndnodeReadOnly<std::string> spars_mode;
-  std::vector<Spar> user_defined_spars;
+  EndnodeReadOnly<std::string> front_spars_mode;
+  std::vector<Spar> user_defined_front_spars;
   
   EndnodeReadOnly<std::string> back_spars_mode;
   std::vector<Spar> user_defined_back_spars;
diff --git a/wing_design/src/tandem/tandemWingDesignData.cpp b/wing_design/src/tandem/tandemWingDesignData.cpp
index 38cf34c8..fdf849c2 100644
--- a/wing_design/src/tandem/tandemWingDesignData.cpp
+++ b/wing_design/src/tandem/tandemWingDesignData.cpp
@@ -16,7 +16,7 @@ tandem::cantilever::WingDesignData::WingDesignData()
     : specification_icao_aerodrome_reference_code(
           EndnodeReadOnly<std::string>("requirements_and_specifications/requirements/top_level_aircraft_requirements/"
                                        "icao_aerodrome_reference_code")),
-      specification_wing_mounting(
+      specification_front_wing_mounting(
           EndnodeReadOnly<std::string>("requirements_and_specifications/design_specification/configuration/wing_definition/tandem_wing_mounting/front_mounting")),
       specification_back_wing_mounting(
           EndnodeReadOnly<std::string>("requirements_and_specifications/design_specification/configuration/wing_definition/tandem_wing_mounting/back_mounting")),          
@@ -43,7 +43,7 @@ tandem::cantilever::WingDesignData::WingDesignData()
 
 void tandem::cantilever::WingDesignData::read(const node& xml) {
   specification_icao_aerodrome_reference_code.read(xml);
-  specification_wing_mounting.read(xml);
+  specification_front_wing_mounting.read(xml);
   specification_back_wing_mounting.read(xml);
   specification_longitudinal_position.read(xml);
   specification_landing_gear_mounting.read(xml);
@@ -107,11 +107,11 @@ void tandem::cantilever::WingDesignData::read_fuselage(std::filesystem::path pat
   fuselage = fuselage_factory.create("fuselage/specific/geometry/fuselage@0");
 }
 
-void tandem::cantilever::WingDesignData::update_wing(node& xml) {
-  geom2::io::SurfaceType io = geom2::io::Wing(wing);
+void tandem::cantilever::WingDesignData::update_front_wing(node& xml) {
+  geom2::io::SurfaceType io = geom2::io::Wing(front_wing);
   const std::string path_to_geometry = "component_design/wing/specific/geometry";
   std::visit(geom2::io::AixmlConverter(xml[path_to_geometry],
-                                       {"aerodynamic_surface", "0", wing.name}),
+                                       {"aerodynamic_surface", "0", front_wing.name}),
              io);
 }
 
@@ -123,13 +123,13 @@ void tandem::cantilever::WingDesignData::update_back_wing(node& xml) {
              io);
 }
 
-void tandem::cantilever::WingDesignData::update_spars(node& xml) {
-  for (size_t i = 0; i < spars.size(); ++i) {
-    geom2::io::SurfaceType io_spar = geom2::io::Spar(spars[i]);
+void tandem::cantilever::WingDesignData::update_front_spars(node& xml) {
+  for (size_t i = 0; i < front_spars.size(); ++i) {
+    geom2::io::SurfaceType io_spar = geom2::io::Spar(front_spars[i]);
     const std::string path_to_spars = "component_design/wing/specific/geometry/aerodynamic_surface@0/parameters/spars";
     std::visit(geom2::io::AixmlConverter(
                    xml[path_to_spars],
-                   {"spar", std::to_string(i), spars[i].name}),
+                   {"spar", std::to_string(i), front_spars[i].name}),
                io_spar);
   }
 }
@@ -144,17 +144,17 @@ void tandem::cantilever::WingDesignData::update_back_spars(node& xml) {
   }
 }
 
-void tandem::cantilever::WingDesignData::update_control_devices(node& xml) {
-  for (size_t i = 0; i < control_devices.size(); ++i) {
-    geom2::io::SurfaceType io_control_device = geom2::io::ControlDevice(control_devices[i]);
+void tandem::cantilever::WingDesignData::update_front_control_devices(node& xml) {
+  for (size_t i = 0; i < front_control_devices.size(); ++i) {
+    geom2::io::SurfaceType io_control_device = geom2::io::ControlDevice(front_control_devices[i]);
     const std::string path_to_control_devices = "component_design/wing/specific/geometry/aerodynamic_surface@0/parameters/control_devices";
     std::visit(geom2::io::AixmlConverter(
                    xml[path_to_control_devices],
-                   {"control_device", std::to_string(i), control_devices[i].name}),
+                   {"control_device", std::to_string(i), front_control_devices[i].name}),
                io_control_device);
     Endnode<double> min_deflection(path_to_control_devices + "/control_device@" + std::to_string(i) + "/deflection/full_negative_deflection","full negative deflection");
     Endnode<double> max_deflection(path_to_control_devices + "/control_device@" + std::to_string(i) + "/deflection/full_positive_deflection","full positive deflection");
-    const auto [min, max] = control_devices_deflections[i];
+    const auto [min, max] = front_control_devices_deflections[i];
     min_deflection.set_unit("rad");
     max_deflection.set_unit("rad");
     min_deflection.set_value(min);
@@ -197,15 +197,15 @@ void tandem::cantilever::WingDesignData::update(node& xml) {
 
   wing_position.update(xml);
 
-  update_wing(xml); 
+  update_front_wing(xml); 
   
   update_back_wing(xml);
  
-  update_spars(xml);
+  update_front_spars(xml);
   
   update_back_spars(xml);
   
-  update_control_devices(xml);
+  update_front_control_devices(xml);
   
   update_back_control_devices(xml);  
   
diff --git a/wing_design/src/tandem/tandemWingDesignData.h b/wing_design/src/tandem/tandemWingDesignData.h
index 406de77b..68f0b143 100644
--- a/wing_design/src/tandem/tandemWingDesignData.h
+++ b/wing_design/src/tandem/tandemWingDesignData.h
@@ -1,7 +1,7 @@
 /**
- * \file tawWingDesignData.h
+ * \file tandemWingDesignData.h
  * \author Christopher Ruwisch (christopher.ruwisch@tu-berlin.de)
- * \brief Wing design data for tube and wing aircrafts
+ * \brief Wing design data for tandem aircrafts
  * \version 0.1
  * \date 2023-12-14
  *
@@ -33,17 +33,17 @@ class WingDesignData {
 
   void update(node& xml);
 
-  void update_wing(node& xml);
+  void update_front_wing(node& xml);
   void update_back_wing(node& xml);
 
-  void update_spars(node& xml);
+  void update_front_spars(node& xml);
   void update_back_spars(node& xml);
 
-  void update_control_devices(node& xml);
+  void update_front_control_devices(node& xml);
   void update_back_control_devices(node& xml);
 
   EndnodeReadOnly<std::string> specification_icao_aerodrome_reference_code;
-  EndnodeReadOnly<std::string> specification_wing_mounting;
+  EndnodeReadOnly<std::string> specification_front_wing_mounting;
   EndnodeReadOnly<std::string> specification_back_wing_mounting;
   EndnodeReadOnly<double> specification_longitudinal_position;
   EndnodeReadOnly<std::string> specification_landing_gear_mounting;
@@ -52,7 +52,7 @@ class WingDesignData {
   EndnodeReadOnly<double> specification_design_altitude;
   EndnodeReadOnly<double> specification_maximum_load_factor;
   EndnodeReadOnly<double> sizing_point_wing_loading;
-  EndnodeReadOnly<double> track_based_relative_kink;
+  EndnodeReadOnly<double> track_based_front_relative_kink;
   EndnodeReadOnly<double> track_based_back_relative_kink;
 
   Endnode<double> spanwise_kink;
@@ -67,15 +67,15 @@ class WingDesignData {
 
   PositionIO center_of_gravity_mtom;
   geom2::MultisectionSurface<geom2::PolygonSection> fuselage;
-  geom2::MultisectionSurface<geom2::AirfoilSection> wing;
+  geom2::MultisectionSurface<geom2::AirfoilSection> front_wing;
   geom2::MultisectionSurface<geom2::AirfoilSection> back_wing;
 
-  std::vector<geom2::MultisectionSurface<geom2::PolygonSection>> control_devices;
-  std::vector<std::tuple<double,double>> control_devices_deflections;
+  std::vector<geom2::MultisectionSurface<geom2::PolygonSection>> front_control_devices;
+  std::vector<std::tuple<double,double>> front_control_devices_deflections;
   std::vector<geom2::MultisectionSurface<geom2::PolygonSection>> back_control_devices;
   std::vector<std::tuple<double,double>> back_control_devices_deflections;
 
-  std::vector<geom2::MultisectionSurface<geom2::PolygonSection>> spars;
+  std::vector<geom2::MultisectionSurface<geom2::PolygonSection>> front_spars;
   std::vector<geom2::MultisectionSurface<geom2::PolygonSection>> back_spars;
 
 };
-- 
GitLab