def test4(): # Test the MDO tutorial h mesh file_name = "../input_files/mdo_tutorial_face_bcs.cgns" meshOptions = copy.deepcopy(defOpts) meshOptions.update({ "gridFile": file_name, "fileType": "cgns", "symmetryPlanes": [[[0, 0, 0], [0, 0, 1]]], }) # Create warping object mesh = USMesh(options=meshOptions) # Extract Surface Coordinates coords0 = mesh.getSurfaceCoordinates() vCoords = mesh.getCommonGrid() val = MPI.COMM_WORLD.reduce(numpy.sum(vCoords.flatten()), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of vCoords Inital:") reg_write(val, 1e-8, 1e-8) new_coords = coords0.copy() # Do a shearing sweep deflection: for i in range(len(coords0)): span = coords0[i, 2] new_coords[i, 0] += 0.05 * span # Reset the newly computed surface coordiantes mesh.setSurfaceCoordinates(new_coords) mesh.warpMesh() # Get the sum of the warped coordinates # vCoords = mesh.getSolverGrid() vCoords = mesh.getWarpGrid() val = MPI.COMM_WORLD.reduce(numpy.sum(vCoords.flatten()), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of vCoords Warped:") reg_write(val, 1e-8, 1e-8) # Create a dXv vector to do test the mesh warping with: dXv_warp = numpy.linspace(0, 1.0, mesh.warp.griddata.warpmeshdof) if MPI.COMM_WORLD.rank == 0: print("Computing Warp Deriv") mesh.warpDeriv(dXv_warp, solverVec=False) dXs = mesh.getdXs() val = MPI.COMM_WORLD.reduce(numpy.sum(dXs.flatten()), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of dxs:") reg_write(val, 1e-8, 1e-8) if MPI.COMM_WORLD.rank == 0: print("Verifying Warp Deriv") mesh.verifyWarpDeriv(dXv_warp, solverVec=False, dofStart=0, dofEnd=5)
def test1(): # Test the Ahmed body openfoam mesh sys.stdout.flush() # change directory to the correct test case os.chdir("../input_files/ahmedBodyMesh/") file_name = os.getcwd() meshOptions = copy.deepcopy(defOpts) meshOptions.update({ "gridFile": file_name, "fileType": "openfoam", "symmetryPlanes": [[[0, 0, 0], [0, 1, 0]]], }) # Create warping object mesh = USMesh(options=meshOptions) # Extract Surface Coordinates coords0 = mesh.getSurfaceCoordinates() vCoords = mesh.getCommonGrid() val = MPI.COMM_WORLD.reduce(numpy.sum(vCoords.flatten()), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of vCoords Inital:") reg_write(val, 1e-8, 1e-8) new_coords = coords0.copy() # Do a stretch: for i in range(len(coords0)): length = coords0[i, 2] new_coords[i, 0] += 0.05 * length # Reset the newly computed surface coordiantes mesh.setSurfaceCoordinates(new_coords) mesh.warpMesh() vCoords = mesh.getWarpGrid() val = MPI.COMM_WORLD.reduce(numpy.sum(vCoords.flatten()), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of vCoords Warped:") reg_write(val, 1e-8, 1e-8) # Create a dXv vector to do test the mesh warping with: dXv_warp = numpy.linspace(0, 1.0, mesh.warp.griddata.warpmeshdof) if MPI.COMM_WORLD.rank == 0: print("Computing Warp Deriv") mesh.warpDeriv(dXv_warp, solverVec=False) dXs = mesh.getdXs() val = MPI.COMM_WORLD.reduce(numpy.sum(dXs.flatten()), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of dxs:") reg_write(val, 1e-8, 1e-8) if MPI.COMM_WORLD.rank == 0: print("Verifying Warp Deriv") mesh.verifyWarpDeriv(dXv_warp, solverVec=False, dofStart=0, dofEnd=10, h=1e-9) # change back to the original directory os.chdir("../../reg_tests")
def test1(): # Test the Ahmed body openfoam mesh sys.stdout.flush() # change directory to the correct test case os.chdir("../input_files/ahmedBodyMesh/") file_name = os.getcwd() meshOptions = copy.deepcopy(defOpts) meshOptions.update({ "gridFile": file_name, "fileType": "openfoam", "symmetryPlanes": [[[0, 0, 0], [0, 1, 0]]], }) # Create warping object mesh = USMesh(options=meshOptions, debug=True) # Extract Surface Coordinates coords0 = mesh.getSurfaceCoordinates() vCoords = mesh.getCommonGrid() val = MPI.COMM_WORLD.reduce(numpy.sum(vCoords.flatten()), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of vCoords Inital:") reg_write(val, 1e-8, 1e-8) new_coords = coords0.copy() # Do a stretch: for i in range(len(coords0)): length = coords0[i, 2] new_coords[i, 0] += 0.05 * length # Reset the newly computed surface coordiantes mesh.setSurfaceCoordinates(new_coords) mesh.warpMesh() vCoords = mesh.getWarpGrid() val = MPI.COMM_WORLD.reduce(numpy.sum(vCoords.flatten()), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of vCoords Warped:") reg_write(val, 1e-8, 1e-8) # Create a dXv vector to do test the mesh warping with: dXv_warp = numpy.linspace(0, 1.0, mesh.warp.griddata.warpmeshdof) if "complex" not in sys.argv: if MPI.COMM_WORLD.rank == 0: print("Computing Warp Deriv") mesh.warpDeriv(dXv_warp, solverVec=False) dXs = mesh.getdXs() val = MPI.COMM_WORLD.reduce(numpy.sum(dXs.flatten()), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of dxs:") reg_write(val, 1e-8, 1e-8) else: # add a complex perturbation on all surface nodes simultaneously: for i in range(len(coords0)): new_coords[i, :] += h * 1j # Reset the newly computed surface coordiantes mesh.setSurfaceCoordinates(new_coords) mesh.warpMesh() vCoords = mesh.getWarpGrid() deriv = numpy.imag(vCoords) / h deriv = numpy.dot(dXv_warp, deriv) val = MPI.COMM_WORLD.reduce(numpy.sum(deriv), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of dxs:") reg_write(val, 1e-8, 1e-8) del mesh # os.system('rm -fr *.cgns *.dat') # change back to the original directory os.chdir("../../reg_tests")
def test3(): # Test the mdo tutorial o mesh file_name = "../input_files/o_mesh.cgns" meshOptions = copy.deepcopy(defOpts) meshOptions.update({"gridFile": file_name, "fileType": "cgns"}) # Create warping object mesh = USMesh(options=meshOptions) # Extract Surface Coordinates coords0 = mesh.getSurfaceCoordinates() vCoords = mesh.getCommonGrid() val = MPI.COMM_WORLD.reduce(numpy.sum(vCoords.flatten()), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of vCoords Inital:") reg_write(val, 1e-8, 1e-8) new_coords = coords0.copy() # Do a shearing sweep deflection: for i in range(len(coords0)): span = coords0[i, 2] new_coords[i, 0] += 0.05 * span # Reset the newly computed surface coordiantes mesh.setSurfaceCoordinates(new_coords) mesh.warpMesh() # Get the sum of the warped coordinates # vCoords = mesh.getSolverGrid() vCoords = mesh.getWarpGrid() val = MPI.COMM_WORLD.reduce(numpy.sum(vCoords.flatten()), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of vCoords Warped:") reg_write(val, 1e-8, 1e-8) # Create a dXv vector to do test the mesh warping with: dXv_warp = numpy.linspace(0, 1.0, mesh.warp.griddata.warpmeshdof) if "complex" not in sys.argv: if MPI.COMM_WORLD.rank == 0: print("Computing Warp Deriv") mesh.warpDeriv(dXv_warp, solverVec=False) dXs = mesh.getdXs() val = MPI.COMM_WORLD.reduce(numpy.sum(dXs.flatten()), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of dxs:") reg_write(val, 1e-8, 1e-8) else: # add a complex perturbation on all surface nodes simultaneously: for i in range(len(coords0)): new_coords[i, :] += h * 1j # Reset the newly computed surface coordiantes mesh.setSurfaceCoordinates(new_coords) mesh.warpMesh() vCoords = mesh.getWarpGrid() deriv = numpy.imag(vCoords) / h deriv = numpy.dot(dXv_warp, deriv) val = MPI.COMM_WORLD.reduce(numpy.sum(deriv), op=MPI.SUM) if MPI.COMM_WORLD.rank == 0: print("Sum of dxs:") reg_write(val, 1e-8, 1e-8)