Changeset 344


Ignore:
Timestamp:
Sep 24, 2004, 12:49:31 PM (21 years ago)
Author:
ole
Message:

Added possibility for setting unique vertex values to general interface

Location:
inundation/ga/storm_surge/pyvolution
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • inundation/ga/storm_surge/pyvolution/quantity.py

    r324 r344  
    181181        N = self.centroid_values.shape[0]
    182182       
    183         msg = 'Number of values must match number of elements'
    184         assert values.shape[0] == N, msg
    185        
    186183        if location == 'centroids':
    187184            assert len(values.shape) == 1, 'Values array must be 1d'
     185
     186            msg = 'Number of values must match number of elements'
     187            assert values.shape[0] == N, msg
     188           
    188189            self.centroid_values = values                       
    189190        elif location == 'edges':
    190191            assert len(values.shape) == 2, 'Values array must be 2d'
     192
     193            msg = 'Number of values must match number of elements'
     194            assert values.shape[0] == N, msg
     195           
    191196            msg = 'Array must be N x 3'           
    192197            assert values.shape[1] == 3, msg
     
    194199            self.edge_values = values
    195200        else:
    196             assert len(values.shape) == 2, 'Values array must be 2d'
    197             msg = 'Array must be N x 3'           
    198             assert values.shape[1] == 3, msg
    199            
    200             self.vertex_values = values
     201            if len(values.shape) == 1:
     202                #Values are being specified once for each unique vertex
     203                msg = 'Number of values must mact number of vertices'
     204                assert values.shape[0] == self.domain.coordinates.shape[0], msg
     205
     206                self.set_vertex_values(values)
     207            elif len(values.shape) == 2:
     208                #Vertex values are given as a triplet for each triangle
     209                msg = 'Number of values must match number of elements'
     210                assert values.shape[0] == N, msg
     211               
     212                msg = 'Array must be N x 3'           
     213                assert values.shape[1] == 3, msg
     214                self.vertex_values = values           
     215            else:   
     216                msg = 'Values array must be 1d or 2d'
     217                raise msg
     218               
    201219
    202220
  • inundation/ga/storm_surge/pyvolution/test_quantity.py

    r324 r344  
    215215                                               [3.5, 4.5, 3.],
    216216                                               [2.5, 3.5, 2]])
     217
     218
     219
     220
     221    def test_set_vertex_values_using_general_interface(self):
     222        quantity = Quantity(self.mesh4)
     223
     224
     225        quantity.set_values([0,1,2,3,4,5])
     226
     227
     228        assert allclose(quantity.vertex_values,
     229                        [[1,0,2], [1,2,4], [4,2,5], [3,1,4]])
     230       
     231        assert allclose(quantity.centroid_values, [1., 7./3, 11./3, 8./3]) #Centroid
     232       
     233        assert allclose(quantity.edge_values, [[1., 1.5, 0.5],
     234                                               [3., 2.5, 1.5],
     235                                               [3.5, 4.5, 3.],
     236                                               [2.5, 3.5, 2]])
     237
    217238
    218239
Note: See TracChangeset for help on using the changeset viewer.