splitting_m Module

Splitting methods



Interfaces

interface

  • public module subroutine create_abstract(self, mesh)

    Creates a splitting solver

    Arguments

    Type IntentOptional Attributes Name
    class(splitting_t), intent(inout) :: self

    Instance of the type

    type(mesh_cart_t), intent(in), target :: mesh

    Mesh

interface

  • public module subroutine apply_abstract(self, a, dinv, x, b)

    Applies a single iteration of a splitting solver

    Arguments

    Type IntentOptional 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

interface

  • public module subroutine create_jacobi_cpu(self, mesh)

    Arguments

    Type IntentOptional Attributes Name
    class(splitting_jacobi_cpu_t), intent(inout) :: self
    type(mesh_cart_t), intent(in), target :: mesh

interface

  • public module subroutine apply_jacobi_cpu(self, a, dinv, x, b)

    Arguments

    Type IntentOptional 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

interface

  • public module subroutine destructor_jacobi_cpu(self)

    Arguments

    Type IntentOptional Attributes Name
    type(splitting_jacobi_cpu_t), intent(inout) :: self

interface

  • public module subroutine create_gauss_seidel_cpu(self, mesh)

    Arguments

    Type IntentOptional Attributes Name
    class(splitting_gauss_seidel_cpu_t), intent(inout) :: self
    type(mesh_cart_t), intent(in), target :: mesh

interface

  • public module subroutine apply_gauss_seidel_cpu(self, a, dinv, x, b)

    Arguments

    Type IntentOptional 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

interface

  • public module subroutine destructor_gauss_seidel_cpu(self)

    Arguments

    Type IntentOptional Attributes Name
    type(splitting_gauss_seidel_cpu_t), intent(inout) :: self

interface

interface

  • public module subroutine apply_gauss_seidel_redblack_cpu(self, a, dinv, x, b)

    Arguments

    Type IntentOptional 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

interface


Derived Types

type, public, abstract ::  splitting_t

Splitting solver

Type-Bound Procedures

procedure(create_abstract), public, deferred :: create
procedure(apply_abstract), public, deferred :: apply

type, public, extends(splitting_t) ::  splitting_jacobi_cpu_t

Splitting solver with Jacobi splitting method on CPU

Finalizations Procedures

final :: destructor_jacobi_cpu

Type-Bound Procedures

procedure, public :: create => create_jacobi_cpu
procedure, public :: apply => apply_jacobi_cpu

type, public, extends(splitting_t) ::  splitting_gauss_seidel_cpu_t

Splitting solver with Gauss-Seidel splitting method on CPU

Finalizations Procedures

final :: destructor_gauss_seidel_cpu

Type-Bound Procedures

procedure, public :: create => create_gauss_seidel_cpu
procedure, public :: apply => apply_gauss_seidel_cpu

type, public, extends(splitting_t) ::  splitting_gauss_seidel_redblack_cpu_t

Splitting solver with Red-Black Gauss-Seidel splitting method on CPU

Finalizations Procedures

final :: destructor_gauss_seidel_redblack_cpu

Type-Bound Procedures

procedure, public :: create => create_gauss_seidel_redblack_cpu
procedure, public :: apply => apply_gauss_seidel_redblack_cpu