Coreform IGA Bug?

I’m generating an IGA geometry from a simple hollow cylinder, I’ve done what I believe to be correct, but here is the log.

Cubit>build uspline vol all as 1
ERROR: /home/adavis/makeiga.jou (15). 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/makeiga.jou (15). Command Failed.

Here is the journal file

#!python
cubit.cmd('create Cylinder height 30 radius 3 ')
cubit.cmd('create Cylinder height 30 radius 2.5 ')
cubit.cmd('subtract volume 2 from volume 1  ')
cubit.cmd('volume all redistribute nodes off')
cubit.cmd('volume all scheme Sweep Vector 1 0 0')
cubit.cmd('volume all scheme Sweep Vector 1 0 0 sweep transform least squares')
cubit.cmd('volume all autosmooth target on  fixed imprints off  smart smooth off')
cubit.cmd('volume all size 0.1')
cubit.cmd('volume 1  scheme Sweep  source surface 8    target surface 9   sweep transform translate prop\
agate bias')
cubit.cmd('mesh volume 1')
cubit.cmd('block 1 vol all')
cubit.cmd('block 1 element type hex27')
cubit.cmd('export mesh "cylinder.e"  overwrite')
cubit.cmd('set uspline vol all deg 2 cont 1')
cubit.cmd('build uspline vol all as 1')
cubit.cmd('fit uspline 1')
cubit.cmd('export uspline 1 exodus "cylinder_iga.e"')

I’m sure I’m doing something wrong, but I don’t see what it is?

@makeclean, it doesn’t appear to me that you’ve done anything “wrong”. This does appear to be a bug on our end, seemingly related to the size of the U-spline being built. For instance, I’ve modified your script a bit to permit scaling study:

## Setup
meshSize = 0.15 ## Setting equal to 0.125 results in error
cubit.cmd('reset')

## Create the geometry
cubit.cmd('create Cylinder height 30 radius 3 ')
cubit.cmd('create Cylinder height 30 radius 2.5 ')
cubit.cmd('subtract volume 2 from volume 1  ')
cubit.cmd('compress')

## Assign volume mesh scheme
cubit.cmd('volume all redistribute nodes off')
cubit.cmd('volume all autosmooth target on  fixed imprints off  smart smooth off')
cubit.cmd('volume 1  scheme Sweep  source surface 3    target surface 4   sweep transform translate propagate bias')
cubit.cmd(f'volume all size {meshSize}')

## Specify a structured "hole" mesh on the source surface
## Comment these two lines to recover an unstructured mesh
cubit.cmd(f'surface 3  scheme hole rad_intervals {max([1, round(0.5/meshSize)])}') 
cubit.cmd('mesh surface 3')

## Mesh the volume
cubit.cmd('mesh volume 1')
cubit.cmd('block 1 vol 1')

## Build the U-spline
cubit.cmd('set uspline vol 1 deg 2 cont 1')
cubit.cmd('build uspline vol 1 as 1')
cubit.cmd('fit uspline 1')

## Export the U-spline
## Note that currently exporting U-spline to Exodus not supported on Windows
cubit.cmd('export uspline 1 exodus "cylinder_iga.e"')

The above script works as intended (with a more structured mesh layout - see comments in code) with a mesh size of 0.15. But if you change the mesh size to 0.125 then we recover your error.

I’ve asked our development team to investigate further. Thanks for reporting and sorry for the inconvenience!