This is the next level up of data and represents the ky type. A ky block consists of a number of supercells
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(supercell_type), | public, | dimension(:), allocatable | :: | supercells |
These are the supercells |
||
integer, | public | :: | nsupercell | ||||
logical, | public | :: | is_local |
Does this supercell have any data on this proc? |
|||
logical, | public | :: | is_empty |
Have we got any data for this supercell on this proc? |
|||
logical, | public | :: | is_all_local |
Is all of this supercells data on this proc? |
|||
logical, | public | :: | initdone |
Have we finished initialising this block? |
|||
type(comm_type), | public | :: | ky_sub_all |
Sub communicator involving all processors with this ky |
|||
type(comm_type), | public | :: | parent_sub |
Sub communicator involving all processors in parent |
|||
integer, | public | :: | ik_ind |
Deallocate storage space
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ky_type), | intent(inout) | :: | self |
Allocate storage space
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ky_type), | intent(inout) | :: | self |
Setup properties of ky_type instance
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ky_type), | intent(inout) | :: | self | |||
integer, | intent(in) | :: | ik | |||
integer, | intent(in), | dimension(:) | :: | itmins | ||
integer, | intent(in) | :: | nsupercell | |||
integer, | intent(in) | :: | nfield | |||
integer, | intent(inout) | :: | nbound |
Debug printing
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ky_type), | intent(in) | :: | self |
Get the field update for this ik
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ky_type), | intent(inout) | :: | self | |||
complex, | intent(in), | dimension(:,:) | :: | fq | ||
complex, | intent(in), | dimension(:,:) | :: | fqa | ||
complex, | intent(in), | dimension(:,:) | :: | fqp |
Set the locality of each object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ky_type), | intent(inout) | :: | self |
Given it say what the supercell id is
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ky_type), | intent(inout) | :: | self | |||
integer, | intent(in) | :: | it |
Store the field equation at row level
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ky_type), | intent(inout) | :: | self | |||
complex, | intent(in), | dimension(:,:,:) | :: | fq | ||
complex, | intent(in), | dimension(:,:,:) | :: | fqa | ||
complex, | intent(in), | dimension(:,:,:) | :: | fqp | ||
integer, | intent(in) | :: | ifl_in | |||
integer, | intent(in) | :: | it_in | |||
integer, | intent(in) | :: | ig_in |
Prepare the field matrix for calculating field updates
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ky_type), | intent(inout) | :: | self | |||
integer, | intent(in) | :: | prepare_type |
Create the primary subcommunicators
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ky_type), | intent(inout) | :: | self |
Create the secondary subcommunicators
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ky_type), | intent(inout) | :: | self |
type, private :: ky_type
type(supercell_type), dimension(:), allocatable :: supercells !< These are the supercells
integer :: nsupercell
logical :: is_local !< Does this supercell have any data on this proc?
logical :: is_empty !< Have we got any data for this supercell on this proc?
logical :: is_all_local !< Is all of this supercells data on this proc?
logical :: initdone !< Have we finished initialising this block?
type(comm_type) :: ky_sub_all !< Sub communicator involving all processors with this ky
type(comm_type) :: parent_sub !< Sub communicator involving all processors in parent
!Cell and parent properties. Mostly for debug printing.
integer :: ik_ind
contains
private
procedure :: deallocate => ky_deallocate
procedure :: allocate => ky_allocate
procedure :: init => ky_init
procedure :: debug_print => ky_debug_print
procedure :: get_field_update => ky_get_field_update
procedure :: reset => ky_reset
procedure :: set_locality => ky_set_locality
procedure :: is_from_it => ky_is_from_it
procedure :: store_fq => ky_store_fq
procedure :: prepare => ky_prepare
procedure :: make_subcom_1 => ky_make_subcom_1
procedure :: make_subcom_2 => ky_make_subcom_2
end type ky_type