Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F90360243
helmholtz_internal.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Thu, Oct 31, 23:14
Size
4 KB
Mime Type
text/x-python
Expires
Sat, Nov 2, 23:14 (2 d)
Engine
blob
Format
Raw Data
Handle
22062069
Attached To
R6746 RationalROMPy
helmholtz_internal.py
View Options
# Copyright (C) 2018 by the RROMPy authors
#
# This file is part of RROMPy.
#
# RROMPy is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# RROMPy is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with RROMPy. If not, see <http://www.gnu.org/licenses/>.
#
import
pytest
import
os
,
shutil
import
numpy
as
np
from
rrompy.hfengines.linear_problem
import
(
HelmholtzSquareBubbleDomainProblemEngine
,
HelmholtzSquareBubbleProblemEngine
,
HelmholtzSquareTransmissionProblemEngine
)
def
test_helmholtz_square_io
():
solver
=
HelmholtzSquareBubbleProblemEngine
(
kappa
=
4
,
theta
=
1.
,
n
=
50
,
verbosity
=
0
)
mu
=
5
uh
=
solver
.
solve
(
mu
)[
0
]
assert
np
.
isclose
(
solver
.
norm
(
uh
),
913.396
,
rtol
=
1e-3
)
assert
np
.
isclose
(
solver
.
norm
(
solver
.
residual
(
uh
,
mu
)[
0
]),
1.19934e-11
,
rtol
=
1e-1
)
if
not
os
.
path
.
isdir
(
"./.pytest_cache"
):
os
.
mkdir
(
"./.pytest_cache"
)
filesOut
=
[
x
for
x
in
os
.
listdir
(
"./.pytest_cache"
)
if
(
x
[
-
4
:]
==
".pvd"
and
x
[:
9
]
==
"outSquare"
)]
filesOutData
=
[
x
for
x
in
os
.
listdir
(
"./.pytest_cache"
)
if
(
x
[
-
4
:]
==
".vtu"
and
x
[:
9
]
==
"outSquare"
)]
for
fileOut
in
filesOut
:
os
.
remove
(
"./.pytest_cache/"
+
fileOut
)
for
fileOut
in
filesOutData
:
os
.
remove
(
"./.pytest_cache/"
+
fileOut
)
solver
.
outParaview
(
uh
,
what
=
[
"MESH"
,
"ABS"
],
filename
=
".pytest_cache/outSquare"
,
forceNewFile
=
False
)
filesOut
=
[
x
for
x
in
os
.
listdir
(
"./.pytest_cache"
)
if
(
x
[
-
4
:]
==
".pvd"
and
x
[:
9
]
==
"outSquare"
)]
filesOutData
=
[
x
for
x
in
os
.
listdir
(
"./.pytest_cache"
)
if
(
x
[
-
4
:]
==
".vtu"
and
x
[:
9
]
==
"outSquare"
)]
assert
len
(
filesOut
)
==
1
assert
len
(
filesOutData
)
==
1
os
.
remove
(
"./.pytest_cache/"
+
filesOut
[
0
])
os
.
remove
(
"./.pytest_cache/"
+
filesOutData
[
0
])
def
test_helmholtz_transmission_io
():
solver
=
HelmholtzSquareTransmissionProblemEngine
(
nT
=
1
,
nB
=
2
,
theta
=
np
.
pi
*
40
/
180
,
kappa
=
4.
,
n
=
50
,
verbosity
=
0
)
mu
=
5.
uh
=
solver
.
solve
(
mu
)[
0
]
assert
np
.
isclose
(
solver
.
norm
(
uh
),
43.9268
,
rtol
=
1e-2
)
assert
np
.
isclose
(
solver
.
norm
(
solver
.
residual
(
uh
,
mu
)[
0
]),
3.7288565e-12
,
rtol
=
1e-1
)
if
not
os
.
path
.
isdir
(
"./.pytest_cache"
):
os
.
mkdir
(
"./.pytest_cache"
)
solver
.
outParaviewTimeDomain
(
uh
,
omega
=
mu
,
filename
=
".pytest_cache/outTrans"
,
forceNewFile
=
False
,
folder
=
True
)
filesOut
=
[
x
for
x
in
os
.
listdir
(
"./.pytest_cache/outTrans"
)
if
(
x
[
-
4
:]
==
".pvd"
and
x
[:
8
]
==
"outTrans"
)]
filesOutData
=
[
x
for
x
in
os
.
listdir
(
"./.pytest_cache/outTrans"
)
if
(
x
[
-
4
:]
==
".vtu"
and
x
[:
8
]
==
"outTrans"
)]
assert
len
(
filesOut
)
==
1
assert
len
(
filesOutData
)
==
20
shutil
.
rmtree
(
"./.pytest_cache/outTrans"
)
@pytest.mark.xfail
(
raises
=
RuntimeError
(
'Invalid DISPLAY variable'
),
reason
=
"no graphical interface"
)
def
test_helmholtz_domain_io
():
solver
=
HelmholtzSquareBubbleDomainProblemEngine
(
kappa
=
4
,
theta
=
1.
,
n
=
10
,
mu0
=
1.5
,
verbosity
=
0
)
mu
=
1.5
uh
=
solver
.
solve
(
mu
)[
0
]
if
not
os
.
path
.
isdir
(
"./.pytest_cache"
):
os
.
mkdir
(
"./.pytest_cache"
)
solver
.
plot
(
uh
,
save
=
"./.pytest_cache/outDomain"
,
show
=
False
)
filesOut
=
[
x
for
x
in
os
.
listdir
(
"./.pytest_cache"
)
if
(
x
[
-
4
:]
==
".eps"
and
x
[:
9
]
==
"outDomain"
)]
assert
len
(
filesOut
)
==
1
os
.
remove
(
"./.pytest_cache/"
+
filesOut
[
0
])
assert
np
.
isclose
(
solver
.
norm
(
uh
),
8.9947
,
rtol
=
1e-2
)
assert
np
.
isclose
(
solver
.
norm
(
solver
.
residual
(
uh
,
mu
)[
0
]),
6.14454989e-13
,
rtol
=
1e-1
)
Event Timeline
Log In to Comment