Ejemplo n.º 1
0
def print_thickness(args):
    "Print the code computing the ice thickness"

    print_header("blatter_xz_vanderveen_thickness", args, return_type="double")

    print_var(C0(), C)

    print_footer(H_exact)
Ejemplo n.º 2
0
def print_exact(args):

    print_header("blatter_xz_vanderveen_exact", args)

    h0 = sp.var("thickness")

    print_var(C0(), C)
    print_var(H_exact, h0)

    print_footer(u_exact.subs(H, h0), v_exact)
Ejemplo n.º 3
0
def print_source_base(args):
    "Print the code computing the extra term at the bottom surface"

    u0, v0 = u_exact()

    f_b = basal_bc(u0.subs(h, H(x)), v0)

    print_header("blatter_xz_halfar_source_base", args)
    print("  (void) B;")
    print_footer(f_b, 0.0)
Ejemplo n.º 4
0
def print_basal_beta(args):
    "Print the code computing basal sliding coefficient"

    beta = basal_beta()

    print_header("blatter_xz_vanderveen_beta", args, return_type="double")

    h0 = sp.var("thickness")

    print_var(C0(), C)
    print_var(H_exact, h0)

    print_footer(beta.subs(H, h0))
Ejemplo n.º 5
0
def print_source_surface(args):
    "Print the code computing the extra term at the top surface"

    f_top, _ = surface_bc()

    print_header("blatter_xz_vanderveen_source_surface", args)

    h0 = sp.var("thickness")

    print_var(C0(), C)
    print_var(H_exact, h0)

    print_footer(f_top.subs(H, h0), 0.0)
Ejemplo n.º 6
0
def print_source_lateral(args):
    "Print the code computing the extra term at the right boundary"

    f_lat, _ = source_lateral()

    print_header("blatter_xz_vanderveen_source_lateral", args)

    h0 = sp.var("thickness")

    print_var(C0(), C)
    print_var(H_exact, h0)

    print_footer(f_lat.subs(H, h0), 0.0)
Ejemplo n.º 7
0
def print_exact(args):
    u0, v0 = u_exact()

    u0 = u0.subs(subs)

    print_header("blatter_xz_halfar_exact", args)

    for key, value in constants().items():
        print_var(value, key)
    print_var(H(x), h0)
    print_var(H(x).diff(x), h_x)

    print_footer(u0, v0)
Ejemplo n.º 8
0
def print_source_lateral(args):
    "Print the code computing the extra term at the right boundary"

    f_lat, _ = lateral_bc(u, v)
    f_lat = f_lat.subs(subs).factor()

    u0, _ = u_exact()

    U_x = u0.diff(x).subs(subs)
    U_z = u0.diff(z).subs(subs)

    print_header("blatter_xz_halfar_source_lateral", args)

    for key, value in constants().items():
        print_var(value, key)
    print_var(H(x), h0)
    print_var(H(x).diff(x), h_x)
    print_var(H(x).diff(x, 2), h_xx)
    print_var(U_x, u_x)
    print_var(U_z, u_z)

    print_footer(f_lat, 0.0)
Ejemplo n.º 9
0
def print_source_surface(args):
    "Print the code computing the extra term at the top surface"

    f_top = surface_bc(u, v, h)

    # take advantage of the fact that u_z = 0 at z = h
    f_top = f_top.subs(subs).subs(u_z, 0)

    u0, _ = u_exact()

    U_x = u0.diff(x).subs(subs)

    print_header("blatter_xz_halfar_source_surface", args)

    for key, value in constants().items():
        print_var(value, key)
    print_var(H(x), h0)
    print_var(h0, z)
    print_var(H(x).diff(x), h_x)
    print_var(H(x).diff(x, 2), h_xx)
    print_var(U_x, u_x)

    print_footer(f_top, 0.0)
Ejemplo n.º 10
0
def print_source(args):
    f, _ = source_term(eta(u, v, 3), u, v)
    f = f.subs(subs)

    u0, _ = u_exact()

    U_x = u0.diff(x)
    U_z = u0.diff(z)

    print_header("blatter_xz_halfar_source", args)

    for key, value in constants().items():
        print_var(value, key)
    print_var(H(x), h0)
    print_var(H(x).diff(x), h_x)
    print_var(H(x).diff(x, 2), h_xx)
    print_var(H(x).diff(x, 3), h_xxx)
    print_var(U_x.subs(subs), u_x)
    print_var(U_z.subs(subs), u_z)
    print_var(U_x.diff(x).subs(subs), u_xx)
    print_var(U_x.diff(z).subs(subs), u_xz)
    print_var(U_z.diff(z).subs(subs), u_zz)

    print_footer(f, 0.0)