def __contains__(self, key): """ Return whether there is a subjac for the given promoted or relative name pair. Parameters ---------- key : (str, str) Promoted or relative name pair of sub-Jacobian. Returns ------- boolean return whether sub-Jacobian has been defined. """ return key2abs_key(self._system, key) in self._subjacs
def __getitem__(self, key): """ Get sub-Jacobian. Parameters ---------- key : (str, str) Promoted or relative name pair of sub-Jacobian. Returns ------- ndarray or spmatrix or list[3] sub-Jacobian as an array, sparse mtx, or AIJ/IJ list or tuple. """ abs_key = key2abs_key(self._system, key) if abs_key in self._subjacs_info: return self._subjacs_info[abs_key]['value'] else: msg = 'Variable name pair ("{}", "{}") not found.' raise KeyError(msg.format(key[0], key[1]))
def __setitem__(self, key, subjac): """ Set sub-Jacobian. Parameters ---------- key : (str, str) Promoted or relative name pair of sub-Jacobian. subjac : int or float or ndarray or sparse matrix sub-Jacobian as a scalar, vector, array, or AIJ list or tuple. """ abs_key = key2abs_key(self._system, key) if abs_key is not None: # You can only set declared subjacobians. if abs_key not in self._subjacs_info: msg = 'Variable name pair ("{}", "{}") must first be declared.' raise KeyError(msg.format(key[0], key[1])) self._set_abs(abs_key, subjac) else: msg = 'Variable name pair ("{}", "{}") not found.' raise KeyError(msg.format(key[0], key[1]))
def _get_abs_key(self, key): abskey = self._abs_keys[key] if not abskey: self._abs_keys[key] = abskey = key2abs_key(self._system(), key) return abskey
def _get_abs_key(self, key): abskey = self._abs_keys[key] if not abskey: self._abs_keys[key] = abskey = key2abs_key(self._system, key) return abskey