Ignore:
Timestamp:
Jan 30, 2013, 2:32:05 PM (12 years ago)
Author:
steve
Message:

Some commits to sequential distribute

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/anuga_core/source/anuga/structures/structure_operator.py

    r8219 r8680  
    3737                 logging,
    3838                 verbose):
     39                     
     40        """
     41        exchange_lines define the input lines for each inlet.
     42
     43        If end_points = None, then the culvert_vector is calculated in the
     44        directions from the centre of echange_line[0] to centre of exchange_line[1}
     45
     46        If end_points != None, then culvert_vector is unit vector in direction
     47        end_point[1] - end_point[0]
     48        """
    3949
    4050        anuga.Operator.__init__(self,domain)
     
    8999        else:
    90100            raise Exception, 'Define either exchange_lines or end_points'
     101
    91102       
    92103        self.inlets = []
    93104        line0 = self.exchange_lines[0] #self.inlet_lines[0]
    94105        enquiry_point0 = self.enquiry_points[0]
    95         outward_vector0 = self.culvert_vector
     106        #outward_vector0 = - self.culvert_vector
    96107        self.inlets.append(inlet_enquiry.Inlet_enquiry(self.domain, line0,
    97                            enquiry_point0, outward_vector0, self.verbose))
     108                           enquiry_point0, self.outward_vector_0, self.verbose))
    98109
    99110        line1 = self.exchange_lines[1]
    100111        enquiry_point1 = self.enquiry_points[1]
    101         outward_vector1  = - self.culvert_vector
     112        #outward_vector1  = - self.culvert_vector
    102113        self.inlets.append(inlet_enquiry.Inlet_enquiry(self.domain, line1,
    103                            enquiry_point1, outward_vector1, self.verbose))
     114                           enquiry_point1, self.outward_vector_1, self.verbose))
    104115
    105116        self.set_logging(logging)
     
    200211       
    201212        self.culvert_vector /= self.culvert_length
     213        self.outward_vector_0 =   self.culvert_vector
     214        self.outward_vector_1 = - self.culvert_vector
     215
    202216       
    203217        culvert_normal = num.array([-self.culvert_vector[1], self.culvert_vector[0]])  # Normal vector
     
    235249        centre_point0 = 0.5*(self.exchange_lines[0][0] + self.exchange_lines[0][1])
    236250        centre_point1 = 0.5*(self.exchange_lines[1][0] + self.exchange_lines[1][1])
    237        
    238         if self.end_points is None:
     251
     252        n_exchange_0 = len(self.exchange_lines[0])
     253        n_exchange_1 = len(self.exchange_lines[1])
     254
     255        assert n_exchange_0 == n_exchange_1, 'There shoiuld be the same number of points in both exchange_lines'
     256
     257        if n_exchange_0 == 2:
     258       
     259            if self.end_points is None:
     260                self.culvert_vector = centre_point1 - centre_point0
     261            else:
     262                self.culvert_vector = self.end_points[1] - self.end_points[0]
     263
     264            self.outward_vector_0 =   self.culvert_vector
     265            self.outward_vector_1 = - self.culvert_vector
     266
     267
     268        elif n_exchange_0 == 4:
     269
     270            self.outward_vector_0 = self.exchange_lines[0][3] - self.exchange_lines[0][2]
     271            self.outward_vector_1 = self.exchange_lines[1][3] - self.exchange_lines[1][2]
     272
    239273            self.culvert_vector = centre_point1 - centre_point0
    240         else:
    241             self.culvert_vector = self.end_points[1] - self.end_points[0]
    242        
     274
     275        else:
     276            raise Exception, 'n_exchange_0 != 2 or 4'
     277
     278
    243279        self.culvert_length = math.sqrt(num.sum(self.culvert_vector**2))
    244280        assert self.culvert_length > 0.0, 'The length of culvert is less than 0'
    245        
     281        self.culvert_vector /= self.culvert_length
     282
     283        outward_vector_0_length = math.sqrt(num.sum(self.outward_vector_0**2))
     284        assert outward_vector_0_length > 0.0, 'The length of outlet_vector_0 is less than 0'
     285        self.outward_vector_0 /= outward_vector_0_length
     286
     287        outward_vector_1_length = math.sqrt(num.sum(self.outward_vector_1**2))
     288        assert outward_vector_1_length > 0.0, 'The length of outlet_vector_1 is less than 0'
     289        self.outward_vector_1 /= outward_vector_1_length
     290
     291
    246292        if self.enquiry_points is None:
    247293       
    248             self.culvert_vector /= self.culvert_length
    249294            gap = (self.apron + self.enquiry_gap)*self.culvert_vector
    250295       
Note: See TracChangeset for help on using the changeset viewer.