import math, sys, os sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) import design_fit as F D = math.degrees for s in (0.0022, 0.0024, 0.0026, 0.0028): for u in (0.14, 0.17, 0.20, 0.23): for px in (-2.5, -2.3, -2.1, -1.9): for cle in (0.15, 0.35): ms = [] for v in ("A", "B"): S = F.setup(s, u, px, cle, "prop", "Moonpool_Door_Aft", v) best = None for br in (+1, -1): m = F.assess(S, 0.0, br) if not m["fail"] and (best is None or abs(sum(m["q"]["q4"])) < abs(sum(best["q"]["q4"]))): best = m; best["br"] = br ms.append(best if best else m) if any(m["fail"] for m in ms): print("s %.4f u %.2f px %.1f cle %.2f FAIL %s" % (s, u, px, cle, [m["fail"] for m in ms])); continue rr = lambda k: D(max(m["q"][k][1] for m in ms) - min(m["q"][k][0] for m in ms)) cl = [] for v, m in zip(("A", "B"), ms): S = F.setup(s, u, px, cle, "prop", "Moonpool_Door_Aft", v) cl.append(F.full(S, 0.0, m["br"], step=3)["cl"]) print("s %.4f u %.2f px %.1f cle %.2f | q1r %.0f q2r %.0f q3r %.0f elb %.0f..%.0f q5min %.0f dead %.2f wcax %.2f T %.2f | clA %.3f %s | clB %.3f %s | q2 %.0f..%.0f q3 %.0f..%.0f" % ( s, u, px, cle, rr("q1"), rr("q2"), rr("q3"), D(min(m["elb"][0] for m in ms)), D(max(m["elb"][1] for m in ms)), D(min(m["minq5"] for m in ms)), min(m["rod"][0] - (m["rod"][1] - m["rod"][0]) for m in ms), min(m["wc_axis"] for m in ms), S["T"], cl[0][0], cl[0][1], cl[1][0], cl[1][1], D(min(m["q"]["q2"][0] for m in ms)), D(max(m["q"]["q2"][1] for m in ms)), D(min(m["q"]["q3"][0] for m in ms)), D(max(m["q"]["q3"][1] for m in ms))))