IGA Spline Building Issue


I’ve got geometry that I would like do some IGA scoping on, I’ve got a geometry that hex meshes succesfully (except for one piece which we’ll hopefully resolve in a separate issue).

My script I’m using to process is

cubit.cmd('open "/home/adavis/prod/monoblock_iga/full_target.cub5"')
cubit.cmd('webcut volume 5 with plane from surface 176')
cubit.cmd('Surface 1077  copy')
#cubit.cmd('move volume all location 0 0 0 include_merged')
cubit.cmd('move volume all z -17.500002 include_merged')
cubit.cmd('sweep surface 1078 helix xaxis thread_distance 40 angle 3600 right_handed  keep ')
cubit.cmd('move Volume 71  x -200 include_merged')
cubit.cmd('delete vol 5')
cubit.cmd('Surface 314  copy')
cubit.cmd('create curve vertex 1600 506  ')
cubit.cmd('sweep surface 1085 along curve 2540  keep  individual ')
cubit.cmd('delete volume 10')
cubit.cmd('webcut volume 71 with plane from surface 1090  ')
cubit.cmd('webcut volume 74  with plane from surface 1091  ')
cubit.cmd('delete volume 71, 75')
cubit.cmd('delete volume 69')
cubit.cmd('delete body 67 70 72')
cubit.cmd('Volume 74  scale X 1.0 Y 1.1 Z 1.1 ')
cubit.cmd('subtract volume 73  from volume 74  keep_tool ')
cubit.cmd('delete volume 74')
cubit.cmd('imprint body all')
cubit.cmd('merge all')
cubit.cmd('volume all size 0.5')
cubit.cmd('mesh vol all')
cubit.cmd('block 1 add vol all ')
cubit.cmd('compress id all')
cubit.cmd('set uspline vol all deg 2 cont 1')
#cubit.cmd('build uspline vol all as 1')
cubit.cmd('build uspline vol 1,2,10 as 1')
cubit.cmd('fit uspline 1')

After going through the standard IGA process, I get an error

%>cubit.cmd('build uspline vol 1,2,10 as 1')
ERROR: /home/adavis/prod/monoblock_iga/full_thing.py (30). Exception thrown: e[0;31;1mError in CompositeTopology: range not found at topo::CompositeTopology::phi(int, const topo::DynamicDart&) const::<lambda()> in /home/gitlab-runner/builds/common/0/igx/igx/topo/src/CompositeTopology.cpp:57e[0m
ERROR: /home/adavis/prod/monoblock_iga/full_thing.py (30). Command Failed.
%>cubit.cmd('fit uspline 1')
ERROR: /home/adavis/prod/monoblock_iga/full_thing.py (31). ERROR: U-spline with id 1 does not exist.
ERROR: /home/adavis/prod/monoblock_iga/full_thing.py (31). Command Failed.

If I ran the command only for volumes 1 and 2, then it works (with some issues due to the mesh resolution - but can be fixed with more elements), when I include volume 10 in the list, then it fails. Volume 10 is the green cylinder, the connects to the bottom of the yellow bit with the holes in.

Also, is there an explanation/example somewhere regarding how one would should use the syntax to build the splines in bits? e.g.

build uspline vol 1 as 1
build uspline vol 2 as 2
fit uspline 1,2

When would I/should I break it up into bits? Can I break it into bits?



  1. What version of Coreform Cubit? If you grab a latest development build do you still get this error?

  2. Without having the cub5 file it may be difficult for us to debug.

  3. Regarding where to break into bits… I would recommend that for each set of conforming-mesh regions you build a U-spline. An assembly of 3 unconnected parts, each decomposed/imprint/merged, I would build 3 separate U-splines. Two regions that share an interface - with a conforming mesh across the interface - but where each region is a different material (e.g. bi-metallic strip) I would probably try to use a single U-spline with two “blocks” assigned.