m_omp_backend Module



Interfaces

public interface omp_backend_t

  • public function init(mesh, allocator) result(backend)

    Arguments

    Type IntentOptional Attributes Name
    class(mesh_t), intent(inout), target :: mesh
    class(allocator_t), intent(inout), target :: allocator

    Return Value type(omp_backend_t)


Derived Types

type, public, extends(base_backend_t) ::  omp_backend_t

Components

Type Visibility Attributes Name Initial
real(kind=dp), public :: nu
class(mesh_t), public, pointer :: mesh
class(allocator_t), public, pointer :: allocator
class(poisson_fft_t), public, pointer :: poisson_fft
integer, public :: MPI_FP_PREC = dp
real(kind=dp), public, allocatable, dimension(:, :, :) :: u_recv_s
real(kind=dp), public, allocatable, dimension(:, :, :) :: u_recv_e
real(kind=dp), public, allocatable, dimension(:, :, :) :: u_send_s
real(kind=dp), public, allocatable, dimension(:, :, :) :: u_send_e
real(kind=dp), public, allocatable, dimension(:, :, :) :: v_recv_s
real(kind=dp), public, allocatable, dimension(:, :, :) :: v_recv_e
real(kind=dp), public, allocatable, dimension(:, :, :) :: v_send_s
real(kind=dp), public, allocatable, dimension(:, :, :) :: v_send_e
real(kind=dp), public, allocatable, dimension(:, :, :) :: w_recv_s
real(kind=dp), public, allocatable, dimension(:, :, :) :: w_recv_e
real(kind=dp), public, allocatable, dimension(:, :, :) :: w_send_s
real(kind=dp), public, allocatable, dimension(:, :, :) :: w_send_e
real(kind=dp), public, allocatable, dimension(:, :, :) :: du_send_s
real(kind=dp), public, allocatable, dimension(:, :, :) :: du_send_e
real(kind=dp), public, allocatable, dimension(:, :, :) :: du_recv_s
real(kind=dp), public, allocatable, dimension(:, :, :) :: du_recv_e
real(kind=dp), public, allocatable, dimension(:, :, :) :: dud_send_s
real(kind=dp), public, allocatable, dimension(:, :, :) :: dud_send_e
real(kind=dp), public, allocatable, dimension(:, :, :) :: dud_recv_s
real(kind=dp), public, allocatable, dimension(:, :, :) :: dud_recv_e
real(kind=dp), public, allocatable, dimension(:, :, :) :: d2u_send_s
real(kind=dp), public, allocatable, dimension(:, :, :) :: d2u_send_e
real(kind=dp), public, allocatable, dimension(:, :, :) :: d2u_recv_s
real(kind=dp), public, allocatable, dimension(:, :, :) :: d2u_recv_e

Constructor

public function init (mesh, allocator)

Type-Bound Procedures

procedure, public :: base_init
procedure, public :: get_field_data
procedure, public :: set_field_data
procedure, public :: alloc_tdsops => alloc_omp_tdsops
procedure, public :: transeq_x => transeq_x_omp
procedure, public :: transeq_y => transeq_y_omp
procedure, public :: transeq_z => transeq_z_omp
procedure, public :: tds_solve => tds_solve_omp
procedure, public :: reorder => reorder_omp
procedure, public :: sum_yintox => sum_yintox_omp
procedure, public :: sum_zintox => sum_zintox_omp
procedure, public :: vecadd => vecadd_omp
procedure, public :: scalar_product => scalar_product_omp
procedure, public :: copy_data_to_f => copy_data_to_f_omp
procedure, public :: copy_f_to_data => copy_f_to_data_omp
procedure, public :: init_poisson_fft => init_omp_poisson_fft
procedure, public :: transeq_omp_dist

Functions

public function init(mesh, allocator) result(backend)

Arguments

Type IntentOptional Attributes Name
class(mesh_t), intent(inout), target :: mesh
class(allocator_t), intent(inout), target :: allocator

Return Value type(omp_backend_t)

public function scalar_product_omp(self, x, y) result(s)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
class(field_t), intent(in) :: x
class(field_t), intent(in) :: y

Return Value real(kind=dp)


Subroutines

