Defines a generalized alpha integrator for sparse matrix systems.
Copies CSR matrices and allocates reusable workspace.
Copies CSR matrices and prepares sparse or small-system dense workspace.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_generalized_alpha_integrator), | intent(inout) | :: | this |
Integrator to initialize or reinitialize. |
||
| type(csr_matrix), | intent(in) | :: | mass |
The N-by-N mass matrix. |
||
| type(csr_matrix), | intent(in) | :: | damping |
The N-by-N damping matrix. |
||
| type(csr_matrix), | intent(in) | :: | stiffness |
The N-by-N stiffness matrix. |
||
| real(kind=real64), | intent(in), | optional | :: | rho_infinity |
High-frequency spectral radius in [0, 1], default 1. |
Advances a state through successive columns of a force history.
Advances through a force history with one column per time point. The number of steps is size(forces, 2) - 1; only the final state is returned.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(structural_integrator), | intent(inout) | :: | this |
Initialized dense or sparse integrator. |
||
| real(kind=real64), | intent(in), | dimension(:,:) | :: | forces |
N-by-(number of steps + 1) array of external forces. |
|
| real(kind=real64), | intent(in) | :: | dt |
Positive constant time step. |
||
| real(kind=real64), | intent(inout), | dimension(:) | :: | displacement |
Initial state on input, final state on output. |
|
| real(kind=real64), | intent(inout), | dimension(:) | :: | velocity |
Initial state on input, final state on output. |
|
| real(kind=real64), | intent(inout), | dimension(:) | :: | acceleration |
Initial state on input, final state on output. |
Advances one step using a cached effective CSR system.
Advances by the generalized-alpha equations documented by dense_integrator_step using CSR matrix products. For N > 32, restarted GMRES uses a diagonal MSR preconditioner and checks the true residual; smaller systems use cached dense LU.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_generalized_alpha_integrator), | intent(inout) | :: | this |
The sparse_generalized_alpha_integrator object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | force_current |
The current N-element external forcing vector. |
|
| real(kind=real64), | intent(in), | dimension(:) | :: | force_next |
The N-element external forcing vector at t + dt. |
|
| real(kind=real64), | intent(in) | :: | dt |
The time step. |
||
| real(kind=real64), | intent(inout), | dimension(:) | :: | displacement |
The N-element displacement state vector. On output, this vector is updated to the state at t + dt. |
|
| real(kind=real64), | intent(inout), | dimension(:) | :: | velocity |
The N-element velocity state vector. On output, this vector is updated to the state at t + dt. |
|
| real(kind=real64), | intent(inout), | dimension(:) | :: | acceleration |
The N-element acceleration state vector. On output, this vector is updated to the state at t + dt. |