Skip to content
Kyle Mandli edited this page Mar 19, 2015 · 2 revisions

Create a Controller to Manage I/O for All Packages

Status Active
Author Kyle Mandli <kyle.mandli@gmail.com>
Created March 19th, 2015
Updated March 19th, 2015
Discussion Issue #60
Implementation

Motivation

We have a bit of an issue with handling I/O throughout the Clawpack packages. The particular problem includes the reimplementation of a number of ways for implementing I/O, in particular in VisClaw, that has lead to difficult to diagnose bugs. This CEP is intended to address this problem by attempting to create an object which can store the needed state and options of I/O handling and provide a uniform interface to interfacing with the all the types of files that are handled in Clawpack.

Specification

Currently there is a preliminary interface to such as object suggested in PR 508. This is clearly an early prototype and we hope that over time this specification can be more specific.

Questions

  • [] What should the name of the object be? Suggested IOController or Pancakes
  • [] What should the exposed API be (the one that all the other packages would call)?
  • [] What state is needed for this object to do what it needs?
  • [] What I/O files (fort.q, fort.t, fort.p, fort.*, fort.gauges, etc.) should this object handle?

Backwards Compatibility

This could be made backwards compatible with replacement of old (and deprecated by this CEP) functions that accomplished the same things with calls to the new object. This will probably not be completely backwards compatible as options to some of these functions would otherwise override the function signature inputs in general.