Difficulty meshing a Dome Volume

Hello!

I am trying to mesh a Volume consisting of a dome, and I’m having some trouble. This could be due to the way I am making it, but I am able to mesh the surfaces of the dome just fine, so I’m not sure why the volume would have trouble meshing. Anyways, here’s what I would like to mesh:

As a shared surface between the dome and cylinder, I figure meshing the top of the cylinder first is a good idea:

surface 9 size 0.2
mesh surface 9

With this defined, I figure I should be able to mesh the dome and cylinder, but when I try I get this in the command window:

Cubit>mesh volume 3
WARNING: Volume 3 must have its meshing scheme explicitly specified;
it is not automatically mappable, submappable or sweepable.
ERROR: 1 volume(s) did not mesh :  3

Cubit>mesh volume 1
WARNING: Volume 1 must have its meshing scheme explicitly specified;
it is not automatically mappable, submappable or sweepable.
ERROR: 1 volume(s) did not mesh :  1

Using a tetMesh scheme will mesh the volume, but my model requires quad elements.

I am able to mesh surfaces just fine:

mesh surface 11
mesh surface 12
mesh surface 13
mesh surface 14
mesh surface 15

(See uploaded photos in replies)

Even the inside will work:

mesh surface 20
mesh surface 19
mesh surface 18
mesh surface 17
mesh surface 16

(See second uploaded photo in replies)

But even after meshing all surfaces, the volume mesh is not able to be resolved. I can see why the top inside and top outside central surfaces may have trouble due to differences in the path meshes, but even leaving one of these unmeshed does not allow it to mesh. Any help would be much appreciated.

As a new user, my post could only contain one uploaded photo. Here’s a picture of the outside surface meshed:

And here is a picture with the inside surface and shared surface meshed

I also figure that giving some context into how the geometry for this dome was created may be crucial information. Basically, I started by creating a surface of the cross section of the dome by first defining specific vertex positions.

create vertex 1.0 0 0.75
...
create vertex 0.98 0 0.75

then I created curves from these vertices to trace the surface:

create curve arc three vertex 7 8 9
...
create curve vertex 17 18
...

I then defined a surface by bounding with the curves, swept the surface about the z axis, and imprinted and merged the new volume with the cylinder

create surface curve 7 8 9 10 11 12 13 14 15 16 17 18
sweep surface 10  zaxis angle 360
imprint volume 1 3
merge volume 1 3

Anyways, I hope this helps!

