Beispiel #1
0
def parse():
    pars = parse_argv(sys.argv,
                      # Format is: (name_of_argument, type, default)
                      # Parameters for TNR
                      ("chis_tnr", "int_list", [4]),
                      ("chis_trg", "int_list", [6]),
                      ("opt_eps_chi", "float", 1e-8),
                      ("opt_eps_conv", "float", 1e-11),
                      ("opt_iters_tens", "int", 1),
                      ("opt_max_iter", "int", 10000),
                      ("A_eps", "float", 1e-11),
                      ("A_chis", "int_list", None),
                      ("print_errors", "int", 2),
                      ("symmetry_tensors", "bool", True),
                      ("return_pieces", "bool", True),
                      ("reuse_initial", "bool", True),
                      # Parameters about what to run TNR on
                      ("iter_count", "int", 6),  # Number of iterations
                      ("block_width", "int", 2),
                      ("dtype", "dtype", np.complex_),  # numpy data type to be used throughout,
                      ("J", "float", 1),  # Coupling constant
                      ("H", "float", 0),  # External magnetic field
                      # Flags about which quantities to calculate and plot and how.
                      ("do_coarse_momenta", "bool", False),
                      ("do_momenta", "bool", False),
                      ("n_dims_do", "int", 15),
                      ("n_dims_plot", "int", 15),
                      ("xtick_rotation", "int", 45),
                      ("max_dim_plot", "float", 20000),
                      ("n_discard", "int", 0),
                      ("plot_by_qnum", "bool", True),
                      ("plot_by_momenta", "bool", False),
                      ("draw_exact_lines", "bool", True),
                      ("draw_exact_circles", "bool", True),
                      ("draw_defect_angle", "bool", True),
                      ("show_plots", "bool", True),
                      ("save_plots", "bool", False))
    pars = vars(pars)


    # - Format parameters and set constants -
    pars["horz_refl"] = False
    pars["initial2x2"] = False
    pars["initial4x4"] = False
    pars["fix_gauges"] = False
    pars["KW"] = True
    pars["qnums_plot"] = []
    pars["model"] = "Ising"
    pars["algorithm"] = "TNR"
    pars["beta"] = beta_c
    pars["J"] = pars["dtype"](pars["J"])
    pars["H"] = pars["dtype"](pars["H"])
    pars["return_gauges"] = True
    if pars["plot_by_momenta"] and not pars["do_momenta"]:
        raise ValueError("plot_by_momenta but not do_momenta")
    if pars["do_momenta"] and pars["block_width"] < 2:
        raise ValueError("do_momenta but block_width < 2")
    return pars
Beispiel #2
0
def parse():
    pars = parse_argv(
        sys.argv,
        # Format is: (name_of_argument, type, default)
        ("model", "str", ""),
        ("dtype", "dtype", np.complex_),
        ("J", "float", 1),
        ("H", "float", 0),
        ("initial2x2", "bool", False),
        ("initial4x4", "bool", False),
        ("n_dims_do", "int", 17),
        ("qnums_do", "int_list", []),  #[] denotes all
        ("n_normalization", "int", 3),
        ("n_discard", "int", 0),
        ("block_width", "int", 8),
        ("defect_angles", "float_list", [0]),
        ("KW", "bool", False),
        ("do_eigenvectors", "bool", False),
        ("do_momenta", "bool", False),
        ("symmetry_tensors", "bool", False),
        ("sep_qnums", "bool", False),
        # IO parameters.
        ("n_dims_plot", "int", 17),
        ("max_dim_plot", "float", 20000),
        ("qnums_plot", "int_list", []),  #[] denotes all
        ("xtick_rotation", "int", 0),
        ("show_plots", "bool", True),
        ("save_plots", "bool", False),
        ("draw_exact_lines", "bool", True),
        ("draw_exact_circles", "bool", True),
        ("draw_defect_angle", "bool", True),
        ("plot_by_qnum", "bool", True),
        ("plot_by_momenta", "bool", False),
        ("plot_by_alpha", "bool", False),
        ("save_scaldim_file", "bool", True))
    pars = vars(pars)

    # - Format parameters -
    pars["beta"] = modeldata.get_critical_beta(pars)
    pars["J"] = pars["dtype"](pars["J"])
    pars["H"] = pars["dtype"](pars["H"])
    pars["defect_angles"] = sorted(pars["defect_angles"], key=abs)
    if (not pars["symmetry_tensors"] and pars["sep_qnums"]
            and not pars["do_eigenvectors"]):
        raise ValueError("sep_qnums requires do_eigenvectors.")
    if pars["defect_angles"] != [0] and pars["KW"]:
        raise ValueError("Non-trivial defect_angles and KW.")
    if pars["n_dims_plot"] > pars["n_dims_do"]:
        raise ValueError("n_dims_plot > n_dims_do")
    if not set(pars["qnums_plot"]).issubset(set(pars["qnums_do"])):
        raise ValueError("qnums_plot is not included in qnums_do")

    return pars
