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

Adding DVGeometryMulti to MPhys #230

Merged
merged 18 commits into from
Jul 30, 2024
Merged
Changes from 13 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
192 changes: 135 additions & 57 deletions pygeo/mphys/mphys_dvgeo.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from openmdao.api import AnalysisError

# Local modules
from .. import DVConstraints, DVGeometry, DVGeometryESP, DVGeometryVSP
from .. import DVConstraints, DVGeometry, DVGeometryESP, DVGeometryMulti, DVGeometryVSP

Check warning on line 8 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L8

Added line #L8 was not covered by tests


# class that actually calls the DVGeometry methods
Expand Down Expand Up @@ -83,6 +83,9 @@
elif info["type"] == "esp":
self.DVGeos.update({name: DVGeometryESP(info["file"], comm=self.comm, name=DVGeoName, **options)})

elif info["type"] == "multi":
self.DVGeos.update({name: DVGeometryMulti(comm=self.comm, **options)})

Check warning on line 87 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L86-L87

Added lines #L86 - L87 were not covered by tests

# add each geometry to the constraints object
for _, DVGeo in self.DVGeos.items():
self.DVCon.setDVGeo(DVGeo, name=DVConName)
Expand Down Expand Up @@ -125,7 +128,21 @@
# 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):

Check warning on line 131 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L131

Added line #L131 was not covered by tests
hajdik marked this conversation as resolved.
Show resolved Hide resolved
hajdik marked this conversation as resolved.
Show resolved Hide resolved
# if we have multiple DVGeos use the one specified by name
DVGeo = self.nom_getDVGeo(DVGeoName=DVGeoName)

Check warning on line 133 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L133

Added line #L133 was not covered by tests

# can only add a DVGeo to a DVGeoMulti
if not isinstance(DVGeo, DVGeometryMulti):
raise RuntimeError(

Check warning on line 137 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L136-L137

Added lines #L136 - L137 were not covered by tests
f"Only multi-based DVGeo objects can have components added to them, not type:{self.geo_type}"
)

# Add component
DVGeoComp = DVGeometry(ffd_file)
sseraj marked this conversation as resolved.
Show resolved Hide resolved
DVGeo.addComponent(comp=comp, DVGeo=DVGeoComp, triMesh=triMesh)

Check warning on line 143 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L142-L143

Added lines #L142 - L143 were not covered by tests

def nom_addChild(self, ffd_file, DVGeoName=None, childName=None, comp=None):

Check warning on line 145 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L145

Added line #L145 was not covered by tests
# if we have multiple DVGeos use the one specified by name
DVGeo = self.nom_getDVGeo(DVGeoName=DVGeoName)

Expand All @@ -137,24 +154,27 @@

# Add child FFD
child_ffd = DVGeometry(ffd_file, child=True, name=childName)
DVGeo.addChild(child_ffd)

if comp is None:
DVGeo.addChild(child_ffd)

Check warning on line 159 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L158-L159

Added lines #L158 - L159 were not covered by tests
else:
DVGeo.DVGeoDict[comp].addChild(child_ffd)

Check warning on line 161 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L161

Added line #L161 was not covered by tests

# Embed points from parent if not already done
for pointSet in DVGeo.points:
if pointSet not in child_ffd.points:
child_ffd.addPointSet(DVGeo.points[pointSet], pointSet)

def nom_add_discipline_coords(self, discipline, points=None, DVGeoName=None):
def nom_add_discipline_coords(self, discipline, points=None, DVGeoName=None, **kwargs):

Check warning on line 168 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L168

Added line #L168 was not covered by tests
# TODO remove one of these methods to keep only one method to add pointsets

if points is None:
# no pointset info is provided, just do a generic i/o. We will add these points during the first compute
self.add_input("x_%s_in" % discipline, distributed=True, shape_by_conn=True)
self.add_output("x_%s0" % discipline, distributed=True, copy_shape="x_%s_in" % discipline)

else:
# we are provided with points. we can do the full initialization now
self.nom_addPointSet(points, "x_%s0" % discipline, add_output=False, DVGeoName=DVGeoName)
self.nom_addPointSet(points, "x_%s0" % discipline, add_output=False, DVGeoName=DVGeoName, **kwargs)

Check warning on line 177 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L177

Added line #L177 was not covered by tests
self.add_input("x_%s_in" % discipline, distributed=True, val=points.flatten())
self.add_output("x_%s0" % discipline, distributed=True, val=points.flatten())

Expand Down Expand Up @@ -182,7 +202,7 @@
for k, v in point_dict.items():
self.nom_addPointSet(v, k)

def nom_getDVGeo(self, childName=None, DVGeoName=None):
def nom_getDVGeo(self, childName=None, comp=None, DVGeoName=None):

