Peter Hill
Peter Hill
We've got a `bout-config` test with CMake, but not a `bout++Config.cmake` test. Should be as "simple" as: ``` cd examples/conduction cmake . -B build -DCMAKE_PREFIX_PATH=../../build cmake --build build ./build/conduction ```
I've been bitten by this before, so I'm generally in favour of it. The change in `solver.cxx` illustrates the non-obviousness of the current approach quite clearly: we need to pass...
I'm definitely in favour of trying to reduce the amount of code in `Coordinates` -- it's quite complicated now! I'm broadly in favour of your proposal, though I wonder if...
I'm very much on-board with splitting it up into smaller sub-objects. Rather than making the members `const`, I'd prefer to have getters/setters that can make sure everything is consistent. So...
If the `Coordinates(Options&)` constructor just pulls out the relevant bits and delegates to the constructor that takes everything, this allows us to keep just one "main" constructor. I'd probably recommend...
> How would you handle normalising `Coordinates` objects at all locations? I'm trying to avoid the need for user code like > > ``` > mesh->getCoordinates(CELL_CENTRE).normalise(rho_s, B0/SQ(rho_s)); > mesh->getCoordinates(CELL_YLOW).normalise(rho_s, B0/SQ(rho_s));...
Some thoughts on constructing `Coordinates`: we can't get around the fact that calculating the connection coefficients requires taking derivatives of other `Coordinates` quantities, so we have some inescapable self-reference/circular dependency....
We've talked several times about caching some derived quantities like `1. / dx`, I've hacked this in and looked just at blob2d: 100 timesteps on 16 cores we could save...
Yes, this isn't surprising. We can loosen the tolerance on `GridFromOptionsTest.GetField3D`, as the errors are very low and we probably don't really care about exact machine precision there. `mixmode` is...
If you don't specify `CMAKE_BUILD_TYPE` it defaults to the empty string and no optimisations are used. We might want to have `RelWithDebInfo` as the default. That's probably roughly equivalent to...