I tried to mesh 3 spheres, all with center at 0,0,0 with radius 0.2, 0.35 and 0.5, respectively.
Sculpt works fine, but I need the curvilinear boundaries to be high-order ones.
It seems by adjusting the mesh to HEX27, the mesh boundaries didn’t fit the geometry boundaries better.
Guess they are not compatible?
Besides, I tried following command
‘sculpt volume 4 size 0.05 box location position -0.7 -0.7 -0.7 location position 0.7 0.7 0.7 void 1 -SVB’ but -svb is not recognized. Is it correct to Separate Void Blocks with ‘-svb’?
Hi @WayneYY,
sculpt creates a free mesh either of hexes or tets. I think there is no smoothing operation in cubit that will fit the high order nodes to a boundary.
But we can make a workaround with the python api to do this. From the free mesh that sculpt created we can make a mesh based geometry. This way we have access to the faces of the free mesh.
With this we can adjust the nodes to the boundary of the original volume.
Here is an example
#!cubit
reset
create sphere radius 1
Sculpt volume all size 0.2 smooth 3
set developer on
Create Mesh Geometry block 1
block 1 element type hex27
draw block 1
draw node all color red add
#!python
import numpy
cubit.cmd( "set node constraint off" )
N = cubit.parse_cubit_list( "node", "in surface 2" )
surface = cubit.surface(1)
for nid in N:
location = numpy.array( cubit.get_nodal_coordinates( nid ) )
new_location = numpy.array( surface.closest_point_trimmed( location ) )
delta = new_location - location
cubit.cmd( f"node {nid} move x {delta[0]} y {delta[1]} z {delta[2]}" )
#!cubit
export mesh "smoothed_quadratic_sphere_sculpt.e" overwrite
Mesh in cubit
mesh in paraview
clipped at z=0
to separate void blocks the keyword separate_void_blocks
should do it