Zone groups not recognized properly after block merge

Hi all,

I’m running into confusing behaviour with zone groups after block merge in 3DEC 9.0, and I’m trying to understand whether this is expected behaviour or a bug.

I want to create two stacked blocks, merge them into a single block and then assign different constitutive models to zones based on their original block membership.

This is my code:

;create geometry for merging
model new

block create brick 0 1 group ‘botblock’ slot ‘1’
block create brick 0 1 0 1 1 2 group ‘topblock’ slot ‘1’

block group ‘grains’

block zone generate-new maximum-edge 0.05
block zone list polyhedra filename ‘blocks_to_merge’

;now run merged version
model new
model random 10000
model large-strain off

block merge-start
program call ‘blocks_to_merge.dat’
block merge-finish

block zone cmodel assign anisotropic range group ‘topblock’ slot ‘1’
block zone cmodel assign elastic range group ‘botblock’ slot ‘1’

The range of botblock shows ALL zones are in this group but in plotter I can see that the zones in the original top brick are grouped in topblock.

My workaround when I encounter this has been to reorder the assignments (i.e., assign the cmodel to the “global” group first, then to the intended subset group), so the final assignment “wins.”

Thanks in advance for your help!

So, to summarize, the merging is working correctly, but the group names in slot ‘1’ are lost. Correct? This looks like a bug. I’ll look into it.

Oh - I see what’s happening. When you use a group in a range, it looks first for the zone group and then for the block group. So if the group name doesn’t match a zone group, it will search the host block groups and find a match. So the zone groups are assigned correctly, but when you say range group ‘botblock’, all of the zones in the bottom block match, but then all of the zones in the top block also match because the group name of the host block is ‘botblock’ .

You can force it to look at ONLY zone groups by adding ‘by block-zone’ to your range. e.g.

block zone cmodel assign anisotropic range group 'topblock' slot '1' by block-zone
block zone cmodel assign elastic range group 'botblock' slot '1' by block-zone

That clarifies things, thank you!