-
Notifications
You must be signed in to change notification settings - Fork 286
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
First stab at importing tracing routines #3432
base: devel
Are you sure you want to change the base?
Conversation
888b673
to
954baa6
Compare
a5f54c8
to
76ac32d
Compare
@roystgnr everything here is complete and fully tested - this is definitely only a chunk of it, but could be reviewed now. |
I'll also add that I think I have the most of the non-tool changes made, that is the stuff to |
This should give us a bit more efficiency+flexibility.
e0cbc3e
to
db37bbc
Compare
@roystgnr - good to go. |
db37bbc
to
c430d89
Compare
- Add 1D edge support for at vertex - Add 2D support/testing for being at an edge (a side) - Add additional testing
c430d89
to
c0bc3c1
Compare
Re the tolerance stuff: the last few tests run these scaled with element features on the order of [1e-8,1e8] |
const Real tol) | ||
{ | ||
for (const auto v : elem.vertex_index_range()) | ||
if (elem.point(v).relative_fuzzy_equals(p, tol)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This isn't a proper relative tolerance. Here relative_fuzzy_equals
will use p+elem.point(v)
to compare against, which is likely to be way too big in some cases (a tiny element far from the origin) and is going to be effectively zero in other cases (a huge element with a vertex at the origin).
I'd normally use elem.hmax()
as a scale here, but that might be too expensive for you? If so, it wouldn't be unreasonable to have something like Elem::cheap_scale()
that returns something like an l1 norm (how do we not already have that for TypeVector
...) of (elem.point(1)-elem.point(0))
. Kind of arbitrary for anisotropic meshes but so is the choice of hmax()
over hmin()
.
for (const auto i : make_range(elem.n_vertices_on_side(s))) | ||
{ | ||
const auto v = side_node_map[i]; | ||
if (elem.point(v).relative_fuzzy_equals(p, tol)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Similar tolerance issue here.
This is exciting! We'll be able to add volumetric mesh geometries to OpenMC after this is merged (at the moment only surface mesh geometries are allowed). OpenMC already optionally links to libmesh for volume mesh tallies, but this will make multiphysics coupling substantially more straightforward. 😄 |
Oh hi @gridley. Yeah, this is completely OpenMC driven after some conversations with @pshriwise. I've got another branch pulling over the rest of the routines, just haven't made a PR yet. On that note - thanks for the reminder to finish this up 😆 |
No description provided.