Changeset 935


Ignore:
Timestamp:
Feb 21, 2005, 5:21:02 PM (20 years ago)
Author:
duncan
Message:

removing mesh ref's to test_loadascii

Location:
inundation/ga/storm_surge/pmesh
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • inundation/ga/storm_surge/pmesh/load_mesh/loadASCII.py

    r887 r935  
    6666
    6767def read_triangulation(fd):
     68    """
     69    Read the generated triangulation, NOT the outline.
     70    """
    6871    delimiter = " "
    6972    ######### loading the point info
     
    451454    Following lines:  <segment #> <vertex #>  <vertex #> [boundary marker]
    452455    """
     456    #print "DSG************"
     457    #print "gen_dict",gen_dict
     458    #print "DSG************"
    453459    try:
    454460        fd = open(ofile,'w')
     
    458464        msg = 'Could not write file %s ' %fileName
    459465        raise IOError, msg
     466
     467       
     468def write_ASCII_mesh(fd,
     469                     dict):
     470    points = dict['pointlist']
     471    point_attributes = dict['pointattributelist']
     472    segments = dict['segmentlist']
     473    segment_markers = dict['segmentmarkerlist']
     474    holes = dict['holelist']
     475    regions = dict['regionlist']
     476       
     477    num_points = str(len(points))
     478    if (num_points == "0"):
     479        num_point_atts = "0"
     480    else:
     481        num_point_atts = str(len(point_attributes[0]))
     482    fd.write(num_points + " " + num_point_atts + " # <# of verts> <# of vert attributes>, next lines <vertex #> <x> <y> [attributes] ...Mesh Vertices..." + "\n")
     483       
     484    # <x> <y> [attributes]
     485    for i,point in enumerate(points):
     486        attlist = ""
     487        for att in point_attributes[i]:
     488            attlist = attlist + str(att)+" "
     489        attlist.strip()
     490        fd.write(str(i) + " "
     491                 +str(point[0]) + " "
     492                 + str(point[1]) + " "
     493                 + attlist + "\n")
     494           
     495    #One line:  <# of segments>
     496    fd.write(str(len(segments)) +
     497             " # <# of segments>, next lines <segment #> <vertex #>  <vertex #> [boundary marker] ...Mesh Segments..." + "\n")
     498       
     499    #Following lines:  <vertex #>  <vertex #> [boundary marker]
     500    for i,seg in enumerate(segments):
     501        fd.write(str(i) + " "
     502                 + str(seg[0]) + " "
     503                 + str(seg[1]) + " "
     504                 + str(segment_markers[i]) + "\n")
     505
     506    #One line:  <# of holes>
     507    fd.write(str(len(holes)) +
     508             " # <# of holes>, next lines <Hole #> <x> <y> ...Mesh Holes..." + "\n")   
     509    # <x> <y>
     510    for i,h in enumerate(holes):
     511        fd.write(str(i) + " "
     512                 + str(h[0]) + " "
     513                 + str(h[1]) + "\n")
     514       
     515    #One line:  <# of regions>
     516    fd.write(str(len(regions)) +
     517             " # <# of regions>, next lines <Region #> <x> <y> <tag>...Mesh Regions..." + "\n")   
     518    # <index> <x> <y> <tag>
     519    #print "regions",regions
     520    for i,r in enumerate(regions):
     521        #print "r",r
     522        fd.write(str(i) + " "
     523                 + str(r[0]) + " "
     524                 + str(r[1])+ " "
     525                 + str(r[2]) + "\n")
     526       
     527    # <index> [<MaxArea>|""]
     528       
     529    #One line:  <# of regions>
     530    fd.write(str(len(regions)) +
     531             " # <# of regions>, next lines <Region #> [Max Area] ...Mesh Regions..." + "\n")
     532    for i,r in enumerate(regions):
     533        if len(r) < 4:
     534            area = ""
     535        else:
     536            area = str(r[3])
     537           
     538        fd.write(str(i) + " " + area + "\n")
     539
    460540
    461541## used by alpha shapes
  • inundation/ga/storm_surge/pmesh/load_mesh/test_loadASCII.py

    r891 r935  
    2222from Numeric import array #Float, arrayrange, concatenate
    2323   
    24 #FIXME (DSG): remove this dependency
    25 from mesh import *
    2624from loadASCII import *
    2725from Numeric import array, allclose
     
    3432        pass
    3533
    36 
    37 # FIXME move this to meshharness.  have a test that doesn't depend on mesh
    38     def ztest_import_triangulation(self):
    39    
    40         a_att = [5,2]
    41         d_att =[4,2]
    42         f_att = [3,2]
    43         e_att = [2,2]
    44         a_xy = [0.0, 0.0]
    45         a = Vertex ( a_xy[0],a_xy[1]) #, attributes =a_att)
    46         d = Vertex (0.0, 4.0) #, attributes =d_att)
    47         f = Vertex (4.0,0.0) #, attributes =f_att)
    48         e = Vertex (1.0,1.0) #, attributes =e_att)
    49    
    50         s1 = Segment(a,d, marker = "50")
    51         s2 = Segment(d,f, marker = "40")
    52         s3 = Segment(a,f, marker = "30")
    53         s4 = Segment(a,e, marker = "20")
    54      
    55         r1 = Region(0.3, 0.3,tag = "1.3", maxArea = 45)
    56         m = Mesh(userVertices=[a,d,f,e],
    57                  userSegments=[s1,s2,s3,s4],
    58                  regions=[r1])
    59 
    60         m.generateMesh("QApza2.1")
    61 
    62         seg = m.getMeshSegments()
    63         points = m.getMeshVertices()
    64        
     34   
     35    def test_import_mesh(self):
     36        dict ={}
     37        dict['segmentlist'] = [(0, 1), (1, 2), (0, 2), (0, 3)]
     38        dict['segmentmarkerlist'] = ['50', '40', '30', '20']
     39        dict['holelist'] = [(0.2, 0.6)]
     40        dict['pointattributelist'] = [[5, 2], [4, 2], [3, 2], [2,2]]
     41        dict['regionlist'] = [(0.3, 0.3, '1.3',36.0)]
     42        dict['pointlist'] = [(0.0, 0.0), (0.0, 4.0), (4.0, 0.0), (1.0, 1.0)]
     43
    6544        fileName = tempfile.mktemp(".txt")
    66         #print "fileName",fileName
    67 
    68         #print "",
    69         #print "",
    70        
    71         m.exportASCIItriangulationfile(fileName)
    72        
    73         dict = import_triangulation(fileName)
    74         os.remove(fileName)
    75        
     45        fd = open(fileName,'w')
     46        write_ASCII_mesh(fd,dict)
     47        fd.close()
     48        loaded_dict = import_mesh(fileName)
     49        os.remove(fileName)
     50       
     51        #gen_dict =
     52        #print "*********************"
    7653        #print dict
    77         #print "seg",seg
    78         for pimport,pactual,pimpatt in map(None,dict['generatedpointlist'],points,dict['generatedpointattributelist']):
    79             self.failUnless( pimport == [pactual.x,pactual.y],
    80                         'loadASCIITestCase failed. test 1')
    81             self.failUnless( pimpatt == pactual.attributes,
    82                         'loadASCIITestCase failed. test 1.1')
    83         self.failUnless( dict['segmentlist'][0] == [0,1],
    84                         'loadASCIITestCase failed. test 3')
    85         for segimp,segactual in map(None,dict['generatedsegmentmarkerlist'],seg):
    86             self.failUnless( segimp == segactual.marker,
    87                         'loadASCIITestCase failed. test 4')
    88         self.failUnless( dict['generatedtrianglelist'][0] == [3,2,4],
    89                         'loadASCIITestCase failed. test 5')
    90         self.failUnless( dict['generatedtriangleneighborlist'][0] == [-1,2,3],
     54        #print "**loaded_dict*******************"
     55        #print loaded_dict
     56        #print "*********************"
     57
     58       
     59        self.failUnless(array(loaded_dict['pointlist'])  ==
     60                        array(dict['pointlist']),
     61                         'test_import_mesh failed. Test 1')
     62        self.failUnless(array(loaded_dict['pointattributelist'])  ==
     63                        array(dict['pointattributelist']),
     64                         'test_import_mesh failed. Test 2')
     65        self.failUnless(array(loaded_dict['segmentlist'])  ==
     66                        array(dict['segmentlist']),
     67                         'test_import_mesh failed. Test 3')
     68        self.failUnless(array(loaded_dict['segmentmarkerlist'])  ==
     69                        array(dict['segmentmarkerlist']),
     70                         'test_import_mesh failed. Test 4')
     71       
     72        for regimp,regactual,regattimp, regmaxarea in map(None,loaded_dict['regionlist'],dict['regionlist'], loaded_dict['regionattributelist'], loaded_dict['regionmaxarealist']):
     73            self.failUnless( regimp == [regactual[0],regactual[1]],
    9174                        'loadASCIITestCase failed. test 6')
    92         self.failUnless( dict['generatedtriangleattributelist'][0] == ["1.3"],
    93                          'loadASCIITestCase failed. test 7')
    94      
    95      
    96 # FIXME move this to meshharness.  have a test that doesn't depend on mesh
    97     def ztest_import_mesh(self):
    98    
    99         a_att = [5,2]
    100         d_att =[4,2]
    101         f_att = [3,2]
    102         e_att = [2,2]
    103         a_xy = [0.0, 0.0]
    104         a = Vertex ( a_xy[0],a_xy[1], attributes =a_att)
    105         d = Vertex (0.0, 4.0, attributes =d_att)
    106         f = Vertex (4.0,0.0, attributes =f_att)
    107         e = Vertex (1.0,1.0, attributes =e_att)
    108    
    109         s1 = Segment(a,d, marker = "50")
    110         s2 = Segment(d,f, marker = "40")
    111         s3 = Segment(a,f, marker = "30")
    112         s4 = Segment(a,e, marker = "20")
    113      
    114         r1 = Region(0.3, 0.3,tag = "1.3", maxArea = 36)
    115 
    116 
    117         h1 = Hole(0.2,0.6)
    118        
    119         m = Mesh(userVertices=[a,d,f,e],
    120                  userSegments=[s1,s2,s3,s4],
    121                  regions=[r1],
    122                  holes=[h1])
    123 
    124         seg = m.getUserSegments()
    125         points = m.getUserVertices()
    126         holes = m.getHoles()
    127         regions = m.getRegions()
    128         fileName = tempfile.mktemp(".txt")
    129         m.exportASCIImeshfile(fileName)
    130         #print "***************************fileName", fileName
    131         dict = import_mesh(fileName)
    132         os.remove(fileName)
    133 
    134         #print dict
    135        
    136         for pimport,pactual,pimpatt in map(None,dict['pointlist'],points,dict['pointattributelist']):
    137             self.failUnless( pimport == [pactual.x,pactual.y],
    138                         'loadASCIITestCase failed. test 1')
    139             self.failUnless( pimpatt == pactual.attributes,
    140                         'loadASCIITestCase failed. test 1.1')
    141         self.failUnless( dict['segmentlist'][0] == [0,1],
    142                         'loadASCIITestCase failed. test 3')
    143         for segimp,segactual in map(None,dict['segmentmarkerlist'],seg):
    144             self.failUnless( segimp == segactual.marker,
    145                         'loadASCIITestCase failed. test 4')
    146         for holeimp,holeactual in map(None,dict['holelist'],holes):
    147             self.failUnless( holeimp == [holeactual.x,holeactual.y],
    148                         'loadASCIITestCase failed. test 5')
    149         for regimp,regactual,regattimp, regmaxarea in map(None,dict['regionlist'],regions, dict['regionattributelist'], dict['regionmaxarealist']):
    150             self.failUnless( regimp == [regactual.x,regactual.y],
    151                         'loadASCIITestCase failed. test 6')
    152             self.failUnless( regattimp == regactual.getTag(),
     75            self.failUnless( regattimp == regactual[2],
    15376                        'loadASCIITestCase failed. test 7')
    154             self.failUnless( regmaxarea == regactual.getMaxArea(),
     77            self.failUnless( regmaxarea == regactual[3],
    15578                        'loadASCIITestCase failed. test 7')
    15679
    15780
     81        self.failUnless(array(loaded_dict['holelist'])  ==
     82                        array(dict['holelist']),
     83                         'test_import_mesh failed. Test 6')
     84       
    15885    def test_export_triangulation_file(self):
    15986        import os
  • inundation/ga/storm_surge/pmesh/mesh.py

    r915 r935  
    802802        return deletedObs
    803803                                                 
    804     def Mesh2triangList(self):
     804    def Mesh2triangList(self, userVertices=None,
     805                        userSegments=None,
     806                        holes=None,
     807                        regions=None):
    805808        """
    806809        Convert the Mesh to a dictionary of the lists needed for the triang modul;
     
    813816        """
    814817       
     818        if userVertices is None:
     819            userVertices = self.getUserVertices()
     820        if userSegments is None:
     821            userSegments = self.getUserSegments()
     822        if holes is None:
     823            holes = self.getHoles()
     824        if regions is None:
     825            regions = self.getRegions()
     826           
    815827        meshDict = {}
    816828       
     
    818830        pointattributelist=[]
    819831        index = 0
    820         for vertex in self.userVertices:
     832        for vertex in userVertices:
    821833            vertex.index = index
    822834            pointlist.append((vertex.x,vertex.y))
     
    829841        segmentlist=[]
    830842        segmentmarkerlist=[]
    831         for seg in self.getUserSegments():
     843        for seg in userSegments:
    832844            segmentlist.append((seg.vertices[0].index,seg.vertices[1].index))
    833845            segmentmarkerlist.append(seg.marker)
    834846        meshDict['segmentlist'] =segmentlist
    835847        meshDict['segmentmarkerlist'] =segmentmarkerlist
     848       
    836849        holelist=[]
    837         for hole in self.holes:
     850        for hole in holes:
    838851            holelist.append((hole.x,hole.y))
    839852        meshDict['holelist'] = holelist
    840853       
    841854        regionlist=[]
    842         for region in self.regions:
     855        for region in regions:
    843856            if (region.getMaxArea() != None):
    844857                regionlist.append((region.x,region.y,region.getTag(),
     
    15111524            #Most probably, the Tkinter module is not available.
    15121525            #"""
    1513      
     1526           
     1527    # Is this used by anything? 
    15141528    def exportASCIItriangulationfile(self,ofile):
    15151529        """
     
    15451559        meshDict['generatedsegmentlist'] = []
    15461560        meshDict['generatedsegmentmarkerlist'] = []
    1547 
    15481561        meshDict['generatedtrianglelist'] = []
    15491562        meshDict['generatedtriangleattributelist'] = []
     
    16361649                       holes,
    16371650                       regions):
    1638         numVert = str(len(userVertices))
    1639         if (numVert == "0"):
    1640             numVertAttrib = "0"
    1641         else:
    1642             numVertAttrib = str(len(userVertices[0].attributes))
    1643         fd.write(numVert + " " + numVertAttrib + " # <# of verts> <# of vert attributes>, next lines <vertex #> <x> <y> [attributes] ...Mesh Vertices..." + "\n")
    1644        
    1645         # <x> <y> [attributes]
    1646         index = 0
    1647         for vert in userVertices:
    1648             vert.index = index
    1649             index += 1
    1650             attlist = ""
    1651             for att in vert.attributes:
    1652                 attlist = attlist + str(att)+" "
    1653             attlist.strip()
    1654             fd.write(str(vert.index) + " "
    1655                      +str(vert.x) + " "
    1656                      + str(vert.y) + " "
    1657                      + attlist + "\n")
    1658            
    1659         #One line:  <# of segments>
    1660         fd.write(str(len(userSegments)) +
    1661                  " # <# of segments>, next lines <segment #> <vertex #>  <vertex #> [boundary marker] ...Mesh Segments..." + "\n")
    1662        
    1663         #Following lines:  <vertex #>  <vertex #> [boundary marker]
    1664         index = 0
    1665         for seg in userSegments:
    1666             fd.write(str(index) + " "
    1667                      + str(seg.vertices[0].index) + " "
    1668                      + str(seg.vertices[1].index) + " "
    1669                      + str(seg.marker) + "\n")
    1670             index += 1
    1671 
    1672         #One line:  <# of holes>
    1673         fd.write(str(len(holes)) +
    1674                  " # <# of holes>, next lines <Hole #> <x> <y> ...Mesh Holes..." + "\n")   
    1675         # <x> <y>
    1676         index = 0
    1677         for h in holes:
    1678             fd.write(str(index) + " "
    1679                      + str(h.x) + " "
    1680                      + str(h.y) + "\n")
    1681             index += 1
    1682        
    1683         #One line:  <# of regions>
    1684         fd.write(str(len(regions)) +
    1685                  " # <# of regions>, next lines <Region #> <x> <y> <tag>...Mesh Regions..." + "\n")   
    1686         # <index> <x> <y> <tag>
    1687         index = 0
    1688         for r in regions:
    1689             fd.write(str(index) + " "
    1690                      + str(r.x) + " "
    1691                      + str(r.y)+ " "
    1692                      + str(r.getTag()) + "\n")
    1693             index += 1
    1694         index = 0
    1695        
    1696         # <index> [<MaxArea>|""]
    1697        
    1698         #One line:  <# of regions>
    1699         fd.write(str(len(regions)) +
    1700                  " # <# of regions>, next lines <Region #> [Max Area] ...Mesh Regions..." + "\n")
    1701         for r in regions:
    1702             area = r.getMaxArea()
    1703             if area == None:
    1704                 area = ""
    1705             else:
    1706                 area = str(area)
    1707            
    1708             fd.write(str(index) + " " + area + "\n")
    1709             index += 1
     1651       
     1652        dict = self.Mesh2triangList(userVertices,
     1653                       userSegments,
     1654                       holes,
     1655                       regions)
     1656        #print "mesh*********"
     1657        #print "dict",dict
     1658        #print "mesh*********"
     1659        load_mesh.loadASCII.write_ASCII_mesh(fd, dict)
    17101660               
    17111661    def exportxyafile(self,ofile):
  • inundation/ga/storm_surge/pmesh/meshHarness.py

    r920 r935  
    759759        m_returned = importMeshFromFile(fileName)
    760760
    761         #print "m_returned ****",m_returned
     761        print "m_returned ****",m_returned
    762762        #print "****************** fileName", fileName
    763763        os.remove(fileName)
     
    768768        m.meshSegments = []
    769769        m.userVertices=[a,b,c]
     770        print "mesh ***************dsg*", m
    770771        #print "(m.__cmp__(m_returned)", m.__cmp__(m_returned)
    771772        self.failUnless(0 == m.__cmp__(m),
     
    10501051        self.failUnless(len(m.userVertices) == 11,
    10511052                        'Wrong vertex list length.')
     1053
     1054    def test_exportASCIImeshfile(self):
     1055   
     1056        a_att = [5,2]
     1057        d_att =[4,2]
     1058        f_att = [3,2]
     1059        e_att = [2,2]
     1060        a_xy = [0.0, 0.0]
     1061        a = Vertex ( a_xy[0],a_xy[1], attributes =a_att)
     1062        d = Vertex (0.0, 4.0, attributes =d_att)
     1063        f = Vertex (4.0,0.0, attributes =f_att)
     1064        e = Vertex (1.0,1.0, attributes =e_att)
     1065   
     1066        s1 = Segment(a,d, marker = "50")
     1067        s2 = Segment(d,f, marker = "40")
     1068        s3 = Segment(a,f, marker = "30")
     1069        s4 = Segment(a,e, marker = "20")
     1070     
     1071        r1 = Region(0.3, 0.3,tag = "1.3", maxArea = 36)
     1072
     1073
     1074        h1 = Hole(0.2,0.6)
     1075       
     1076        m = Mesh(userVertices=[a,d,f,e],
     1077                 userSegments=[s1,s2,s3,s4],
     1078                 regions=[r1],
     1079                 holes=[h1])
     1080
     1081        seg = m.getUserSegments()
     1082        points = m.getUserVertices()
     1083        holes = m.getHoles()
     1084        regions = m.getRegions()
     1085        fileName = tempfile.mktemp(".txt")
     1086        m.exportASCIImeshfile(fileName)
     1087        #print "***************************fileName", fileName
     1088        dict = import_mesh(fileName)
     1089        os.remove(fileName)
     1090
     1091        for pimport,pactual,pimpatt in map(None,dict['pointlist'],points,dict['pointattributelist']):
     1092            self.failUnless( pimport == [pactual.x,pactual.y],
     1093                        'loadASCIITestCase failed. test 1')
     1094            self.failUnless( pimpatt == pactual.attributes,
     1095                        'loadASCIITestCase failed. test 1.1')
     1096        self.failUnless( dict['segmentlist'][0] == [0,1],
     1097                        'loadASCIITestCase failed. test 3')
     1098        for segimp,segactual in map(None,dict['segmentmarkerlist'],seg):
     1099            self.failUnless( segimp == segactual.marker,
     1100                        'loadASCIITestCase failed. test 4')
     1101        for holeimp,holeactual in map(None,dict['holelist'],holes):
     1102            self.failUnless( holeimp == [holeactual.x,holeactual.y],
     1103                        'loadASCIITestCase failed. test 5')
     1104        for regimp,regactual,regattimp, regmaxarea in map(None,dict['regionlist'],regions, dict['regionattributelist'], dict['regionmaxarealist']):
     1105            self.failUnless( regimp == [regactual.x,regactual.y],
     1106                        'loadASCIITestCase failed. test 6')
     1107            self.failUnless( regattimp == regactual.getTag(),
     1108                        'loadASCIITestCase failed. test 7')
     1109            self.failUnless( regmaxarea == regactual.getMaxArea(),
     1110                        'loadASCIITestCase failed. test 7')
     1111
    10521112       
    10531113#-------------------------------------------------------------
    10541114if __name__ == "__main__":
    10551115    suite = unittest.makeSuite(meshTestCase,'test')
    1056     #suite = unittest.makeSuite(meshTestCase,'test_load')
    10571116    #suite = unittest.makeSuite(meshTestCase,'test_import_mesh')
    10581117    runner = unittest.TextTestRunner() #verbosity=2)
Note: See TracChangeset for help on using the changeset viewer.