Esempio n. 1
0
 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()
Esempio n. 2
0
 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()
Esempio n. 3
0
 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()
Esempio n. 4
0
 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)
Esempio n. 5
0
 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)
Esempio n. 6
0
 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)
Esempio n. 7
0
 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)
Esempio n. 8
0
 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)
Esempio n. 9
0
 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)
Esempio n. 10
0
 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)