Splitting methods
Creates a splitting solver
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(splitting_t), | intent(inout) | :: | self |
Instance of the type |
||
| type(mesh_cart_t), | intent(in), | target | :: | mesh |
Mesh |
Applies a single iteration of a splitting solver
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(splitting_t), | intent(inout) | :: | self |
Instance of the type |
||
| type(csrmat_t), | intent(in) | :: | a |
Matrix |
||
| real(kind=FP), | intent(in), | dimension(self%ndim) | :: | dinv |
Inverse of the diagonal elements of the matrix "a" |
|
| real(kind=FP), | intent(inout), | dimension(self%ndim) | :: | x |
Quantity to be smoothed |
|
| real(kind=FP), | intent(in), | dimension(self%ndim) | :: | b |
Right hand side |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(splitting_jacobi_cpu_t), | intent(inout) | :: | self | |||
| type(mesh_cart_t), | intent(in), | target | :: | mesh |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(splitting_jacobi_cpu_t), | intent(inout) | :: | self | |||
| type(csrmat_t), | intent(in) | :: | a | |||
| real(kind=FP), | intent(in), | dimension(self%ndim) | :: | dinv | ||
| real(kind=FP), | intent(inout), | dimension(self%ndim) | :: | x | ||
| real(kind=FP), | intent(in), | dimension(self%ndim) | :: | b |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(splitting_jacobi_cpu_t), | intent(inout) | :: | self |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(splitting_gauss_seidel_cpu_t), | intent(inout) | :: | self | |||
| type(mesh_cart_t), | intent(in), | target | :: | mesh |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(splitting_gauss_seidel_cpu_t), | intent(inout) | :: | self | |||
| type(csrmat_t), | intent(in) | :: | a | |||
| real(kind=FP), | intent(in), | dimension(self%ndim) | :: | dinv | ||
| real(kind=FP), | intent(inout), | dimension(self%ndim) | :: | x | ||
| real(kind=FP), | intent(in), | dimension(self%ndim) | :: | b |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(splitting_gauss_seidel_cpu_t), | intent(inout) | :: | self |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(splitting_gauss_seidel_redblack_cpu_t), | intent(inout) | :: | self | |||
| type(mesh_cart_t), | intent(in), | target | :: | mesh |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(splitting_gauss_seidel_redblack_cpu_t), | intent(inout) | :: | self | |||
| type(csrmat_t), | intent(in) | :: | a | |||
| real(kind=FP), | intent(in), | dimension(self%ndim) | :: | dinv | ||
| real(kind=FP), | intent(inout), | dimension(self%ndim) | :: | x | ||
| real(kind=FP), | intent(in), | dimension(self%ndim) | :: | b |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(splitting_gauss_seidel_redblack_cpu_t), | intent(inout) | :: | self |
Splitting solver
| procedure(create_abstract), public, deferred :: create | |
| procedure(apply_abstract), public, deferred :: apply |
Splitting solver with Jacobi splitting method on CPU
| final :: destructor_jacobi_cpu |
| procedure, public :: create => create_jacobi_cpu | |
| procedure, public :: apply => apply_jacobi_cpu |
Splitting solver with Gauss-Seidel splitting method on CPU
| final :: destructor_gauss_seidel_cpu |
| procedure, public :: create => create_gauss_seidel_cpu | |
| procedure, public :: apply => apply_gauss_seidel_cpu |
Splitting solver with Red-Black Gauss-Seidel splitting method on CPU
| final :: destructor_gauss_seidel_redblack_cpu |
| procedure, public :: create => create_gauss_seidel_redblack_cpu | |
| procedure, public :: apply => apply_gauss_seidel_redblack_cpu |