Skip to content

Commit

Permalink
Accounting for non-convergence in XFOIL analysis/optimization
Browse files Browse the repository at this point in the history
  • Loading branch information
mlauer154 committed Jan 22, 2024
1 parent f641c95 commit 7b3004b
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions pymead/analysis/calc_aero_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,9 +197,10 @@ def calculate_aero_data(airfoil_coord_dir: str, airfoil_name: str, coords: typin
aero_data[k].append(v)

if save_aero_data:
for k, v in aero_data["Cp"].items():
if isinstance(v, np.ndarray):
aero_data["Cp"][k] = v.tolist()
if aero_data["converged"]:
for k, v in aero_data["Cp"].items():
if isinstance(v, np.ndarray):
aero_data["Cp"][k] = v.tolist()
save_data(aero_data, os.path.join(base_dir, "aero_data.json"))

return aero_data, xfoil_log
Expand Down Expand Up @@ -395,6 +396,12 @@ def run_xfoil(airfoil_name: str, base_dir: str, xfoil_settings: dict, coords: ty
h.write(errs)
aero_data['timed_out'] = False
aero_data['converged'] = True
with open(xfoil_log, "r") as log_file:
for line in log_file:
if "Convergence failed" in line:
print(f"Convergence failed! {log_file = }")
aero_data["converged"] = False
break
except subprocess.TimeoutExpired:
process.kill()
outs, errs = process.communicate()
Expand All @@ -406,7 +413,7 @@ def run_xfoil(airfoil_name: str, base_dir: str, xfoil_settings: dict, coords: ty
aero_data['timed_out'] = True
aero_data['converged'] = False
finally:
if not aero_data['timed_out']:
if not aero_data['timed_out'] and aero_data["converged"]:
line1, line2 = read_aero_data_from_xfoil(xfoil_log, aero_data)
if line1 is not None:
convert_xfoil_string_to_aero_data(line1, line2, aero_data)
Expand Down

0 comments on commit 7b3004b

Please sign in to comment.