In a previous post, the Craig-Bampton (CB) substructuring method was used in Ansys to simplify a part for reuse. To learn more about what Ansys does in the background, I did some reading up. Here are some good resources:
Original Paper link
FEMCI general description: link
My Go-to Primer link
Tom Irvine's tutorial papers and Matlab scripts link
Inspired by Tom's Matlab script, I coded a script to condense two 'random' bodies, keep only 10 modes of each body with 3 nodal interface points between them. The 'random' bodies are positive definite matrix that is generated randomly for each run to represent two mass and stiffness matrices. Running the script again would generate a different system and different plots.
Here are the links to the two Octave/Matlab scripts used to create the plots below:
Main Script: Random2PartsCB.m link (run this one)
Minion Script: CraigBampton.m link
A run of the script may yield something like Figure 1 below. As only 10 modes were kept of body #1 and 10 additional modes were kept for body #2 as master nodes, the error exceeding 5% occurs right around the 20th mode. This is worth keeping in mind when selecting the master (M) degree of freedom.
Figure 1 - Natural Frequency Error
Three transfer functions are then computed at the 3 connection points comparing the CB System to the original Full System. The results compares well enough.
Figure 2 - Transfer Function comparison
I'm sure there are quite a few bugs in the script but I'm satisfied with the results for now. Two key caveats: damping was ignored and Load Transformation Matrix (LTM) was not used.
Reuse CMS Superelement in Ansys Workbench with Expansion Link
Component Mode Synthesis (CMS) with Results Expansion in Ansys Workbench Link
Craig Bampton Method Overview Link
Component Mode Synthesis(CMS) Substructure in ANSYS Workbench Link
It was pointed out to me that Hurty (1965) first proposed this ideas before Craig (1968).
Hurty, W. C. (1965). Dynamic analysis of structural systems using component modes. AIAA Journal,3(4), 678–685