rowblock_type Derived Type

type, private :: rowblock_type

This is the lowest level of data object and will hold the actual data involved with the field matrix


Contents

Source Code


Components

Type Visibility Attributes Name Initial
complex, public, dimension(:,:), allocatable :: data

This is the field data

integer, public :: row_llim

The row limits this block corresponds to

integer, public :: row_ulim

The row limits this block corresponds to

integer, public :: col_llim

The col limits this block corresponds to

integer, public :: col_ulim

The col limits this block corresponds to

integer, public :: nrow

The size of the row block

integer, public :: ncol

The size of the row block

complex, public, dimension(:), allocatable :: tmp_sum

Work space for field update

integer, public :: ir_ind

Property of rowblock

integer, public :: it_ind

Details of parents

integer, public :: ik_ind

Details of parents

integer, public :: is_ind

Details of parents so cell can find itself

integer, public :: ic_ind

Details of parents so cell can find itself


Type-Bound Procedures

procedure, private, :: deallocate => rb_deallocate

  • private subroutine rb_deallocate(self)

    Deallocate storage space

    Arguments

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

procedure, private, :: allocate => rb_allocate

  • private subroutine rb_allocate(self)

    Allocate storage space

    Arguments

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

procedure, private, :: init => rb_init

  • private subroutine rb_init(self, ifq, ic, it, is, ik, ncol, nextend)

    Initialise the members of the rowblock instance

    Arguments

    Type IntentOptional Attributes Name
    class(rowblock_type), intent(inout) :: self
    integer, intent(in) :: ifq
    integer, intent(in) :: ic
    integer, intent(in) :: it
    integer, intent(in) :: is
    integer, intent(in) :: ik
    integer, intent(in) :: ncol
    integer, intent(in) :: nextend

    The length of the parent supercell's real space domain. Represents the spacing between the start of different field/field equations as we store data as the full real space domain for each field, e.g. [fieldeq(:), fieldeqa(:), fieldeqp(:)], rather than say interleaved, e.g. [[fieldeq(1), fieldeqa(1), fieldeqp(1)], [fieldeq(2), fieldeqa(2), fieldeqp(2)],...]

procedure, private, :: debug_print => rb_debug_print

  • private subroutine rb_debug_print(self)

    Debug printing

    Arguments

    Type IntentOptional Attributes Name
    class(rowblock_type), intent(in) :: self

procedure, private, :: mv_mult_fun => rb_mv_mult_fun

  • private function rb_mv_mult_fun(self, vect)

    Matrix vector multiplication

    Arguments

    Type IntentOptional Attributes Name
    class(rowblock_type), intent(in) :: self
    complex, intent(in), dimension(self%ncol) :: vect

    Return Value complex, dimension(self%nrow)

procedure, private, :: mv_mult => rb_mv_mult

  • private subroutine rb_mv_mult(self, vect)

    Matrix vector multiplication stored in tmp_sum

    Arguments

    Type IntentOptional Attributes Name
    class(rowblock_type), intent(inout) :: self
    complex, intent(in), dimension(self%ncol) :: vect

procedure, private, :: irex_to_ir => rb_irex_to_irloc

  • private function rb_irex_to_irloc(self, irex)

    Convert extended row index to local row index

    Arguments

    Type IntentOptional Attributes Name
    class(rowblock_type), intent(in) :: self
    integer, intent(in) :: irex

    Return Value integer

procedure, private, :: reset => rb_reset

  • private subroutine rb_reset(self)

    A routine to reset the object

    Arguments

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

procedure, private, :: set_nrow => rb_set_nrow

  • private subroutine rb_set_nrow(self)

    Set the nrow variables

    Arguments

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

Source Code

  type, private :: rowblock_type
     complex, dimension(:,:), allocatable :: data !< This is the field data
     integer :: row_llim, row_ulim !< The row limits this block corresponds to
     integer :: col_llim, col_ulim !< The col limits this block corresponds to
     integer :: nrow, ncol !< The size of the row block
     complex, dimension(:),allocatable :: tmp_sum !< Work space for field update
     !/Row and parent properties. Mostly for debug printing
     integer :: ir_ind !< Property of rowblock
     integer :: it_ind, ik_ind !< Details of parents
     integer :: is_ind, ic_ind !< Details of parents so cell can find itself
   contains
     private
     procedure :: deallocate => rb_deallocate
     procedure :: allocate => rb_allocate
     procedure :: init => rb_init
     procedure :: debug_print => rb_debug_print
     procedure :: mv_mult_fun => rb_mv_mult_fun
     procedure :: mv_mult => rb_mv_mult
     procedure :: irex_to_ir => rb_irex_to_irloc
     procedure :: reset => rb_reset
     procedure :: set_nrow => rb_set_nrow
  end type rowblock_type