コード例 #1
0
    def __init__(self, src_idxs, tgt_idxs, vec_conns, byobj_conns, mode):

        self.src_idxs = src_idxs
        self.tgt_idxs = tgt_idxs
        self.vec_conns = vec_conns
        self.byobj_conns = byobj_conns

        # if in fwd mode, sort using src indices and in rev mode sort using tgt indices,
        # to increase the likelihood of slice conversion for 'get' access in order to 
        # avoid array copies.
        if mode == 'fwd':
            self.src_slice, self.tgt_slice = to_slices(self.src_idxs, self.tgt_idxs)
        else:
            self.tgt_slice, self.src_slice = to_slices(self.tgt_idxs, self.src_idxs)
コード例 #2
0
ファイル: data_transfer.py プロジェクト: kishenr12/OpenMDAO
    def __init__(self, src_idxs, tgt_idxs, vec_conns, byobj_conns, mode):

        self.src_idxs = src_idxs
        self.tgt_idxs = tgt_idxs
        self.vec_conns = vec_conns
        self.byobj_conns = byobj_conns

        if not MPI:
            # if in fwd mode, sort using src indices and in rev mode sort using tgt indices,
            # to increase the likelihood of slice conversion for 'get' access in order to
            # avoid array copies.
            if mode == 'fwd':
                self.src_idxs, self.tgt_idxs = to_slices(self.src_idxs, self.tgt_idxs)
            else:
                self.tgt_idxs, self.src_idxs = to_slices(self.tgt_idxs, self.src_idxs)
                if isinstance(self.src_idxs, slice):
                    self._src_unique = True
                else:
                    # check uniqueness of src_idxs to see if we can avoid calling np.add.at
                    self._src_unique = np.unique(self.src_idxs).size == self.src_idxs.size