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
Adding DVGeometryMulti to MPhys #230
base: main
Are you sure you want to change the base?
Conversation
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## main #230 +/- ##
==========================================
- Coverage 65.04% 64.83% -0.21%
==========================================
Files 47 47
Lines 12112 12150 +38
==========================================
Hits 7878 7878
- Misses 4234 4272 +38 ☔ View full report in Codecov by Sentry. |
I didn't add the |
Additional note: when adding a global DV the input was being added twice to OpenMDAO. This bug is fixed here too. |
It turns out PR #201 broke the naming convention for child FFDs by prepending the child name by default. This meant that MPhys would not connect the OM variable to the DVGeo variable because the names would not match. I fixed that in this PR by setting |
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.
Looks pretty good. I just have a few minor comments
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.
Most of this look good, but one big picture comment: it looks like the logical check to find the correct dvgeo is repeated in several places. Instead, I think you can reduce duplication by using "nom_getDVGeo" before each DV addition. That way you wont need to duplicate the code that finds the right DVGeo. Is this correct? If you also think this makes sense, I say go for it. If not, I am fine with merging as is.
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.
LGTM, just a few comments
@@ -125,7 +128,21 @@ def compute(self, inputs, outputs): | |||
# next time the jacvec product routine is called | |||
self.update_jac = True | |||
|
|||
def nom_addChild(self, ffd_file, DVGeoName=None, childName=None): | |||
def nom_addComponent(self, comp, ffd_file, triMesh, DVGeoName=None): |
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.
Can you add a docstring for this function since you added it??
return DVGeo.children[childName] | ||
|
||
# return the top level DVGeo |
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.
I agree with Anil on using this to cover finding the right DVGeo even with the child/component logic instead of repeating the same checks. I think I just didn't realize it could eliminate the checks for child that I put in when I redid the DV adding functions.
There is some weird behavior in the derivatives: the first check totals is fine, but a second check totals after a design perturbation makes the second function derivative wrong. This only happens when there is an intersection. I can't exclude this being an issue with DAFoam (or even IDwarp), but I do not have the bandwidth to look more into this now. Converting to a draft. |
Purpose
Adding DVGeometryMulti to MPhys. I added pass-through functions and modified the
compute
andcompute_jacvec_product
calls as needed.Expected time until merged
1 week.
Type of change
Testing
I tried this on my optimization and it appears to work (local analysis and derivatives on HPC). I would appreciate others verifying this on their cases.
Checklist
flake8
andblack
to make sure the Python code adheres to PEP-8 and is consistently formattedfprettify
or C/C++ code withclang-format
as applicable