This module provides the base class absract_vector from which all Krylov vectors
needs to be derived. To use LightKrylov, you need to extend one of the
followings:
abstract_vector_rsp : Real-valued vector with single precision arithmetic.abstract_vector_rdp : Real-valued vector with double precision arithmetic.abstract_vector_csp : Complex-valued vector with single precision arithmetic.abstract_vector_cdp : Complex-valued vector with double precision arithmetic.To extend either of these abstract types, you need to provide an associated implementation for the following type-bound procedures:
zero(self) : A subroutine zeroing-out the vector.rand(self, ifnorm) : A subroutine creating a random vector, possibily normalized to have unit-norm (ifnorm = .true.).scal(self, alpha) : A subroutine computing in-place the scalar multiplication .dot(self, vec) : A function computing the inner product .get_size(self) : A function returning the dimension of the vector .Once these type-bound procedures have been implemented by the user, they will automatically be used to define:
add(self, vec) = axpby(1, vec, 1, self)sub(self, vec) = axpby(-1, vec, 1, self)norm(self) = sqrt(self%dot(self))This module also provides the following utility subroutines:
innerprod(X, Y) : Function computing the product between a Krylov basis X and a Krylov vector (resp. basis) Y.linear_combination(Y, X, V) : Subroutine computing the linear combination .axpby_basis(alpha, X, beta, Y) : In-place computation of where X and Y are arrays of abstract_vector.zero_basis(X) : Zero-out a collection of abstract_vectors.copy_basis(out, from) : Copy a collection of abstract_vectors.rand_basis(X, ifnorm) : Create a collection of random abstract_vectors. If ifnorm = .true., the vectors are normalized to have unit-norm.Compute the Gram matrix .
This interface provides methods for computing the Gram matrix associated to a basis of
abstract_vector .
The example below assumes that you have already extended the abstract_vector_rdp
class to define your own my_real_vector type.
type(my_real_vector), dimension(10) :: X
real(dp), dimension(:, :), allocatable :: G
! ... Part of your code where you initialize everything ...
G = Gram(X)
! ... Rest of your code ...
Computes the inner product/Gram matrix associated with the basis .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rsp), | intent(in) | :: | X(:) |
Computes the inner product/Gram matrix associated with the basis .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rdp), | intent(in) | :: | X(:) |
Computes the inner product/Gram matrix associated with the basis .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_csp), | intent(in) | :: | X(:) |
Computes the inner product/Gram matrix associated with the basis .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_cdp), | intent(in) | :: | X(:) |
In-place addition of two arrays of extended abstract_vector.
This interface provides methods to add in-place two arrays of
extended abstract_vector, i.e.
No out-of-place alternative is currently available in LightKrylov.
If you do need an out-of-place version, you can combine axpby_basis
with copy.
type(my_real_vector), dimension(10) :: X
type(my_real_vector), dimension(10) :: Y
real(dp), dimension(10) :: alpha, beta
! ... Whatever your code is doing ...
call axpby_basis(alpha, X, beta, Y)
! ... Rest of your code ...
Compute in-place where
X and Y are arrays of abstract_vector and alpha and beta are real(sp)
numbers.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=sp), | intent(in) | :: | alpha |
Scalar multipliers. |
||
| class(abstract_vector_rsp), | intent(in) | :: | X |
Input/Ouput array of |
||
| real(kind=sp), | intent(in) | :: | beta |
Scalar multipliers. |
||
| class(abstract_vector_rsp), | intent(inout) | :: | Y |
Array of |
Compute in-place where
X and Y are arrays of abstract_vector and alpha and beta are real(dp)
numbers.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | alpha |
Scalar multipliers. |
||
| class(abstract_vector_rdp), | intent(in) | :: | X |
Input/Ouput array of |
||
| real(kind=dp), | intent(in) | :: | beta |
Scalar multipliers. |
||
| class(abstract_vector_rdp), | intent(inout) | :: | Y |
Array of |
Compute in-place where
X and Y are arrays of abstract_vector and alpha and beta are complex(sp)
numbers.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=sp), | intent(in) | :: | alpha |
Scalar multipliers. |
||
| class(abstract_vector_csp), | intent(in) | :: | X |
Input/Ouput array of |
||
| complex(kind=sp), | intent(in) | :: | beta |
Scalar multipliers. |
||
| class(abstract_vector_csp), | intent(inout) | :: | Y |
Array of |
Compute in-place where
X and Y are arrays of abstract_vector and alpha and beta are complex(dp)
numbers.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=dp), | intent(in) | :: | alpha |
Scalar multipliers. |
||
| class(abstract_vector_cdp), | intent(in) | :: | X |
Input/Ouput array of |
||
| complex(kind=dp), | intent(in) | :: | beta |
Scalar multipliers. |
||
| class(abstract_vector_cdp), | intent(inout) | :: | Y |
Array of |
This interface provides methods to copy an array X of abstract_vector into
another array Y. Note that Y needs to be pre-allocated.
type(my_real_vector), dimension(10) :: X
type(my_real_vector), dimension(10) :: Y
! ... Your code ...
call copy(Y, X)
! ... Your code ...
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rsp), | intent(out) | :: | out | |||
| class(abstract_vector_rsp), | intent(in) | :: | from |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rdp), | intent(out) | :: | out | |||
| class(abstract_vector_rdp), | intent(in) | :: | from |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_csp), | intent(out) | :: | out | |||
| class(abstract_vector_csp), | intent(in) | :: | from |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_cdp), | intent(out) | :: | out | |||
| class(abstract_vector_cdp), | intent(in) | :: | from |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=sp), | intent(in) | :: | x(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | x(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=sp), | intent(in) | :: | x(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=dp), | intent(in) | :: | x(:) |
Compute the inner product vector or matrix .
This interface provides methods for computing the inner products between a basis
of real or complex vectors and a single vector
or another basis . Depending on the case, it
returns a one-dimensional array or a two-dimensional array
with the same type as .
The example below assumes that you have already extended the abstract_vector_rdp
class to define your own my_real_vector type.
type(my_real_vector), dimension(10) :: X
type(my_real_vector) :: y
real(dp), dimension(:), allocatable :: v
! ... Part of your code where you initialize everything ...
v = innerprod(X, y)
! ... Rest of your code ...
Similarly, for computing the matrix of inner products between two bases
type(my_real_vector), dimension(10) :: X
type(my_real_vector), dimension(10) :: Y
real(dp), dimension(:, :), allocatable :: M
! ... Part of your code where you initialize everything ...
M = innerprod(X, Y)
! ... Rest of your code ...
Computes the inner product vector between
a basis X of abstract_vector and v, a single abstract_vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rsp), | intent(in) | :: | X(:) |
Basis and single instance of |
||
| class(abstract_vector_rsp), | intent(in) | :: | v |
Basis and single instance of |
Resulting inner-product vector.
Computes the inner product matrix between
two bases of abstract_vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rsp), | intent(in) | :: | X(:) |
Bases of |
||
| class(abstract_vector_rsp), | intent(in) | :: | Y(:) |
Bases of |
Resulting inner-product matrix.
Computes the inner product vector between
a basis X of abstract_vector and v, a single abstract_vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rdp), | intent(in) | :: | X(:) |
Basis and single instance of |
||
| class(abstract_vector_rdp), | intent(in) | :: | v |
Basis and single instance of |
Resulting inner-product vector.
Computes the inner product matrix between
two bases of abstract_vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rdp), | intent(in) | :: | X(:) |
Bases of |
||
| class(abstract_vector_rdp), | intent(in) | :: | Y(:) |
Bases of |
Resulting inner-product matrix.
Computes the inner product vector between
a basis X of abstract_vector and v, a single abstract_vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_csp), | intent(in) | :: | X(:) |
Basis and single instance of |
||
| class(abstract_vector_csp), | intent(in) | :: | v |
Basis and single instance of |
Resulting inner-product vector.
Computes the inner product matrix between
two bases of abstract_vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_csp), | intent(in) | :: | X(:) |
Bases of |
||
| class(abstract_vector_csp), | intent(in) | :: | Y(:) |
Bases of |
Resulting inner-product matrix.
Computes the inner product vector between
a basis X of abstract_vector and v, a single abstract_vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_cdp), | intent(in) | :: | X(:) |
Basis and single instance of |
||
| class(abstract_vector_cdp), | intent(in) | :: | v |
Basis and single instance of |
Resulting inner-product vector.
Computes the inner product matrix between
two bases of abstract_vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_cdp), | intent(in) | :: | X(:) |
Bases of |
||
| class(abstract_vector_cdp), | intent(in) | :: | Y(:) |
Bases of |
Resulting inner-product matrix.
Given a set of extended abstract_vectors and coefficients, return the corresponding
linear combinations.
This interface provides methods for computing linear combinations of a set of
abstract_vectors. Depending on its input, it either computes
i.e. a single vector, or
i.e. a set of vectors of the same type as .
type(my_real_vector), dimension(10) :: X
real(dp), dimension(m, n) :: B
type(my_real_vector) :: Y
! ... Whatever your code is doing ...
call linear_combination(Y, X, B)
! ... Rest of your code ...
Given X and v, this function return where
y is an abstract_vector, X an array of abstract_vector and v a
Fortran array containing the coefficients of the linear combination.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rsp), | intent(out), | allocatable | :: | y |
Ouput vector. |
|
| class(abstract_vector_rsp), | intent(in) | :: | X(:) |
Krylov basis. |
||
| real(kind=sp), | intent(in) | :: | v(:) |
Coordinates of |
Given X and B, this function computes where
X and Y are arrays of abstract_vector, and B is a 2D Fortran array.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rsp), | intent(out), | allocatable | :: | Y(:) |
Output matrix. |
|
| class(abstract_vector_rsp), | intent(in) | :: | X(:) |
Krylov basis. |
||
| real(kind=sp), | intent(in) | :: | B(:,:) |
Coefficients of the linear combinations. |
Given X and v, this function return where
y is an abstract_vector, X an array of abstract_vector and v a
Fortran array containing the coefficients of the linear combination.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rdp), | intent(out), | allocatable | :: | y |
Ouput vector. |
|
| class(abstract_vector_rdp), | intent(in) | :: | X(:) |
Krylov basis. |
||
| real(kind=dp), | intent(in) | :: | v(:) |
Coordinates of |
Given X and B, this function computes where
X and Y are arrays of abstract_vector, and B is a 2D Fortran array.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rdp), | intent(out), | allocatable | :: | Y(:) |
Output matrix. |
|
| class(abstract_vector_rdp), | intent(in) | :: | X(:) |
Krylov basis. |
||
| real(kind=dp), | intent(in) | :: | B(:,:) |
Coefficients of the linear combinations. |
Given X and v, this function return where
y is an abstract_vector, X an array of abstract_vector and v a
Fortran array containing the coefficients of the linear combination.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_csp), | intent(out), | allocatable | :: | y |
Ouput vector. |
|
| class(abstract_vector_csp), | intent(in) | :: | X(:) |
Krylov basis. |
||
| complex(kind=sp), | intent(in) | :: | v(:) |
Coordinates of |
Given X and B, this function computes where
X and Y are arrays of abstract_vector, and B is a 2D Fortran array.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_csp), | intent(out), | allocatable | :: | Y(:) |
Output matrix. |
|
| class(abstract_vector_csp), | intent(in) | :: | X(:) |
Krylov basis. |
||
| complex(kind=sp), | intent(in) | :: | B(:,:) |
Coefficients of the linear combinations. |
Given X and v, this function return where
y is an abstract_vector, X an array of abstract_vector and v a
Fortran array containing the coefficients of the linear combination.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_cdp), | intent(out), | allocatable | :: | y |
Ouput vector. |
|
| class(abstract_vector_cdp), | intent(in) | :: | X(:) |
Krylov basis. |
||
| complex(kind=dp), | intent(in) | :: | v(:) |
Coordinates of |
Given X and B, this function computes where
X and Y are arrays of abstract_vector, and B is a 2D Fortran array.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_cdp), | intent(out), | allocatable | :: | Y(:) |
Output matrix. |
|
| class(abstract_vector_cdp), | intent(in) | :: | X(:) |
Krylov basis. |
||
| complex(kind=dp), | intent(in) | :: | B(:,:) |
Coefficients of the linear combinations. |
This interface provides methods to create an array X of random abstract_vector.
It is a simple wrapper around X(i)%rand(ifnorm).
type(my_real_vector), dimension(10) :: X
logical :: ifnorm = .true.
! ... Your code ...
call rand_basis(X, ifnorm)
! ... Your code ...
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rsp), | intent(inout) | :: | X | |||
| logical, | intent(in), | optional | :: | ifnorm |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rdp), | intent(inout) | :: | X | |||
| logical, | intent(in), | optional | :: | ifnorm |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_csp), | intent(inout) | :: | X | |||
| logical, | intent(in), | optional | :: | ifnorm |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_cdp), | intent(inout) | :: | X | |||
| logical, | intent(in), | optional | :: | ifnorm |
This interface provides methods to zero-out a collection of abstract_vector X.
It is a simple wrapper around X(i)%zero().
type(my_real_vector), dimension(10) :: X
! ... Your code ...
call zero_basis(X)
! ... Your code ...
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rsp), | intent(inout) | :: | X |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_rdp), | intent(inout) | :: | X |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_csp), | intent(inout) | :: | X |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(abstract_vector_cdp), | intent(inout) | :: | X |
Base abstract type from which all other types of vectors used in LightKrylov
are being derived from.
Abstract type to define complex(dp)-valued vectors. Derived-types defined by the user should be extending one such class.
| procedure, public, pass(self) :: add => add_cdp | Adds two |
| procedure(abstract_axpby_cdp), public, deferred, pass(self) :: axpby | In-place computation of . |
| procedure, public, pass(self) :: chsgn => chsgn_cdp | Change the sign of a vector, i.e. . |
| procedure(abstract_dot_cdp), public, deferred, pass(self) :: dot | Computes the dot product between two |
| procedure(abstract_get_size_cdp), public, deferred, pass(self) :: get_size | Return size of specific abstract vector |
| procedure, public, pass(self) :: norm => norm_cdp | Computes the norm of the |
| procedure(abstract_rand_cdp), public, deferred, pass(self) :: rand | Creates a random |
| procedure(abstract_scal_cdp), public, deferred, pass(self) :: scal | Compute the scalar-vector product. |
| procedure, public, pass(self) :: sub => sub_cdp | Subtracts two |
| procedure(abstract_zero_cdp), public, deferred, pass(self) :: zero | Sets an |
Abstract type to define complex(sp)-valued vectors. Derived-types defined by the user should be extending one such class.
| procedure, public, pass(self) :: add => add_csp | Adds two |
| procedure(abstract_axpby_csp), public, deferred, pass(self) :: axpby | In-place computation of . |
| procedure, public, pass(self) :: chsgn => chsgn_csp | Change the sign of a vector, i.e. . |
| procedure(abstract_dot_csp), public, deferred, pass(self) :: dot | Computes the dot product between two |
| procedure(abstract_get_size_csp), public, deferred, pass(self) :: get_size | Return size of specific abstract vector |
| procedure, public, pass(self) :: norm => norm_csp | Computes the norm of the |
| procedure(abstract_rand_csp), public, deferred, pass(self) :: rand | Creates a random |
| procedure(abstract_scal_csp), public, deferred, pass(self) :: scal | Compute the scalar-vector product. |
| procedure, public, pass(self) :: sub => sub_csp | Subtracts two |
| procedure(abstract_zero_csp), public, deferred, pass(self) :: zero | Sets an |
Abstract type to define real(dp)-valued vectors. Derived-types defined by the user should be extending one such class.
| procedure, public, pass(self) :: add => add_rdp | Adds two |
| procedure(abstract_axpby_rdp), public, deferred, pass(self) :: axpby | In-place computation of . |
| procedure, public, pass(self) :: chsgn => chsgn_rdp | Change the sign of a vector, i.e. . |
| procedure(abstract_dot_rdp), public, deferred, pass(self) :: dot | Computes the dot product between two |
| procedure(abstract_get_size_rdp), public, deferred, pass(self) :: get_size | Return size of specific abstract vector |
| procedure, public, pass(self) :: norm => norm_rdp | Computes the norm of the |
| procedure(abstract_rand_rdp), public, deferred, pass(self) :: rand | Creates a random |
| procedure(abstract_scal_rdp), public, deferred, pass(self) :: scal | Compute the scalar-vector product. |
| procedure, public, pass(self) :: sub => sub_rdp | Subtracts two |
| procedure(abstract_zero_rdp), public, deferred, pass(self) :: zero | Sets an |
Abstract type to define real(sp)-valued vectors. Derived-types defined by the user should be extending one such class.
| procedure, public, pass(self) :: add => add_rsp | Adds two |
| procedure(abstract_axpby_rsp), public, deferred, pass(self) :: axpby | In-place computation of . |
| procedure, public, pass(self) :: chsgn => chsgn_rsp | Change the sign of a vector, i.e. . |
| procedure(abstract_dot_rsp), public, deferred, pass(self) :: dot | Computes the dot product between two |
| procedure(abstract_get_size_rsp), public, deferred, pass(self) :: get_size | Return size of specific abstract vector |
| procedure, public, pass(self) :: norm => norm_rsp | Computes the norm of the |
| procedure(abstract_rand_rsp), public, deferred, pass(self) :: rand | Creates a random |
| procedure(abstract_scal_rsp), public, deferred, pass(self) :: scal | Compute the scalar-vector product. |
| procedure, public, pass(self) :: sub => sub_rsp | Subtracts two |
| procedure(abstract_zero_rsp), public, deferred, pass(self) :: zero | Sets an |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| complex(kind=dp), | public, | allocatable | :: | data(:) | |||
| integer, | public | :: | n |
| procedure, public, pass(self) :: add => add_cdp | Adds two |
| procedure, public, pass(self) :: axpby => dense_axpby_cdp | In-place computation of . |
| procedure, public, pass(self) :: chsgn => chsgn_cdp | Change the sign of a vector, i.e. . |
| procedure, public, pass(self) :: dot => dense_dot_cdp | Computes the dot product between two |
| procedure, public, pass(self) :: get_size => dense_get_size_cdp | Return size of specific abstract vector |
| procedure, public, pass(self) :: norm => norm_cdp | Computes the norm of the |
| procedure, public, pass(self) :: rand => dense_rand_cdp | Creates a random |
| procedure, public, pass(self) :: scal => dense_scal_cdp | Compute the scalar-vector product. |
| procedure, public, pass(self) :: sub => sub_cdp | Subtracts two |
| procedure, public, pass(self) :: zero => dense_zero_cdp | Sets an |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| complex(kind=sp), | public, | allocatable | :: | data(:) | |||
| integer, | public | :: | n |
| procedure, public, pass(self) :: add => add_csp | Adds two |
| procedure, public, pass(self) :: axpby => dense_axpby_csp | In-place computation of . |
| procedure, public, pass(self) :: chsgn => chsgn_csp | Change the sign of a vector, i.e. . |
| procedure, public, pass(self) :: dot => dense_dot_csp | Computes the dot product between two |
| procedure, public, pass(self) :: get_size => dense_get_size_csp | Return size of specific abstract vector |
| procedure, public, pass(self) :: norm => norm_csp | Computes the norm of the |
| procedure, public, pass(self) :: rand => dense_rand_csp | Creates a random |
| procedure, public, pass(self) :: scal => dense_scal_csp | Compute the scalar-vector product. |
| procedure, public, pass(self) :: sub => sub_csp | Subtracts two |
| procedure, public, pass(self) :: zero => dense_zero_csp | Sets an |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=dp), | public, | allocatable | :: | data(:) | |||
| integer, | public | :: | n |
| procedure, public, pass(self) :: add => add_rdp | Adds two |
| procedure, public, pass(self) :: axpby => dense_axpby_rdp | In-place computation of . |
| procedure, public, pass(self) :: chsgn => chsgn_rdp | Change the sign of a vector, i.e. . |
| procedure, public, pass(self) :: dot => dense_dot_rdp | Computes the dot product between two |
| procedure, public, pass(self) :: get_size => dense_get_size_rdp | Return size of specific abstract vector |
| procedure, public, pass(self) :: norm => norm_rdp | Computes the norm of the |
| procedure, public, pass(self) :: rand => dense_rand_rdp | Creates a random |
| procedure, public, pass(self) :: scal => dense_scal_rdp | Compute the scalar-vector product. |
| procedure, public, pass(self) :: sub => sub_rdp | Subtracts two |
| procedure, public, pass(self) :: zero => dense_zero_rdp | Sets an |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=sp), | public, | allocatable | :: | data(:) | |||
| integer, | public | :: | n |
| procedure, public, pass(self) :: add => add_rsp | Adds two |
| procedure, public, pass(self) :: axpby => dense_axpby_rsp | In-place computation of . |
| procedure, public, pass(self) :: chsgn => chsgn_rsp | Change the sign of a vector, i.e. . |
| procedure, public, pass(self) :: dot => dense_dot_rsp | Computes the dot product between two |
| procedure, public, pass(self) :: get_size => dense_get_size_rsp | Return size of specific abstract vector |
| procedure, public, pass(self) :: norm => norm_rsp | Computes the norm of the |
| procedure, public, pass(self) :: rand => dense_rand_rsp | Creates a random |
| procedure, public, pass(self) :: scal => dense_scal_rsp | Compute the scalar-vector product. |
| procedure, public, pass(self) :: sub => sub_rsp | Subtracts two |
| procedure, public, pass(self) :: zero => dense_zero_rsp | Sets an |