Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
    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")
Пример #6
0
    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)
Пример #7
0
    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)
Пример #8
0
    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)
Пример #9
0
    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)
Пример #10
0
    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)
Пример #11
0
    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)