def free_alg(spark_ctx): """Initialize the environment for a free algebra.""" dr = Drudge(spark_ctx) r = Range('R') dumms = sympify('i, j, k, l, m, n') dr.set_dumms(r, dumms) s = Range('S') s_dumms = symbols('alpha beta') dr.set_dumms(s, s_dumms) dr.add_resolver_for_dumms() # For testing the Einstein over multiple ranges. a1, a2 = symbols('a1 a2') dr.add_resolver({a1: (r, s), a2: (r, s)}) dr.set_name(a1, a2) v = Vec('v') dr.set_name(v) m = IndexedBase('m') dr.set_symm(m, Perm([1, 0], NEG)) h = IndexedBase('h') dr.set_symm(h, Perm([1, 0], NEG | CONJ)) rho = IndexedBase('rho') dr.set_symm(rho, Perm([1, 0, 3, 2]), valence=4) dr.set_tensor_method('get_one', lambda x: 1) return dr
def three_ranges(spark_ctx): """Fixture with three ranges. This drudge has three ranges, named M, N, L with sizes m, n, and l, respectively. It also has a substitution dictionary setting n = 2m and l = 3m. """ dr = Drudge(spark_ctx) # The sizes. m, n, l = symbols('m n l') # The ranges. m_range = Range('M', 0, m) n_range = Range('N', 0, n) l_range = Range('L', 0, l) dr.set_dumms(m_range, symbols('a b c d e f g')) dr.set_dumms(n_range, symbols('i j k l m n')) dr.set_dumms(l_range, symbols('p q r')) dr.add_resolver_for_dumms() dr.set_name(m, n, l) dr.substs = {n: m * 2, l: m * 3} return dr
def test_drudge_injects_names(): """Test the name injection method of drudge.""" # Dummy drudge. dr = Drudge(types.SimpleNamespace(defaultParallelism=1)) string_name = 'string_name' dr.set_name(string_name) dr.set_name(one=1) dr.inject_names(suffix='_') assert string_name_ == string_name assert one_ == 1