Example #1
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) 
    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)
Example #3
0
    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)
Example #4
0
class LocalFixture:
    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 #5
0
class LocalFixture:
  
  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 #6
0
    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_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 #8
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_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_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)
Example #11
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)
Example #12
0
#####################################################################################

# B) loop over meshes and compute errors

for i in range(0,num_meshes):
    pMesh = PerceptMesh(2)
    pMesh.open(mesh_files[i])
    pMesh.commit()
    print "mesh_files[i]= " , i, mesh_files[i]

    spatial_dim=pMesh.get_spatial_dim()
    # TODO: check that this matches the StringFunction exact solution

    metaData = pMesh.get_fem_meta_data()
    bulkData = pMesh.get_bulk_data()
    
    nodal_field = metaData.get_field(metaData.NODE_RANK, nodal_fields[0])
    ff_Tnd = FieldFunction(nodal_fields[0], nodal_field, bulkData, Dimensions(spatial_dim), Dimensions(1))

    error_string = [exact_soln_name[0]+" - "+nodal_fields[0]];
    error_name = [nodal_fields[0]+"_err"]
    print "error_string= ", error_string
    sf_Terr = StringFunction(error_string[0], error_name[0], Dimensions(spatial_dim), Dimensions(1))

    numSteps = pMesh.get_database_time_step_count()
    print "numSteps= ", numSteps, " nodal_fields[0]= ", nodal_fields[0]
    pMesh.read_database_at_step(numSteps)


    p_field = pMesh.get_field(metaData.NODE_RANK, "P")
Example #13
0
print "rates= ", rates

#####################################################################################

# B) loop over meshes and compute errors

for i in range(0,num_meshes):
    pMesh = PerceptMesh(2)
    pMesh.open(mesh_files[i])
    pMesh.commit()

    spatial_dim=pMesh.get_spatial_dim()
    # TODO: check that this matches the StringFunction exact solution

    metaData = pMesh.get_fem_meta_data()
    bulkData = pMesh.get_bulk_data()
    
    nodal_field = metaData.get_field(nodal_fields[0])
    ff_Tnd = FieldFunction(nodal_fields[0], nodal_field, bulkData, Dimensions(spatial_dim), Dimensions(1))

    error_string = [exact_soln_name[0]+" - "+nodal_fields[0]];
    error_name = [nodal_fields[0]+"_err"]
    sf_Terr = StringFunction(error_string[0], error_name[0], Dimensions(spatial_dim), Dimensions(1))

    numSteps = pMesh.get_database_time_step_count()
    pMesh.read_database_at_step(numSteps)

    # DEBUG
    print numSteps, pMesh.get_current_database_step(), pMesh.get_current_database_time()

    cubDegree = 2