Check warning on line 205 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L205

Added line #L205 was not covered by tests
"""
Gets the DVGeometry object held in the geometry component so DVGeo methods can be called directly on it

Expand All @@ -205,14 +225,22 @@
else:
DVGeo = self.DVGeos["defaultDVGeo"]

# return the top level DVGeo
if childName is None:
return DVGeo
# return a child of a DVGeoMulti component
if childName is not None and comp is not None:
return DVGeo.DVGeoDict[comp].children[childName]

Check warning on line 230 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L229-L230

Added lines #L229 - L230 were not covered by tests

# return a child DVGeo
else:
# return a component of a DVGeoMulti
elif comp is not None:
return DVGeo.DVGeoDict[comp]

Check warning on line 234 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L233-L234

Added lines #L233 - L234 were not covered by tests

# return a child of a DVGeo
elif childName is not None:

Check warning on line 237 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L237

Added line #L237 was not covered by tests
return DVGeo.children[childName]

# return the top level DVGeo
hajdik marked this conversation as resolved.
Show resolved Hide resolved
else:
return DVGeo

Check warning on line 242 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L242

Added line #L242 was not covered by tests

def nom_getDVCon(self):
"""
Gets the DVConstraints object held in the geometry component so DVCon methods can be called directly on it
Expand All @@ -228,7 +256,7 @@
Wrapper for DVGeo functions
"""

def nom_addGlobalDV(self, dvName, value, func, childName=None, isComposite=False, DVGeoName=None):
def nom_addGlobalDV(self, dvName, value, func, childName=None, comp=None, isComposite=False, DVGeoName=None):

Check warning on line 259 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L259

Added line #L259 was not covered by tests
"""
Add a global design variable to the DVGeo object. This is a wrapper for the DVGeo.addGlobalDV method.

Expand All @@ -246,6 +274,9 @@
childName : str, optional
Name of the child FFD, if this DV is for a child FFD.

comp : str, optional
Name of the DVGeoMulti component, if this DV is for a multi component

isComposite : bool, optional
Whether this DV is to be included in the composite DVs, by default False

Expand All @@ -262,39 +293,47 @@
DVGeo = self.nom_getDVGeo(DVGeoName=DVGeoName)

# global DVs are only added to FFD-based DVGeo objects
if not isinstance(DVGeo, DVGeometry):
if not isinstance(DVGeo, (DVGeometry, DVGeometryMulti)):

Check warning on line 296 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L296

Added line #L296 was not covered by tests
raise RuntimeError(f"Only FFD-based DVGeo objects can use global DVs, not type: {type(DVGeo).__name__}")

# call the dvgeo object and add this dv
if childName is None:
DVGeo.addGlobalDV(dvName, value, func)
if childName is not None and comp is not None:
DVGeo.DVGeoDict[comp].children[childName].addGlobalDV(dvName, value, func, prependName=False)
sseraj marked this conversation as resolved.
Show resolved Hide resolved
elif comp is not None:
DVGeo.DVGeoDict[comp].addGlobalDV(dvName, value, func, prependName=False)
elif childName is not None:
DVGeo.children[childName].addGlobalDV(dvName, value, func, prependName=False)

Check warning on line 305 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L300-L305

Added lines #L300 - L305 were not covered by tests
else:
DVGeo.children[childName].addGlobalDV(dvName, value, func)
DVGeo.addGlobalDV(dvName, value, func, prependName=False)

Check warning on line 307 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L307

Added line #L307 was not covered by tests

# define the input
# When composite DVs are used, input is not required for the default DVs. Now the composite DVs are
# the actual DVs. So OpenMDAO don't need the default DVs as inputs.
if not isComposite:
self.add_input(dvName, distributed=False, shape=len(np.atleast_1d(value)))

# call the dvgeo object and add this dv
if childName is None:
DVGeo.addGlobalDV(dvName, value, func)
else:
DVGeo.children[childName].addGlobalDV(dvName, value, func)

def nom_addLocalDV(self, dvName, axis="y", pointSelect=None, childName=None, isComposite=False, DVGeoName=None):
def nom_addLocalDV(

Check warning on line 315 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L315

Added line #L315 was not covered by tests
self, dvName, axis="y", pointSelect=None, childName=None, comp=None, isComposite=False, DVGeoName=None
):
# if we have multiple DVGeos use the one specified by name
DVGeo = self.nom_getDVGeo(DVGeoName=DVGeoName)

# local DVs are only added to FFD-based DVGeo objects
if not isinstance(DVGeo, DVGeometry):
if not isinstance(DVGeo, (DVGeometry, DVGeometryMulti)):

Check warning on line 322 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L322

Added line #L322 was not covered by tests
raise RuntimeError(f"Only FFD-based DVGeo objects can use local DVs, not type: {type(DVGeo).__name__}")

