diff --git a/python/dune/femdg/patch.py b/python/dune/femdg/patch.py index 1279a99a91522dacec6e799ae3691e9bb3e75abd..f7bed97e5dd2b1db4574f3e73ef53bbd821fcb68 100644 --- a/python/dune/femdg/patch.py +++ b/python/dune/femdg/patch.py @@ -19,27 +19,25 @@ def uflExpr(Model,space,t): if lowerBound is None: lowerBound = space.dimRange*["std::numeric_limits<double>::min()"] else: - physicalBound = reduce( (lambda x,y: x*y), - [conditional(u[i]>=lowerBound[i],1,0) + lowerCond = [conditional(u[i]>=lowerBound[i],1,0) for i in range(len(lowerBound)) - if lowerBound[i] is not None - ], None ) - if physicalBound == None: lowerBound=space.dimRange*["std::numeric_limits<double>::min()"] + if lowerBound[i] is not None ] + if lowerCond != []: + physicalBound = reduce( (lambda x,y: x*y), lowerCond ) + else: lowerBound=space.dimRange*["std::numeric_limits<double>::min()"] upperBound = getattr(Model,"upperBound",None) if upperBound is None: upperBound = space.dimRange*["std::numeric_limits<double>::max()"] else: - physicalBound_ = reduce( (lambda x,y: x*y), - [conditional(u[i]>=upperBound[i],1,0) + upperCond = [conditional(u[i]>=upperBound[i],1,0) for i in range(len(upperBound)) - if upperBound[i] is not None - ], None ) - if physicalBound_ == None: lowerBound=space.dimRange*["std::numeric_limits<double>::max()"] - elif physicalBound_ is not None: - physicalBound = physicalBound_ if physicalBound is None else\ - physicalBound*physicalBound_ + if upperBound[i] is not None ] + if upperCond != []: + physicalBound_ = reduce( (lambda x,y: x*y), lowerCond ) + physicalBound = physicalBound_ if physicalBound is None else\ + physicalBound*physicalBound_ + else: upperBound=space.dimRange*["std::numeric_limits<double>::min()"] - if physicalBound == [None]: physicalBound = None maxSpeed = getattr(Model,"maxLambda",None) if maxSpeed is not None: maxSpeed = maxSpeed(t,x,u,n) @@ -140,25 +138,24 @@ def codeFemDg(self): if lowerBound is None: lowerBound = space.dimRange*["std::numeric_limits<double>::min()"] else: - physicalBound = reduce( (lambda x,y: x*y), - [conditional(u[i]>=lowerBound[i],1,0) + lowerCond = [conditional(u[i]>=lowerBound[i],1,0) for i in range(len(lowerBound)) - if lowerBound[i] is not None - ], None ) - if physicalBound == None: lowerBound=space.dimRange*["std::numeric_limits<double>::min()"] + if lowerBound[i] is not None ] + if lowerCond != []: + physicalBound = reduce( (lambda x,y: x*y), lowerCond ) + else: lowerBound=space.dimRange*["std::numeric_limits<double>::min()"] upperBound = getattr(Model,"upperBound",None) if upperBound is None: upperBound = space.dimRange*["std::numeric_limits<double>::max()"] else: - physicalBound_ = reduce( (lambda x,y: x*y), - [conditional(u[i]>=upperBound[i],1,0) + upperCond = [conditional(u[i]>=upperBound[i],1,0) for i in range(len(upperBound)) - if upperBound[i] is not None - ], None ) - if physicalBound_ == None: upperBound=space.dimRange*["std::numeric_limits<double>::max()"] - elif physicalBound_ is not None: + if upperBound[i] is not None ] + if upperCond != []: + physicalBound_ = reduce( (lambda x,y: x*y), lowerCond ) physicalBound = physicalBound_ if physicalBound is None else\ - physicalBound*physicalBound_ + physicalBound*physicalBound_ + else: upperBound=space.dimRange*["std::numeric_limits<double>::min()"] # TODO come up with something better! hasGamma = getattr(Model,"gamma",None)