# tank.py - de drinkwatertank van 500 L: materiaal, vloeroppervlak en vloerdruk per diameter
import math

V = 0.50                     # m3
D_DEUR, H_MAX = 0.78, 2.2    # randvoorwaarden: door de deur, en niet te hoog (m)


def gegevens(d):
    r = d / 2
    h = V / (math.pi * r * r)
    A = 2 * math.pi * r * r + 2 * math.pi * r * h        # bodem + deksel + wand (m2)
    F = math.pi * r * r                                   # vloeroppervlak (m2)
    p = 1000 * 9.81 * h / 1000                            # waterdruk op de bodem (kPa)
    return h, A, F, p


A_min = gegevens(2 * (V / (2 * math.pi)) ** (1 / 3))[1]
print("  d (m)  h (m)  A (m2)  extra  F (m2)  p (kPa)  toegelaten")
for d in (0.54, 0.60, 0.70, 0.78, 0.86, 1.00):
    h, A, F, p = gegevens(d)
    ok = d <= D_DEUR and h <= H_MAX
    print("  %.2f   %.3f  %.3f   %4.1f%%  %.3f   %4.1f    %s" % (d, h, A, (A / A_min - 1) * 100, F, p, "ja" if ok else "nee"))

# rooster: de toegelaten diameter met het minste materiaal (stap 1 mm)
beste = min((d / 1000 for d in range(500, 1201)
             if d / 1000 <= D_DEUR and gegevens(d / 1000)[0] <= H_MAX),
            key=lambda d: gegevens(d)[1])
print("beste toegelaten diameter: %.3f m (h = %.3f m)" % (beste, gegevens(beste)[0]))
