Skip to content

Solver convergence for 3D structural problem #300

@pn2200

Description

@pn2200

Hello, I was wondering if I could get help with the appropriate settings to get the attached 3D structural problem from a finite element analysis to converge. This problem has already had the rigid body modes removed, this is sometimes called "inertial relief". I followed the structural problem tutorial to try setting the solver type, block size, maximum number of iterations, but I cannot get a small enough error.
Default settings:

./solver --matrix stiffness.mtx --rhs rhs.mtx
Solver
======
Type:             BiCGStab
Unknowns:         9399
Memory footprint: 514.01 K

Preconditioner
==============
Number of levels:    2
Operator complexity: 1.04
Grid complexity:     1.05
Memory footprint:    11.10 M

level     unknowns       nonzeros      memory
---------------------------------------------
    0         9399         574515     10.45 M (96.15%)
    1          437          22991    665.69 K ( 3.85%)

Iterations: 100
Error:      302.985

[Profile:       0.853 s] (100.00%)
[  reading:     0.495 s] ( 58.07%)
[  setup:       0.019 s] (  2.26%)
[  solve:       0.338 s] ( 39.63%)

Increasing the solver's maxiter increases the error:

./solver --matrix stiffness.mtx --rhs rhs.mtx solver.maxiter=1000
Solver
======
Type:             BiCGStab
Unknowns:         9399
Memory footprint: 514.01 K

Preconditioner
==============
Number of levels:    2
Operator complexity: 1.04
Grid complexity:     1.05
Memory footprint:    11.10 M

level     unknowns       nonzeros      memory
---------------------------------------------
    0         9399         574515     10.45 M (96.15%)
    1          437          22991    665.69 K ( 3.85%)

Iterations: 1000
Error:      462.915

[Profile:       3.901 s] (100.00%)
[  reading:     0.494 s] ( 12.67%)
[  setup:       0.019 s] (  0.50%)
[  solve:       3.387 s] ( 86.82%)

The problem is 3D linear elasticity, so it should have a block size of 3. Providing that to the aggregation method reduces the error, but not enough to consider the solution has converged:

./solver --matrix stiffness.mtx --rhs rhs.mtx solver.maxiter=1000 precond.coarsening.aggr.block_size=3
Solver
======
Type:             BiCGStab
Unknowns:         9399
Memory footprint: 514.01 K

Preconditioner
==============
Number of levels:    2
Operator complexity: 1.10
Grid complexity:     1.08
Memory footprint:    13.34 M

level     unknowns       nonzeros      memory
---------------------------------------------
    0         9399         574515     11.81 M (90.85%)
    1          735          57897      1.53 M ( 9.15%)

Iterations: 1000
Error:      51.9285

[Profile:       4.095 s] (100.00%)
[  reading:     0.496 s] ( 12.10%)
[  setup:       0.029 s] (  0.71%)
[  solve:       3.570 s] ( 87.18%)

Do you have any suggestions to improve the performance on this type of problem? Attached is the matrix and right hand side in MatrixMarket format.

stiffness.txt
rhs.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions