t the NaturalVibrations-component also returns modal masses and participation factors in global directions. The natural modes are scaled in such a way that their largest displacement component is +/-1. There is now also a Disp-component that lets on retrieve displacements along elements. I attached an example.Here my answers to your questions:
Karamba uses a consistent mass matrix.
The former trial version of karamba returned mass normalized natural modes. In order to arrive at the same modal masses as in the Robot-calculation one needs to scale the natural modes so that their largest component is unity. The modal mass m* of a mode mode_j is then 1/norm_inf(mode_j)**2. Here norm_inf() is the infinity norm. As Karamba does its calculations in Mg (Mega grams) one has to multiply it by 1000 in order to get kg. it is important to include also the rotational DOFs - otherwise m* will be too small.
zero density is a problem. The calculation of natural modes in Karamba involves a Cholesky decomposition of the mass matrix. This does not work for singular mass matrices and causes the error.
Regarding your feature requests:
is the new Disp-component handy enough for your purposes?
By means of the mass participation factors it should be possible to rank the natural modes according to your needs. You could do it like in the 'Bracing walls' example.
If I understood correctly then the effective modal mass is the square of the values given as the participation vectors.
Best regards, Clemens…