Skip to main content

Craig Bampton Method


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:

Resources
Original Paper link
FEMCI general description: link
My Go-to Primer link
Tom Irvine's tutorial papers and Matlab scripts link

Octave/Matlab Scripts
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. 

All posts on Superelement 
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

Addendum
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

Comments

  1. Great web site dear Sze Kwan;
    plz can you guide me to achieve my task wich is about extract mass and stiffness matricess from ansys to matlab and performing craig-bamptom method of different dynamic mode. I modeled a wing strcuture and i extracted the both matrices from ansys. Now, i'm discontinued in craig-bamptom method. I have consulted all the links that you have already applied for on this site but I cannot project my idea. plz guide me i'm a PhD in mechanical engineering and i want to do something about flexible body so i chose performing lumped parametr method and finite element method for my wing structure, for LPM i did it well but currently i'm discontinued with the second method and excatly in craig-bamptom method.
    Plz help me

    ReplyDelete
    Replies
    1. "can you guide me to achieve my task wich is about extract mass and stiffness matricess from ansys to matlab and performing craig-bamptom method of different dynamic mode"

      Hi Atef,

      Please see https://www.ansystips.com/2017/10/export-stiffness-matrix-from-ansys.html and https://www.ansystips.com/2019/05/matrix-transfer-between-matlab-and-ansys.html
      on exporting mass and stiffness matrix to Matlab.

      The post here has example scripts needed for an implementation of Craig-Bampton given the mass and stiffness extracted. Tom Irvine's tutorial is an especially useful reference.

      Delete
  2. Dear Sze Kwan;
    Thank you very much for your answer
    Just a quick questions:
    1---- I extracted mass and stiffness matrices using commands below (obtained from tutorial video of ansys youtube channel)but i obtained the both of matrices (.matrix) file with capacity of 10 Gega Byte!!! that makes sense?????

    ! below commands create dense matrix

    ! Stiffness
    *DMAT,MatKD,D,IMPORT,FULL,file.full,STIFF
    *PRINT,MatKD,Kdense.matrix

    ! Mass
    *DMAT,MatMD,D,IMPORT,FULL,file.full,MASS
    *PRINT,MatMD,Mdense.matrix

    ! below commands create sparse matrix
    *SMAT,MatKS,D,IMPORT,FULL,file.full,STIFF
    *PRINT,MatKS,Ksparse.matrix

    For Mass
    *SMAT,MatMS,D,IMPORT,FULL,file.full,MASS
    *PRINT,MatMS,Msparse.matrix

    2----- For Tom Irvine's tutorial, i used his code matlab wich is about Craig-bamptom putting my matrices but i did not get valid simulation and results!!!

    3---- What means please, this description :
    'C-B - 3D EB beam model, 3 interface frames, 100 elements, 18 static modes, 10 dynamic modes'
    'C-B - 3D EB beam model, 3 interface frames, 100 elements, 30 static modes, 20 dynamic modes'

    thank you very much sir :)





    ReplyDelete
    Replies
    1. 1a. You may try *SMAT instead of *DMAT to make it a sparse matrix.
      1b. Use *EXPORT instead of *PRINT to take advantage of Matrix Market Format.
      1c. Perhaps try first with a very small simple model with few nodes.

      2. It worked for me years ago. Sorry I can't trouble shoot from afar.

      3. Sorry, I don't know what that means either.

      Delete

Post a Comment