def __init__(self, vertex_coordinates, triangles, mesh_origin=None, verbose=False): """ Build interpolation matrix mapping from function values at vertices to function values at data points Inputs: vertex_coordinates: List of coordinate pairs [xi, eta] of points constituting a mesh (or an m x 2 numeric array or a geospatial object) Points may appear multiple times (e.g. if vertices have discontinuities) triangles: List of 3-tuples (or a numeric array) of integers representing indices of all vertices in the mesh. mesh_origin: A geo_reference object or 3-tuples consisting of UTM zone, easting and northing. If specified vertex coordinates are assumed to be relative to their respective origins. max_vertices_per_cell: Number of vertices in a quad tree cell at which the cell is split into 4. Note: Don't supply a vertex coords as a geospatial object and a mesh origin, since geospatial has its own mesh origin. """ # FIXME (Ole): Need an input check FitInterpolate.__init__(self, vertex_coordinates=vertex_coordinates, triangles=triangles, mesh_origin=mesh_origin, verbose=verbose) # Initialise variables self._A_can_be_reused = False # FIXME (Ole): Probably obsolete self._point_coordinates = None # FIXME (Ole): Probably obsolete self.interpolation_matrices = {} # Store precomputed matrices
def __init__(self, vertex_coordinates=None, triangles=None, mesh=None, mesh_origin=None, alpha=None, verbose=False, cg_precon='Jacobi', use_c_cg=True): """ Padarn Note 05/12/12: This documentation should probably be updated to account for the fact that the fitting is now done in C. I wasn't sure what details were necessary though. Fit data at points to the vertices of a mesh. Inputs: vertex_coordinates: List of coordinate pairs [xi, eta] of points constituting a mesh (or an m x 2 numeric array or a geospatial object) Points may appear multiple times (e.g. if vertices have discontinuities) triangles: List of 3-tuples (or a numeric array) of integers representing indices of all vertices in the mesh. mesh_origin: A geo_reference object or 3-tuples consisting of UTM zone, easting and northing. If specified vertex coordinates are assumed to be relative to their respective origins. Note: Don't supply a vertex coords as a geospatial object and a mesh origin, since geospatial has its own mesh origin. Usage, To use this in a blocking way, call build_fit_subset, with z info, and then fit, with no point coord, z info. """ # Initialise variabels if alpha is None: self.alpha = DEFAULT_ALPHA else: self.alpha = alpha FitInterpolate.__init__(self, vertex_coordinates, triangles, mesh, mesh_origin=mesh_origin, verbose=verbose) self.AtA = None self.Atz = None self.D = None self.point_count = 0 # NOTE PADARN: NEEDS FIXING - currently need smoothing matrix # even if alpha is zero, due to C function expecting it. This # could and should be removed. if True: if verbose: log.critical('Building smoothing matrix') self.D = self._build_smoothing_matrix_D() bd_poly = self.mesh.get_boundary_polygon() self.mesh_boundary_polygon = ensure_numeric(bd_poly) self.cg_precon = cg_precon self.use_c_cg = use_c_cg
def __init__(self, vertex_coordinates=None, triangles=None, mesh=None, mesh_origin=None, alpha=None, verbose=False, cg_precon='Jacobi', use_c_cg=True): """ Padarn Note 05/12/12: This documentation should probably be updated to account for the fact that the fitting is now done in C. I wasn't sure what details were necessary though. Fit data at points to the vertices of a mesh. Inputs: vertex_coordinates: List of coordinate pairs [xi, eta] of points constituting a mesh (or an m x 2 numeric array or a geospatial object) Points may appear multiple times (e.g. if vertices have discontinuities) triangles: List of 3-tuples (or a numeric array) of integers representing indices of all vertices in the mesh. mesh_origin: A geo_reference object or 3-tuples consisting of UTM zone, easting and northing. If specified vertex coordinates are assumed to be relative to their respective origins. Note: Don't supply a vertex coords as a geospatial object and a mesh origin, since geospatial has its own mesh origin. Usage, To use this in a blocking way, call build_fit_subset, with z info, and then fit, with no point coord, z info. """ # Initialise variabels if alpha is None: self.alpha = DEFAULT_ALPHA else: self.alpha = alpha FitInterpolate.__init__(self, vertex_coordinates, triangles, mesh, mesh_origin=mesh_origin, verbose=verbose) self.AtA = None self.Atz = None self.D = None self.point_count = 0 # NOTE PADARN: NEEDS FIXING - currently need smoothing matrix # even if alpha is zero, due to C function expecting it. This # could and should be removed. if True: if verbose: log.critical('Building smoothing matrix') self.D = self._build_smoothing_matrix_D() bd_poly = self.mesh.get_boundary_polygon() self.mesh_boundary_polygon = ensure_numeric(bd_poly) self.cg_precon=cg_precon self.use_c_cg=use_c_cg