I am trying to use the restart simulation feature to add more statistics to a previously run simulation without having to redo the whole thing.
However, I am having some difficulties.
I set up my simulation and run it using Python bindings to the C/C++ API:
openmc.lib.run(output=True)
Then I check if I have acquired sufficient statistics on a desired tally. If the relative uncertainty is too high, I then run:
openmc.lib.statepoint_load(f'statepoint.{no_batches}.h5')
no_batches = no_batches + 50 # no_batches is previously defined
openmc.lib.settings.set_batches(no_batches) # Add 50 additional batches
if comm.rank == 0:
print(f"new number of batches is {openmc.lib.settings.get_batches()}")
openmc.lib.run(output=True)
I use statepoint_load() as I understand that openmc.lib.run(restart_file=<file>) doesn’t exist (compared to openmc.run(restart_file=<file>) from the User Guide section 7.7).
The code above runs, however it seems to run the entire simulation again. Here is a part of the terminal output from running initially 50 batches and then adding 50 more because the uncertainty in a given tally was too high:
Uncertainty 0.30160626712065886 exceeds maximum threshold.
Restarting simulations and adding 50 batches
new number of batches is 100
Maximum neutron transport energy: 20000000 eV for N15
===============> FIXED SOURCE TRANSPORT SIMULATION <===============
Simulating batch 1
Simulating batch 2
Simulating batch 3
Simulating batch 4
Simulating batch 5
Simulating batch 6
Simulating batch 7
Simulating batch 8
Simulating batch 9
Simulating batch 10
Simulating batch 11
Simulating batch 12
Simulating batch 13
Simulating batch 14
Simulating batch 15
Simulating batch 16
Simulating batch 17
Simulating batch 18
Simulating batch 19
Simulating batch 20
Simulating batch 21
Simulating batch 22
Simulating batch 23
Simulating batch 24
Simulating batch 25
Simulating batch 26
Simulating batch 27
Simulating batch 28
Simulating batch 29
Simulating batch 30
Simulating batch 31
Simulating batch 32
Simulating batch 33
Simulating batch 34
Simulating batch 35
Simulating batch 36
Simulating batch 37
Simulating batch 38
Simulating batch 39
Simulating batch 40
Simulating batch 41
Simulating batch 42
Simulating batch 43
Simulating batch 44
Simulating batch 45
Simulating batch 46
Simulating batch 47
Simulating batch 48
Simulating batch 49
Simulating batch 50
Creating state point statepoint.050.h5…
Simulating batch 51
Simulating batch 52
Simulating batch 53
Simulating batch 54
Simulating batch 55
Simulating batch 56
Simulating batch 57
Simulating batch 58
Simulating batch 59
Simulating batch 60
Simulating batch 61
Simulating batch 62
Simulating batch 63
Simulating batch 64
Simulating batch 65
Simulating batch 66
Simulating batch 67
Simulating batch 68
Simulating batch 69
Simulating batch 70
Simulating batch 71
Simulating batch 72
Simulating batch 73
Simulating batch 74
Simulating batch 75
Simulating batch 76
Simulating batch 77
Simulating batch 78
Simulating batch 79
Simulating batch 80
Simulating batch 81
Simulating batch 82
Simulating batch 83
Simulating batch 84
Simulating batch 85
Simulating batch 86
Simulating batch 87
Simulating batch 88
Simulating batch 89
Simulating batch 90
Simulating batch 91
Simulating batch 92
Simulating batch 93
Simulating batch 94
Simulating batch 95
Simulating batch 96
Simulating batch 97
Simulating batch 98
Simulating batch 99
Simulating batch 100
Creating state point statepoint.100.h5…
From what I can see, it reruns the initial 50 batches, creates a second statepoint file (named statepoint.050.h5 since statepoint.50.h5 already exists from the initial simulation run), and then simulates the newly added 50 batches to reach a total of 100 batches.
So, perhaps in all simplicity, my question is: Is there a way to append batches or restart a simulation from the previus endpoint with openmc.lib?
(Note: I use openmc.lib for access to MPI communicators as I run the OpenMC simulations across multiple nodes on a cluster.)