def test_fieldFunction_read_print(self): print_info = 0 x = 3 y = 3 z = 3 config_mesh = str(x) + "x" + str(y) + "x" + str( z) + "|bbox:0,0,0,1,1,1" eMesh = PerceptMesh() eMesh.new_mesh_read_only(GMeshSpec(config_mesh)) metaData = eMesh.get_fem_meta_data() parts = metaData.get_parts() nparts = len(parts) if print_info == 1: print "Number of parts = ", nparts fields = metaData.get_fields() nfields = len(fields) if print_info == 1: print "Number of fields = ", nfields for i in range(nfields): field = fields[i]
def test_wedge6_1(self): fixture_setup() eMesh = PerceptMesh() p_size = eMesh.get_parallel_size() if p_size == 1: wedgeFixture = WedgeFixture() wedgeFixture.createMesh(MPI.COMM_WORLD, 4,3,2,0,1,0,1,0,1, "swept_wedge_0.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_unit_perceptMesh_wedge6_1(self): eMesh = PerceptMesh() p_size = eMesh.get_parallel_size() if p_size == 1: wedgeFixture = WedgeFixture() wedgeFixture.createMesh(self.pm, 4, 3, 2, 0, 1, 0, 1, 0, 1, "swept-wedge_0.e")
def test_fieldFunction_readMesh_createField_interpolateFrom(self): num_x = 3 num_y = 3 num_z = 3 config_mesh = str(num_x) + "x" + str(num_y) + "x" + str(num_z) + "|bbox:0,0,0,1,1,1" eMesh = PerceptMesh() eMesh.new_mesh(GMeshSpec(config_mesh)) vectorDimension = 0 eMesh.add_field("coords_mag_field", FEMMetaData.NODE_RANK, vectorDimension) eMesh.commit() #p_rank = eMesh.get_bulk_data().parallel_rank() #setRank(p_rank) #from Util f_coords = eMesh.get_field(FEMMetaData.NODE_RANK, "coordinates") coords_mag_field = eMesh.get_field(FEMMetaData.NODE_RANK, "coords_mag_field") #VERIFY_OP_ON Here the unit test does something ff_coords = FieldFunction("ff_coords", f_coords, eMesh, 3, 3, FieldFunction.SIMPLE_SEARCH) #here we could evaluate the function #eval_vec3_print(0.1,0.2,0.3,0.0,ff_coords) coords_mag_sf = StringFunction("sqrt(x*x + y*y + z*z)", "coords_mag_sf", 3, 1) coords_mag_field_function = FieldFunction("coords_mag_field_function", coords_mag_field, eMesh, 3, 3, FieldFunction.SIMPLE_SEARCH) coords_mag_field_function.interpolateFrom(coords_mag_sf) #The following is not doable from Python checkCoordMag = CheckCoordMag() #eMesh.nodalOpLoop(checkCoordMag, coords_mag_field) print checkCoordMag.error ff_coords.add_alias("mc") sfcm = StringFunction("sqrt(mc[0]*mc[0]+mc[1]*mc[1]+mc[2]*mc[2])", "sfcm", Dimensions(3), Dimensions(1)) tol1 = 1.e-12 vv = eval_vec3(0.1, 0.2, 0.3, 0.0, ff_coords) print print "0.1 == vv[0] = ", vv[0], "passed" print "0.2 == vv[1] = ", vv[1], "passed" print "0.3 == vv[2] = ", vv[2], "passed" self.assertAlmostEqual(.1, vv[0], delta=tol1) self.assertAlmostEqual(.2, vv[1], delta=tol1) self.assertAlmostEqual(.3, vv[2], delta=tol1) vv = eval_func(0.1, 0.2, 0.3, 0.0, sfcm) v_expect = sqrt(0.1*0.1+0.2*0.2+0.3*0.3) if ((vv-v_expect) < tol1): print "vv = ", vv, " == v_expect = ", v_expect, "passed" coords_mag_field_function.interpolateFrom(sfcm)
def test_fieldFunction_readMesh_createField_interpolateFrom(self): num_x = 3 num_y = 3 num_z = 3 config_mesh = str(num_x) + "x" + str(num_y) + "x" + str(num_z) + "|bbox:0,0,0,1,1,1" eMesh = PerceptMesh() eMesh.new_mesh(GMeshSpec(config_mesh)) vectorDimension = 0 eMesh.add_field("coords_mag_field", FEMMetaData.NODE_RANK, vectorDimension) eMesh.commit() #p_rank = eMesh.get_bulk_data().parallel_rank() #setRank(p_rank) #from Util f_coords = eMesh.get_field("coordinates") coords_mag_field = eMesh.get_field("coords_mag_field") #VERIFY_OP_ON Here the unit test does something ff_coords = FieldFunction("ff_coords", f_coords, eMesh, 3, 3, FieldFunction.SIMPLE_SEARCH) #here we could evaluate the function #eval_vec3_print(0.1,0.2,0.3,0.0,ff_coords) coords_mag_sf = StringFunction("sqrt(x*x + y*y + z*z)", "coords_mag_sf", 3, 1) coords_mag_field_function = FieldFunction("coords_mag_field_function", coords_mag_field, eMesh, 3, 3, FieldFunction.SIMPLE_SEARCH) coords_mag_field_function.interpolateFrom(coords_mag_sf) #The following is not doable from Python checkCoordMag = CheckCoordMag() #eMesh.nodalOpLoop(checkCoordMag, coords_mag_field) print checkCoordMag.error ff_coords.add_alias("mc") sfcm = StringFunction("sqrt(mc[0]*mc[0]+mc[1]*mc[1]+mc[2]*mc[2])", "sfcm", Dimensions(3), Dimensions(1)) tol1 = 1.e-12 vv = eval_vec3(0.1, 0.2, 0.3, 0.0, ff_coords) print print "0.1 == vv[0] = ", vv[0], "passed" print "0.2 == vv[1] = ", vv[1], "passed" print "0.3 == vv[2] = ", vv[2], "passed" self.assertAlmostEqual(.1, vv[0], delta=tol1) self.assertAlmostEqual(.2, vv[1], delta=tol1) self.assertAlmostEqual(.3, vv[2], delta=tol1) vv = eval_func(0.1, 0.2, 0.3, 0.0, sfcm) v_expect = sqrt(0.1*0.1+0.2*0.2+0.3*0.3) if ((vv-v_expect) < tol1): print "vv = ", vv, " == v_expect = ", v_expect, "passed" coords_mag_field_function.interpolateFrom(sfcm)
def fixture_setup_0(self): eMesh = PerceptMesh() p_size = eMesh.get_parallel_size() gmesh_spec = "4x4x" + str((4 * p_size)) + "|bbox:0,0,0,1,1,1" eMesh.new_mesh(GMeshSpec(gmesh_spec)) eMesh.commit() eMesh.save_as("./exodus_files/hex_fixture.e")
def test_wedge6_wedge18_enrich(self): pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size == 1: wedgeFixture = WedgeFixture() bulk = wedgeFixture.createMesh(MPI.COMM_WORLD, 4,3,2,0,1,0,1,0,1,"") eMesh = PerceptMesh(wedgeFixture.getMetaData(), bulk, False) scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension) breaker = Refiner(eMesh, WEDGE6_WEDGE18_1, proc_rank_field) eMesh.commit() wedgeFixture.createBulkAfterMetaCommit(MPI.COMM_WORLD) breaker.doBreak()
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", stk::topology::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_wedge6_wedge18_enrich(self): pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size == 1: wedgeFixture = WedgeFixture() bulk = wedgeFixture.createMesh(MPI.COMM_WORLD, 4,3,2,0,1,0,1,0,1,"") eMesh = PerceptMesh(wedgeFixture.getMetaData(), bulk, False) scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, WEDGE6_WEDGE18_1, proc_rank_field) eMesh.commit() wedgeFixture.createBulkAfterMetaCommit(MPI.COMM_WORLD) breaker.doBreak()
def test_hex20_hex20_1(self): fixture_setup() eMesh = PerceptMesh(3) p_size = eMesh.get_parallel_size() if p_size <= 3: eMesh.open("hex20_hex20_cube1x1x"+str(p_size) + "_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, HEX20_HEX20_8, proc_rank_field) eMesh.commit() breaker.setRemoveOldElements(True) breaker.doBreak() eMesh.save_as("hex20_hex20_cube1x1x" + str(p_size) + "_1.e")
def test_quad8_to_quad8(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 3: eMesh = PerceptMesh(2) eMesh.open("quad_fixture_quad8_quad8_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, QUAD8_QUAD8_4, proc_rank_field) eMesh.commit() breaker.setIgnoreSideSets(False) breaker.doBreak() eMesh.save_as("quad_fixture_quad8_quad8_1.e")
def test_wedge6_2(self): fixture_setup() eMesh = PerceptMesh(3) p_size = eMesh.get_parallel_size() if p_size == 1: wedgeFixture = WedgeFixture() wedgeFixture.createMesh(MPI.COMM_WORLD, 4,3,2,0,1,0,1,0,1, "swept_wedge_0.e") eMesh.open("swept_wedge_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, WEDGE6_WEDGE6_8, proc_rank_field) eMesh.commit() breaker.doBreak() eMesh.save_as("swept-wedge_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_use_case_1(self): pMesh = PerceptMesh() pMesh.new_mesh(GMeshSpec("3x3x3|bbox:0,0,0,2,2,2")) field = pMesh.add_field("coordinates", 1) pMesh.commit() input_array = array([1.0, 0.5, 0.5]) input_array_2 = array([1.0, 1.5, 1.5]) ff = FieldFunction("ff", field, pMesh, 3, 3) ff.add_alias("myalias") ff_output = ff.evaluate(input_array) f2 = FieldFunction("f2", field, pMesh, 3, 3) f2_output = f2.evaluate(input_array_2) sf = StringFunction("x+y+z", "myname", 3, 1) sf_output = sf.evaluate(input_array) sf_diff = StringFunction("ff-f2", "myname") norm = L1Norm(pMesh.get_bulk_data()) value = norm.evaluate(ff) diffnorm = norm.evaluate(sf_diff)
def test_hex20_hex20_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("hex20_hex20_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension) breaker = Refiner(eMesh, HEX20_HEX20_8, proc_rank_field) eMesh.commit() eMesh.save_as("hex20_hex20_0.e") breaker.doBreak() eMesh.save_as("hex20_hex20_1.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", stk::topology::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_hex8_hex8_8_1(self): fixture_setup() eMesh = PerceptMesh() p_size = eMesh.get_parallel_size() gmesh_spec = "4x4x"+str(4*p_size)+"|bbox:0,0,0,1,1,1" eMesh.new_mesh(GMeshSpec(gmesh_spec)) scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, HEX8_HEX8_8, proc_rank_field) eMesh.commit() breaker.doBreak
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", stk::topology::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 __init__(self, num_xyz, num_y, num_z): self.eMesh = PerceptMesh() self.num_x = num_xyz self.num_y = num_y self.num_z = num_z config_mesh = str(self.num_x) + "x" + str(self.num_y) + "x" + str( self.num_z) + "|bbox:-0.5,-0.5,-0.5,0.5,0.5,0.5" self.eMesh.new_mesh(GMeshSpec(config_mesh)) self.eMesh.commit() self.metaData = self.eMesh.get_fem_meta_data() self.bulkData = self.eMesh.get_bulk_data() self.coords_field = self.metaData.get_field("coordinates") self.sfx = StringFunction("x", "sfx", Dimensions(3), Dimensions(1)) self.sfx_res = ConstantFunction(0.0, "sfx_res")
def fixture_setup_0(self): eMesh = PerceptMesh() p_size = eMesh.get_parallel_size() gmesh_spec = "4x4x" + str((4*p_size)) + "|bbox:0,0,0,1,1,1" eMesh.new_mesh(GMeshSpec(gmesh_spec)) eMesh.commit() eMesh.save_as("./exodus_files/hex_fixture.e")
def test_hex20_hex20_1(self): fixture_setup() eMesh = PerceptMesh(3) p_size = eMesh.get_parallel_size() if p_size <= 3: eMesh.open("hex20_hex20_cube1x1x"+str(p_size) + "_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension) breaker = Refiner(eMesh, HEX20_HEX20_8, proc_rank_field) eMesh.commit() breaker.setRemoveOldElements(True) breaker.doBreak() eMesh.save_as("hex20_hex20_cube1x1x" + str(p_size) + "_1.e")
def test_beam_enrich(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 1: eMesh = PerceptMesh() eMesh.open("exodus_files/beam.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension) eMesh.save_as("beam_enrich_0.e") breaker = Refiner(eMesh, BEAM2_BEAM3_1, proc_rank_field) eMesh.commit() breaker.setIgnoreSideSets(True) breaker.doBreak() eMesh.save_as("beam_enrich.e")
def test_wedge6_2(self): fixture_setup() eMesh = PerceptMesh(3) p_size = eMesh.get_parallel_size() if p_size == 1: wedgeFixture = WedgeFixture() wedgeFixture.createMesh(MPI.COMM_WORLD, 4,3,2,0,1,0,1,0,1, "swept_wedge_0.e") eMesh.open("swept_wedge_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension) breaker = Refiner(eMesh, WEDGE6_WEDGE6_8, proc_rank_field) eMesh.commit() breaker.doBreak() eMesh.save_as("swept-wedge_1.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_break_tri_to_tri_sierra_1_test(self): pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 2: n = 2 nx = n ny = n createEdgeSets = False fixture = QuadFixture_4(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_edge", eMesh.edge_rank(), scalarDimension) breaker = Refiner(eMesh, TRI3_TRI3_4, proc_rank_field) eMesh.commit() fixture.generate_mesh() breaker.setRemoveOldElements(False) breaker.doBreak() eMesh.dump_elements_compact()
def test_heterogeneous_mesh(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(MPI.COMM_WORLD) if p_size <= 1: mesh = HeterogeneousFixture(MPI.COMM_WORLD, False) #put_io_part_attribute(mesh.m_block_hex) #put_io_part_attribute(mesh.m_block_wedge) #put_io_part_attribute(mesh.m_block_tet) mesh.m_metaData.commit() mesh.populate() isCommited = True em1 = PerceptMesh(mesh.m_metaData, mesh.m_bulkData, isCommited) em1.save_as("heterogeneous_0.e") em1.close() eMesh = PerceptMesh(3) eMesh.open("heterogeneous_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension)
def test_heterogeneous_mesh(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(MPI.COMM_WORLD) if p_size <= 1: mesh = HeterogeneousFixture(MPI.COMM_WORLD, False) #put_io_part_attribute(mesh.m_block_hex) #put_io_part_attribute(mesh.m_block_wedge) #put_io_part_attribute(mesh.m_block_tet) mesh.m_metaData.commit() mesh.populate() isCommited = True em1 = PerceptMesh(mesh.m_metaData, mesh.m_bulkData, isCommited) em1.save_as("heterogeneous_0.e") em1.close() eMesh = PerceptMesh(3) eMesh.open("heterogeneous_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension)
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_quad4_to_quad9(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 3: n = 12 nx = n ny = n doGenSideSets = True fixture = QuadFixture_4(pm,nx,ny,doGenSideSets) 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) breaker = Refiner(eMesh, QUAD4_QUAD9_1, proc_rank_field) eMesh.commit() fixture.generate_mesh() eMesh.save_as("quad_fixture_quad9_0.e") breaker.doBreak() eMesh.save_as("quad_fixture_quad9_1.e")
def test_beam_refine(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 1: mesh = BeamFixture(pm, False) mesh.m_metaData.commit() mesh.populate() isCommited = True em1 = PerceptMesh(mesh.m_metaData, mesh.m_bulkData, isCommited) em1.save_as("beam_0.e") eMesh = PerceptMesh() eMesh.open("beam_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", stk::topology::ELEMENT_RANK, scalarDimension) breaker = Refiner(eMesh, BEAM2_BEAM2_2, proc_rank_field) eMesh.commit() breaker.setIgnoreSideSets(True) breaker.doBreak()
def test_beam_refine(self): fixture_setup() pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 1: mesh = BeamFixture(pm, False) mesh.m_metaData.commit() mesh.populate() isCommited = True em1 = PerceptMesh(mesh.m_metaData, mesh.m_bulkData, isCommited) em1.save_as("beam_0.e") eMesh = PerceptMesh() eMesh.open("beam_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, BEAM2_BEAM2_2, proc_rank_field) eMesh.commit() breaker.setIgnoreSideSets(True) breaker.doBreak()
def test_fieldFunction_point_eval_timing(self): num_x = 3 num_y = 3 num_z = 3 config_mesh = str(num_x) + "x" + str(num_y) + "x" + str( num_z) + "|bbox:0,0,0,1,1,1" eMesh = PerceptMesh() eMesh.new_mesh(GMeshSpec(config_mesh)) eMesh.commit() #FIXME #p_size = eMesh.get_bulk_data->parallel_size() f_coords = eMesh.get_field("coordinates") for iSearchType in range(2): if iSearchType == 0: search_type = FieldFunction.SIMPLE_SEARCH search_type_name = "SIMPLE_SEARCH" else: search_type = FieldFunction.STK_SEARCH search_type_name = "STK_SEARCH" ff_coords = FieldFunction("ff_coords", f_coords, eMesh, Dimensions(3), Dimensions(3), search_type) t1st = time.time() val1 = eval_vec3(0.2, 0.3, 0.4, 0.0, ff_coords) val1 = eval_vec3(0.2, 0.3, 0.4, 0.0, ff_coords) #evaluated twice??? t1st = time.time() - t1st numIter = 10000 random.seed(12345) total_time = time.time() max_rand = 32767 for iter in range(numIter): num0 = random.randint(1, max_rand) * 1.0 num1 = random.randint(1, max_rand) * 1.0 num2 = random.randint(1, max_rand) * 1.0 pts = array([(num0 / max_rand), (num1 / max_rand), (num2 / max_rand)]) output_pts = array([0.0, 0.0, 0.0]) output_pts = ff_coords.value(pts, output_pts, 0.0) total_time = time.time() - total_time print "TEST::function::fieldFunction_point_eval_timing: " print " for search_type= ", search_type_name print " time for 1st eval= ", t1st print " for ", numIter, "iterations, evaluating field(x,y,z) time = ", total_time print " average per point lookup and eval time = ", ( total_time / numIter)
def test_use_case_2(self): pMesh = PerceptMesh() pMesh.open("exodus_files/tet-mesh.e") uniform_refiner = Refiner(pMesh, TET4_TET4_8) pMesh.commit() i = 0 while i < 3: uniform_refiner.doBreak() i = i + 1 pMesh.save_as("tet-mesh-refined-3-times.e")
def test_use_case_2(self): pMesh = PerceptMesh() # create an empty PerceptMesh pMesh.open("exodus_files/tet-mesh.e") # open the mesh, but don't commit its meta data uniform_refiner = Refiner(pMesh, TET4_TET4_8) # define a Refiner on the mesh pMesh.commit() # commit the mesh i = 0 while i < 3: uniform_refiner.doBreak() # refine the mesh 3 times i = i + 1 pMesh.save_as("tet-mesh-refined-3-times.e") # save in exodus format
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_wedge6_wedge18_enrich(self): pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size == 1: wedgeFixture = WedgeFixture() bulk = wedgeFixture.createMesh(MPI.COMM_WORLD, 4,3,2,0,1,0,1,0,1,"") # create stk::mesh::BulkData from wedge fixture eMesh = PerceptMesh(wedgeFixture.getMetaData(), bulk, False) # adopt bulk data scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, WEDGE6_WEDGE15_1, proc_rank_field) eMesh.commit() wedgeFixture.createBulkAfterMetaCommit(MPI.COMM_WORLD) # generate the mesh breaker.doBreak() # refine eMesh.save_as("./wedge6-15.e") # save
def test_break_tri_to_tri_sierra_1_test(self): pm = MPI.COMM_WORLD p_size = parallel_machine_size(pm) if p_size <= 2: n = 2 nx = n ny = n createEdgeSets = False fixture = QuadFixture_4(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_edge", eMesh.edge_rank(), scalarDimension) breaker = Refiner(eMesh, TRI3_TRI3_4, proc_rank_field) eMesh.commit() fixture.generate_mesh() breaker.setRemoveOldElements(False) breaker.doBreak() eMesh.dump_elements_compact()
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 __init__(self, num_xyz, num_y, num_z): self.eMesh = PerceptMesh() self.num_x = num_xyz self.num_y = num_y self.num_z = num_z config_mesh = str(self.num_x) + "x" + str(self.num_y) + "x" + str(self.num_z) + "|bbox:-0.5,-0.5,-0.5,0.5,0.5,0.5" self.eMesh.new_mesh(GMeshSpec(config_mesh)) self.eMesh.commit() self.metaData = self.eMesh.get_fem_meta_data() self.bulkData = self.eMesh.get_bulk_data() self.coords_field = self.metaData.get_field("coordinates") self.sfx = StringFunction("x", "sfx", Dimensions(3), Dimensions(1)) self.sfx_res = ConstantFunction(0.0, "sfx_res")
def test_fieldFunction_read_print(self): print_info = 0 x = 3 y = 3 z = 3 config_mesh = str(x) + "x" + str(y) + "x" + str(z) + "|bbox:0,0,0,1,1,1" eMesh = PerceptMesh() eMesh.new_mesh_read_only(GMeshSpec(config_mesh)) metaData = eMesh.get_fem_meta_data() parts = metaData.get_parts() nparts = len(parts) if print_info == 1: print "Number of parts = ", nparts fields = metaData.get_fields() nfields = len(fields) if print_info == 1: print "Number of fields = ", nfields for i in range(nfields): field = fields[i]
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_fieldFunction_point_eval_timing(self): num_x = 3 num_y = 3 num_z = 3 config_mesh = str(num_x) + "x" + str(num_y) + "x" + str(num_z) + "|bbox:0,0,0,1,1,1" eMesh = PerceptMesh() eMesh.new_mesh(GMeshSpec(config_mesh)) eMesh.commit() #FIXME #p_size = eMesh.get_bulk_data->parallel_size() f_coords = eMesh.get_field("coordinates") for iSearchType in range(2): if iSearchType == 0: search_type = FieldFunction.SIMPLE_SEARCH search_type_name = "SIMPLE_SEARCH" else: search_type = FieldFunction.STK_SEARCH search_type_name = "STK_SEARCH" ff_coords = FieldFunction("ff_coords", f_coords, eMesh, Dimensions(3), Dimensions(3), search_type) t1st = time.time() val1 = eval_vec3(0.2,0.3,0.4,0.0,ff_coords) val1 = eval_vec3(0.2,0.3,0.4,0.0,ff_coords) #evaluated twice??? t1st = time.time() - t1st numIter = 10000 random.seed(12345) total_time = time.time() max_rand = 32767 for iter in range(numIter): num0 = random.randint(1, max_rand)*1.0 num1 = random.randint(1, max_rand)*1.0 num2 = random.randint(1, max_rand)*1.0 pts = array([(num0/max_rand), (num1/max_rand), (num2/max_rand)]) output_pts = array([0.0,0.0,0.0]) output_pts = ff_coords.value(pts, output_pts, 0.0) total_time = time.time() - total_time print "TEST::function::fieldFunction_point_eval_timing: " print " for search_type= ", search_type_name print " time for 1st eval= ", t1st print " for ", numIter, "iterations, evaluating field(x,y,z) time = ", total_time print " average per point lookup and eval time = ", (total_time/numIter)
def test_fieldFunction_demo_1(self): gms = Gmesh_STKmesh_Fixture(MPI.COMM_WORLD, "3x3x3|bbox:0,0,0,1,1,1") print "gms = ", gms print "gms= end" eMesh = PerceptMesh() eMesh.new_mesh(GMeshSpec("3x3x3|bbox:0,0,0,1,1,1")) eMesh.commit() 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_fieldFunction_point_eval_verify(self): num_x = 3 num_y = 3 num_z = 3 config_mesh = str(num_x) + "x" + str(num_y) + "x" + str(num_z) + "|bbox:0,0,0,1,1,1" eMesh = PerceptMesh() eMesh.new_mesh(GMeshSpec(config_mesh)) eMesh.commit() f_coords = eMesh.get_field("coordinates") ff_coords = FieldFunction("ff_coords", f_coords, eMesh, Dimensions(3), Dimensions(3), FieldFunction.SIMPLE_SEARCH) val1 = eval_vec3_print(0.2,0.3,0.4,0.0,ff_coords) bulkData = eMesh.get_bulk_data() try: val10 = eval_print_vec3(1.2, 1.3, 1.4, 0.0, ff_coords) except: print "expected to catch this exception: " pts = array([0.2, 0.3, 0.4]) output_pts = array([0.0, 0.0, 0.0]) output_pts = ff_coords.value(pts, output_pts) tol = 1.e-9 print "output(0) = ", pts[0], " == output_pts(0) = ", output_pts[0] print "output(1) = ", pts[1], " == output_pts(1) = ", output_pts[1] print "output(2) = ", pts[2], " == output_pts(2) = ", output_pts[2] self.assertAlmostEqual(pts[0], output_pts[0], delta = tol) self.assertAlmostEqual(pts[1], output_pts[1], delta = tol) self.assertAlmostEqual(pts[2], output_pts[2], delta = tol)
def test_wedge6_enrich_refine(self): fixture_setup() p_size = parallel_machine_size(MPI.COMM_WORLD) if p_size == 1: eMesh = PerceptMesh(3) wedgeFixture = WedgeFixture() wedgeFixture.createMesh(MPI.COMM_WORLD, 4,2,2,0,1,0,1,0,1, "tmp-swept-wedge_enrich_0.e") eMesh.open("tmp-swept-wedge_enrich_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, WEDGE6_WEDGE15_1, proc_rank_field) eMesh.commit() breaker.doBreak() eMesh.save_as("swept-wedge_2_enrich_refine_0.e") if p_size == 1: eMesh = PerceptMesh(3) eMesh.open("swept-wedge_2_enrich_refine_0.e") scalarDimension = 0 proc_rank_field = eMesh.add_field("proc_rank", eMesh.element_rank(), scalarDimension) breaker = Refiner(eMesh, WEDGE15_WEDGE15_8, proc_rank_field) eMesh.commit() breaker.setIgnoreSideSets(True) breaker.doBreak() eMesh.save_as("swept-wedge_2_enrich_refine_1.e")
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")