Exemplo n.º 1
0
def get_Ptolemy_relations(t, N, cohomology_class = None):
    if cohomology_class:
        cohomology_coefficients = (
            cohomology_2_rel_boundary_class_to_coeffs(t, cohomology_class))

    eqns = []
    
    for tet in t.tet_list:
        i = tet.index
        if cohomology_class:
            signs = cohomology_coefficients[tet.index]
            sign_01 = Z2_to_sign(signs[2] + signs[3])
            sign_12 = Z2_to_sign(signs[0] + signs[3])
        else:
            sign_01 = +1
            sign_12 = +1

        sign_01 = Polynomial.constantPolynomial(sign_01)
        sign_12 = Polynomial.constantPolynomial(sign_12)

        for coord in simplex_coords_with_fixed_sum(4, N-2):
            eqns.append(
                - sign_01 * c_parameter(coord+(1,0,0,1),i)
                          * c_parameter(coord+(0,1,1,0),i)
                - sign_12 * c_parameter(coord+(1,1,0,0),i)
                          * c_parameter(coord+(0,0,1,1),i)
                +           c_parameter(coord+(1,0,1,0),i)
                          * c_parameter(coord+(0,1,0,1),i))
    return eqns
Exemplo n.º 2
0
def check_solution_on_gluing_equations(t, N, solution, cohomology_class = None):

    maxErr = globalsettings.getSetting("maximalError")

    if cohomology_class:
        cohomology_coefficients = (
            cohomology_2_rel_boundary_class_to_coeffs(t,cohomology_class))

    for tet in t.tet_list:
        i = tet.index
        if cohomology_class:
            signs = cohomology_coefficients[tet.index]
            
            sign_01 = Z2_to_sign(signs[2] + signs[3])
            sign_12 = Z2_to_sign(signs[0] + signs[3])

        else:
            sign_01 = +1
            sign_12 = +1

        for coord in simplex_coords_with_fixed_sum(4, N-2):

            err = (
                - sign_01 *
                  solution[c_parameter_var(coord+(1,0,0,1),i)] *
                  solution[c_parameter_var(coord+(0,1,1,0),i)]
                - sign_12 *
                  solution[c_parameter_var(coord+(1,1,0,0),i)] *
                  solution[c_parameter_var(coord+(0,0,1,1),i)]
                + solution[c_parameter_var(coord+(1,0,1,0),i)] *
                  solution[c_parameter_var(coord+(0,1,0,1),i)])

            if abs(err) > maxErr:
                raise NumericalError(
                    val = err,
                    msg = "in verify gluing equations")