Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Markus Holzer
lbmpy
Commits
4c83f435
Commit
4c83f435
authored
Sep 05, 2020
by
Michael Kuron
Browse files
Compare force term against conditions from Schiller
parent
efb97424
Changes
2
Hide whitespace changes
Inline
Side-by-side
lbmpy/forcemodels.py
View file @
4c83f435
...
...
@@ -175,7 +175,7 @@ class Schiller:
omega
=
get_shear_relaxation_rate
(
lb_method
)
omega_bulk
=
get_bulk_relaxation_rate
(
lb_method
)
G
=
(
u
*
force
.
transpose
()
+
force
*
u
.
transpose
()
-
uf
*
sp
.
Rational
(
2
,
lb_method
.
dim
))
*
sp
.
Rational
(
1
,
2
)
*
\
(
2
+
omega
)
+
uf
*
sp
.
Rational
(
1
,
3
)
*
(
2
+
omega_bulk
)
(
2
+
omega
)
+
uf
*
sp
.
Rational
(
1
,
lb_method
.
dim
)
*
(
2
+
omega_bulk
)
result
=
[]
for
direction
,
w_i
in
zip
(
lb_method
.
stencil
,
lb_method
.
weights
):
...
...
lbmpy_tests/test_force.py
View file @
4c83f435
...
...
@@ -120,7 +120,7 @@ def test_modes(stencil, force_model):
return
m
-
tr
/
m
.
shape
[
0
]
*
sp
.
eye
(
m
.
shape
[
0
])
C
=
sp
.
Rational
(
1
,
2
)
*
(
2
+
omega_s
)
*
(
traceless
(
sp
.
Matrix
(
u
)
*
sp
.
Matrix
(
F
).
transpose
())
+
\
traceless
(
sp
.
Matrix
(
F
)
*
sp
.
Matrix
(
u
).
transpose
()))
+
\
sp
.
Rational
(
1
,
3
)
*
(
2
+
omega_b
)
*
sp
.
Matrix
(
u
).
dot
(
F
)
*
sp
.
eye
(
method
.
dim
)
sp
.
Rational
(
1
,
method
.
dim
)
*
(
2
+
omega_b
)
*
sp
.
Matrix
(
u
).
dot
(
F
)
*
sp
.
eye
(
method
.
dim
)
subs
=
{
sp
.
Symbol
(
chr
(
ord
(
"x"
)
+
i
))
*
sp
.
Symbol
(
chr
(
ord
(
"x"
)
+
j
))
:
C
[
i
,
j
]
for
i
in
range
(
dim
)
for
j
in
range
(
dim
)}
...
...
@@ -133,6 +133,22 @@ def test_modes(stencil, force_model):
else
:
assert
diff
==
0
# difference should be zero
ff
=
sp
.
Matrix
(
method
.
force_model
(
method
))
# Check eq. 4.53a from schiller2008thermal
assert
sp
.
simplify
(
sum
(
ff
))
==
0
# Check eq. 4.53b from schiller2008thermal
assert
[
sp
.
simplify
(
sum
(
ff
[
i
]
*
stencil
[
i
][
j
]
for
i
in
range
(
len
(
stencil
))))
for
j
in
range
(
dim
)]
==
F
# Check eq. 4.61a from schiller2008thermal
ref
=
(
2
+
omega_s
)
/
2
*
(
traceless
(
sp
.
Matrix
(
u
)
*
sp
.
Matrix
(
F
).
transpose
())
+
\
traceless
(
sp
.
Matrix
(
F
)
*
sp
.
Matrix
(
u
).
transpose
()))
s
=
sp
.
zeros
(
dim
)
for
i
in
range
(
0
,
len
(
stencil
)):
s
+=
ff
[
i
]
*
traceless
(
sp
.
Matrix
(
stencil
[
i
])
*
sp
.
Matrix
(
stencil
[
i
]).
transpose
())
assert
sp
.
simplify
(
s
-
ref
)
==
sp
.
zeros
(
dim
)
# Check eq. 4.61b from schiller2008thermal
assert
sp
.
simplify
(
sum
(
ff
[
i
]
*
stencil
[
i
][
a
]
**
2
for
i
in
range
(
len
(
stencil
))
for
a
in
range
(
dim
))
-
(
2
+
omega_b
)
*
sp
.
Matrix
(
u
).
dot
(
F
))
==
0
# All other moments should be zero
assert
list
(
force_moments
[
dim
+
1
+
num_stresses
:])
==
[
0
]
*
(
len
(
stencil
)
-
(
dim
+
1
+
num_stresses
))
elif
force_model
==
"simple"
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment