Exemple #1
0
 def __init__(self, d):
     self._impl = d
     lhs_op = BlockOperator([[wrapper[d.get_local_operator(ss)] if ss == nn
                              else wrapper[d.get_coupling_operator(ss, nn)] if nn in list(d.neighbouring_subdomains(ss))
                              else None
                              for nn in np.arange(d.num_subdomains())] for ss in np.arange(d.num_subdomains())])
     rhs_op = BlockOperator.hstack([wrapper[d.get_local_functional(ss)] for ss in np.arange(d.num_subdomains())])
     operators = {'operator': lhs_op}
     functionals = {'rhs': rhs_op}
     vector_operators = {}
     self.operators = FrozenDict(operators)
     self.functionals = FrozenDict(functionals)
     self.vector_operators = FrozenDict(vector_operators)
     self.operator = operators['operator']
     self.solution_space = self.operator.source
     self.rhs = functionals['rhs']
     self.products = {k: BlockDiagonalOperator([wrapper[d.get_local_product(ss, k)]
                                                for ss in np.arange(d.num_subdomains())])
                      for k in list(d.available_products())}
     if self.products:
         for k, v in self.products.iteritems():
             setattr(self, '{}_product'.format(k), v)
             setattr(self, '{}_norm'.format(k), induced_norm(v))
     self.linear = all(op.linear for op in operators.itervalues())
     self.num_subdomains = self._impl.num_subdomains()
     self.neighboring_subdomains = [self._impl.neighbouring_subdomains(ss)
                                    for ss in np.arange(self.num_subdomains)]
     self.build_parameter_type(inherits=operators.values())
     assert self.parameter_type == self._wrapper[d.parameter_type()]
Exemple #2
0
def test_hstack():
    np.random.seed(0)
    A = np.random.randn(2, 3)
    B = np.random.randn(2, 4)
    Aop = NumpyMatrixOperator(A)
    Bop = NumpyMatrixOperator(B)
    Cop = BlockOperator.hstack((Aop, Bop))
    assert Cop.source.dim == 7
    assert Cop.range.dim == 2
Exemple #3
0
def test_hstack():
    np.random.seed(0)
    A = np.random.randn(2, 3)
    B = np.random.randn(2, 4)
    Aop = NumpyMatrixOperator(A)
    Bop = NumpyMatrixOperator(B)
    Cop = BlockOperator.hstack((Aop, Bop))
    assert Cop.source.dim == 7
    assert Cop.range.dim == 2