Nested transformations

Dear Fluka experts,
I’m bulding a geometry in which I ihave to mport blocks of bodies, regions and cards from multiple flair projects (Blocks of geometries - #2 by vasilis). Some imported block needs to be rotated for a correct positioning, but I’m experiencing some problems.
The container body and all internal bodies are correctly rotated until the first nested rotation is processed. At this point two errors are generated:

e> ERROR: Card #12 multiple ‘$start_transform’ found
$start_transform targ
e> ERROR: Card #16 ‘$end_transform’ without $start_xxx
$end_transform

And therefore the end_transform of the nested body actually close the main start_transform and all the bodies that are imported after that directive are not rotated.
I built a minimal example where the nested transformation generate the above error with no import of external geometries.
Any help would be appreciated.
Cheers,
Michele

provarot.inp (1.3 KB)
provarot.flair (1.6 KB)

Hi Michele,

My apologies for the delayed reply.

I don’t believe nested transformations as you suggest them here (using start_transform and end_transform directives) are possible in FLUKA and this is why you are experiencing the errors. You can only nest directives of different kinds (combining transform with expansion for example) but never more than one of the same kind.

It is however possible to “chain” several ROT-DEFi transformations as explained here on slide 14 by simply specifying the same name for the transformation in the SDUM. The individual roto-translations are then applied in sequence from top to bottom as defined in the input file. You can then of course still use the start_transform and end_transform statements by calling the combined ROT-DEFi transformation. Does that help for your problem?

Cheers,

Andreas

1 Like

Hello Andreas and thank you for your reply…

You can only nest directives of different kinds (combining transform with expansion for example) but never more than one of the same kind.

I’m sorry I missed this. I actually imported and rotated a block of bodies in a different geometry, and all ended well because no rotated elements were present in the block. This gave me the false impressions that I could do the same in an arbitrary complex geometry.

It is however possible to “chain” several ROT-DEFi transformations as explained here on slide 14 by simply specifying the same name for the transformation in the SDUM.

I think I can’t do this because inside the block of bodies I’m considering there are several elements rotated in place, so every element needs to be translated in the center and back, resulting in a unique rot-defi card for each element, and I can’t rotate them after the import chaining a rot-defi for all bodies.

In this work I’m trying to rebuild an old g4 geometry that we previously run inside Fluka by using FluGG. For this reason I replicated every element and every transformation from the geant4 version to the flair project, so where in g4 there is a logical volume with fixed x, y and z dimensions, coupled to several physical volumes positioned and rotated independently, I did the closest thing in fluka by copying a body built with the same x,y and z dimensions and then I placed it with proper rotations. Projects under active development like Moira make me think that some sort of experimental function was available to replicate all the transformation available for geant4 in Fluka/Flair.

At the moment I’ll rebuild every rotated body of my imported block in the final position without rotations.
Thanks for the clarification.
Cheers,
Michele