Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mesh_t), | intent(inout), | target | :: | mesh | ||
integer, | intent(in) | :: | sz |
An instance of type allocator_t is responsible for the maintenance of a linked list of instances of equal size m_allocator objects:
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() |
public function allocator_init (mesh, sz) |
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 | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(mesh_t), | intent(inout), | target | :: | mesh | ||
integer, | intent(in) | :: | sz |
Allocate memory for a new block and return a pointer to a new m_allocator object.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(allocator_t), | intent(inout) | :: | self | |||
type(field_t), | intent(in), | pointer | :: | next |
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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(allocator_t), | intent(inout) | :: | self | |||
integer, | intent(in) | :: | dir | |||
integer, | intent(in), | optional | :: | data_loc |
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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(allocator_t), | intent(inout) | :: | self |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(allocator_t), | intent(inout) | :: | self | |||
integer, | intent(in) | :: | sz |
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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(allocator_t), | intent(inout) | :: | self | |||
class(field_t), | pointer | :: | handle |
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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(allocator_t), | intent(inout) | :: | self |