def test_nx_ny_21_with_material(self): """Test nx, ny with 2 levels of 1 division and a material.""" ref_groups = groups_21_with_material ref_centroids = centroids_21 mocmg.initialize() gmsh.initialize() rectangular_grid(bb_44, nx=[2, 2], ny=[2, 2], material="material_UO2") group_nums = gmsh.model.getPhysicalGroups() names = [gmsh.model.getPhysicalName(*grp) for grp in group_nums] ref_names = list(ref_groups.keys()) # Check correct names/entities for i, name in enumerate(ref_names): self.assertEqual(name, names[i]) index = names.index(name) group_ents = list( gmsh.model.getEntitiesForPhysicalGroup(*group_nums[index])) ref_group_ents = ref_groups[name] self.assertEqual(group_ents, ref_group_ents) # Check correct area/centroid for ent in gmsh.model.getEntities(2): tag = ent[1] mass = gmsh.model.occ.getMass(2, tag) self.assertAlmostEqual(1.0, mass, places=5, msg="1 width, 1 height, 1 area") x, y, z = gmsh.model.occ.getCenterOfMass(2, tag) centroid = (x, y, z) for i in range(3): self.assertAlmostEqual(centroid[i], ref_centroids[tag][i]) # Check materials gmsh.clear() gmsh.finalize()
def test_x_y_nonuniform_2(self): """Test x, y with nonuniform grid with 2 levels.""" ref_groups = groups_nu2 ref_centroids = centroids_nu2 ref_areas = areas_nu2 mocmg.initialize() gmsh.initialize() rectangular_grid(bb_12_4, x=[[0.0, 12.0], [2.0, 10.0]], y=[[2.0], [1.0, 3.0]]) group_nums = gmsh.model.getPhysicalGroups() names = [gmsh.model.getPhysicalName(*grp) for grp in group_nums] ref_names = list(ref_groups.keys()) # Check correct names/entities for i, name in enumerate(ref_names): self.assertEqual(name, names[i]) index = names.index(name) group_ents = list( gmsh.model.getEntitiesForPhysicalGroup(*group_nums[index])) ref_group_ents = ref_groups[name] self.assertEqual(group_ents, ref_group_ents) # Check correct area/centroid for ent in gmsh.model.getEntities(2): tag = ent[1] mass = gmsh.model.occ.getMass(2, tag) self.assertAlmostEqual(ref_areas[tag], mass, places=5) x, y, z = gmsh.model.occ.getCenterOfMass(2, tag) centroid = (x, y, z) for i in range(3): self.assertAlmostEqual(centroid[i], ref_centroids[tag][i]) gmsh.clear() gmsh.finalize()
def test_nx_y_11(self): """Test nx, y with 1 division.""" ref_groups = groups_11 ref_centroids = centroids_11 mocmg.initialize() gmsh.initialize() rectangular_grid(bb_44, nx=[2], y=[[2.0]]) group_nums = gmsh.model.getPhysicalGroups() names = [gmsh.model.getPhysicalName(*grp) for grp in group_nums] ref_names = list(ref_groups.keys()) # Check correct names/entities for i, name in enumerate(ref_names): self.assertEqual(name, names[i]) index = names.index(name) group_ents = list( gmsh.model.getEntitiesForPhysicalGroup(*group_nums[index])) ref_group_ents = ref_groups[name] self.assertEqual(group_ents, ref_group_ents) # Check correct area/centroid for ent in gmsh.model.getEntities(2): tag = ent[1] mass = gmsh.model.occ.getMass(2, tag) self.assertAlmostEqual(4.0, mass, places=5, msg="2 width, 2 height, 4 area") x, y, z = gmsh.model.occ.getCenterOfMass(2, tag) centroid = (x, y, z) for i in range(3): self.assertAlmostEqual(centroid[i], ref_centroids[tag][i]) gmsh.clear() gmsh.finalize()
def test_ny0(self): """Test ny with 0 division.""" with self.assertRaises(SystemExit): with captured_output() as (out, err): mocmg.initialize() gmsh.initialize() rectangular_grid(bb_11, nx=[1, 1], ny=[0, 1]) gmsh.clear() gmsh.finalize() out, err = out.getvalue().splitlines(), err.getvalue().splitlines() out = [line.split(None, 1)[1] for line in out] err = [line.split(None, 1)[1] for line in [err[0]]] # strip times self.assertEqual(out, reference_out) self.assertEqual(err, ny_type) # check log file f = open("mocmg.log", "r") lines = f.readlines() f.close() lines = [line.split(None, 1)[1].rstrip("\n") for line in lines] self.assertEqual(lines, reference_out + ny_type)
def test_y_out_of_bb(self): """Test rect grid with a y-division outside the bb.""" with self.assertRaises(SystemExit): with captured_output() as (out, err): mocmg.initialize() gmsh.initialize() rectangular_grid(bb_11, x=[[1.0]], y=[[-1.0]]) gmsh.clear() gmsh.finalize() out, err = out.getvalue().splitlines(), err.getvalue().splitlines() out = [line.split(None, 1)[1] for line in out] err = [line.split(None, 1)[1] for line in [err[0]]] # strip times self.assertEqual(out, reference_out) self.assertEqual(err, out_of_bb) # check log file f = open("mocmg.log", "r") lines = f.readlines() f.close() lines = [line.split(None, 1)[1].rstrip("\n") for line in lines] self.assertEqual(lines, reference_out + out_of_bb)
def test_y_noniterable_type(self): """Test rect grid with non-iterable type elements.""" with self.assertRaises(SystemExit): with captured_output() as (out, err): mocmg.initialize() gmsh.initialize() rectangular_grid(bb_11, x=[[1]], y=[1.0]) gmsh.clear() gmsh.finalize() out, err = out.getvalue().splitlines(), err.getvalue().splitlines() out = [line.split(None, 1)[1] for line in out] err = [line.split(None, 1)[1] for line in [err[0]]] # strip times self.assertEqual(out, reference_out) self.assertEqual(err, y_nonlist_type) # check log file f = open("mocmg.log", "r") lines = f.readlines() f.close() lines = [line.split(None, 1)[1].rstrip("\n") for line in lines] self.assertEqual(lines, reference_out + y_nonlist_type)
def test_thick_dz(self): """Test rect grid with large change in z direction.""" with self.assertRaises(SystemExit): with captured_output() as (out, err): mocmg.initialize() gmsh.initialize() rectangular_grid(bb_dz, x=[[0.5]], y=[[0.5]]) gmsh.clear() gmsh.finalize() out, err = out.getvalue().splitlines(), err.getvalue().splitlines() out = [line.split(None, 1)[1] for line in out] err = [line.split(None, 1)[1] for line in [err[0]]] # strip times self.assertEqual(out, reference_out) self.assertEqual(err, thick_dz) # check log file f = open("mocmg.log", "r") lines = f.readlines() f.close() lines = [line.split(None, 1)[1].rstrip("\n") for line in lines] self.assertEqual(lines, reference_out + thick_dz)
def test_arg_len_mismatch_nxny(self): """Test rect grid with mismatched arg len.""" with self.assertRaises(SystemExit): with captured_output() as (out, err): mocmg.initialize() gmsh.initialize() rectangular_grid(bb_11, x=[2, 3], y=[1]) gmsh.clear() gmsh.finalize() out, err = out.getvalue().splitlines(), err.getvalue().splitlines() out = [line.split(None, 1)[1] for line in out] err = [line.split(None, 1)[1] for line in [err[0]]] # strip times self.assertEqual(out, reference_out) self.assertEqual(err, len_mismatch) # check log file f = open("mocmg.log", "r") lines = f.readlines() f.close() lines = [line.split(None, 1)[1].rstrip("\n") for line in lines] self.assertEqual(lines, reference_out + len_mismatch)
def test_bad_bounding_box(self): """Test a bad bounding box that produces negative dx, dy, dz.""" with self.assertRaises(SystemExit): with captured_output() as (out, err): mocmg.initialize() gmsh.initialize() rectangular_grid([0, 0, 0, -1, -1, -1], x=[[0.5]], y=[[0.5]]) gmsh.clear() gmsh.finalize() out, err = out.getvalue().splitlines(), err.getvalue().splitlines() out = [line.split(None, 1)[1] for line in out] err = [line.split(None, 1)[1] for line in [err[0]]] # strip times self.assertEqual(out, reference_out) self.assertEqual(err, bad_bb) # check log file f = open("mocmg.log", "r") lines = f.readlines() f.close() lines = [line.split(None, 1)[1].rstrip("\n") for line in lines] self.assertEqual(lines, reference_out + bad_bb)
def test_nx_ny_21_with_bad_material(self): """Test nx, ny with 2 levels of 1 division and an invalid material name.""" with self.assertRaises(SystemExit): with captured_output() as (out, err): mocmg.initialize() gmsh.initialize() rectangular_grid(bb_44, nx=[2, 2], ny=[2, 2], material="bad_mat") gmsh.clear() gmsh.finalize() out, err = out.getvalue().splitlines(), err.getvalue().splitlines() out = [line.split(None, 1)[1] for line in out] err = [line.split(None, 1)[1] for line in [err[0]]] # strip times self.assertEqual(out, reference_out) self.assertEqual(err, bad_material) # check log file f = open("mocmg.log", "r") lines = f.readlines() f.close() lines = [line.split(None, 1)[1].rstrip("\n") for line in lines] self.assertEqual(lines, reference_out + bad_material)