def test_2(self, train=False, refDeriv=False): """ Test 2: Basic FFD, global DVs and local DVs """ refFile = os.path.join(self.base_path, 'ref/test_DVGeometry_02.ref') with BaseRegTest(refFile, train=train) as handler: handler.root_print("Test 2: Basic FFD, global DVs and local DVs") DVGeo, DVGeoChild = commonUtils.setupDVGeo(self.base_path) #create global DVs on the parent DVGeo.addGeoDVGlobal('mainX', -1.0, commonUtils.mainAxisPoints, lower=-1., upper=0., scale=1.0) #create local DVs on the parent DVGeo.addGeoDVLocal('xdir', lower=-1.0, upper=1.0, axis='x', scale=1.0) DVGeo.addGeoDVLocal('ydir', lower=-1.0, upper=1.0, axis='y', scale=1.0) DVGeo.addGeoDVLocal('zdir', lower=-1.0, upper=1.0, axis='z', scale=1.0) commonUtils.testSensitivities(DVGeo, refDeriv, handler)
def test_3(self, train=False, refDeriv=False): """ Test 3: Basic + Nested FFD, global DVs only """ refFile = os.path.join(self.base_path, 'ref/test_DVGeometry_03.ref') with BaseRegTest(refFile, train=train) as handler: handler.root_print("Test 3: Basic + Nested FFD, global DVs only") DVGeo, DVGeoChild = commonUtils.setupDVGeo(self.base_path) #create global DVs on the parent DVGeo.addGeoDVGlobal('mainX', -1.0, commonUtils.mainAxisPoints, lower=-1., upper=0., scale=1.0) #create global DVs on the child DVGeoChild.addGeoDVGlobal('nestedX', -0.5, commonUtils.childAxisPoints, lower=-1., upper=0., scale=1.0) DVGeo.addChild(DVGeoChild) commonUtils.testSensitivities(DVGeo, refDeriv, handler)
def test_7(self, train=False, refDeriv=False): """ Test 7: Basic + Nested FFD, local DVs only on parent """ refFile = os.path.join(self.base_path, 'ref/test_DVGeometry_07.ref') with BaseRegTest(refFile, train=train) as handler: handler.root_print( "Test 7: Basic + Nested FFD, local DVs only on parent") DVGeo, DVGeoChild = commonUtils.setupDVGeo(self.base_path) #create local DVs on the parent DVGeo.addGeoDVLocal('xdir', lower=-1.0, upper=1.0, axis='x', scale=1.0) DVGeo.addGeoDVLocal('ydir', lower=-1.0, upper=1.0, axis='y', scale=1.0) DVGeo.addGeoDVLocal('zdir', lower=-1.0, upper=1.0, axis='z', scale=1.0) DVGeo.addChild(DVGeoChild) commonUtils.testSensitivities(DVGeo, refDeriv, handler)
def test_8(self, train=False, refDeriv=False): """ Test 8: Basic + Nested FFD, local DVs only on child """ refFile = os.path.join(self.base_path, 'ref/test_DVGeometry_08.ref') with BaseRegTest(refFile, train=train) as handler: handler.root_print( "Test 8: Basic + Nested FFD, local DVs only on child") DVGeo, DVGeoChild = commonUtils.setupDVGeo(self.base_path) DVGeoChild.addGeoDVLocal('childxdir', lower=-1.1, upper=1.1, axis='x', scale=1.0) DVGeoChild.addGeoDVLocal('childydir', lower=-1.1, upper=1.1, axis='y', scale=1.0) DVGeoChild.addGeoDVLocal('childzdir', lower=-1.1, upper=1.1, axis='z', scale=1.0) DVGeo.addChild(DVGeoChild) commonUtils.testSensitivities(DVGeo, refDeriv, handler)
def test_writeRefAxes(self): DVGeo, DVGeoChild = commonUtils.setupDVGeo(self.base_path) DVGeo.addChild(DVGeoChild) # Add a simple point set ptName = "point" pts = np.array( [ [0, 0.5, 0.5], ], dtype="float", ) DVGeo.addPointSet(points=pts, ptName=ptName) # Write out the axes axesPath = os.path.join(self.base_path, "axis") DVGeo.writeRefAxes(axesPath) # Check that files were written self.assertTrue(os.path.isfile(axesPath + "_parent.dat")) self.assertTrue(os.path.isfile(axesPath + "_child000.dat")) # Delete axis files os.remove(axesPath + "_parent.dat") os.remove(axesPath + "_child000.dat")
def test_5(self, train=False, refDeriv=False): """ Test 5: Basic + Nested FFD, global DVs and local DVs on both parent and child """ refFile = os.path.join(self.base_path, 'ref/test_DVGeometry_05.ref') with BaseRegTest(refFile, train=train) as handler: handler.root_print( "Test 5: Basic + Nested FFD, global DVs and local DVs on both parent and child" ) DVGeo, DVGeoChild = commonUtils.setupDVGeo(self.base_path) #create global DVs on the parent DVGeo.addGeoDVGlobal('mainX', -1.0, commonUtils.mainAxisPoints, lower=-1., upper=0., scale=1.0) #create local DVs on the parent DVGeo.addGeoDVLocal('xdir', lower=-1.0, upper=1.0, axis='x', scale=1.0) DVGeo.addGeoDVLocal('ydir', lower=-1.0, upper=1.0, axis='y', scale=1.0) DVGeo.addGeoDVLocal('zdir', lower=-1.0, upper=1.0, axis='z', scale=1.0) #create global DVs on the child DVGeoChild.addGeoDVGlobal('nestedX', -0.5, commonUtils.childAxisPoints, lower=-1., upper=0., scale=1.0) DVGeoChild.addGeoDVLocal('childxdir', lower=-1.1, upper=1.1, axis='x', scale=1.0) DVGeoChild.addGeoDVLocal('childydir', lower=-1.1, upper=1.1, axis='y', scale=1.0) DVGeoChild.addGeoDVLocal('childzdir', lower=-1.1, upper=1.1, axis='z', scale=1.0) DVGeo.addChild(DVGeoChild) commonUtils.testSensitivities(DVGeo, refDeriv, handler)
def test_11_rot7(self, train=False, refDeriv=False): """ Test 11: Basic + Nested FFD, global DVs and local DVs on parent local on child """ refFile = os.path.join(self.base_path, "ref/test_DVGeometry_11.ref") with BaseRegTest(refFile, train=train) as handler: handler.root_print( "Test 11: Basic + Nested FFD, global DVs and local DVs on parent local on child, using rotType=7" ) DVGeo, DVGeoChild = commonUtils.setupDVGeo(self.base_path, rotType=7) # create global DVs on the parent DVGeo.addGlobalDV("mainX", -1.0, commonUtils.mainAxisPoints, lower=-1.0, upper=0.0, scale=1.0) # create local DVs on the parent DVGeo.addLocalDV("xdir", lower=-1.0, upper=1.0, axis="x", scale=1.0) DVGeo.addLocalDV("ydir", lower=-1.0, upper=1.0, axis="y", scale=1.0) DVGeo.addLocalDV("zdir", lower=-1.0, upper=1.0, axis="z", scale=1.0) # create global DVs on the child DVGeoChild.addLocalDV("childxdir", lower=-1.1, upper=1.1, axis="x", scale=1.0) DVGeoChild.addLocalDV("childydir", lower=-1.1, upper=1.1, axis="y", scale=1.0) DVGeoChild.addLocalDV("childzdir", lower=-1.1, upper=1.1, axis="z", scale=1.0) DVGeo.addChild(DVGeoChild) commonUtils.testSensitivities(DVGeo, refDeriv, handler)
def test_1(self, train=False, refDeriv=False): """ Test 1: Basic FFD, global DVs """ refFile = os.path.join(self.base_path, "ref/test_DVGeometry_01.ref") with BaseRegTest(refFile, train=train) as handler: handler.root_print("Test 1: Basic FFD, global DVs") DVGeo, DVGeoChild = commonUtils.setupDVGeo(self.base_path) # create global DVs on the parent DVGeo.addGlobalDV("mainX", -1.0, commonUtils.mainAxisPoints, lower=-1.0, upper=0.0, scale=1.0) commonUtils.testSensitivities(DVGeo, refDeriv, handler)
def test_9(self, train=False, refDeriv=False): """ Test 9: Basic + Nested FFD, local DVs only on parent, global on child """ refFile = os.path.join(self.base_path, "ref/test_DVGeometry_09.ref") with BaseRegTest(refFile, train=train) as handler: handler.root_print("Test 9: Basic + Nested FFD, local DVs only on parent, global on child") DVGeo, DVGeoChild = commonUtils.setupDVGeo(self.base_path) # create local DVs on the parent DVGeo.addLocalDV("xdir", lower=-1.0, upper=1.0, axis="x", scale=1.0) DVGeo.addLocalDV("ydir", lower=-1.0, upper=1.0, axis="y", scale=1.0) DVGeo.addLocalDV("zdir", lower=-1.0, upper=1.0, axis="z", scale=1.0) DVGeoChild.addGlobalDV("nestedX", -0.5, commonUtils.childAxisPoints, lower=-1.0, upper=0.0, scale=1.0) DVGeo.addChild(DVGeoChild) commonUtils.testSensitivities(DVGeo, refDeriv, handler)
def test_6(self, train=False, refDeriv=False): """ Test 6: Basic + Nested FFD, local DVs only """ refFile = os.path.join(self.base_path, "ref/test_DVGeometry_06.ref") with BaseRegTest(refFile, train=train) as handler: handler.root_print("Test 6: Basic + Nested FFD, local DVs only") DVGeo, DVGeoChild = commonUtils.setupDVGeo(self.base_path) # create local DVs on the parent DVGeo.addLocalDV("xdir", lower=-1.0, upper=1.0, axis="x", scale=1.0) DVGeo.addLocalDV("ydir", lower=-1.0, upper=1.0, axis="y", scale=1.0) DVGeo.addLocalDV("zdir", lower=-1.0, upper=1.0, axis="z", scale=1.0) DVGeoChild.addLocalDV("childxdir", lower=-1.1, upper=1.1, axis="x", scale=1.0) DVGeoChild.addLocalDV("childydir", lower=-1.1, upper=1.1, axis="y", scale=1.0) DVGeoChild.addLocalDV("childzdir", lower=-1.1, upper=1.1, axis="z", scale=1.0) DVGeo.addChild(DVGeoChild) commonUtils.testSensitivities(DVGeo, refDeriv, handler)
def test_demoDesignVars(self): DVGeo, DVGeoChild = commonUtils.setupDVGeo(self.base_path) DVGeo.addChild(DVGeoChild) # Add DVs to the child globalVarName = "nestedX" localVarName = "childXDir" DVGeoChild.addGlobalDV(globalVarName, -0.5, commonUtils.childAxisPoints, lower=-1.0, upper=0.0, scale=1.0) DVGeoChild.addLocalDV(localVarName, lower=-1.1, upper=1.1, axis="x", scale=1.0) # Add a simple point set ptName = "point" pts = np.array( [ [0, 0.5, 0.5], ], dtype="float", ) DVGeo.addPointSet(points=pts, ptName=ptName) # Demo DVs with just the FFD DVGeo.demoDesignVars(self.base_path) # Files that we expect to be output based on the DVs added refNames = sorted( [ f"{localVarName}_000_iter_000", f"{localVarName}_000_iter_001", f"{localVarName}_001_iter_000", f"{localVarName}_001_iter_001", f"{localVarName}_002_iter_000", f"{localVarName}_002_iter_001", f"{localVarName}_003_iter_000", f"{localVarName}_003_iter_001", f"{localVarName}_004_iter_000", f"{localVarName}_004_iter_001", f"{localVarName}_005_iter_000", f"{localVarName}_005_iter_001", f"{localVarName}_006_iter_000", f"{localVarName}_006_iter_001", f"{localVarName}_007_iter_000", f"{localVarName}_007_iter_001", f"{globalVarName}_000_iter_000", f"{globalVarName}_000_iter_001", ] ) ffdRef = [name + ".dat" for name in refNames] pointSetRef = [name + f"_{ptName}.dat" for name in refNames] # Set paths ffdPath = os.path.join(self.base_path, "ffd") pointSetPath = os.path.join(self.base_path, "pointset") surfPath = os.path.join(self.base_path, "surf") # Check that the generated FFD files match the expected result ffdFiles = sorted(os.listdir(ffdPath)) self.assertEqual(ffdFiles, ffdRef) # Check that there are no other directories created with self.assertRaises(FileNotFoundError): os.listdir(pointSetPath) os.listdir(surfPath) # Delete FFD files shutil.rmtree(ffdPath) # Demo DVs with a point set DVGeo.demoDesignVars(self.base_path, pointSet=ptName) # Check that the FFD and point set files match the expected result ffdFiles = sorted(os.listdir(ffdPath)) pointSetFiles = sorted(os.listdir(pointSetPath)) self.assertEqual(ffdFiles, ffdRef) self.assertEqual(pointSetFiles, pointSetRef) # Delete FFD and point set files shutil.rmtree(ffdPath) shutil.rmtree(pointSetPath)