Source code for dolfin.la

import numpy as np
from numpy import intc, int64
import dolfin.cpp as cpp


[docs]def la_index_dtype(): """Return the numpy dtype equivalent to the type of la_index""" return intc if cpp.common.sizeof_la_index() == 4 else int64
[docs]def as_backend_type(x): """Return Matrix and Vector backend instance. Not required for other types as pybind11 automatically downcasts objects to the derived type. """ if isinstance(x, cpp.la.Vector) or isinstance(x, cpp.la.Matrix) or isinstance(x, cpp.la.LinearOperator): return x.instance() else: return x
# Extend GenericVector def __gt__(self, value): "Returns a boolean array with > status for all elements" if np.isscalar(value): return self.get_local() > value else: return self.get_local() > value.get_local() cpp.la.GenericVector.__gt__ = __gt__ del __gt__ def __ge__(self, value): "Returns a boolean array with >= status for all elements" if np.isscalar(value): return self.get_local() >= value else: return self.get_local() >= value.get_local() cpp.la.GenericVector.__ge__ = __ge__ del __ge__ def __lt__(self, value): "Returns a boolean array with < status for all elements" if np.isscalar(value): return self.get_local() < value else: return self.get_local() < value.get_local() cpp.la.GenericVector.__lt__ = __lt__ del __lt__ def __le__(self, value): "Returns a boolean array with <= status for all elements" if np.isscalar(value): return self.get_local() <= value else: return self.get_local() <= value.get_local() cpp.la.GenericVector.__le__ = __le__ del __le__ def __eq__(self, value): if np.isscalar(value): return self.get_local() == value else: return self.get_local() == value.get_local() cpp.la.GenericVector.__eq__ = __eq__ del __eq__ def __neg__(self): ret = self.copy() ret *= -1 return ret cpp.la.GenericVector.__neg__ = __neg__ del __neg__ def __iter__(self): for i in range(self.local_size()): yield self[i] cpp.la.GenericVector.__iter__ = __iter__ del __iter__