def elliptic(): alpha = random.uniform(0, interval) theta = random.uniform(0, interval) u, v, g = diskload.elliptic(alpha, diskload.Compensation.UNCOMPENSATED, theta, W, 40000, love, computeU=computeU, computeV=computeV, computeG=computeG)
trials = 100 love = diskload.love_numbers.read() love = diskload.love_numbers.extrapolate(love, 12000000) csv = open('l2-norm.csv', 'w') csv.write("cutoff U V G\n") for cutoff in range(20000, 4000000, 100000): uTotal = 0.0 vTotal = 0.0 gTotal = 0.0 for _ in range(trials): alpha = random.uniform(0.05, 0.5) theta = random.uniform(0.05, 0.5) uC, vC, gC = diskload.truncated(alpha, diskload.Compensation.UNCOMPENSATED, theta, W, cutoff, love) u, v, g = diskload.elliptic(alpha, diskload.Compensation.UNCOMPENSATED, theta, W, 40000, love) uTotal += (uC - u) * (uC - u) vTotal += (vC - v) * (vC - v) gTotal += (gC - g) * (gC - g) line = "%d %e %e %e\n" % (cutoff, sqrt( uTotal / trials), sqrt(vTotal / trials), sqrt(gTotal / trials)) csv.write(line) print(line)
N = 1000 alpha = 0.001 min_theta = alpha * 10.0 max_theta = alpha * 1000.0 base = math.exp(math.log(max_theta / min_theta) / (N - 1)) f = open("fake-point-load.csv", "w") f.write("alpha theta alpha/theta U V G U40K V40K G40K Upoint Vpoint Gpoint\n") for i in range(N): theta = (base**i) * min_theta w = 1.0 f.write("%e %e %e " % (alpha, theta, theta / alpha)) f.write("%e %e %e " % diskload.elliptic(alpha, uncompensated, theta, w, 40000, love)) f.write("%e %e %e " % diskload.truncated(alpha, uncompensated, theta, w, 40000, love)) radius = 2.0 * 1000.0 * diskload.earth.default.radius * sin( alpha * diskload.constants.DEGREES / 2.0) area = (pi * radius * radius) w = area * 4.0 * diskload.earth.default.gravity / 1e16 f.write("%e %e %e " % diskload.point(theta, w, 40000, love)) f.write("\n")