Skip to content
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

Custom ptsets #89

Merged
merged 7 commits into from
Aug 7, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 21 additions & 2 deletions baseclasses/solvers/pyAero_solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,9 @@
self.families = CaseInsensitiveDict()
self._updateGeomInfo = False

# Initialize kwargs for addPointSet
# Initialize kwargs for addPointSet and customPointSetFamilies
self.pointSetKwargs = None
self.customPointSetFamilies = None

Check warning on line 59 in baseclasses/solvers/pyAero_solver.py

View check run for this annotation

Codecov / codecov/patch

baseclasses/solvers/pyAero_solver.py#L59

Added line #L59 was not covered by tests

def setMesh(self, mesh):
"""
Expand All @@ -79,7 +80,7 @@
pts = self.getSurfaceCoordinates(self.meshFamilyGroup)
self.mesh.setSurfaceDefinition(pts, conn, faceSizes)

def setDVGeo(self, DVGeo, pointSetKwargs=None):
def setDVGeo(self, DVGeo, pointSetKwargs=None, customPointSetFamilies=None):
"""
Set the DVGeometry object that will manipulate 'geometry' in
this object. Note that <SOLVER> does not **strictly** need a
Expand All @@ -94,6 +95,20 @@
pointSetKwargs : dict
Keyword arguments to be passed to the DVGeo addPointSet call.
Useful for DVGeometryMulti, specifying FFD projection tolerances, etc.
These arguments are used for all point sets added by this solver.

customPointSetFamilies : dict of dicts
This argument is used to split up the surface points added to the DVGeo by the solver into potentially
multiple subsets. The keys of the dictionary will be used to determine what families should be
added to the dvgeo object as separate point sets. The values of each key is another dictionary, which can be empty.
If desired, the inner dictionaries can contain custom kwargs for the addPointSet call for each surface family,
specified by the keys of the top level dictionary.
The surface families need to be all part of the designSurfaceFamily.
Useful for DVGeometryMulti, specifying FFD projection tolerances, etc.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like the three lines above do not emphasize the main purpose of this argument, which is to have subsets of the CFD surface as separate point sets. I would rephrase this to first talk about what the keys are and what they do, then talk about how the values are dictionaries of keyword arguments.

If this is provided together with pointSetKwargs, the regular pointSetKwargs
will be appended to each component's dictionary. If the same argument
is also provided in pointSetKwargs, the value specified in customPointSetFamilies
will be used.

Examples
--------
Expand All @@ -103,11 +118,15 @@

self.DVGeo = DVGeo

# save the common kwargs dict. default is empty
if pointSetKwargs is None:
self.pointSetKwargs = {}
else:
self.pointSetKwargs = pointSetKwargs
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This code avoids mutable defaults, so we should keep it like this.


# save if we have customPointSetFamilies. this default is not mutable so we can just set it as is.
self.customPointSetFamilies = customPointSetFamilies

Check warning on line 128 in baseclasses/solvers/pyAero_solver.py

View check run for this annotation

Codecov / codecov/patch

baseclasses/solvers/pyAero_solver.py#L128

Added line #L128 was not covered by tests

def getTriangulatedMeshSurface(self, groupName=None, **kwargs):
"""
This function returns a trianguled verision of the surface
Expand Down