本文整理匯總了Python中fipy.variables.variable.Variable._shapeClassAndOther方法的典型用法代碼示例。如果您正苦於以下問題:Python Variable._shapeClassAndOther方法的具體用法?Python Variable._shapeClassAndOther怎麽用?Python Variable._shapeClassAndOther使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類fipy.variables.variable.Variable
的用法示例。
在下文中一共展示了Variable._shapeClassAndOther方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: _shapeClassAndOther
# 需要導入模塊: from fipy.variables.variable import Variable [as 別名]
# 或者: from fipy.variables.variable.Variable import _shapeClassAndOther [as 別名]
def _shapeClassAndOther(self, opShape, operatorClass, other):
"""
Determine the shape of the result, the base class of the result, and (if
necessary) a modified form of `other` that is suitable for the
operation.
By default, returns the result of the generic
`Variable._shapeClassAndOther()`, but if that fails, and if each
dimension of `other` is exactly the `Mesh` dimension, do what the user
probably "meant" and project `other` onto the `Mesh`.
>>> from fipy import *
>>> mesh = Grid1D(nx=5)
>>> A = numerix.arange(5)
>>> B = Variable(1.)
>>> import warnings
>>> savedFilters = list(warnings.filters)
>>> warnings.resetwarnings()
>>> warnings.simplefilter("error", UserWarning, append=True)
>>> C = CellVariable(mesh=mesh) * (A * B)
Traceback (most recent call last):
...
UserWarning: The expression `(multiply([0 1 2 3 4], Variable(value=array(1.0))))` has been cast to a constant `CellVariable`
>>> warnings.filters = savedFilters
"""
otherShape = numerix.getShape(other)
if (not isinstance(other, _MeshVariable)
and otherShape is not ()
and otherShape[-1] == self._globalNumberOfElements):
if (isinstance(other, Variable) and len(other.requiredVariables) > 0):
import warnings
warnings.warn("The expression `%s` has been cast to a constant `%s`"
% (repr(other), self._variableClass.__name__),
UserWarning, stacklevel=4)
other = self._variableClass(value=other, mesh=self.mesh)
newOpShape, baseClass, newOther = Variable._shapeClassAndOther(self, opShape, operatorClass, other)
if ((newOpShape is None or baseClass is None)
and numerix.alltrue(numerix.array(numerix.getShape(other)) == self.mesh.dim)):
newOpShape, baseClass, newOther = Variable._shapeClassAndOther(self, opShape, operatorClass, other[..., numerix.newaxis])
return (newOpShape, baseClass, newOther)
示例2: _shapeClassAndOther
# 需要導入模塊: from fipy.variables.variable import Variable [as 別名]
# 或者: from fipy.variables.variable.Variable import _shapeClassAndOther [as 別名]
def _shapeClassAndOther(self, opShape, operatorClass, other):
"""
Determine the shape of the result, the base class of the result, and (if
necessary) a modified form of `other` that is suitable for the
operation.
By default, returns the result of the generic
`Variable._shapeClassAndOther()`, but if that fails, and if each
dimension of `other` is exactly the `Mesh` dimension, do what the user
probably "meant" and project `other` onto the `Mesh`.
"""
otherShape = numerix.getShape(other)
if (not isinstance(other, _MeshVariable)
and otherShape is not ()
and otherShape[-1] == self._getGlobalNumberOfElements()):
other = self._getVariableClass()(value=other, mesh=self.getMesh())
newOpShape, baseClass, newOther = Variable._shapeClassAndOther(self, opShape, operatorClass, other)
if ((newOpShape is None or baseClass is None)
and numerix.alltrue(numerix.array(numerix.getShape(other)) == self.getMesh().getDim())):
newOpShape, baseClass, newOther = Variable._shapeClassAndOther(self, opShape, operatorClass, other[..., numerix.newaxis])
return (newOpShape, baseClass, newOther)