Vector class
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=wp), | public | :: | x |
vector components |
|||
real(kind=wp), | public | :: | y |
vector components |
|||
real(kind=wp), | public | :: | z |
vector components |
Overloads the Multiplication operator for vec3
vec3 * vec3 elementwise
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
input vec3 |
||
type(vector), | intent(in) | :: | b |
vec3 to multiply by |
vec3 * scalar elementwise
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
input vec3 |
||
real(kind=wp), | intent(in) | :: | b |
Scalar to multiply by |
Scalar * vec3 elementwise
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | a |
Scalar to multiply by |
||
class(vector), | intent(in) | :: | b |
input vec3 |
Overloads the exponential operator for vec3
vec3**scalar for integer scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input Vector |
||
integer, | intent(in) | :: | b |
Input scalar |
vec3**scalar for 32-bit float scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input Vector |
||
real(kind=sp), | intent(in) | :: | b |
Input scalar |
vec3**scalar for 64-bit float scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input Vector |
||
real(kind=dp), | intent(in) | :: | b |
Input scalar |
Overloads the Addition operator for vec3
vec3 + vec3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vector |
||
type(vector), | intent(in) | :: | b |
Vec3 to add |
vec3 + scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vector |
||
real(kind=wp), | intent(in) | :: | b |
Scalar to add |
vec3 + scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | a |
Scalar to add |
||
class(vector), | intent(in) | :: | b |
Input vector |
Overloads the Subtraction operator for vec3
vec3 - vec3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vector |
||
type(vector), | intent(in) | :: | b |
vec3 to subtract |
vec3 - scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vector |
||
real(kind=wp), | intent(in) | :: | b |
Scalar to subtract |
scalar - vec3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | a |
Scalar to subtract from |
||
class(vector), | intent(in) | :: | b |
Input vector |
.cross. operator. Cross product
vec3 x vec3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vector |
||
type(vector), | intent(in) | :: | b |
vec3 to cross with |
.dot. operator. Dot product
vec3 . vec3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vec3 |
||
type(vector), | intent(in) | :: | b |
vec3 to dot |
vec3 . matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vec3 |
||
real(kind=wp), | intent(in) | :: | b(4,4) |
Matrix to dot with |
Overloads the Division operator for vec3
vec3 / scalar elementwise. Scalar is a 32-bit float
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
input vec3 |
||
real(kind=sp), | intent(in) | :: | b |
Scalar to divide by |
vec3 / scalar elementwise. Scalar is a 64-bit float
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
input vec3 |
||
real(kind=dp), | intent(in) | :: | b |
Scalar to divide by |
vec3 / scalar elementwise. Scalar is an integer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
input vec3 |
||
integer, | intent(in) | :: | b |
Scalar to divide by |
Overloads the equal operator for vec3
vec3 == vec3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vec3s |
||
class(vector), | intent(in) | :: | b |
Input vec3s |
vec3 + scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | a |
Scalar to add |
||
class(vector), | intent(in) | :: | b |
Input vector |
scalar - vec3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | a |
Scalar to subtract from |
||
class(vector), | intent(in) | :: | b |
Input vector |
Scalar * vec3 elementwise
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | a |
Scalar to multiply by |
||
class(vector), | intent(in) | :: | b |
input vec3 |
vec3 + scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vector |
||
real(kind=wp), | intent(in) | :: | b |
Scalar to add |
vec3 + vec3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vector |
||
type(vector), | intent(in) | :: | b |
Vec3 to add |
vec3 x vec3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vector |
||
type(vector), | intent(in) | :: | b |
vec3 to cross with |
vec3 / scalar elementwise. Scalar is an integer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
input vec3 |
||
integer, | intent(in) | :: | b |
Scalar to divide by |
vec3 / scalar elementwise. Scalar is a 32-bit float
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
input vec3 |
||
real(kind=sp), | intent(in) | :: | b |
Scalar to divide by |
vec3 / scalar elementwise. Scalar is a 64-bit float
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
input vec3 |
||
real(kind=dp), | intent(in) | :: | b |
Scalar to divide by |
vec3 . matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vec3 |
||
real(kind=wp), | intent(in) | :: | b(4,4) |
Matrix to dot with |
vec3 . vec3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vec3 |
||
type(vector), | intent(in) | :: | b |
vec3 to dot |
vec3 == vec3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vec3s |
||
class(vector), | intent(in) | :: | b |
Input vec3s |
vec3 - scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vector |
||
real(kind=wp), | intent(in) | :: | b |
Scalar to subtract |
vec3 - vec3
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input vector |
||
type(vector), | intent(in) | :: | b |
vec3 to subtract |
vec3**scalar for integer scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input Vector |
||
integer, | intent(in) | :: | b |
Input scalar |
vec3**scalar for 32-bit float scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input Vector |
||
real(kind=sp), | intent(in) | :: | b |
Input scalar |
vec3**scalar for 64-bit float scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
Input Vector |
||
real(kind=dp), | intent(in) | :: | b |
Input scalar |
vec3 * scalar elementwise
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
input vec3 |
||
real(kind=wp), | intent(in) | :: | b |
Scalar to multiply by |
vec3 * vec3 elementwise
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vector), | intent(in) | :: | a |
input vec3 |
||
type(vector), | intent(in) | :: | b |
vec3 to multiply by |
type :: vector !> vector components real(kind=wp) :: x, y, z contains !> Returns the magnitude of the vector procedure :: magnitude => magnitude !> Returns the length of the vector procedure :: length => length !> .dot. operator. Dot product generic :: operator(.dot.) => vec_dot_vec, vec_dot_mat !> .cross. operator. Cross product generic :: operator(.cross.) => vec_cross_vec !> Overloads the Division operator for vec3 generic :: operator(/) => vec_div_scal_r4, vec_div_scal_r8, vec_div_scal_int !> Overloads the Multiplication operator for vec3 generic :: operator(*) => vec_mult_vec, vec_mult_scal, scal_mult_vec !> Overloads the exponential operator for vec3 generic :: operator(**) => vec_mult_exp_scal_int, vec_mult_exp_scal_r4, vec_mult_exp_scal_r8 !> Overloads the Addition operator for vec3 generic :: operator(+) => vec_add_vec, vec_add_scal, scal_add_vec !> Overloads the Subtraction operator for vec3 generic :: operator(-) => vec_minus_vec, vec_minus_scal, scal_minus_vec !> Overloads the equal operator for vec3 generic :: operator(==) => vec_equal_vec procedure, pass(a), private :: vec_dot_vec procedure, pass(a), private :: vec_dot_mat procedure, pass(a), private :: vec_cross_vec procedure, pass(a), private :: vec_div_scal_r4 procedure, pass(a), private :: vec_div_scal_r8 procedure, pass(a), private :: vec_div_scal_int procedure, pass(a), private :: vec_mult_vec procedure, pass(a), private :: vec_mult_scal procedure, pass(b), private :: scal_mult_vec procedure, pass(a), private :: vec_mult_exp_scal_int procedure, pass(a), private :: vec_mult_exp_scal_r4 procedure, pass(a), private :: vec_mult_exp_scal_r8 procedure, pass(a), private :: vec_add_vec procedure, pass(a), private :: vec_add_scal procedure, pass(b), private :: scal_add_vec procedure, pass(a), private :: vec_minus_vec procedure, pass(a), private :: vec_minus_scal procedure, pass(b), private :: scal_minus_vec procedure, pass(a), private :: vec_equal_vec end type vector