Well, I thought I found a resource that had the solution to my problem, but no such luck. Purely by chance, I stumbled upon this tutorial (https://www.youtube.com/watch?v=Uk5XN5K-srE) for meshing a partial sphere on the Coreform site. I figured that even though it wasn’t the exact problem I was trying to solve, it shared the curving characteristics. Since I thought that the problem was the inner cylindrical part having curvature, I set the four innermost nodes to a rectangular shape that I trace to make the surface to sweep to make the dome.

...
create vertex 0.1 0 1.269
create vertex 0 0 1.269 # Real point is 1.27
create vertex 0 0 1.211 # Real point is 1.213
create vertex 0.1 0 1.211
...

Next, I tried recreating the steps from the video within my geometry, and was able to at least get the shared surface and most of the outer and inner portions of the dome meshed. However I still am having problems meshing the inner cylindrical portion.

ERROR: 1 volume(s) did not mesh :  5

It doesn’t even say anything about it not being a sweepable volume anymore, just the cryptic message above. Can anybody provide some insight here?

Alright, I figured it out. The problem seems to be with generating the circular part on top from the sweep that defines the dome volume. Basically, I just stopped at generating vertices at the point just before the ones at the x, y origin, swept the dome volume creating a dome with a circular opening at the top, generated a new separate cylinder to fit into that hole and moved it there, and then webcut the dome volume in half and was able to mesh everything.

1 Like

@jbtompkins,

Based on what I can see from your post, I believe the issue you’re facing is that Cubit doesn’t support Many-to-Many sweeps (but does support One-to-One, Many-to-One, and One-to-Many). One way to get this to mesh, without needing to webcut the dome, is to composite the surfaces of one of the dome’s sides into a single surface.

reset
graphics tolerance angle 15

## Create half dome geometry with curves on half-dome
sphere r 1
sphere r .9
subtract vol 2 from vol 1
webcut volume all with plane yplane 
delete vol 3
compress

surface all copy
delete vol 1

webcut body all with cylinder radius .85 axis y 
webcut body all with cylinder radius .75 axis y 
webcut body all with cylinder radius .6 axis y 
webcut body all with cylinder radius .4 axis y 
webcut body all with cylinder radius .2 axis y 

color curve all black
create volume surface all heal 
graphics tolerance angle 1

## Composite all the surfaces on the dome-top into a single surface
composite create surface 9 13 17 21 25 26 keep angle 15 

## Mesh the geometry
surface 24  scheme circle 
mesh surface 24 
surface 23 19 15 11 7 scheme pave
paver cleanup extend
surface 23 19 15 11 7 scheme pave
surface 23 19 15 11 7 scheme pave
mesh surface 23 19 15 11 7
volume 14  redistribute nodes off 
volume 14  scheme Sweep  source surface 24 23 19 15 11 7    target surface 27   sweep transform least squares 
volume 14  autosmooth target on  fixed imprints off  smart smooth off 
mesh volume 14 

Before

After

Meshed

1 Like

Not sure if I should open a separate thread, but this problem seems related, so I figure I’ll post it here for now. I am now able to mesh the dome and the cylindrical section; however, I need to add a second dome to the other open side of the cylinder. I am able to add the geometry for the second dome and mesh it, but when I do, the mesh on the cylinder is removed (as far as I can tell).

I do not appear to have any error messages pop up when meshing the second dome, but when I try to mesh the cylinder’s volume, I get this error message:

Command: mesh volume 104
ERROR: 0 three-faced corner nodes found.
ERROR: A logical cube was not able to be found.
ERROR: Volume 104 meshing unsuccessful using scheme: submap
ERROR: 1 volume(s) did not mesh :  104

I thought I was home free once the domes were meshed, but the cylinder is now giving me this trouble…

@gvernon

After unsuccessfully attempting to fix my meshing problem using my meshing method, I’ve given yours a try.

Cubit>composite create surface 16 17 18 19 20
There are 10 edges in this list
Preserving undo information...done
Created composite curves 40
Created composite surfaces 22
Journaled Command: composite create surface 16 17 18 19 20

ERROR: No entity with ID 16 was found

It throws an error about a missing ID (which is coincidentally the top middle circular surface) though it includes the surface with that ID in the composite surface. I think it may work, but I believe first I need some way to heal or remove the “seam” on my dome geometry caused by the initial sweep about an axis which generates it.

The seam (I believe) prevents me from utilizing the circle mesh scheme on the circular surface on the bottom:

Cubit>surface 15 scheme circle
Journaled Command: surface 15 scheme circle

Cubit>mesh surface 15
Matching intervals successful.
ERROR: Unmeshed Surface 15 contains mesh entities.
ERROR: Mesh of Surface 15 is invalid.
Deleting invalid mesh.
To retain the invalid mesh next time, set keep invalid mesh on.
ERROR: Encountered an uncaught exception 'Length of 'this' or parameter must be > 0'.  Command failed.
Cubit>

I can still mesh the surfaces on the underside of the dome if I simply leave the default auto mesh schemes.

Cubit>mesh surface 15
Surface 15 meshing scheme automatically set to pave.
Matching intervals successful.
Smoothing Surface Mesh
Generated 23 faces for Surface 15.
Surface 15 meshing completed using scheme: pave
Journaled Command: mesh surface 15

Cubit>surface 11 12 13 14 scheme pave
Journaled Command: surface 11 12 13 14 scheme pave

Cubit>paver cleanup extend
Journaled Command: paver cleanup extend

Cubit>surface 11 12 13 14 scheme pave
Journaled Command: surface 11 12 13 14 scheme pave

Cubit>mesh surface 11 12 13 14
Matching intervals successful.
Smoothing Surface Mesh
Generated 295 faces for Surface 11.
Surface 11 meshing completed using scheme: pave
Smoothing Surface Mesh
Generated 169 faces for Surface 12.
Surface 12 meshing completed using scheme: pave
Smoothing Surface Mesh
Generated 118 faces for Surface 13.
Surface 13 meshing completed using scheme: pave
Smoothing Surface Mesh
Generated 73 faces for Surface 14.
Surface 14 meshing completed using scheme: pave
Journaled Command: mesh surface 11 12 13 14

However, I run into another problem following your example’s steps when trying to mesh the volume:

Cubit>volume 3 redistribute nodes off
Journaled Command: volume 3 redistribute nodes off

Cubit>volume 3 scheme sweep source surface 15 14 13 12 11 target surface 22 sweep transform least squares
Journaled Command: volume 3 scheme sweep source surface 15 14 13 12 11 target surface 22 sweep transform least squares

Cubit>volume 3 autosmooth target on fixed imprints off smart smooth off
Journaled Command: volume 3 autosmooth target on fixed imprints off smart smooth off

Cubit>mesh volume 3
Finding Sweep Dependent Volumes...
Grouping Mesh Dependent Volumes Completed...
Matching intervals successful.
Meshing Linking Surfaces!
Generated 78 faces for Surface 21.
Meshed All Linking Surfaces!
Sweeper Setup: 0.001 seconds
Sweeper Mesh Gen: 0.059 seconds
Sweeper Output: 0.003 seconds
ERROR: Inconsistent edge to face count relationship.
       ERROR: Mesh of Surface 22 is invalid.
Deleting invalid mesh.
To retain the invalid mesh next time, set keep invalid mesh on.
ERROR: No 3d elements.
ERROR: Mesh of Volume 3 is invalid.
Deleting invalid mesh.
To retain the invalid mesh next time, set keep invalid mesh on.
ERROR: Volume 3 meshing unsuccessful using scheme: sweep
ERROR: 1 volume(s) did not mesh :  3

Even though some volumes failed to mesh, Cubit will log
the command in the journal file for future use.Although some entities failed to mesh, Cubit will log the command in the journal file anyway, for future use.
Journaled Command: mesh volume 3

Anyways, I feel that I’m very close on this, so any help you can provide would be very much appreciated!

Out of curiosity, if you do regularize volume <dome_volume_id> does that get rid of the extra curve?

Doing regularize volume 3 after generating the geometry does remove the extra curve:

There is still a curve defining the center points on the inner and outer circular surfaces which I believe prevents me from meshing using the circle scheme still (I get the same error as earlier when I try to mesh it using the circle scheme).

I went through the rest of the steps starting with just using a pave meshing scheme with a size of 0.07 on the inner circular surface. This gives a warning when specifying the source and target surfaces and a different error when I get to the last step (trying to mesh the volume)

Cubit>volume 3 scheme sweep source surface 15 14 13 12 11 target surface 22 sweep transform least squares
WARNING: Need to assign the edge types on multi-loop surfaces.
WARNING: Unable to guarantee sweepability of volume 3.
Journaled Command: volume 3 scheme sweep source surface 15 14 13 12 11 target surface 22 sweep transform least squares

Cubit>volume 3 autosmooth target on fixed imprints off smart smooth off
Journaled Command: volume 3 autosmooth target on fixed imprints off smart smooth off

Cubit>mesh volume 3
WARNING: Need to assign the edge types on multi-loop surfaces.
Finding Sweep Dependent Volumes...
Grouping Mesh Dependent Volumes Completed...
WARNING: Forced search of the graph failed.
WARNING: Cannot formulate volume interval constraint equations for surface 22.
WARNING: Volume constraint formulation failure on volume 3
    Matching intervals on the surfaces only...
Matching intervals successful.
Edge 41 has length zero on surface 22!
ERROR: Volume 3 meshing unsuccessful using scheme: sweep
ERROR: 1 volume(s) did not mesh :  3

Not sure if it’s related, but there seems to be some trouble with the resulting composite surface’s ID and name. After compositing the outer surfaces, I get two surfaces with the same ID (Surface 22 (v)):

Screen Shot 2021-04-22 at 9.03.19 AM

The ACIS geometry engine will always create a seam if you create the dome by revolving a curve. The center point is also an artifact of the creation method. If the geometry is ellipsoidal, you can create the dome by scaling a sphere.

reset
create sphere radius 1
volume 1 scale x 10 y 3 z 10
webcut vol 1 plane yplane
del vol 1
compress

surface 2 scheme circle interval 12 fraction 0.2
mesh surface 2
smooth surf 2

When you scale the sphere you can see that the ellipsoid has a seam. I webcut along the seam to eliminate it. You could go ahead and separate out the surface, if all you want is the surface mesh, just leave the volume and mesh the dome surface.

I can use scheme circle on the dome surface. Smoothing helped clean up a couple of spots where the surface parameterization is a bit inconsistent.

image

If you want the a hexahedral volume mesh, you will have to decompose the volume a bit more. You need to core the model so that the center can be swept from top to bottom. Then you need to divide the model in half so the rest of the dome can be swept radially.

webcut volume 1  with cylinder radius 2 axis y 
webcut volume 1 with plane zplane offset 0 
imprint all 
merge all
mesh vol all

I could have set the center cylinder to scheme hole, but I didn’t. You should be able to apply this coring and sweep approach even if you have a seam in the model.

image