Skip to content

Commit 9ed1b38

Browse files
added test that catches the bug
1 parent f1f9a71 commit 9ed1b38

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

test/system/test_misc.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,3 +546,56 @@ def test_error_raised_when_no_IC_heat_transfer():
546546
match="Initial condition is required for transient heat transfer simulations",
547547
):
548548
my_model.initialise()
549+
550+
551+
def test_catch_bug_738(tmpdir):
552+
"""
553+
Test to catch bug #738
554+
Set up a simple simulation with and XDMFExport in write mode "last"
555+
The stepsize is such that the first timestep is almost the final time (ie. dt = t_final - epsilon)
556+
The simulation should detect that this is the last timestep and export the data.
557+
558+
We then check that the files are created
559+
"""
560+
filename = str(tmpdir.join("mobile_re.xdmf"))
561+
my_model = F.Simulation(log_level=40)
562+
563+
my_model.mesh = F.MeshFromVertices(vertices=np.linspace(0, 1, num=10))
564+
565+
my_model.materials = F.Material(id=1, D_0=1, E_D=0)
566+
567+
my_model.T = F.Temperature(value=1500)
568+
569+
my_model.dt = F.Stepsize(
570+
initial_value=1e-10 - 1e-15,
571+
)
572+
573+
my_model.settings = F.Settings(
574+
absolute_tolerance=1e10,
575+
relative_tolerance=1e-10,
576+
final_time=1e-10,
577+
maximum_iterations=100,
578+
)
579+
580+
my_model.exports = [
581+
F.XDMFExport(
582+
field="solute",
583+
filename=filename,
584+
checkpoint=False, # needed in 1D
585+
mode="last",
586+
)
587+
]
588+
589+
# remove old xdmf file
590+
if os.path.exists(filename):
591+
os.remove(filename)
592+
os.remove(str(tmpdir.join("mobile_re.h5")))
593+
594+
my_model.initialise()
595+
596+
my_model.run()
597+
598+
# check that xdmf file exists
599+
600+
assert os.path.exists(filename)
601+
assert os.path.exists(str(tmpdir.join("mobile_re.h5")))

0 commit comments

Comments
 (0)