if childName is None:
nVal = DVGeo.addLocalDV(dvName, axis=axis, pointSelect=pointSelect)
if childName is not None and comp is not None:
nVal = (

Check warning on line 326 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L325-L326

Added lines #L325 - L326 were not covered by tests
DVGeo.DVGeoDict[comp]
.children[childName]
.addLocalDV(dvName, axis=axis, pointSelect=pointSelect, prependName=False)
)
elif comp is not None:
nVal = DVGeo.DVGeoDict[comp].addLocalDV(dvName, axis=axis, pointSelect=pointSelect, prependName=False)
elif childName is not None:
nVal = DVGeo.children[childName].addLocalDV(dvName, axis=axis, pointSelect=pointSelect, prependName=False)

Check warning on line 334 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L331-L334

Added lines #L331 - L334 were not covered by tests
else:
nVal = DVGeo.children[childName].addLocalDV(dvName, axis=axis, pointSelect=pointSelect)
nVal = DVGeo.addLocalDV(dvName, axis=axis, pointSelect=pointSelect, prependName=False)

Check warning on line 336 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L336

Added line #L336 was not covered by tests

# define the input
# When composite DVs are used, input is not required for the default DVs. Now the composite DVs are
Expand All @@ -308,6 +347,7 @@
dvName,
secIndex,
childName=None,
comp=None,
axis=1,
pointSelect=None,
volList=None,
Expand All @@ -332,6 +372,9 @@
childName : str, optional
Name of the child FFD, if this DV is for a child FFD.

comp : str, optional
Name of the DVGeoMulti component, if this DV is for a multi component

axis : int, optional
See wrapped

Expand Down Expand Up @@ -368,32 +411,41 @@
DVGeo = self.nom_getDVGeo(DVGeoName=DVGeoName)

# local DVs are only added to FFD-based DVGeo objects
if not isinstance(DVGeo, DVGeometry):
if not isinstance(DVGeo, (DVGeometry, DVGeometryMulti)):

Check warning on line 414 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L414

Added line #L414 was not covered by tests
raise RuntimeError(
f"Only FFD-based DVGeo objects can use local section DVs, not type: {type(DVGeo).__name__}"
)

# add the DV to a normal DVGeo
if childName is None:
nVal = DVGeo.addLocalSectionDV(dvName, secIndex, axis, pointSelect, volList, orient0, orient2, config)
# add the DV to a child DVGeo
else:
# add the DV to DVGeo
if childName is not None and comp is not None:
nVal = (

Check warning on line 421 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L420-L421

Added lines #L420 - L421 were not covered by tests
DVGeo.DVGeoDict[comp]
.children[childName]
.addLocalSectionDV(
dvName, secIndex, axis, pointSelect, volList, orient0, orient2, config, prependName=False
)
)

elif comp is not None:
nVal = DVGeo.DVGeoDict[comp].addLocalSectionDV(

Check warning on line 430 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L429-L430

Added lines #L429 - L430 were not covered by tests
dvName, secIndex, axis, pointSelect, volList, orient0, orient2, config, prependName=False
)

elif childName is not None:

Check warning on line 434 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L434

Added line #L434 was not covered by tests
nVal = DVGeo.children[childName].addLocalSectionDV(
dvName,
secIndex,
axis,
pointSelect,
volList,
orient0,
orient2,
config,
dvName, secIndex, axis, pointSelect, volList, orient0, orient2, config, prependName=False
)

else:
nVal = DVGeo.addLocalSectionDV(

Check warning on line 440 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L440

Added line #L440 was not covered by tests
dvName, secIndex, axis, pointSelect, volList, orient0, orient2, config, prependName=False
)

# define the input
self.add_input(dvName, distributed=False, shape=nVal)
return nVal

def nom_addShapeFunctionDV(self, dvName, shapes, childName=None, config=None, DVGeoName=None):
def nom_addShapeFunctionDV(self, dvName, shapes, childName=None, comp=None, config=None, DVGeoName=None):

Check warning on line 448 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L448

