Modal participation factor

Hi, I’m in the early stages of writing a response spectrum analysis using karamba. I am trying to understand the Participation-factor output from the Natural Vibrations component.

I am working from Chopra’s Dynamics of Structures text. He states, the participation factor,

Γ_n= L_n/M_n;


L_n= ϕ’mℓ;

M_n= ϕ’mϕ;

where ϕ is the mode shape, m is the mass matrix, and ℓ is the influence vector.

I have built a simple model in karamba and compared the karamba output to output from a matlab script using the aforementioned equations. The periods and modal masses are equivalent, however the modal participation factors differ.

Could someone shed some light on how the karamba Participation-factor is calculated, if it is not the same as above?

Also, if anyone has any other resources regarding implementing response spectrum analysis with karamba I would be interested to take a look.


See attached.

natural vibes participation (47.1 KB)

participation_factor.pdf (134.5 KB)

Hello @sgcprender,
there is a post related to this topic (Karamba Modal Analysis) on which might help you further.

Hi Clemens,

Thanks, I have read that post recently, but I reread it and did some additional checks. I built an ETABS model to confirm results from my matlab script. I also implemented a response spectrum analysis with modal superposition by SRSS method. Model period, mode shapes, modal mass, MPMR, and RSA displacements are all identical to the ETABS model.

Comparing these results to the karamba script: again, periods, mode shapes, modal mass, are identical, however the participation factors differ. The participation factors are proportional to mine but they are scaled differently, and I do not know why. This obviously affects the displacements, thus those are different too.

I am not sure how karamba calculates the participation factors specifically. I am assuming they are scaled based on the mode shapes being normalized such that the largest component is 1 (as you mention), but the units they are calculated with also affect their magnitude. It appears based on the output that everything is calculated with kips and feet and then multiplied back as necessary (to lbm for modal mass for example). Nevertheless, in the calculation of the displacements, the way in which the modes are normalized in relation to the calculation of the participation factor should not matter because you have to multiply back by the mode shape anyway in order to find displacements:

[u=displacement, phi=mode shape, Gamma=participation factor, Mn=modal mass, D=pseudo-displacement, A=pseudo-acceleration, omega=angular frequency] Chopra,

u=phiq, where

all phi and M cancel, L is unitless, thus units for u should be units of length the same as D.

The fact that my displacements (which should be independent of the normalization of the modes, etc) are also different is why I have reason to believe the participation factor might be scaled incorrectly with respect to the normalization of the mode shapes (for imperial units at least), or some other conversion inconsistency exists. However, I am not entirely sure–I could be making some other calculation mistake in the gh script, which is why I was hoping someone else had implemented a response spectrum analysis, but I could only find the link that you gave me in your last post, and it is in SI, thus I cannot confirm.

I was hoping you wouldn’t mind taking a look at it and telling me if and where I have gone wrong, or if there is indeed an error in the calculation of the participation factor for imperial units in karamba. I am ok to wait if this might take a while.

Thank you,

See attachments and screenshots.

RSA_2DOF.pdf (214.6 KB)

natural vibes participation (27.5 KB)

Hi @sgcprender,
the mode shapes get normalized such that the largest component is 1 meter. From these the participation coefficients get calculated using the mass matrix. Their unit should be kilogram. Before output they get scaled in the ‘Natural Vibes’ component with the square root of the conversion factor for kg to lbm. I think there lies the error. I will fix that.

1 Like

Thanks Clemens. I’ll note that the component itself states, “They are scaled according to the largest modal displacement being 1 [ft].” This language may also need to be changed to say “1m” unless you will in fact scale the participation factors according to the largest modal displacement being 1ft (which would be ideal). Otherwise, if the modal displacements are normalized to 1m and converted to feet their magnitudes might seem arbitrary, but this is more of an aesthetic decision and will not affect displacement results if participation factors are scaled accordingly.

Is this change something that could be implemented in an upcoming build, and when could one expect it to be available for download?

Thank you!

There will be a new WIP version probably this evening with this bug fixed (see
Karamba3D internally works with SI units (m, kN,…). The conversion between SI and Imperial units happens at input and output.

Hi Clemens,

I have been checking back periodically at the index of nightly builds, but haven’t seen an update beyond 5/28 and nothing in the change log suggests this bug is fixed. Any update?


The nightly-builds are now available here:
– Clemens