def setup_cb(comm): solver = ADFLOW(options=options, comm=comm, debug=True) solver.addIntegrationSurface('../inputFiles/integration_plane_viscous.fmt', 'viscous_plane') solver.finalizeUserIntegrationSurfaces() solver.addFamilyGroup('upstream', ['inlet']) solver.addFamilyGroup('downstream', ['outlet']) solver.addFamilyGroup('all_flow', ['inlet', 'outlet']) solver.addFamilyGroup('output_fam', ['all_flow', 'allWalls']) solver.addFunction('mdot', 'upstream', name="mdot_up") solver.addFunction('mdot', 'downstream', name="mdot_down") solver.addFunction('mdot', 'viscous_plane', name="mdot_plane") solver.addFunction('mavgptot', 'downstream', name="mavgptot_down") solver.addFunction('mavgptot', 'upstream', name="mavgptot_up") solver.addFunction('mavgptot', 'viscous_plane', name="mavgptot_plane") solver.addFunction('aavgptot', 'downstream', name="aavgptot_down") solver.addFunction('aavgptot', 'upstream', name="aavgptot_up") solver.addFunction('aavgptot', 'viscous_plane', name="aavgptot_plane") solver.addFunction('mavgttot', 'downstream', name="mavgttot_down") solver.addFunction('mavgttot', 'upstream', name="mavgttot_up") solver.addFunction('mavgttot', 'viscous_plane', name="mavgttot_plane") solver.addFunction('mavgps', 'downstream', name="mavgps_down") solver.addFunction('mavgps', 'upstream', name="mavgps_up") solver.addFunction('mavgps', 'viscous_plane', name="mavgps_plane") solver.addFunction('aavgps', 'downstream', name="aavgps_down") solver.addFunction('aavgps', 'upstream', name="aavgps_up") solver.addFunction('aavgps', 'viscous_plane', name="aavgps_plane") solver.setOption('ncycles', 1000) return solver, None, None, None
class TestSolveIntegrationPlane(reg_test_classes.RegTest): """ Tests that ADflow can converge the wing from the mdo tutorial using the euler equation to the required accuracy as meassure by the norm of the residuals, and states, and the accuracy of the functions based on the old regression test Test 9: MDO tutorial -- Euler -- Solution Test """ N_PROCS = 2 options = { "gridfile": os.path.join(baseDir, "../../input_files/conic_conv_nozzle_mb.cgns"), "outputdirectory": os.path.join(baseDir, "../output_files"), # Physics Parameters "equationType": "Euler", "smoother": "DADI", "nsubiter": 3, "CFL": 4.0, "CFLCoarse": 1.25, "MGCycle": "3w", "MGStartLevel": -1, "nCyclesCoarse": 250, "nCycles": 1000, "monitorvariables": ["cpu", "resrho", "cl", "cd"], "volumevariables": ["blank"], "surfacevariables": ["mach", "cp", "vx", "vy", "vz", "blank"], "useNKSolver": True, "nkswitchtol": 0.01, "nkadpc": True, "nkjacobianlag": 5, "nkouterpreconits": 3, "nkinnerpreconits": 2, # Convergence Parameters "L2Convergence": 1e-10, "L2ConvergenceCoarse": 1e-2, "adjointl2convergence": 1e-6, "forcesAsTractions": True, "debugzipper": True, "nearwalldist": 0.001, # 'nkls':'none', "solutionprecision": "double", "adjointsubspacesize": 200, "outerpreconits": 3, "zipperSurfaceFamily": "output_fam", "flowtype": "internal", } ref_file = "solve_conic_mb.json" def setUp(self): super().setUp() self.ap = copy.copy(ap_conic_conv_nozzle) options = copy.copy(adflowDefOpts) options.update(self.options) # Setup aeroproblem planeFile = os.path.join( baseDir, "../../input_files/integration_plane_viscous.fmt") options = copy.copy(adflowDefOpts) options.update(self.options) # Setup aeroproblem self.ap.evalFuncs.extend([ "mdot_plane", "mavgptot_plane", "aavgptot_plane", "mavgttot_plane", "mavgps_plane", "aavgps_plane" ]) # Create the solver self.CFDSolver = ADFLOW(options=options, debug=False) self.CFDSolver.addIntegrationSurface(planeFile, "viscous_plane") self.CFDSolver.finalizeUserIntegrationSurfaces() self.CFDSolver.addFamilyGroup("upstream", ["inlet"]) self.CFDSolver.addFamilyGroup("downstream", ["outlet"]) self.CFDSolver.addFamilyGroup("all_flow", ["inlet", "outlet"]) self.CFDSolver.addFamilyGroup("output_fam", ["all_flow", "allWalls"]) self.CFDSolver.addFunction("mdot", "upstream", name="mdot_up") self.CFDSolver.addFunction("mdot", "downstream", name="mdot_down") self.CFDSolver.addFunction("mdot", "viscous_plane", name="mdot_plane") self.CFDSolver.addFunction("mavgptot", "downstream", name="mavgptot_down") self.CFDSolver.addFunction("mavgptot", "upstream", name="mavgptot_up") self.CFDSolver.addFunction("mavgptot", "viscous_plane", name="mavgptot_plane") self.CFDSolver.addFunction("aavgptot", "downstream", name="aavgptot_down") self.CFDSolver.addFunction("aavgptot", "upstream", name="aavgptot_up") self.CFDSolver.addFunction("aavgptot", "viscous_plane", name="aavgptot_plane") self.CFDSolver.addFunction("mavgttot", "downstream", name="mavgttot_down") self.CFDSolver.addFunction("mavgttot", "upstream", name="mavgttot_up") self.CFDSolver.addFunction("mavgttot", "viscous_plane", name="mavgttot_plane") self.CFDSolver.addFunction("mavgps", "downstream", name="mavgps_down") self.CFDSolver.addFunction("mavgps", "upstream", name="mavgps_up") self.CFDSolver.addFunction("mavgps", "viscous_plane", name="mavgps_plane") self.CFDSolver.addFunction("aavgps", "downstream", name="aavgps_down") self.CFDSolver.addFunction("aavgps", "upstream", name="aavgps_up") self.CFDSolver.addFunction("aavgps", "viscous_plane", name="aavgps_plane") def test_solve(self): # do the solve self.CFDSolver(self.ap) # check its accuracy utils.assert_functions_allclose(self.handler, self.CFDSolver, self.ap, tol=1e-9) utils.assert_states_allclose(self.handler, self.CFDSolver, tol=1e-10) utils.assert_residuals_allclose(self.handler, self.CFDSolver, self.ap, tol=1e-10)