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
Sorry to bother again. Is this approach supported on the surface between 2 volumes? For example, a sphere inside another sphere.
Basically yes. You move the nodes onto a self chosen surface. The surface itself doesn’t need to be meshed or contain the nodes you want to move.
Thank you. If I have two adjacent blocks, shall I create block based geometry seperately, and move the intermediate surface nodes one block by another? Or should I create only one block based volume and seperate it into 2 blocks after moving the nodes?
If it can be avoided then it would be better not to do boolean operations on mesh based geometry.
Are your 2 adjacent blocks merged?
I’m not sure whether they are merged. I always call “imprint and merge vol all” before meshing. I think all my geometric operations are performed before sculpt meshing. Basiclly i’m meshing 2 concentric ‘spheres’, but their boundaries are irregular (a human head in a cube).
Can you share the geometry?