def test_hex27_hex27_0(self): fixture_setup() scalarDimension = 0 eMesh = PerceptMesh() p_size = eMesh.get_parallel_size() gmesh_spec = "1x1x" + str(p_size) + "|bbox:0,0,0,1,1," + str(p_size) eMesh.new_mesh(GMeshSpec(gmesh_spec)) proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, HEX8_HEX27_1, proc_rank_field) eMesh.commit() eMesh.print_info() eMesh.save_as("hex27_hex27_cube1x1x" + str(p_size) + "-orig.e") breaker.setRemoveOldElements(True) breaker.doBreak() eMesh.save_as("hex27_hex27_cube1x1x" + str(p_size) + "_0.e") em1 = PerceptMesh(3) p_size = em1.get_parallel_size() em1.open("hex27_hex27_cube1x1x" + str(p_size) + "_0.e") proc_rank_field = em1.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(em1, HEX27_HEX27_8, proc_rank_field) em1.commit() breaker.setIgnoreSideSets(True) breaker.setRemoveOldElements(True) breaker.doBreak() em1.save_as("hex27_hex27_cube1x1x" + str(p_size) + "_1.e")
def test_break_tri3_to_tri6_sierra(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) print p_size, "++++++++++++++++++++" for i in range(100): print "-------------------" if p_size <= 3: n = 12 nx = n ny = n createEdgeSets = True fixture = QuadFixture_3(pm, nx, ny, createEdgeSets) isCommited = False eMesh = PerceptMesh(fixture.meta_data, fixture.bulk_data, isCommited) scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) eMesh.add_field("proc_rank_ede", eMesh.edge_rank(), scalarDimension) breaker = Refiner(eMesh, TRI3_TRI6_1, proc_rank_field) eMesh.commit() fixture.generate_mesh() eMesh.print_info("tri mesh tri6") eMesh.save_as("quad_fixture_tri3_tri6_0.e") breaker.doBreak() eMesh.print_info("tri mesh enriched") eMesh.save_as("quad_fixture_tri6_tri6_0.e") eMesh.save_as("quad_fixture_tri3_tri6_1.e")
def test_mesh_diff(self): self.fixture_setup() p_size = parallel_machine_size(self.pm) if p_size <= 2: eMesh_0 = PerceptMesh(2) eMesh_0.open_read_only("./exodus_files/quad_fixture.e") eMesh_0.save_as("./exodus_files/quad_fixture_readwrite.e") eMesh_1 = PerceptMesh(2) eMesh_2 = PerceptMesh(2) eMesh_1.open_read_only("./exodus_files/quad_fixture_readwrite.e") eMesh_2.open_read_only("./exodus_files/quad_fixture.e") if p_size == 1: add_newlines = False eMesh_1.print_info("quad fixture", 2, add_newlines) eMesh_2.print_info("quad fixture", 2, add_newlines) #Here the unit test compares an expected output string with the output of the print_infos diff_msg = "diff report: " diff = PerceptMesh.mesh_difference(eMesh_1, eMesh_2, diff_msg, True ) self.assertFalse(diff) #metaData_1 = eMesh_1.get_fem_meta_data() #metaData_2 = eMesh_2.get_fem_meta_data() bulkData_1 = eMesh_1.get_bulk_data() #bulkData_2 = eMesh_2.get_bulk_data() #coordField_1 = eMesh_1.get_coordinates_field() #coordField_2 = eMesh_2.get_coordinates_field() #diff = PerceptMesh.mesh_difference(metaData_1, metaData_2, bulkData_1, bulkData_2, diff_msg, True) #self.assertFalse(diff) buckets = bulkData_1.buckets(FEMMetaData.NODE_RANK)
def test_hex27_hex27_1(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size == 1 or p_size == 3: eMesh = PerceptMesh(3) eMesh.open("hex_fixture.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, HEX8_HEX27_1, proc_rank_field) eMesh.commit() eMesh.print_info() eMesh.save_as("hex8_hex27_0.e") breaker.doBreak() eMesh.save_as("hex8_27_1.e") if p_size == 1 or p_size == 3: eMesh = PerceptMesh(3) eMesh.open("hex8_27_1.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, HEX27_HEX27_8, proc_rank_field) eMesh.commit() breaker.setRemoveOldElements(True) breaker.doBreak() eMesh.save_as("hex8_hex27_hex27_1.e")
def test_break_tet4_tet10_tet10_1(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size == 1 or p_size == 3: eMesh = PerceptMesh(3) eMesh.open("tet_from_hex_fixture_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, TET4_TET10_1, proc_rank_field) eMesh.commit() eMesh.print_info("tet mesh") breaker.doBreak() eMesh.save_as("tet10_1.e") eMesh.print_info("tet10_1") if p_size == 1 or p_size == 3: eMesh = PerceptMesh(3) eMesh.open("tet10_1.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, TET10_TET10_8, proc_rank_field) eMesh.commit() breaker.doBreak() eMesh.save_as("tet10_tet10_1.e")
def fixture_setup_1(self): p_size = self.pm.size if p_size <= 2: n = 12 nx = n ny = n fixture = QuadFixture_4(self.pm, nx, ny, 1) fixture.meta_data.commit() fixture.generate_mesh() eMesh = PerceptMesh(fixture.meta_data, fixture.bulk_data) eMesh.print_info("quad fixture", 2) eMesh.save_as("./exodus_files/quad_fixture.e") if p_size <= 2: n = 12 nx = n ny = n fixture = QuadFixture_4(self.pm, nx, ny, 0) fixture.meta_data.commit() fixture.generate_mesh() eMesh = PerceptMesh(fixture.meta_data, fixture.bulk_data) eMesh.print_info("quad fixture no sidesets", 2) eMesh.save_as("./exodus_files/quad_fixture_no_sidesets.e")
def test_mesh_diff(self): self.fixture_setup() p_size = parallel_machine_size(self.pm) if p_size <= 2: eMesh_0 = PerceptMesh(2) eMesh_0.open_read_only("./exodus_files/quad_fixture.e") eMesh_0.save_as("./exodus_files/quad_fixture_readwrite.e") eMesh_1 = PerceptMesh(2) eMesh_2 = PerceptMesh(2) eMesh_1.open_read_only("./exodus_files/quad_fixture_readwrite.e") eMesh_2.open_read_only("./exodus_files/quad_fixture.e") if p_size == 1: add_newlines = False eMesh_1.print_info("quad fixture", 2, add_newlines) eMesh_2.print_info("quad fixture", 2, add_newlines) #Here the unit test compares an expected output string with the output of the print_infos diff_msg = "diff report: " diff = PerceptMesh.mesh_difference(eMesh_1, eMesh_2, diff_msg, True) self.assertFalse(diff) #metaData_1 = eMesh_1.get_fem_meta_data() #metaData_2 = eMesh_2.get_fem_meta_data() bulkData_1 = eMesh_1.get_bulk_data() #bulkData_2 = eMesh_2.get_bulk_data() #coordField_1 = eMesh_1.get_coordinates_field() #coordField_2 = eMesh_2.get_coordinates_field() #diff = PerceptMesh.mesh_difference(metaData_1, metaData_2, bulkData_1, bulkData_2, diff_msg, True) #self.assertFalse(diff) buckets = bulkData_1.buckets(FEMMetaData.NODE_RANK)
def test_hex8_tet4_6_12_2(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) eMesh = PerceptMesh(3) eMesh.open("hex_fixture.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, HEX8_TET4_6_12, proc_rank_field) eMesh.commit() eMesh.print_info() breaker.doBreak() eMesh.save_as("hex_tet_6_12_1.e")
def test_break_tri_to_tri_sierra_0(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 3: n = 12 nx = n ny = n fixture = QuadFixture_3(pm, nx, ny, True) eMesh = PerceptMesh(fixture.meta_data, fixture.bulk_data, False) eMesh.commit() fixture.generate_mesh() eMesh.print_info("tri mesh") eMesh.save_as("quad_fixture_tri3.e")
def test_hex8_tet4_6_12_1(self): fixture_setup() eMesh = PerceptMesh(3) p_size = eMesh.get_parallel_size() gmesh_spec = "1x1x" + str(p_size) + "|bbox:0,0,0,1,1," + str(p_size) eMesh.new_mesh(GMeshSpec(gmesh_spec)) scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, HEX8_TET4_6_12, proc_rank_field) eMesh.commit() eMesh.print_info() breaker.setRemoveOldElements(True) breaker.doBreak() eMesh.save_as("hex_tet_6_12_cube1x1x1.e")
def test_break_quad_to_quad_sierra_sidesets(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size == 1 or p_size == 2: eMesh = PerceptMesh(2) eMesh.open("quad_fixture.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, QUAD4_QUAD4_4_SIERRA, proc_rank_field) eMesh.commit() eMesh.print_info("after refinement break_quad_to_quad_sierra_sidesets") breaker.doBreak() eMesh.save_as("quad_sidesets_sierra_out.e")
def test_quad4_quad4_test_1(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 3: n = 12 nx = n ny = n fixture = QuadFixture_4(pm, nx, ny, True) fixture.meta_data.commit() fixture.generate_mesh() eMesh = PerceptMesh(fixture.meta_data, fixture.bulk_data) eMesh.print_info("quad fixture") eMesh.save_as("quad_fixture_test_1.e")
def test_quad4_quad4_test_1(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 3: n = 12 nx = n ny = n fixture = QuadFixture_4(pm,nx,ny,True) fixture.meta_data.commit() fixture.generate_mesh() eMesh = PerceptMesh(fixture.meta_data, fixture.bulk_data) eMesh.print_info("quad fixture") eMesh.save_as("quad_fixture_test_1.e")
def test_break_quad_to_quad_sierra_unit1(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size == 1 or p_size == 3: eMesh = PerceptMesh(2) eMesh.open("quad_fixture.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension) breaker = Refiner(eMesh, QUAD4_QUAD4_4_SIERRA, proc_rank_field) eMesh.commit() eMesh.print_info("quad mesh") breaker.doBreak() eMesh.save_as("square_quad4_sierra_ref_out.e")
def test_break_quad_to_quad(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size == 1 or p_size == 3: eMesh = PerceptMesh(2) eMesh.open("quad_fixture_no_sidesets.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, QUAD4_QUAD4_4, proc_rank_field) eMesh.commit() eMesh.print_info("quad mesh") breaker.setIgnoreSideSets(True) breaker.doBreak() eMesh.save_as("square_quad4_ref_out.e")
def test_break_hex8_tet4_24_1(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) eMesh = PerceptMesh(3) gmesh_spec = "1x1x" + str(p_size) + "|bbox:0,0,0,1,1," + str(p_size) eMesh.new_mesh(GMeshSpec(gmesh_spec)) scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension) breaker = Refiner(eMesh, HEX8_TET4_24, proc_rank_field) eMesh.commit() eMesh.print_info() breaker.setRemoveOldElements(True) breaker.doBreak() eMesh.save_as("hex_tet_24_cube1x1x1.e")
def test_fieldFunction_demo_1_0_0(self): eMesh = PerceptMesh(3) eMesh.new_mesh(GMeshSpec("3x3x3|bbox:0,0,0,1,1,1")) eMesh.commit() eMesh.print_info("fieldFunction_demo_1_0_0", 2) f_coords = eMesh.get_field("coordinates") ff_coords = FieldFunction("ff_coords", f_coords, eMesh, 3, 3) x = 0.123 y = 0.234 z = 0.345 time = 0.0 eval_vec3_print(x, y, z, time, ff_coords)
def test_hex8_hex8_8_1_unit1(self): fixture_setup() eMesh = PerceptMesh(3) p_size = eMesh.get_parallel_size() gmesh_spec = "1x1x" + str(p_size) + "|bbox:0,0,0,1,1," + str(p_size) eMesh.new_mesh(GMeshSpec(gmesh_spec)) scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension) breaker = Refiner(eMesh, HEX8_HEX8_8, proc_rank_field) eMesh.commit() eMesh.print_info() eMesh.save_as("hex_hex_cube1x1x" + str(p_size) + "-orig.e") breaker.setRemoveOldElements(True) breaker.doBreak() eMesh.save_as( "hex_hex_cube1x1x" + str(p_size)+".e")
def test_hex8_hex27_1_2(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size == 1 or p_size == 3: eMesh = PerceptMesh(3) eMesh.open("hex_fixture.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension) breaker = Refiner(eMesh, HEX8_HEX27_1, proc_rank_field) eMesh.commit() eMesh.print_info() eMesh.save_as("hex27_0.e") breaker.doBreak() eMesh.save_as("hex27_1.e")
def test_break_quad_to_tri_4(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size == 1 or p_size == 3: eMesh = PerceptMesh(2) eMesh.open("quad_fixture.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension) breaker = Refiner(eMesh, QUAD4_TRI3_4, proc_rank_field) eMesh.commit() eMesh.print_info("quad mesh") breaker.setIgnoreSideSets(True) breaker.setRemoveOldElements(False) breaker.doBreak() eMesh.save_as("square_quad4_tri3_4_out.e")
def test_break_tri3_to_tri6_to_tri6_sierra(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 3: eMesh = PerceptMesh(2) eMesh.open("quad_fixture_tri6_tri6_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) eMesh.add_field("proc_rank_ede", eMesh.edge_rank(), scalarDimension) breaker = Refiner(eMesh, TRI6_TRI6_4, proc_rank_field) eMesh.commit() eMesh.print_info("tri mesh tri6") eMesh.save_as("quad_fixture_tri6_tri6_0.e") breaker.doBreak() eMesh.print_info("tri mesh refined") eMesh.save_as("quad_fixture_tri6_tri6_1.e")
def test_break_quad_to_quad_sierra(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 3: n = 12 nx = n ny = n fixture = QuadFixture_4(pm, nx, ny, True) eMesh = PerceptMesh(fixture.meta_data, fixture.bulk_data, False) scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, QUAD4_QUAD4_4_SIERRA, proc_rank_field) eMesh.commit() fixture.generate_mesh() eMesh.print_info("quad mesh") breaker.doBreak()
def test_break_tet4_tet10_1(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size == 1 or p_size == 3: eMesh = PerceptMesh(3) eMesh.open_read_only("tet_fixture.e") eMesh.save_as("tet_from_hex_fixture_0.e") if p_size == 1 or p_size == 3: eMesh = PerceptMesh(3) eMesh.open("tet_from_hex_fixture_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, TET4_TET10_1, proc_rank_field) eMesh.commit() eMesh.print_info("tet mesh") breaker.doBreak() eMesh.save_as("tet10_1.e")
def test_break_tet4_tet4_1(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size == 1 or p_size == 3: eMesh = PerceptMesh(3) eMesh.open_read_only("tet_fixture.e") eMesh.save_as("tet_from_hex_fixture_0.e") if p_size == 1 or p_size == 3: eMesh = PerceptMesh(3) eMesh.open("tet_from_hex_fixture_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension) breaker = Refiner(eMesh, TET4_TET4_8, proc_rank_field) eMesh.commit() eMesh.print_info("tet mesh") breaker.doBreak() eMesh.save_as("tet4_refined_1.e") breaker.doBreak() eMesh.save_as("tet4_refined_2.e")
def fixture_setup_1(): pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 3: n = 12 nx = n ny = n fixture = QuadFixture_4(pm, nx, ny, True) fixture.meta_data.commit() fixture.generate_mesh() eMesh = PerceptMesh(fixture.meta_data, fixture.bulk_data) eMesh.print_info("quad fixture", 2) eMesh.save_as("quad_fixture.e") fixture = QuadFixture_4(pm, nx, ny, False) fixture.meta_data.commit() fixture.generate_mesh() eMesh = PerceptMesh(fixture.meta_data, fixture.bulk_data) eMesh.print_info("quad fixture no sidesets", 2) eMesh.save_as("quad_fixture_no_sidesets.e")
def test_break_tri_to_tri_sierra_1(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 3: n = 12 nx = n ny = n createEdgeSets = True fixture = QuadFixture_3(pm, nx, ny, createEdgeSets) isCommited = False eMesh = PerceptMesh(fixture.meta_data, fixture.bulk_data, isCommited) scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension) eMesh.add_field("proc_rank_ede", eMesh.edge_rank(), scalarDimension) breaker = Refiner(eMesh, TRI3_TRI3_4, proc_rank_field) eMesh.commit() fixture.generate_mesh() eMesh.print_info("tri mesh") eMesh.save_as("quad_fixture_tri3_0.e") breaker.doBreak() eMesh.print_info("tri mesh refined") eMesh.save_as("quad_fixture_tri3_1.e")
def test_perceptMesh_walk_nodes(self): self.fixture_setup() p_size = self.pm.size p_rank = self.pm.rank if p_size <= 2: n = 12 nx = n ny = n sidesets_on = 1 fixture = QuadFixture_4(self.pm, nx, ny, sidesets_on) fixture.meta_data.commit() fixture.generate_mesh() eMesh = PerceptMesh(fixture.meta_data, fixture.bulk_data) eMesh.print_info("quad fixture", 2) metaData = eMesh.get_fem_meta_data() parts = metaData.get_parts() nparts = len(parts) print "Number of parts = ", nparts surface_id = 2 surface_name = "surface_" + str(surface_id) part = eMesh.get_part(surface_name) in_surface_selector = Selector(part) bulkData = eMesh.get_bulk_data() coordField = eMesh.get_coordinates_field() if eMesh.get_spatial_dim() == 2: buckets_arg = eMesh.edge_rank() else: buckets_arg = eMesh.face_rank buckets = bulkData.buckets(buckets_arg) sum = 0.0
def test_high_level_interface(self): self.fixture_setup() p_size = parallel_machine_size(self.pm) if p_size <= 2: eMesh = PerceptMesh(2) eMesh.open("./exodus_files/quad_fixture.e") vectorDimension = 0 eMesh.add_field("coords_mag_field", FEMMetaData.NODE_RANK, vectorDimension) eMesh.commit() f_coords = eMesh.get_field("coordinates") coords_mag_field = eMesh.get_field("coords_mag_field") ff_coords = FieldFunction("ff_coords", f_coords, eMesh, 2, 2) #eval_vec3_print(0.1,0.1,0.1,0.0,ff_coords) coords_mag_sf = StringFunction("sqrt(x*x + y*y )", "coords_mag_sf", 2, 1) x = 0.123 y = 0.234 vv = sqrt(x * x + y * y) v1 = eval_func2(x, y, 0, coords_mag_sf) print "vv = ", vv, "== v1 = ", v1 self.assertEqual(vv, v1) coords_mag_field_function = FieldFunction( "coords_mag_field_function", coords_mag_field, eMesh, 2, 1) coords_mag_field_function.interpolateFrom(coords_mag_sf) eMesh.save_as("./exodus_files/quad_fixture_with_coords_mag.e") ff_coords.add_alias("mc") sfcm = StringFunction("sqrt(mc[0]*mc[0]+mc[1]*mc[1]+mc[2]*mc[2])", "sfcm", 3, 1) add_newlines = True eMesh.print_info("quad fixture", 2, add_newlines) self.assertTrue(eMesh.get_spatial_dim() == 2) self.assertTrue(eMesh.get_number_elements() == 12 * 12) self.assertTrue(eMesh.get_number_nodes() == 13 * 13) self.assertTrue(eMesh.get_parallel_size() == p_size) self.assertTrue(eMesh.get_bulk_data() != 0) self.assertTrue(eMesh.get_fem_meta_data() != 0) # // entity data setter/getters node = eMesh.get_node(1) self.assertTrue(node != 0) cm1 = eMesh.get_field_data(coords_mag_field, node) co1 = [0, 0] co1[0] = eMesh.get_field_data(f_coords, node, 0) co1[1] = eMesh.get_field_data(f_coords, node, 1) print "cm1= ", cm1, " co1= ", co1 eMesh.set_field_data(123.0, f_coords, node, 0) co1[0] = eMesh.get_field_data(f_coords, node, 0) print " co1= ", co1 element = eMesh.get_element(1) self.assertTrue(element != 0) element1 = eMesh.get_entity(eMesh.element_rank(), 1) self.assertTrue(element == element1) #/// find node closest to given point node = eMesh.get_node(0, 0) self.assertTrue(node != 0) #/// find element that contains given point element = eMesh.get_element(0.01, 0.01) self.assertTrue(element != 0)
def test_high_level_interface(self): self.fixture_setup() p_size = parallel_machine_size(self.pm) if p_size <= 2: eMesh = PerceptMesh(2) eMesh.open("./exodus_files/quad_fixture.e") vectorDimension = 0 eMesh.add_field("coords_mag_field", FEMMetaData.NODE_RANK, vectorDimension) eMesh.commit() f_coords = eMesh.get_field("coordinates") coords_mag_field = eMesh.get_field("coords_mag_field") ff_coords = FieldFunction("ff_coords", f_coords, eMesh, 2, 2) #eval_vec3_print(0.1,0.1,0.1,0.0,ff_coords) coords_mag_sf = StringFunction("sqrt(x*x + y*y )" , "coords_mag_sf", 2, 1) x = 0.123 y = 0.234 vv = sqrt(x*x + y*y ) v1 = eval_func2(x,y,0,coords_mag_sf) print "vv = ", vv, "== v1 = ", v1 self.assertEqual(vv, v1) coords_mag_field_function = FieldFunction("coords_mag_field_function", coords_mag_field, eMesh, 2, 1) coords_mag_field_function.interpolateFrom(coords_mag_sf) eMesh.save_as("./exodus_files/quad_fixture_with_coords_mag.e") ff_coords.add_alias("mc") sfcm = StringFunction("sqrt(mc[0]*mc[0]+mc[1]*mc[1]+mc[2]*mc[2])", "sfcm", 3, 1) add_newlines = True eMesh.print_info("quad fixture", 2, add_newlines) self.assertTrue(eMesh.get_spatial_dim() == 2) self.assertTrue(eMesh.get_number_elements() == 12*12) self.assertTrue(eMesh.get_number_nodes() == 13*13) self.assertTrue(eMesh.get_parallel_size() == p_size) self.assertTrue(eMesh.get_bulk_data() != 0) self.assertTrue(eMesh.get_fem_meta_data() != 0) # // entity data setter/getters node = eMesh.get_node(1) self.assertTrue(node != 0) cm1 = eMesh.get_field_data(coords_mag_field, node) co1 = [0,0] co1[0] = eMesh.get_field_data(f_coords, node, 0) co1[1] = eMesh.get_field_data(f_coords, node, 1) print "cm1= ", cm1, " co1= ", co1 eMesh.set_field_data(123.0, f_coords, node, 0) co1[0] = eMesh.get_field_data(f_coords, node, 0) print " co1= ", co1 element = eMesh.get_element(1) self.assertTrue(element != 0) element1 = eMesh.get_entity(eMesh.element_rank(), 1) self.assertTrue(element == element1) #/// find node closest to given point node = eMesh.get_node(0,0) self.assertTrue(node != 0) #/// find element that contains given point element = eMesh.get_element(0.01, 0.01) self.assertTrue(element != 0)