Example #1
0
    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")
Example #3
0
    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_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")
Example #6
0
    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")
Example #9
0
 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()
Example #10
0
 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")
Example #16
0
   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) 
Example #17
0
 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")
Example #18
0
 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
Example #20
0
 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")
Example #21
0
 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")
Example #22
0
    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")
Example #23
0
    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")
Example #24
0
 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")
Example #25
0
  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")
Example #26
0
 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_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_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
Example #29
0
    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()
Example #31
0
 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")
Example #35
0
  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()
Example #37
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)
Example #38
0
   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")
Example #39
0
    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
Example #40
0
 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")
Example #41
0
 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_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_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")
Example #44
0
 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()
Example #46
0
  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
Example #49
0
    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
Example #50
0
 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_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")      
Example #52
0
    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_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_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")