CUDA extension of the Tridiagonal Solver Operators class.
Regular tdsops_t class is initiated and the coefficient arrays are copied into device arrays so that cuda kernels can use them.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=dp), | public, | allocatable, dimension(:) | :: | dist_fw |
fw/bw phase back subs. the auxiliary factors |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | dist_bw |
fw/bw phase back subs. the auxiliary factors |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | dist_sa |
fw/bw phase back subs. the auxiliary factors |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | dist_sc |
fw/bw phase back subs. the auxiliary factors |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | dist_af |
fw/bw phase back subs. the auxiliary factors |
||
real(kind=dp), | public, | allocatable, dimension(:) | :: | thom_f | |||
real(kind=dp), | public, | allocatable, dimension(:) | :: | thom_s | |||
real(kind=dp), | public, | allocatable, dimension(:) | :: | thom_w | |||
real(kind=dp), | public, | allocatable, dimension(:) | :: | thom_p | |||
real(kind=dp), | public, | allocatable | :: | stretch(:) | |||
real(kind=dp), | public, | allocatable | :: | stretch_correct(:) | |||
real(kind=dp), | public, | allocatable | :: | coeffs(:) | |||
real(kind=dp), | public, | allocatable | :: | coeffs_s(:,:) | |||
real(kind=dp), | public, | allocatable | :: | coeffs_e(:,:) | |||
real(kind=dp), | public | :: | alpha |
Compact scheme coeffs |
|||
real(kind=dp), | public | :: | a |
Compact scheme coeffs |
|||
real(kind=dp), | public | :: | b |
Compact scheme coeffs |
|||
real(kind=dp), | public | :: | c | = | 0._dp |
Compact scheme coeffs |
|
real(kind=dp), | public | :: | d | = | 0._dp |
Compact scheme coeffs |
|
logical, | public | :: | periodic | ||||
integer, | public | :: | n_tds |
Tridiagonal system size |
|||
integer, | public | :: | n_rhs |
Right-hand-side builder size |
|||
integer, | public | :: | move | = | 0 |
move between vertices and cell centres |
|
integer, | public | :: | n_halo |
number of halo points |
|||
real(kind=dp), | public, | device, allocatable | :: | dist_fw_dev(:) | |||
real(kind=dp), | public, | device, allocatable | :: | dist_bw_dev(:) | |||
real(kind=dp), | public, | device, allocatable | :: | dist_sa_dev(:) | |||
real(kind=dp), | public, | device, allocatable | :: | dist_sc_dev(:) | |||
real(kind=dp), | public, | device, allocatable | :: | dist_af_dev(:) | |||
real(kind=dp), | public, | device, allocatable | :: | thom_f_dev(:) | |||
real(kind=dp), | public, | device, allocatable | :: | thom_s_dev(:) | |||
real(kind=dp), | public, | device, allocatable | :: | thom_w_dev(:) | |||
real(kind=dp), | public, | device, allocatable | :: | thom_p_dev(:) | |||
real(kind=dp), | public, | device, allocatable | :: | stretch_dev(:) | |||
real(kind=dp), | public, | device, allocatable | :: | stretch_correct_dev(:) | |||
real(kind=dp), | public, | device, allocatable | :: | coeffs_dev(:) | |||
real(kind=dp), | public, | device, allocatable | :: | coeffs_s_dev(:,:) | |||
real(kind=dp), | public, | device, allocatable | :: | coeffs_e_dev(:,:) |
Constructor function for the cuda_tdsops_t class. See tdsops_t for details.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | n_tds | |||
real(kind=dp), | intent(in) | :: | delta | |||
character(len=*), | intent(in) | :: | operation | |||
character(len=*), | intent(in) | :: | scheme | |||
integer, | intent(in) | :: | bc_start | |||
integer, | intent(in) | :: | bc_end | |||
real(kind=dp), | intent(in), | optional | :: | stretch(:) | ||
real(kind=dp), | intent(in), | optional | :: | stretch_correct(:) | ||
integer, | intent(in), | optional | :: | n_halo | ||
character(len=*), | intent(in), | optional | :: | from_to | ||
logical, | intent(in), | optional | :: | sym | ||
real(kind=dp), | intent(in), | optional | :: | c_nu | ||
real(kind=dp), | intent(in), | optional | :: | nu0_nu |
return value of the function
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(tdsops_t), | intent(inout) | :: | self | |||
real(kind=dp), | intent(in) | :: | delta | |||
character(len=*), | intent(in) | :: | scheme | |||
character(len=*), | intent(in) | :: | from_to | |||
integer, | intent(in) | :: | bc_start | |||
integer, | intent(in) | :: | bc_end | |||
logical, | intent(in), | optional | :: | sym |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(tdsops_t), | intent(inout) | :: | self | |||
character(len=*), | intent(in) | :: | scheme | |||
character(len=*), | intent(in) | :: | from_to | |||
integer, | intent(in) | :: | bc_start | |||
integer, | intent(in) | :: | bc_end | |||
logical, | intent(in), | optional | :: | sym |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(tdsops_t), | intent(inout) | :: | self | |||
real(kind=dp), | intent(in) | :: | delta | |||
character(len=*), | intent(in) | :: | scheme | |||
integer, | intent(in) | :: | bc_start | |||
integer, | intent(in) | :: | bc_end | |||
logical, | intent(in), | optional | :: | sym | ||
real(kind=dp), | intent(in), | optional | :: | c_nu | ||
real(kind=dp), | intent(in), | optional | :: | nu0_nu |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(tdsops_t), | intent(inout) | :: | self | |||
real(kind=dp), | intent(in) | :: | delta | |||
character(len=*), | intent(in) | :: | scheme | |||
integer, | intent(in) | :: | bc_start | |||
integer, | intent(in) | :: | bc_end | |||
logical, | intent(in), | optional | :: | sym |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(tdsops_t), | intent(inout) | :: | self | |||
real(kind=dp), | intent(in), | dimension(:) | :: | b |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(tdsops_t), | intent(inout) | :: | self | |||
real(kind=dp), | intent(in), | dimension(:) | :: | dist_b |