Added line #L448 was not covered by tests
"""
Add one or more local shape function design variables to the DVGeometry object
Wrapper for :meth:`addShapeFunctionDV <.DVGeometry.addShapeFunctionDV>`
Expand All @@ -410,6 +462,9 @@
childName : str, optional
Name of the child FFD, if this DV is for a child FFD.

comp : str, optional
Name of the DVGeoMulti component, if this DV is for a multi component

config : str or list, optional
See wrapped

Expand All @@ -436,12 +491,20 @@
f"Only FFD-based DVGeo objects can use shape function DVs, not type: {type(DVGeo).__name__}"
)

# add the DV to a normal DVGeo
if childName is None:
nVal = DVGeo.addShapeFunctionDV(dvName, shapes, config)
# add the DV to a child DVGeo
# add the DV to DVGeo
if childName is not None and comp is not None:
nVal = (

Check warning on line 496 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L495-L496

Added lines #L495 - L496 were not covered by tests
DVGeo.DVGeoDict[comp].children[childName].addShapeFunctionDV(dvName, shapes, config, prependName=False)
)

elif comp is not None:
nVal = DVGeo.DVGeoDict[comp].addShapeFunctionDV(dvName, shapes, config, prependName=False)

Check warning on line 501 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L500-L501

Added lines #L500 - L501 were not covered by tests

elif childName is not None:
nVal = DVGeo.children[childName].addShapeFunctionDV(dvName, shapes, config, prependName=False)

Check warning on line 504 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L503-L504

Added lines #L503 - L504 were not covered by tests

else:
nVal = DVGeo.children[childName].addShapeFunctionDV(dvName, shapes, config)
nVal = DVGeo.addShapeFunctionDV(dvName, shapes, config, prependName=False)

Check warning on line 507 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L507

Added line #L507 was not covered by tests

# define the input
self.add_input(dvName, distributed=False, shape=nVal)
Expand All @@ -452,7 +515,7 @@
DVGeo = self.nom_getDVGeo(DVGeoName=DVGeoName)

# call the dvgeo object and add this dv
DVGeo.addCompositeDV(dvName, ptSetName=ptSetName, u=u, scale=scale, **kwargs)
DVGeo.addCompositeDV(dvName, ptSetName=ptSetName, u=u, scale=scale, prependName=False, **kwargs)

Check warning on line 518 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L518

Added line #L518 was not covered by tests
val = DVGeo.getValues()

# define the input
Expand Down Expand Up @@ -501,21 +564,27 @@
if not isComposite:
self.add_input(desmptr_name, distributed=False, shape=val.shape, val=val)

def nom_addRefAxis(self, childName=None, DVGeoName=None, **kwargs):
def nom_addRefAxis(self, childName=None, comp=None, DVGeoName=None, **kwargs):

Check warning on line 567 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L567

Added line #L567 was not covered by tests
# if we have multiple DVGeos use the one specified by name
DVGeo = self.nom_getDVGeo(DVGeoName=DVGeoName)

# references axes are only needed in FFD-based DVGeo objects
if not isinstance(DVGeo, DVGeometry):
if not isinstance(DVGeo, (DVGeometry, DVGeometryMulti)):

Check warning on line 572 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L572

Added line #L572 was not covered by tests
raise RuntimeError(f"Only FFD-based DVGeo objects can use reference axes, not type: {type(DVGeo).__name__}")

# add ref axis to this DVGeo
if childName is None:
return DVGeo.addRefAxis(**kwargs)
# add ref axis to the specified child
else:
# add ref axis to the DVGeo
if childName is not None and comp is not None:
return DVGeo.DVGeoDict[comp].children[childName].addRefAxis(**kwargs)

Check warning on line 577 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L576-L577

Added lines #L576 - L577 were not covered by tests

elif comp is not None:
return DVGeo.DVGeoDict[comp].addRefAxis(**kwargs)

Check warning on line 580 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L579-L580

Added lines #L579 - L580 were not covered by tests

elif childName is not None:

Check warning on line 582 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L582

Added line #L582 was not covered by tests
return DVGeo.children[childName].addRefAxis(**kwargs)

else:
return DVGeo.addRefAxis(**kwargs)

Check warning on line 586 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L586

Added line #L586 was not covered by tests

"""
Wrapper for DVCon functions
"""
Expand Down Expand Up @@ -690,7 +759,16 @@
d_inputs[dvname] += jvtmp

for _, DVGeo in self.DVGeos.items():
for ptSetName in DVGeo.ptSetNames:
if isinstance(DVGeo, DVGeometryMulti):
ptSetNames = []
for comp in DVGeo.DVGeoDict.keys():
for ptSet in DVGeo.DVGeoDict[comp].ptSetNames:
if ptSet not in ptSetNames:
ptSetNames.append(ptSet)

Check warning on line 767 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L762-L767

Added lines #L762 - L767 were not covered by tests
else:
ptSetNames = DVGeo.ptSetNames

Check warning on line 769 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L769

Added line #L769 was not covered by tests

for ptSetName in ptSetNames:

Check warning on line 771 in pygeo/mphys/mphys_dvgeo.py

View check run for this annotation

Codecov / codecov/patch

pygeo/mphys/mphys_dvgeo.py#L771

Added line #L771 was not covered by tests
if ptSetName in self.omPtSetList:
dout = d_outputs[ptSetName].reshape(len(d_outputs[ptSetName]) // 3, 3)

Expand Down