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
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
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
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)