Conversation
|
Thanks @tomc271 ! This is quite an epic amount of work. |
ZedThree
left a comment
There was a problem hiding this comment.
Thanks @tomc271! I've made a bunch of comments on things to work through. A couple of big things though:
- this has diverged from
nexta bit, so that will need merging in and conflicts resolving. There's been some important bug fixes and CI changes innextthat would be good to get in ASAP - some of the changes haven't propagated through to some subsystems, such as the various PETSc laplace operators. You will need to either build against PETSc locally to find them, or use some searching to find the remaining places
…t be marked explicit to avoid unintentional implicit conversions.
…FakeMesh has no 'source', which causes a crash when the constructor leads to initialisation of FieldMetric objects).
…void unintentional implicit conversions.
…ntMetricTensor in Coordinates::setBoundaryCells method, to avoid recalculation of the christoffel symbols, which would (at this stage) involve field data at different locations (specifically the metric tensor and jacobian).
…constructor that is used with FakeMesh.
f970905 to
47cff9e
Compare
| } | ||
| } | ||
| // Utility function for fixing up guard cells of zShift | ||
| void Coordinates::fixZShiftGuards(Field2D& zShift) const { |
There was a problem hiding this comment.
warning: method 'fixZShiftGuards' can be made static [readability-convert-member-functions-to-static]
include/bout/coordinates.hxx:479:
- void fixZShiftGuards(Field2D& zShift) const;
+ static void fixZShiftGuards(Field2D& zShift) ;| void Coordinates::fixZShiftGuards(Field2D& zShift) const { | |
| void Coordinates::fixZShiftGuards(Field2D& zShift) { |
| *coords_map[location] = std::move(new_coordinates); | ||
|
|
||
| auto recalculate_staggered = false; | ||
| new_coordinates.recalculateAndReset(recalculate_staggered, |
There was a problem hiding this comment.
warning: 'new_coordinates' used after it was moved [bugprone-use-after-move]
new_coordinates.recalculateAndReset(recalculate_staggered,
^Additional context
src/mesh/mesh.cxx:790: move occurred here
*coords_map[location] = std::move(new_coordinates);
^| double yn = (double(y) + 0.5) / double(mesh->yend + 1); | ||
| { | ||
| auto dy = emptyFrom(coord->dx()); | ||
| auto J = emptyFrom(coord->J()); |
There was a problem hiding this comment.
warning: variable name 'J' is too short, expected at least 3 characters [readability-identifier-length]
auto J = emptyFrom(coord->J());
^otherwise when Coordinates setters call mesh->communicate() and that calls calcParallelSlices() and that calls getCoordinates() the coordinates field will be a null pointer.
…nd MetricTensor inverse() method Add method Coordinates::communicateMetricTensor() and call after constructing Coordinates to avoid circular dependency (between Mesh and Coordinates) as a result of the setter methods calling communicate()
to prevent getUniform(coords->zlength()) failing because the field is not const.
Update existing dy and J fields, to avoid invalid values in the guard cells.
…icate Fixes to address failing tests after changes to refactor-coordinates
…-coordinates-with-next-merged-in
…erivatives::index::DDY() as the former checks canToFromFieldAligned().
This reverts commit e5010e4. Fix for failing fci tests.
|
Resolves #2128 |
|
It was my understanding that you are going to re-enable to do That would not only make it mostly backwards compatible, but it would also reduce the diff hugely, as most of the BOUT++ code base would not need to be touched. |
|
|
I get the error that this link is invalid or has been deleted. |
It is working now with javascript enabled, google should fix there error messages.
To summarise the link: Avoiding the explicit |
|
If so, you do not plan to do this in the future, and this PR is not a WIP and ready for review? Did you address #2873 (comment) ? If you get this updated, I will try to review this (and #3046 ) |
Encapsulate all private members of Coordinates class.
New classes for metric tensor, Christoffel symbols.