splitting_m Module

Splitting methods


Uses

  • module~~splitting_m~~UsesGraph module~splitting_m splitting_m module~comm_handling_m comm_handling_m module~splitting_m->module~comm_handling_m module~csrmat_m csrmat_m module~splitting_m->module~csrmat_m module~mesh_cart_m mesh_cart_m module~splitting_m->module~mesh_cart_m module~precision_m precision_m module~splitting_m->module~precision_m mpi mpi module~comm_handling_m->mpi module~csrmat_m->module~precision_m iso_c_binding iso_c_binding module~csrmat_m->iso_c_binding module~error_handling_m error_handling_m module~csrmat_m->module~error_handling_m module~list_operations_m list_operations_m module~csrmat_m->module~list_operations_m module~screen_io_m screen_io_m module~csrmat_m->module~screen_io_m module~status_codes_m status_codes_m module~csrmat_m->module~status_codes_m netcdf netcdf module~csrmat_m->netcdf module~mesh_cart_m->module~comm_handling_m module~mesh_cart_m->module~precision_m module~mesh_cart_m->iso_c_binding module~descriptors_m descriptors_m module~mesh_cart_m->module~descriptors_m module~equilibrium_m equilibrium_m module~mesh_cart_m->module~equilibrium_m module~mesh_cart_m->module~error_handling_m module~slab_equilibrium_m slab_equilibrium_m module~mesh_cart_m->module~slab_equilibrium_m module~mesh_cart_m->module~status_codes_m module~mesh_cart_m->netcdf module~precision_m->iso_c_binding iso_fortran_env iso_fortran_env module~precision_m->iso_fortran_env module~precision_m->mpi module~precision_m->netcdf module~descriptors_m->module~screen_io_m module~equilibrium_m->module~precision_m module~error_handling_m->module~comm_handling_m module~error_handling_m->module~precision_m module~error_handling_m->module~screen_io_m module~error_handling_m->module~status_codes_m module~error_handling_m->mpi module~error_handling_m->netcdf module~list_operations_m->module~precision_m module~list_operations_m->module~screen_io_m module~screen_io_m->module~precision_m module~screen_io_m->iso_fortran_env module~screen_io_m->netcdf module~slab_equilibrium_m->module~precision_m module~slab_equilibrium_m->module~descriptors_m module~slab_equilibrium_m->module~equilibrium_m module~slab_equilibrium_m->module~screen_io_m module~params_equi_slab_m params_equi_slab_m module~slab_equilibrium_m->module~params_equi_slab_m module~params_equi_slab_m->module~precision_m module~params_equi_slab_m->iso_fortran_env module~params_equi_slab_m->module~error_handling_m module~params_equi_slab_m->module~screen_io_m module~params_equi_slab_m->module~status_codes_m

Used by


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