Skip to content
Snippets Groups Projects

Relaxation rates should be floats

Merged Markus Holzer requested to merge holzer/lbmpy:FixRR into master
All threads resolved!
2 files
+ 8
3
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -2,6 +2,7 @@ import abc
@@ -2,6 +2,7 @@ import abc
from collections import namedtuple
from collections import namedtuple
import sympy as sp
import sympy as sp
 
from sympy.core.numbers import Zero
from pystencils import Assignment, AssignmentCollection
from pystencils import Assignment, AssignmentCollection
@@ -52,6 +53,7 @@ class AbstractLbMethod(abc.ABC):
@@ -52,6 +53,7 @@ class AbstractLbMethod(abc.ABC):
"""Returns a qxq diagonal matrix which contains the relaxation rate for each moment on the diagonal"""
"""Returns a qxq diagonal matrix which contains the relaxation rate for each moment on the diagonal"""
d = sp.zeros(len(self.relaxation_rates))
d = sp.zeros(len(self.relaxation_rates))
for i in range(0, len(self.relaxation_rates)):
for i in range(0, len(self.relaxation_rates)):
 
# note that 0.0 is converted to sp.Zero here. It is not possible to prevent this.
d[i, i] = self.relaxation_rates[i]
d[i, i] = self.relaxation_rates[i]
return d
return d
@@ -104,6 +106,9 @@ class AbstractLbMethod(abc.ABC):
@@ -104,6 +106,9 @@ class AbstractLbMethod(abc.ABC):
for relaxation_rate in rr:
for relaxation_rate in rr:
if relaxation_rate not in unique_relaxation_rates:
if relaxation_rate not in unique_relaxation_rates:
relaxation_rate = sp.sympify(relaxation_rate)
relaxation_rate = sp.sympify(relaxation_rate)
 
# special treatment for zero, sp.Zero would be an integer ..
 
if isinstance(relaxation_rate, Zero):
 
relaxation_rate = 0.0
if not isinstance(relaxation_rate, sp.Symbol):
if not isinstance(relaxation_rate, sp.Symbol):
rt_symbol = sp.Symbol(f"rr_{len(subexpressions)}")
rt_symbol = sp.Symbol(f"rr_{len(subexpressions)}")
subexpressions[relaxation_rate] = rt_symbol
subexpressions[relaxation_rate] = rt_symbol
Loading