Replies: 1 comment
-
See the tutorial for DVGeoMulti for info on setting up the intersection system. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi, Dear Developers,
I encountered some issues while using FFD for aerodynamic shape optimization of a bump on a cylindrical body. Initially, I used a single FFD block (named blcok1) to enclose the bump. However, when moving the control points, the connection surface between the bump and the cylinder became shows discontinuities or even negative volumes like pictures below.
Later, I reviewed some related papers (Hannah Hajdik and attempted to use multi-DVGeo to fix this issue. I followed the offered test case to add an extra block (named block2) to wrap the cylindrical.
I used addPointSet() to add the mesh to multi-DVGeo but it raise an error of "Error: The point at (x, y, z) = (51.489, -1.686 15.205) in point set coords is inside multiple FFDs but a triangulated mesh for component block1 is not provided to determine which component owns this point''. I didn't see it was added a compName to addPointSet in test case, but I still tried assigning a block name to compNames in addPointSet, but another error raised as "Error: The point at (x, y, z) = (52.093, -2.044 15.502) in point set coords is not inside any FFDs". I checked the mesh and I confirmed that the surface mesh is enclosed within the FFD blocks. How can I resolve this issue? or is there is another example to show how to use DVGeo-multi? Thank you! Below is my test code.
gridFile='bump_cylindrical_volume_test.cgns' #this is a single overset volume mesh
aeroOptions = {"gridFile": gridFile, }
meshOptions = {"gridFile": gridFile,'LdefFact':50.0}
mesh = USMesh(options=meshOptions)
coords = mesh.getSurfaceCoordinates()
comm = MPI.COMM_WORLD
FFDFile = "block1.xyz"
FFDFile2= 'blcok2.xyz'
DVGeo3 = DVGeometry(FFDFile,isComplex=False)
DVGeo4 = DVGeometry(FFDFile2,isComplex=False)
DVGeo = DVGeometryMulti(comm=comm)
DVGeo.addComponent('block1',DVGeo3)
DVGeo.addComponent('block2',DVGeo4)
DVGeoDict = DVGeo.getDVGeoDict()
ps4=geo_utils.PointSelect(psType='x',pt1=[49, 4, 14.4],pt2=[65 ,-4 ,14.6])
DVGeoDict['block1'].addLocalDV("local1x", lower=-1, upper=1, axis="x", pointSelect=ps1,scale=1)
DVGeoDict['block1'].addLocalDV("local1y", lower=-1, upper=1, axis="y", pointSelect=ps1,scale=1)
DVGeo.addPointSet(coords, "coords",compNames=['block1'], applyIC=True)
DVGeo.addIntersection(compA='block1',compB='block2',project=True)
dvDict = DVGeo.getValues()
dvDict["local1x"][:] = 2
DVGeo.setDesignVars(dvDict)
coords_new = DVGeo.update("coords")
DVGeo.writePlot3d("ffd_deformed.xyz")
DVGeo.writePointSet("coords", "surf")
mesh.setSurfaceCoordinates(coords_new)
mesh.warpMesh()
mesh.writeGrid('volume_warped.cgns')
Beta Was this translation helpful? Give feedback.
All reactions