pyclaw icon indicating copy to clipboard operation
pyclaw copied to clipboard

We need more checks to avoid simple errors in setting up a problem

Open ketch opened this issue 11 months ago • 2 comments

Recently I ran across a couple of things that we don't check and which I wasted significant time debugging in my own scripts:

  • When using an f-wave solver, we don't check that solver.fwave==True. Running without setting this option will lead to nonsensical results (and often blowup, eventually).
  • We don't check that the aux array has been initialized. For instance, in shallow water with bathymetry, you can start a simulation without setting up the bathymetry (usually leading immediately to NaNs). We should check for these things when Controller.run() is called.

ketch avatar Dec 01 '24 14:12 ketch

First idea sounds good to me. Maybe a broader consistency check but we kind of do that already I suppose with num_eqn, etc.

The aux arrays may not be able to be filled in until after run is called although we could initialize the aux array to something temporarily. I might hesitate to do this as reasonable initial values may lead to more difficulty when debugging as NaNs would be easier to spot.

mandli avatar Dec 01 '24 17:12 mandli

I guess you are right about the second one. Since we use a setter function for the aux array, we could add a flag that gets set the first time the setter is called. But that's a potential performance hit every time aux is modified, just to avoid a rather rare stupid mistake, so probably not worth it.

I've opened PRs that handle the fwave issue.

ketch avatar Dec 02 '24 06:12 ketch

The fwave thing is fixed so I'm closing this.

ketch avatar Oct 06 '25 19:10 ketch