public subroutine alloc_omp_tdsops(self, tdsops, dir, operation, scheme, n_halo, from_to, bc_start, bc_end, sym, c_nu, nu0_nu)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
class(tdsops_t), intent(inout), allocatable :: tdsops
integer, intent(in) :: dir
character(len=*), intent(in) :: operation
character(len=*), intent(in) :: scheme
integer, intent(in), optional :: n_halo
character(len=*), intent(in), optional :: from_to
character(len=*), intent(in), optional :: bc_start
character(len=*), intent(in), optional :: bc_end
logical, intent(in), optional :: sym
real(kind=dp), intent(in), optional :: c_nu
real(kind=dp), intent(in), optional :: nu0_nu

public subroutine transeq_x_omp(self, du, dv, dw, u, v, w, dirps)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
class(field_t), intent(inout) :: du
class(field_t), intent(inout) :: dv
class(field_t), intent(inout) :: dw
class(field_t), intent(in) :: u
class(field_t), intent(in) :: v
class(field_t), intent(in) :: w
type(dirps_t), intent(in) :: dirps

public subroutine transeq_y_omp(self, du, dv, dw, u, v, w, dirps)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
class(field_t), intent(inout) :: du
class(field_t), intent(inout) :: dv
class(field_t), intent(inout) :: dw
class(field_t), intent(in) :: u
class(field_t), intent(in) :: v
class(field_t), intent(in) :: w
type(dirps_t), intent(in) :: dirps

public subroutine transeq_z_omp(self, du, dv, dw, u, v, w, dirps)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
class(field_t), intent(inout) :: du
class(field_t), intent(inout) :: dv
class(field_t), intent(inout) :: dw
class(field_t), intent(in) :: u
class(field_t), intent(in) :: v
class(field_t), intent(in) :: w
type(dirps_t), intent(in) :: dirps

public subroutine transeq_omp_dist(self, du, dv, dw, u, v, w, dirps)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
class(field_t), intent(inout) :: du
class(field_t), intent(inout) :: dv
class(field_t), intent(inout) :: dw
class(field_t), intent(in) :: u
class(field_t), intent(in) :: v
class(field_t), intent(in) :: w
type(dirps_t), intent(in) :: dirps

public subroutine tds_solve_omp(self, du, u, tdsops)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
class(field_t), intent(inout) :: du
class(field_t), intent(in) :: u
class(tdsops_t), intent(in) :: tdsops

public subroutine tds_solve_dist(self, du, u, tdsops)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
class(field_t), intent(inout) :: du
class(field_t), intent(in) :: u
class(tdsops_t), intent(in) :: tdsops

public subroutine reorder_omp(self, u_, u, direction)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
class(field_t), intent(inout) :: u_
class(field_t), intent(in) :: u
integer, intent(in) :: direction

public subroutine sum_yintox_omp(self, u, u_)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
class(field_t), intent(inout) :: u
class(field_t), intent(in) :: u_

public subroutine sum_zintox_omp(self, u, u_)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
class(field_t), intent(inout) :: u
class(field_t), intent(in) :: u_

public subroutine sum_intox_omp(self, u, u_, dir_to)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
class(field_t), intent(inout) :: u
class(field_t), intent(in) :: u_
integer, intent(in) :: dir_to

public subroutine vecadd_omp(self, a, x, b, y)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
real(kind=dp), intent(in) :: a
class(field_t), intent(in) :: x
real(kind=dp), intent(in) :: b
class(field_t), intent(inout) :: y

public subroutine copy_into_buffers(u_send_s, u_send_e, u, n, n_groups)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(out), dimension(:, :, :) :: u_send_s
real(kind=dp), intent(out), dimension(:, :, :) :: u_send_e
real(kind=dp), intent(in), dimension(:, :, :) :: u
integer, intent(in) :: n
integer, intent(in) :: n_groups

public subroutine copy_data_to_f_omp(self, f, data)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t), intent(inout) :: self
class(field_t), intent(inout) :: f
real(kind=dp), intent(in), dimension(:, :, :) :: data

public subroutine copy_f_to_data_omp(self, data, f)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t), intent(inout) :: self
real(kind=dp), intent(out), dimension(:, :, :) :: data
class(field_t), intent(in) :: f

public subroutine init_omp_poisson_fft(self, mesh, xdirps, ydirps, zdirps)

Arguments

Type IntentOptional Attributes Name
class(omp_backend_t) :: self
class(mesh_t), intent(in) :: mesh
type(dirps_t), intent(in) :: xdirps
type(dirps_t), intent(in) :: ydirps
type(dirps_t), intent(in) :: zdirps