def parse():
    pars = parse_argv(
        sys.argv,
        # Format is: (name_of_argument, type, default)
        ("model", "str", ""),
        ("dtype", "dtype", np.complex_),
        ("J", "float", 1),
        ("H", "float", 0),
        ("initial2x2", "bool", False),
        ("initial4x4", "bool", False),
        ("n_dims_do", "int", 17),
        ("qnums_do", "int_list", []),  #[] denotes all
        ("n_normalization", "int", 3),
        ("n_discard", "int", 0),
        ("block_width", "int", 8),
        ("do_eigenvectors", "bool", False),
        ("symmetry_tensors", "bool", False),
        ("sep_qnums", "bool", False),
        # Sixvertex parameters
        ("g", "float", 0.),
        ("gs", "float_list", [0, 1, 21]),
        # IO parameters.
        ("n_dims_plot", "int", 17),
        ("max_dim_plot", "float", 20000),
        ("qnums_plot", "int_list", []),  #[] denotes all
        ("xtick_rotation", "int", 0),
        ("show_plots", "bool", True),
        ("save_plots", "bool", False),
        ("draw_exact_lines", "bool", True),
        ("draw_exact_circles", "bool", True),
        ("plot_by_qnum", "bool", True),
        ("save_scaldim_file", "bool", True))
    pars = vars(pars)

    # - Format parameters -
    pars["plot_by_momenta"] = False
    pars["beta"] = modeldata.get_critical_beta(pars)
    pars["J"] = pars["dtype"](pars["J"])
    pars["H"] = pars["dtype"](pars["H"])
    if (not pars["symmetry_tensors"] and pars["sep_qnums"]
            and not pars["do_eigenvectors"]):
        raise ValueError("sep_qnums requires do_eigenvectors.")
    if pars["model"].strip().lower() != "ising":
        raise NotImplementedError("model != 'ising' unimplemented.")
    if pars["n_dims_plot"] > pars["n_dims_do"]:
        raise ValueError("n_dims_plot > n_dims_do")
    if not set(pars["qnums_plot"]).issubset(set(pars["qnums_do"])):
        raise ValueError("qnums_plot is not included in qnums_do")

    return pars
