m_allocator Module



Interfaces

public interface allocator_t

  • public function allocator_init(mesh, sz) result(allocator)

    Arguments

    Type IntentOptional Attributes Name
    type(mesh_t), intent(inout), target :: mesh
    integer, intent(in) :: sz

    Return Value type(allocator_t)


Derived Types

type, public ::  allocator_t

An instance of type allocator_t is responsible for the maintenance of a linked list of instances of equal size m_allocator objects:

Read more…

Components

Type Visibility Attributes Name Initial
integer, public :: ngrid
integer, public :: next_id = 0

The id for the next allocated block. This counter is incremented each time a new block is allocated.

class(mesh_t), public, pointer :: mesh

The pointer to the first block on the list. Non associated if the list is empty

class(field_t), public, pointer :: first => null()

Constructor

public function allocator_init (mesh, sz)

Type-Bound Procedures

procedure, public :: get_block
procedure, public :: release_block
procedure, public :: create_block
procedure, public :: get_block_ids
procedure, public :: destroy
procedure, public :: compute_padded_dims

type, public ::  flist_t

Components

Type Visibility Attributes Name Initial
class(field_t), public, pointer :: ptr

Functions

public function allocator_init(mesh, sz) result(allocator)

Arguments

Type IntentOptional Attributes Name
type(mesh_t), intent(inout), target :: mesh
integer, intent(in) :: sz

Return Value type(allocator_t)

public function create_block(self, next) result(ptr)

Allocate memory for a new block and return a pointer to a new m_allocator object.

Arguments

Type IntentOptional Attributes Name
class(allocator_t), intent(inout) :: self
type(field_t), intent(in), pointer :: next

Return Value class(field_t), pointer

public function get_block(self, dir, data_loc) result(handle)

Return a pointer to the first available memory block, i.e. the current head of the block list. If the list is empty, allocate a new block with create_block first.

Read more…

Arguments

Type IntentOptional Attributes Name
class(allocator_t), intent(inout) :: self
integer, intent(in) :: dir
integer, intent(in), optional :: data_loc

Return Value class(field_t), pointer

public function get_block_ids(self)

Utility function that returns a array made of the id of the block currently in the block list. Return the array [0] if block list is empty.

Arguments

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

Return Value integer, allocatable, (:)


Subroutines

public subroutine compute_padded_dims(self, sz)

Arguments

Type IntentOptional Attributes Name
class(allocator_t), intent(inout) :: self
integer, intent(in) :: sz

public subroutine release_block(self, handle)

Release memory block pointed to by HANDLE to the block list. It is pushed to the front of the block list, in other words it is made the head block.

Arguments

Type IntentOptional Attributes Name
class(allocator_t), intent(inout) :: self
class(field_t), pointer :: handle

public subroutine destroy(self)

Go through the block list from head to tail, deallocating each memory block in turn. Deallocation of a m_allocator object automatically deallocates its internal allocatable data array.

Arguments

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