diff --git a/docs/documentation/analysis.md b/docs/documentation/analysis.md
index a2581a3bcf8dc3b722b60ea842566216b4f0f83f..7db3eaf86449951fd3dbdbc40e5511187e6b18be 100644
--- a/docs/documentation/analysis.md
+++ b/docs/documentation/analysis.md
@@ -61,7 +61,7 @@ The `constraint_analysis` module updates the performance criteria wing loading a
 
 |Module Version|Language|License|Documentation|
 |:---:|:---:|:---:|---|
-|1.0.0|:simple-cplusplus: |GPLv3|-|
+|1.0.0|:simple-cplusplus: |GPLv3|[Link](analysis/constraint_analysis/index.md)|
 
 ---
 
diff --git a/docs/documentation/analysis/constraint_analysis/index.md b/docs/documentation/analysis/constraint_analysis/index.md
new file mode 100644
index 0000000000000000000000000000000000000000..152af7c41ce95243c76bc3537ac08facfb075718
--- /dev/null
+++ b/docs/documentation/analysis/constraint_analysis/index.md
@@ -0,0 +1,249 @@
+# Constraint Analysis {#mainpage}
+
+# Aerodynamic and Performance Equations for Constraint Analysis Module
+
+## Function
+
+Adjust the design point based on the point performance requirements.
+
+## Rationale
+
+The end-of-the-loop aircraft’s aerodynamic performance is different to that of the beginning-of-the-loop aircraft. Therefore, it is necessary to size the aircraft based on the most up to date data from the design loop. This way, the design is ensured to have the best fitting characteristics to the mission and performance requirements.
+
+## Logic
+
+Point performance requirements are evaluated as constraints within the T_SL/W_TO – W_TO/S_Ref design space. The point is selected to have the minimum T_SL/W_TO possible value that lies in the feasible space.
+
+## Derivation
+
+1\. Lift Equation (getCL):
+
+L=n\\cdot W=\\frac{1}{2}\\cdot\\rho\\cdot\\left(M\\cdot a\\right)^2\\cdot C_L\\cdot S
+
+C_L=\\frac{n}{\\frac{1}{2}\\cdot\\rho\\cdot\\left(M\\cdot a\\right)^2}\\cdot\\left(W/S\\right)
+
+2\. Drag Equation:
+
+D=\\frac{1}{2}\\cdot\\rho\\cdot\\left(M\\cdot a\\right)^2\\cdot C_D\\cdot S,\\emsp\\mathrm{where\\ }C_D=f\\left(C_L\\right)
+
+3\. Thrust-Difference Equation:
+
+T-D=W\\cdot\\frac{d}{dt}\\left(h+\\frac{\\left(M\\cdot a\\right)^2}{2\\cdot g}\\right)
+
+4\. Weight and Thrust Relationships:
+
+W=\\beta\\cdot W_{TO}
+
+T=\\alpha\\cdot T_{SL},\\emsp\\mathrm{where\\ }\\alpha=f\\left(M,h\\right)
+
+5\. Substituted Thrust-Difference Equation:
+
+T-\\left(\\frac{1}{2}\\cdot\\rho\\cdot\\left(M\\cdot a\\right)^2\\cdot f\\left(C_L\\right)\\cdot S\\right)=W\\cdot\\frac{d}{dt}\\left(h+\\frac{\\left(M\\cdot a\\right)^2}{2\\cdot g}\\right)
+
+## Final Substituted Equation
+
+\\frac{T_{SL}}{W_{TO}}=\\frac{\\beta\\cdot\\frac{d}{dt}\\left(h+\\frac{V^2}{2\\cdot g}\\right)+\\frac{1}{2}\\cdot\\rho\\cdot\\left(M\\cdot a\\right)^2\\cdot f\\left(C_L\\right)}{\\alpha\\cdot\\left(W_{TO}/S\\right)}
+
+f\\left(C_L\\right)=C_D\\left(\\frac{\\beta\\cdot n}{\\frac{1}{2}\\cdot\\rho\\cdot\\left(M\\cdot a\\right)^2}\\cdot\\left(W_{TO}/S\\right)\\right)
+
+## Parameter Meanings
+
+L: Lift (N)
+
+n: Load factor (dimensionless)
+
+W: Weight (N)
+
+ρ: Air density (kg/m^3)
+
+M: Mach number (dimensionless)
+
+a: Speed of sound (m/s)
+
+C_L: Lift coefficient (dimensionless)
+
+C_D: Drag coefficient (dimensionless)
+
+S: Reference area (m^2)
+
+T: Thrust (N)
+
+D: Drag (N)
+
+h: Altitude (m)
+
+g: Gravitational acceleration (9.81 m/s^2)
+
+β: Weight fraction (dimensionless)
+
+W_{TO}: Takeoff weight (N)
+
+α: Thrust fraction (dimensionless), α = f(M, h)
+
+T_{SL}: Sea-level thrust (N)
+
+f(C_L): Functional relationship defining drag coefficient in terms of lift coefficient
+
+## Cases
+
+Equation 1 (constant_altitude_speed_cruise):
+
+\\frac{T_{SL}}{W_{TO}}=\\frac{\\beta}{\\alpha}\\cdot\\left(\\frac{0.5\\cdot\\rho\\cdot\\left(M\\cdot a\\right)^2}{\\beta}\\cdot\\frac{1.0}{W/S}\\right)\\cdot C_D
+
+Equation 2 (constant_speed_climb):
+
+\\frac{T_{SL}}{W_{TO}}=\\frac{\\beta}{\\alpha}\\cdot\\left(\\frac{C_D}{\\frac{\\beta}{q\\cdot W/S}}+\\frac{1}{u}\\cdot\\frac{dh}{dt}\\right),\\ \\ \\ \\ where:u=M\\cdot a,\\emsp q=0.5\\cdot\\rho\\cdot u^2
+
+Equation 3 (constant_altitude_speed_turn):
+
+\\frac{T_{SL}}{W_{TO}}=\\frac{\\beta}{\\alpha}\\cdot\\left(K_1\\cdot n^2\\cdot\\frac{\\beta}{0.5\\cdot\\rho\\cdot\\left(M\\cdot a\\right)^2}\\cdot W/S+\\frac{C_{D0}}{\\frac{\\beta}{0.5\\cdot\\rho\\cdot\\left(M\\cdot a\\right)^2}\\cdot W/S}\\right)
+
+Equation 4 (horizontal_acceleration):
+
+\\frac{T_{SL}}{W_{TO}}=\\frac{\\beta}{\\alpha}\\cdot\\frac{0.5\\cdot\\rho\\cdot\\left(M\\cdot a\\right)^2}{\\beta}\\cdot\\frac{1.0}{W/S}\\cdot C_D\\cdot\\frac{1}{g_0}\\cdot\\frac{dv}{dt}
+
+Equation 5 (takeoff_ground_roll):
+
+\\frac{T_{SL}}{W_{TO}}=\\frac{\\beta^2}{\\alpha}\\cdot\\frac{k_{T0}^2}{s_G\\cdot\\rho\\cdot g_0\\cdot C_{L_{\\mathrm{max,\\ TO}}}}\\cdot W/S
+
+Equation 6 (braking_roll):
+
+W/S=\\frac{s_G\\cdot\\rho\\cdot\\ g_0\\cdot\\mathrm{\\ }\\ \\left(C_{D_L}-\\mu_B\\cdot\\ C_{L_L}\\right)}{\\beta\\cdot\\ l\\ n\\left(1+\\frac{C_{D_L}-\\mu_B\\cdot\\ C_{L_L}}{\\frac{\\mu_B\\cdot\\ C_{L_L}}{k_{T0}^2}}\\right)}
+
+Equation 7 (service_ceiling):
+
+\\frac{T_{SL}}{W_{TO}}=\\frac{\\beta}{\\alpha}\\cdot\\left(K_1\\cdot\\frac{\\beta}{0.5\\cdot\\rho\\cdot\\left(M\\cdot a\\right)^2}\\cdot W/S+K_2+\\frac{C_{D0}}{\\frac{\\beta}{0.5\\cdot\\rho\\cdot\\left(M\\cdot a\\right)^2}\\cdot W/S}+\\frac{1}{M\\cdot a}\\cdot\\mathrm{SEP}\\ \\right)
+
+Equation 8 (takeoff_climb_angle):
+
+\\frac{T_{SL}}{W_{TO}}=\\frac{\\beta}{\\alpha}\\cdot(K_1\\cdot\\frac{C_{L_{\\mathrm{max,\\ TO}}}}{k_{T0}^2}+K_2+\\frac{C_{D0}}{\\frac{C_{L_{\\mathrm{max,\\ TO}}}}{k_{T0}^2}}+\\sin\\funcapply\\gamma)
+
+Equation 9 (gust):
+
+W/S=\\frac{C_{L_\\alpha}\\cdot\\rho\\cdot V_{TO_L}\\cdot w_g}{d_{n_G}\\cdot2\\cdot\\beta}
+
+## Building the Cases for Constraint Analysis
+
+Constraint 1: One Engine Inoperative
+
+Inputs are:
+
+W_over_S_data, 
+
+CD_vector (taken from the polar or calculated based on quadratic fit), 
+
+weight_fraction_TO (taken from the mission analysis results), 
+
+alpha_TO (taken from the engine library and modified to account for OEI), 
+
+M_TO, 
+
+altitude = 0.0, 
+
+load_factor = 1.0,
+
+2.4 / 100.0 \* climb_speed;
+
+Climb speed is taken from the aircraft XML file. The OEI climb gradient is 2.4%.
+
+Output is the minimum Thrust to Weight ratio that the aircraft shall have as a vector.
+
+Constraint 2: Service Ceiling (SEP)
+
+Inputs are:
+
+W_over_S_data,
+
+CD_vector (taken from the polar or calculated based on quadratic fit),
+
+weight_fraction_segment (taken from the mission analysis results),
+
+alpha_segment (taken from the engine library),
+
+M_max (taken from the aircraft XML file),
+
+altitude_cruise,
+
+load_factor = 1.0,
+
+climb_gradient = 0.508;
+
+The climb rate is 100 ft/min which corresponds to 0.508 m per second.
+
+Output is the minimum Thrust to Weight ratio that the aircraft shall have as a vector.
+
+Constraint 3: Landing Field Length
+
+Inputs are:
+
+CD_max_L (taken from the polar or calculated based on quadratic fit), 
+
+CL_max_L (C_LmaxLanding node of the aircraft XML), 
+
+weight_fraction_landing (taken from the mission analysis results),
+
+alpha_landing (taken from the engine library), 
+
+M_TO (taken from the aircraft XML file), 
+
+altitude = 0.0, 
+
+my_B (breaking_coefficient node of the aircraft XML), 
+
+s_G_L (takeoff or landing field length)
+
+Output is the maximum Wing Loading value that the aircraft shall have.
+
+Constraint 4: Gust
+
+Inputs are:
+
+CL_alpha (the slope of the linear segment of the CL-AoA polar), 
+
+altitude = 0.0, 
+
+V_TO_L (taken from the aircraft XML file), 
+
+w_g (taken from the gust_speed node of the module config), 
+
+dn_G (taken from the gust_load_factor node of the module config), 
+
+weight_fraction_TO (taken from the mission analysis results),
+
+## Updating the Design Point
+
+min_finder.find_dominant_curve();
+
+double sf = this->configuration_xml->at("module_configuration_file/program_settings/safety_factor/value");
+
+min_finder.find_design_point(sf);
+
+min_finder.update_design_point();
+
+Steps:
+
+1. Find the dominant curve: Takes the max T/W required at each W/S, hence gets the constraining curve
+2. Read the “safety factor” which adds the desired increment to the minimum T/W for additional safety. (CAN BE VARIED EACH ITERATION FOR FASTER CONVERGENCE)
+3. Find the minimum T/W from the dominant curve, get the W/S value corresponding to this T/W
+    1. Not an “optimization”, just a sorting algorithm
+    2. Does not interpolate between points
+4. Update the design point
+
+## Functional Flow
+
+1. Initialize the Aircraft XML, Polar XML, Engine, and the Config XML
+2. Initialize the wing loading vector
+3. For each case:
+    1. Read the polar that corresponds to the desired Mach number and the flight configuration
+    2. Get the CL based on the Lift Equation
+    3. Get the CD that corresponds to the CL by either:
+        1. Getting the CD directly from the polar or,
+        2. Calculating the CD based on quadratic fit
+    4. Evaluate the constraint
+4. Assemble the constraints
+5. Find the dominant curve
+6. Evaluate the feasible area
+7. Find the minimum T/W from the dominant curve and get the W/S that corresponds to this T/W
+8. Update the design point
+9. Plot the results
+10. Save the plots
\ No newline at end of file