Beispiel #4
0
def parse():
    pars = parse_argv(
        sys.argv,
        # Format is: (name_of_argument, type, default)
        ("model", "str", ""),
        ("algorithm", "str", ""),
        # Parameters for TNR
        ("chis_tnr", "int_list", [4]),
        ("chis_trg", "int_list", [1, 2, 3, 4, 5, 6]),
        ("opt_eps_conv", "float", 1e-11),
        ("opt_eps_chi", "float", 1e-8),
        ("opt_iters_tens", "int", 1),
        ("opt_max_iter", "int", 10000),
        ("A_eps", "float", 1e-11),
        ("A_chis", "int_list", None),
        ("print_errors", "int", 2),
        ("return_pieces", "bool", True),
        ("reuse_initial", "bool", True),
        ("fix_gauges", "bool", True),
        ("symmetry_tensors", "bool", False),
        ("horz_refl", "bool", True),
        ("return_gauges", "bool", True),
        # Parameters for both TRG and TNR
        ("iter_count", "int", 6),  # Number of iterations
        ("dtype", "dtype", np.complex_),  # numpy data type
        ("J", "float", 1),  # Coupling constant
        ("H", "float", 0),  # Coupling constant
        ("initial2x2", "bool", False),
        ("initial4x4", "bool", False),
        # Spectrum parameters.
        ("n_dims_do", "int", 15),
        ("qnums_do", "int_list", []),  # [] denotes all
        ("n_discard", "int", 0),
        ("block_width", "int", 0),
        ("do_coarse_momenta", "bool", False),
        ("do_dual", "bool", False),
        ("defect_angles", "float_list", [0]),
        ("do_momenta", "bool", False),
        ("do_eigenvectors", "bool", False),
        # Sixvertex parameters
        ("sixvertex_a", "float", 1),
        ("sixvertex_b", "float", 1),
        ("sixvertex_c", "float", np.sqrt(2)),
        # IO parameters.
        ("n_dims_plot", "int", 15),
        ("max_dim_plot", "float", 20000),
        ("qnums_plot", "int_list", []),  # [] denotes all
        ("xtick_rotation", "int_list", 0),
        ("show_plots", "bool", True),
        ("save_plots", "bool", False),
        ("plot_by_qnum", "bool", True),
        ("plot_by_momenta", "bool", False),
        ("plot_by_alpha", "bool", False),
        ("draw_exact_lines", "bool", True),
        ("draw_exact_circles", "bool", True),
        ("draw_defect_angle", "bool", True),
        ("save_fit_plot", "bool", False),
        ("save_scaldim_file", "bool", True))
    pars = vars(pars)

    # - Format parameters -
    pars["beta"] = modeldata.get_critical_beta(pars)
    pars["J"] = pars["dtype"](pars["J"])
    pars["H"] = pars["dtype"](pars["H"])
    pars["defect_angles"] = sorted(pars["defect_angles"], key=abs)
    if pars["defect_angles"] != [0] and pars["do_dual"]:
        raise ValueError("Non-trivial defect_angles but do_dual.")
    if pars["defect_angles"] != [0] and not pars["symmetry_tensors"]:
        raise ValueError("Non-trivial defect_angles and not symmetry_tensors.")
    if pars["plot_by_momenta"] and not pars["do_momenta"]:
        raise ValueError("plot_by_momenta but not do_momenta")
    if pars["do_momenta"] and pars["block_width"] < 2:
        raise ValueError("do_momenta but block_width < 2")
    if pars["n_dims_plot"] > pars["n_dims_do"]:
        raise ValueError("n_dims_plot > n_dims_do")
    if not set(pars["qnums_plot"]).issubset(set(pars["qnums_do"])):
        raise ValueError("qnums_plot is not included in qnums_do")

    return pars
Beispiel #5
0
from tensors.symmetrytensors import TensorZ2, TensorU1, TensorZ3
""" A test suite for the tensors package. """

# We do not accept warnings in the test, so raise them as errors.
warnings.simplefilter("error", UserWarning)

pars = parse_argv(
    sys.argv,
    # Format is: (name_of_argument, type, default)
    ("test_to_and_from_ndarray", "bool", True),
    ("test_arithmetic_and_comparison", "bool", True),
    ("test_transposing", "bool", True),
    ("test_splitting_and_joining", "bool", True),
    ("test_to_and_from_matrix", "bool", True),
    ("test_diag", "bool", True),
    ("test_trace", "bool", True),
    ("test_multiply_diag", "bool", True),
    ("test_product", "bool", True),
    ("test_svd", "bool", True),
    ("test_eig", "bool", True),
    ("test_split", "bool", True),
    ("test_miscellaneous", "bool", True),
    ("test_expand_dims_product", "bool", True),
    ("test_scon_svd_scon", "bool", True),
    ("n_iters", "int", 500),
    ("classes", "word_list", ["Tensor", "TensorZ2", "TensorU1", "TensorZ3"]))
pars = vars(pars)

classes = []
for w in pars["classes"]:
    if w.strip().lower() == "tensor":
        classes.append(Tensor)