Octopus
nl_operator_oct_m Module Reference

This module defines non-local operators. More...

Detailed Description

This module defines non-local operators.

Data Types

type  nl_operator_index_t
 index type for non-local operators More...
 
type  nl_operator_t
 data type for non local operators More...
 
interface  op_is_available
 

Functions/Subroutines

subroutine, public nl_operator_global_init (namespace)
 initialize global settings for non-local operators More...
 
subroutine, public nl_operator_global_end ()
 
subroutine, public nl_operator_init (op, label)
 initialize an instance of a non-local operator by setting the label More...
 
subroutine, public nl_operator_copy (opo, opi)
 
subroutine, public nl_operator_build (space, mesh, op, np, const_w, regenerate)
 
subroutine, public nl_operator_output_weights (this)
 
subroutine, public nl_operator_adjoint (op, opt, mesh, self_adjoint)
 opt has to be initialised and built. More...
 
subroutine, public nl_operator_end (op)
 
integer pure function, public nl_operator_get_index (op, is, ip)
 
subroutine, public nl_operator_allocate_gpu_buffers (op)
 
subroutine, public nl_operator_update_gpu_buffers (op)
 
integer pure function, public nl_operator_np_zero_bc (op)
 
logical pure function, public nl_operator_compact_boundaries ()
 
subroutine, public dnl_operator_operate_batch (op, fi, fo, ghost_update, profile, points, factor, async)
 
subroutine, public dnl_operator_operate (op, fi, fo, ghost_update, profile, points)
 
subroutine, public dnl_operator_operate_diag (op, fo)
 
subroutine, public znl_operator_operate_batch (op, fi, fo, ghost_update, profile, points, factor, async)
 
subroutine, public znl_operator_operate (op, fi, fo, ghost_update, profile, points)
 
subroutine, public znl_operator_operate_diag (op, fo)
 

Variables

integer, parameter op_fortran = 0
 
integer, parameter op_vec = 1
 
integer, parameter op_min = OP_FORTRAN
 
integer, parameter op_max = OP_VEC
 
integer, parameter op_invmap = 1
 
integer, parameter op_map = 2
 
integer, parameter op_nomap = 3
 
integer, parameter, public op_all = 3
 
integer, parameter, public op_inner = 1
 
integer, parameter, public op_outer = 2
 
logical compact_boundaries
 
integer dfunction_global = -1
 
integer zfunction_global = -1
 
integer function_opencl
 

Function/Subroutine Documentation

◆ nl_operator_global_init()

subroutine, public nl_operator_oct_m::nl_operator_global_init ( type(namespace_t), intent(in)  namespace)

initialize global settings for non-local operators

Definition at line 254 of file nl_operator.F90.

◆ nl_operator_global_end()

subroutine, public nl_operator_oct_m::nl_operator_global_end

Definition at line 338 of file nl_operator.F90.

◆ nl_operator_init()

subroutine, public nl_operator_oct_m::nl_operator_init ( type(nl_operator_t), intent(inout)  op,
character(len=*), intent(in)  label 
)

initialize an instance of a non-local operator by setting the label

Definition at line 348 of file nl_operator.F90.

◆ nl_operator_copy()

subroutine, public nl_operator_oct_m::nl_operator_copy ( type(nl_operator_t), intent(inout)  opo,
type(nl_operator_t), intent(in), target  opi 
)

Definition at line 361 of file nl_operator.F90.

◆ nl_operator_build()

subroutine, public nl_operator_oct_m::nl_operator_build ( class(space_t), intent(in)  space,
type(mesh_t), intent(in), target  mesh,
type(nl_operator_t), intent(inout)  op,
integer, intent(in)  np,
logical, intent(in), optional  const_w,
logical, intent(in), optional  regenerate 
)
Parameters
[in]npNumber of (local) points.
[in]const_ware the weights constant (independent of the point)

Definition at line 416 of file nl_operator.F90.

◆ nl_operator_output_weights()

subroutine, public nl_operator_oct_m::nl_operator_output_weights ( type(nl_operator_t), intent(inout)  this)

Definition at line 710 of file nl_operator.F90.

◆ nl_operator_adjoint()

subroutine, public nl_operator_oct_m::nl_operator_adjoint ( type(nl_operator_t), intent(in), target  op,
type(nl_operator_t), intent(out), target  opt,
type(mesh_t), intent(in), target  mesh,
logical, intent(in)  self_adjoint 
)

opt has to be initialised and built.

Parameters
[in]self_adjointif .true., make the operator self-adjoint, else skew-self-adjoint

Definition at line 746 of file nl_operator.F90.

◆ nl_operator_end()

subroutine, public nl_operator_oct_m::nl_operator_end ( type(nl_operator_t), intent(inout)  op)

Definition at line 830 of file nl_operator.F90.

◆ nl_operator_get_index()

integer pure function, public nl_operator_oct_m::nl_operator_get_index ( type(nl_operator_t), intent(in)  op,
integer, intent(in)  is,
integer, intent(in)  ip 
)

Definition at line 883 of file nl_operator.F90.

◆ nl_operator_allocate_gpu_buffers()

subroutine, public nl_operator_oct_m::nl_operator_allocate_gpu_buffers ( type(nl_operator_t), intent(inout)  op)

Definition at line 893 of file nl_operator.F90.

◆ nl_operator_update_gpu_buffers()

