rigid diaphragm & partitions
Posted: Fri Oct 23, 2026 5:08 pm
Hello!
I’m modeling a masonry building (ASDShellQ4 shell walls with layered fiber sections, elastic slabs) in STKO and running it in parallel with OpenSeesMP. The slabs have a rigid diaphragm (rigidDiaphragm with one master node per floor and the slab nodes as slaves), and I use constraints Transformation. When I partition the model automatically (8 partitions), the diaphragm ends up split across several partitions. The analysis runs and even “converges”, but the results are completely wrong: on a house model I tested, the base reaction was 4.4 kN and the roof displacement 0.0001 mm, against 365 kN and 1.13 mm in the serial run. I checked the generated .tcl and the constraints look consistent (each slave is constrained in every partition where it exists, and the masters are defined where used), so it seems that Transformation simply does not handle a rigid diaphragm split between processes.
I tried the alternatives: Penalty was very slow and had numerical problems (1e12 did not converge on the first gravity step; 1e10 worked but covered only 6% of the record in 7 h), and constraints Auto gave correct results but was also too slow to be useful. The only thing that worked was partitioning so that each diaphragm stays whole: with 4 partitions, one per slab, the results were identical to the serial run, and it was 2.87x faster (11 h 15 min vs 32 h 16 min).
My question is how to make this explicit and reproducible instead of depending on how the automatic partitioner happens to cut the model. Is there a way in STKO to force all the nodes of a rigid diaphragm (master and slaves) into the same partition, for example by assigning partitions manually or by group/physical property? Or is there a recommended way to keep the partitioner from splitting nodes that belong to the same MP constraint?
I’m modeling a masonry building (ASDShellQ4 shell walls with layered fiber sections, elastic slabs) in STKO and running it in parallel with OpenSeesMP. The slabs have a rigid diaphragm (rigidDiaphragm with one master node per floor and the slab nodes as slaves), and I use constraints Transformation. When I partition the model automatically (8 partitions), the diaphragm ends up split across several partitions. The analysis runs and even “converges”, but the results are completely wrong: on a house model I tested, the base reaction was 4.4 kN and the roof displacement 0.0001 mm, against 365 kN and 1.13 mm in the serial run. I checked the generated .tcl and the constraints look consistent (each slave is constrained in every partition where it exists, and the masters are defined where used), so it seems that Transformation simply does not handle a rigid diaphragm split between processes.
I tried the alternatives: Penalty was very slow and had numerical problems (1e12 did not converge on the first gravity step; 1e10 worked but covered only 6% of the record in 7 h), and constraints Auto gave correct results but was also too slow to be useful. The only thing that worked was partitioning so that each diaphragm stays whole: with 4 partitions, one per slab, the results were identical to the serial run, and it was 2.87x faster (11 h 15 min vs 32 h 16 min).
My question is how to make this explicit and reproducible instead of depending on how the automatic partitioner happens to cut the model. Is there a way in STKO to force all the nodes of a rigid diaphragm (master and slaves) into the same partition, for example by assigning partitions manually or by group/physical property? Or is there a recommended way to keep the partitioner from splitting nodes that belong to the same MP constraint?