Skip to content

Commit

Permalink
Compatibility: markActionFulfilled and isTimeWindowComplete (#64)
Browse files Browse the repository at this point in the history
Co-authored-by: Benjamin Rüth <[email protected]>
  • Loading branch information
IshaanDesai and BenjaminRodenberg committed Feb 11, 2020
1 parent f205938 commit 70ef0a5
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 22 deletions.
14 changes: 7 additions & 7 deletions fenicsadapter/fenicsadapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -579,7 +579,7 @@ def _restore_solver_state_from_checkpoint(self, state):
"""
logger.debug("Restore solver state")
state.update(self._checkpoint.get_state())
self._interface.fulfilled_action(precice.action_read_iteration_checkpoint())
self._interface.mark_action_fulfilled(precice.action_read_iteration_checkpoint())

def _advance_solver_state(self, state, u_np1, dt):
"""Advances the solver's state by one timestep.
Expand All @@ -599,7 +599,7 @@ def _save_solver_state_to_checkpoint(self, state):
"""
logger.debug("Save solver state")
self._checkpoint.write(state)
self._interface.fulfilled_action(precice.action_write_iteration_checkpoint())
self._interface.mark_action_fulfilled(precice.action_write_iteration_checkpoint())

def advance(self, write_function, u_np1, u_n, t, dt, n):
"""Calls preCICE advance function using precice and manages checkpointing.
Expand Down Expand Up @@ -641,18 +641,18 @@ def advance(self, write_function, u_np1, u_n, t, dt, n):

# checkpointing
if self._interface.is_action_required(precice.action_read_iteration_checkpoint()):
assert (not self._interface.is_timestep_complete()) # avoids invalid control flow
assert (not self._interface.is_time_window_complete()) # avoids invalid control flow
self._restore_solver_state_from_checkpoint(state)
solver_state_has_been_restored = True
else:
self._advance_solver_state(state, u_np1, dt)

if self._interface.is_action_required(precice.action_write_iteration_checkpoint()):
assert (not solver_state_has_been_restored) # avoids invalid control flow
assert (self._interface.is_timestep_complete()) # avoids invalid control flow
assert (self._interface.is_time_window_complete()) # avoids invalid control flow
self._save_solver_state_to_checkpoint(state)

precice_step_complete = self._interface.is_timestep_complete()
precice_step_complete = self._interface.is_time_window_complete()

_, t, n = state.get_state()
# TODO: this if-else statement smells.
Expand Down Expand Up @@ -704,9 +704,9 @@ def initialize(self, coupling_subdomain, mesh, read_field, write_field,
self._set_write_field(write_field)
self._precice_tau = self._interface.initialize()

if self._interface.is_action_required(precice.action_write_initial_data()):
if self._interface.mark_action_fulfilled(precice.action_write_initial_data()):
self._write_block_data()
self._interface.fulfilled_action(precice.action_write_initial_data())
self._interface.mark_action_fulfilled(precice.action_write_initial_data())

self._interface.initialize_data()

Expand Down
2 changes: 1 addition & 1 deletion tests/MockedPrecice.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,5 @@ def configure(self, foo):
def get_dimensions(self):
raise Exception("not implemented")

def is_timestep_complete(self):
def is_time_window_complete(self):
raise Exception("not implemented")
12 changes: 6 additions & 6 deletions tests/test_fenicsadapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,9 @@ def is_action_required_behavior(py_action):
Interface.get_data_id = MagicMock()
Interface.write_block_scalar_data = MagicMock()
Interface.read_block_scalar_data = MagicMock()
Interface.is_timestep_complete = MagicMock(return_value=True)
Interface.is_time_window_complete = MagicMock(return_value=True)
Interface.advance = MagicMock(return_value=self.dt)
Interface.fulfilled_action = MagicMock()
Interface.mark_action_fulfilled = MagicMock()

precice = fenicsadapter.Adapter(self.dummy_config)
self.mock_the_adapter(precice)
Expand Down Expand Up @@ -138,9 +138,9 @@ def is_action_required_behavior(py_action):
Interface.get_data_id = MagicMock()
Interface.write_block_scalar_data = MagicMock()
Interface.read_block_scalar_data = MagicMock()
Interface.is_timestep_complete = MagicMock(return_value=False)
Interface.is_time_window_complete = MagicMock(return_value=False)
Interface.advance = MagicMock(return_value=self.dt)
Interface.fulfilled_action = MagicMock()
Interface.mark_action_fulfilled = MagicMock()

precice = fenicsadapter.Adapter(self.dummy_config)
self.mock_the_adapter(precice)
Expand Down Expand Up @@ -177,11 +177,11 @@ def is_action_required_behavior(py_action):
Interface.get_dimensions = MagicMock()
Interface.get_mesh_id = MagicMock()
Interface.get_data_id = MagicMock()
Interface.is_timestep_complete = MagicMock(return_value=False)
Interface.is_time_window_complete = MagicMock(return_value=False)
Interface.write_block_scalar_data = MagicMock()
Interface.read_block_scalar_data = MagicMock()
Interface.advance = MagicMock(return_value=self.dt)
Interface.fulfilled_action = MagicMock()
Interface.mark_action_fulfilled = MagicMock()

precice = fenicsadapter.Adapter(self.dummy_config)
self.mock_the_adapter(precice)
Expand Down
16 changes: 8 additions & 8 deletions tests/test_write_read.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ def dummy_set_mesh_vertices(mesh_id, positions):
Interface.initialize = MagicMock()
Interface.initialize_data = MagicMock()
Interface.is_action_required = MagicMock(return_value=False)
Interface.fulfilled_action = MagicMock()
Interface.is_timestep_complete = MagicMock()
Interface.mark_action_fulfilled = MagicMock()
Interface.is_time_window_complete = MagicMock()
Interface.advance = MagicMock()
Interface.get_mesh_id = MagicMock()
Interface.get_data_id = MagicMock(return_value=15)
Expand Down Expand Up @@ -97,8 +97,8 @@ def dummy_set_mesh_vertices(mesh_id, positions):
Interface.initialize = MagicMock()
Interface.initialize_data = MagicMock()
Interface.is_action_required = MagicMock(return_value=False)
Interface.fulfilled_action = MagicMock()
Interface.is_timestep_complete = MagicMock()
Interface.mark_action_fulfilled = MagicMock()
Interface.is_time_window_complete = MagicMock()
Interface.advance = MagicMock()
Interface.get_mesh_id = MagicMock()
Interface.get_data_id = MagicMock(return_value=15)
Expand Down Expand Up @@ -148,8 +148,8 @@ def dummy_set_mesh_vertices(mesh_id, positions):
Interface.initialize = MagicMock()
Interface.initialize_data = MagicMock()
Interface.is_action_required = MagicMock(return_value=False)
Interface.fulfilled_action = MagicMock()
Interface.is_timestep_complete = MagicMock()
Interface.mark_action_fulfilled = MagicMock()
Interface.is_time_window_complete = MagicMock()
Interface.advance = MagicMock()
Interface.get_mesh_id = MagicMock()
Interface.get_data_id = MagicMock(return_value=15)
Expand Down Expand Up @@ -196,8 +196,8 @@ def dummy_set_mesh_vertices(mesh_id, positions):
Interface.initialize = MagicMock()
Interface.initialize_data = MagicMock()
Interface.is_action_required = MagicMock(return_value=False)
Interface.fulfilled_action = MagicMock()
Interface.is_timestep_complete = MagicMock()
Interface.mark_action_fulfilled = MagicMock()
Interface.is_time_window_complete = MagicMock()
Interface.advance = MagicMock()
Interface.get_mesh_id = MagicMock()
Interface.get_data_id = MagicMock(return_value=15)
Expand Down

0 comments on commit 70ef0a5

Please sign in to comment.