subroutine, public nl_operator_oct_m::nl_operator_update_gpu_buffers ( type(nl_operator_t), intent(inout)  op)

Definition at line 910 of file nl_operator.F90.

◆ nl_operator_np_zero_bc()

integer pure function, public nl_operator_oct_m::nl_operator_np_zero_bc ( type(nl_operator_t), intent(in)  op)

Definition at line 926 of file nl_operator.F90.

◆ nl_operator_compact_boundaries()

logical pure function, public nl_operator_oct_m::nl_operator_compact_boundaries

Definition at line 941 of file nl_operator.F90.

◆ dnl_operator_operate_batch()

subroutine, public nl_operator_oct_m::dnl_operator_operate_batch ( type(nl_operator_t), intent(in), target  op,
type(batch_t), intent(inout), target  fi,
type(batch_t), intent(inout)  fo,
logical, intent(in), optional  ghost_update,
logical, intent(in), optional  profile,
integer, intent(in), optional  points,
real(real64), intent(in), optional  factor,
logical, intent(in), optional  async 
)
Parameters
[in,out]fothis should be target, but old ifort 9.1 segfaults with it

Definition at line 1016 of file nl_operator.F90.

◆ dnl_operator_operate()

subroutine, public nl_operator_oct_m::dnl_operator_operate ( type(nl_operator_t), intent(in)  op,
real(real64), dimension(:), intent(inout), contiguous  fi,
real(real64), dimension(:), intent(out), target, contiguous  fo,
logical, intent(in), optional  ghost_update,
logical, intent(in), optional  profile,
integer, intent(in), optional  points 
)
Parameters
[in,out]fifi(opnp_part)

Definition at line 1467 of file nl_operator.F90.

◆ dnl_operator_operate_diag()

subroutine, public nl_operator_oct_m::dnl_operator_operate_diag ( type(nl_operator_t), intent(in)  op,
real(real64), dimension(:), intent(out)  fo 
)

Definition at line 1492 of file nl_operator.F90.

◆ znl_operator_operate_batch()

subroutine, public nl_operator_oct_m::znl_operator_operate_batch ( type(nl_operator_t), intent(in), target  op,
type(batch_t), intent(inout), target  fi,
type(batch_t), intent(inout)  fo,
logical, intent(in), optional  ghost_update,
logical, intent(in), optional  profile,
integer, intent(in), optional  points,
real(real64), intent(in), optional  factor,
logical, intent(in), optional  async 
)
Parameters
[in,out]fothis should be target, but old ifort 9.1 segfaults with it

Definition at line 1584 of file nl_operator.F90.

◆ znl_operator_operate()

subroutine, public nl_operator_oct_m::znl_operator_operate ( type(nl_operator_t), intent(in)  op,
complex(real64), dimension(:), intent(inout), contiguous  fi,
complex(real64), dimension(:), intent(out), target, contiguous  fo,
logical, intent(in), optional  ghost_update,
logical, intent(in), optional  profile,
integer, intent(in), optional  points 
)
Parameters
[in,out]fifi(opnp_part)

Definition at line 2035 of file nl_operator.F90.

◆ znl_operator_operate_diag()

subroutine, public nl_operator_oct_m::znl_operator_operate_diag ( type(nl_operator_t), intent(in)  op,
complex(real64), dimension(:), intent(out)  fo 
)

Definition at line 2060 of file nl_operator.F90.

Variable Documentation

◆ op_fortran

integer, parameter nl_operator_oct_m::op_fortran = 0
private

Definition at line 223 of file nl_operator.F90.

◆ op_vec

integer, parameter nl_operator_oct_m::op_vec = 1
private

Definition at line 223 of file nl_operator.F90.

◆ op_min

integer, parameter nl_operator_oct_m::op_min = OP_FORTRAN
private

Definition at line 223 of file nl_operator.F90.

◆ op_max

integer, parameter nl_operator_oct_m::op_max = OP_VEC
private

Definition at line 223 of file nl_operator.F90.

◆ op_invmap

integer, parameter nl_operator_oct_m::op_invmap = 1
private

Definition at line 229 of file nl_operator.F90.

◆ op_map

integer, parameter nl_operator_oct_m::op_map = 2
private

Definition at line 229 of file nl_operator.F90.

◆ op_nomap

integer, parameter nl_operator_oct_m::op_nomap = 3
private

Definition at line 229 of file nl_operator.F90.

◆ op_all

integer, parameter, public nl_operator_oct_m::op_all = 3

Definition at line 234 of file nl_operator.F90.

◆ op_inner

integer, parameter, public nl_operator_oct_m::op_inner = 1

Definition at line 234 of file nl_operator.F90.

◆ op_outer

integer, parameter, public nl_operator_oct_m::op_outer = 2

Definition at line 234 of file nl_operator.F90.

◆ compact_boundaries

logical nl_operator_oct_m::compact_boundaries
private

Definition at line 236 of file nl_operator.F90.

◆ dfunction_global

integer nl_operator_oct_m::dfunction_global = -1
private

Definition at line 245 of file nl_operator.F90.

◆ zfunction_global

integer nl_operator_oct_m::zfunction_global = -1
private

Definition at line 246 of file nl_operator.F90.

◆ function_opencl

integer nl_operator_oct_m::function_opencl
private

Definition at line 247 of file nl_operator.F90.