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 |