I am performing a modal analysis in CalculiX of a loudspeaker diaphragm modeled as a single shell using PrePoMaX as front end.
Model characteristics:
Circular diaphragm, diameter: 75 mm
Shell model
Approximately 5306 shell elements
Number of equations: 70771
3 DOF per node (U1, U2, U3)
Solver: Pardiso
8 CPU cores
The first eigenfrequency is approximately 320 Hz.
My goal is to obtain all acoustically relevant modes up to about 10 kHz. Since many of the extracted modes are dominated by in-plane motion (U1/U2), while I am mainly interested in out-of-plane motion (U3), I need to extract a large number of modes and later filter them based on U3 participation.
With 1044 extracted modes, the highest frequency obtained is approximately 6637 Hz.
That analysis took 42 minutes.
I am currently running a solution with 2000 requested modes, but it is still running after 12 hours.
My question is:
For a model of this size (70771 equations), what is typically the limiting factor in CalculiX eigenvalue analyses?
The mesh density / number of equations?
The number of requested eigenmodes?
Memory consumption in ARPACK/Pardiso?
Would it generally be more efficient to:
keep the current mesh and request more modes,
or
refine the mesh and request fewer modes?
I am particularly interested in practical experience from users who have run modal analyses with 1000–3000 extracted modes.
Any advice on estimating the number of modes required to reliably cover a target frequency range would also be appreciated.
It would be good to mesh it in a structured/transfinite way with quads and perform a mesh convergence study to find the influence of the mesh size on the frequencies (as shown in the aforementioned video). Then you can use a minimum required mesh density and increase the number of modes. The bottleneck here must be the number of modes.
Ideally, you should split the extraction into separate frequency regions (steps).
I didn’t catch how you get the “reduced integration”; can you elaborate on that?
Yes, I suspected that. My problem is that most of the modes are not interesting, as they mainly involve U1 and U2. So out of 1000 modes, I only have about 15 that have any significant U3 movement.
I have a Python script that can crunch the dat-file and only output those modes.
But with 1000 modes I only get to about 6600 Hz and I want at least 10000 Hz.
Well, the frequency for the first eigenmode must be at the least the lower bound; otherwise, I get indexing faults.
Reduced integration elements have less integration points (where stress and strain is calculated). They are more computationally efficient and not prone to shear or volumetric locking, but they are also less accurate and have to be used carefully, with sufficiently refined meshes.
Their names just include “R” at the end (e.g. S4R instead of S4R). In PrePoMax, they can be selected when editing parts in the FE Model tab.
Unfortunately, there are no settings to limit the extraction to specific modes. All or a given number in the specified range will be extracted.
This seems to be a bug. In Abaqus, you can split such analysis into multiple steps with different frequency ranges.
Can you share your .inp (and maybe .pmx) file for some testing ?