Skip to content

Commit

Permalink
Custom ptsets (#89)
Browse files Browse the repository at this point in the history
* added custom pointset option to setdvgeo

* set attribute even when dvgeo is not set

* updated docstring

* address sabet's comments

* simplify code

---------

Co-authored-by: Hannah Hajdik <[email protected]>
  • Loading branch information
anilyil and hajdik authored Aug 7, 2023
1 parent fc237f3 commit 5688faa
Showing 1 changed file with 21 additions and 2 deletions.
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 @@ def __init__(
self.families = CaseInsensitiveDict()
self._updateGeomInfo = False

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

def setMesh(self, mesh):
"""
Expand All @@ -79,7 +80,7 @@ def setMesh(self, mesh):
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 @@ def setDVGeo(self, DVGeo, pointSetKwargs=None):
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.
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 @@ def setDVGeo(self, DVGeo, pointSetKwargs=None):

self.DVGeo = DVGeo

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

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

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

0 comments on commit 5688faa

Please sign in to comment.