Conversation
|
Job Documentation, step Docs: sync website on 6210b19 wanted to post the following: View the site here This comment will be updated on new commits. |
|
Job Coverage, step Generate coverage on 6210b19 wanted to post the following: Framework coverage
Modules coverageCoverage did not change Full coverage reportsReports
This comment will be updated on new commits. |
||||||||||||||||||||||||||
|
Job Coverage, step Verify coverage on c07e899 wanted to post the following: The following coverage requirement(s) failed:
|
GiudGiud
left a comment
There was a problem hiding this comment.
do we need to apply transformations to surfaces?
and do you envision that transformations applied to a universe should be propagated to all cells they contain?
To know the real location of the cell we need to get or gather the full list of transformations
| |---------------------|----------------------------------------------|--------------------| | ||
| | `TRANSLATION` | $\{$ x-distance, y-distance, z-distance $\}$ | none | | ||
| | `ROTATION` | $\{ \phi, \theta, \psi \}$ | none | | ||
| | `SCALE` | $\{$ x-scale, y-scale, z-scale $\}$ | non-zero | |
There was a problem hiding this comment.
So I had this as a positive, non-zero restriction initially, but @shikhar413 pointed out that negative values were allowed in the TransformGenerator. I did look the source code there and did not see a restriction on any of the values for scaling, including the fact that the values could be zero. We decided to allow negative values to be consistent with that generator, but restrict zero values because that wouldn't make any sense from a CSG/MC standpoint. I am fine with going back to restricting it to positive values only if we think it makes most sense even though the TransformGenerator allows negative.
There was a problem hiding this comment.
ok seems fine.
TransformGenerator negative scaling needs an extra step to flip the elements back to a positive volume.
I guess it's a way to do a central symmetry
|
|
||
| !alert! note title=CSGRegion Transformations | ||
|
|
||
| If applying a transformation to a `CSGRegion` object, the `CSGRegion` object will not store the transformation information.Rather, the transformation will be applied to each `CSGSurface` associated with that `CSGRegion`. This means that if one `CSGSurface` object is used in multiple `CSGRegion` objects, all regions with that surface may be affected by the transformation. If the intention is to apply a transformation to just one use case of the shared `CSGSurface`, then a clone of that surface should be made prior to applying the transformation. |
There was a problem hiding this comment.
| If applying a transformation to a `CSGRegion` object, the `CSGRegion` object will not store the transformation information.Rather, the transformation will be applied to each `CSGSurface` associated with that `CSGRegion`. This means that if one `CSGSurface` object is used in multiple `CSGRegion` objects, all regions with that surface may be affected by the transformation. If the intention is to apply a transformation to just one use case of the shared `CSGSurface`, then a clone of that surface should be made prior to applying the transformation. | |
| If applying a transformation to a `CSGRegion` object, the `CSGRegion` object will not store the transformation information. Rather, the transformation will be applied to each `CSGSurface` associated with that `CSGRegion`. This means that if one `CSGSurface` object is used in multiple `CSGRegion` objects, all regions with that surface may be affected by the transformation. If the intention is to apply a transformation to just one use case of the shared `CSGSurface`, then a clone of that surface should be made prior to applying the transformation. |
seems like something that is easy to miss. Could check in dbg mode? (in between #ifndef NDEBUG)
There was a problem hiding this comment.
What exactly are you recommending to check here with debug mode?
| std::vector<std::pair<TransformationType, std::tuple<Real, Real, Real>>> transformations = { | ||
| {TransformationType::TRANSLATION, {1.0, 2.0, 3.0}}, | ||
| {TransformationType::ROTATION, {45.0, 30.0, 60.0}}, | ||
| {TransformationType::SCALE, {-2.0, 2.0, 2.0}}}; |
There was a problem hiding this comment.
maybe use a valid one for the test in case the checking moves around
There was a problem hiding this comment.
assuming you are referring to the negative value in the SCALE one, that was intentional given the fact that negatives are valid there, so I will leave this.
We decided against this because it seems like most of the MC codes actually have methods in place to apply transformations to surfaces (or other entities) and so it would be more reliable for the codes to use their own methods.
yes I envision this would be iteratively applied to each cell within a universe |
| getTransformations() const | ||
| { | ||
| return _transformations; | ||
| } |
There was a problem hiding this comment.
right my question is more that transformations are not usually applied to surfaces in MC codes?
At least in OpenMC if I recall correctly
There was a problem hiding this comment.
Surfaces are the primary entities that can have transformations applied to them across all MC codes, various codes allow for cells and universes too under different circumstances (these are less consistent across codes). But pretty much all codes support surface transformations directly with built-in methods.
At the end of the day, it is really all the surfaces that need to be transformed to alter the geometry with a transformation.
|
Just realized that I need to add a check for transformations in the equality operator overloads for each of these object types. Making note here so I don't forget to do that. EDIT: done |
|
@kkiesling now that we have transformations defined here, do we want to update the documentation for hexagonal lattices to mention that x-type lattices should be implemented by applying a rotation to a y-type lattice? |
good idea. Just added a note in the docs. |
|
Job Test, step Results summary on 6210b19 wanted to post the following: Framework test summaryCompared against aec0a32 in job civet.inl.gov/job/3640883. No added testsRun time changes
Modules test summaryCompared against aec0a32 in job civet.inl.gov/job/3640883. No added testsRun time changes
|
refs / closes #32308
Reason
Design
Impact