This module contains the definitions of the TYPES representing objects in the Lorentz group, that is, the isometry group of the Lorentz metric
FT 23.02.2022
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| double precision, | public, | parameter, DIMENSION(n_sym4x4) | :: | eta | = | [-one, zero, zero, zero, one, zero, zero, one, zero, one] | Minkowski metric | 
Action of the lorentz_transformation on a -vector
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lorentz_transformation), | intent(in) | :: | this | lorentz_transformation object to apply | ||
| double precision, | intent(in), | DIMENSION(n_sym4x4) | :: | t | -vector storing the components of the symmetric tensor to be boosted | 
-vector storing the components of the boosted symmetric tensor
Action of the lorentz_transformation on a -vector
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lorentz_transformation), | intent(in) | :: | this | lorentz_transformation object to apply | ||
| double precision, | intent(in), | DIMENSION(4,4) | :: | t(0:3,0:3) | tensor to be boosted | 
Boosted tensor
Action of the lorentz_transformation on a -vector
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lorentz_transformation), | intent(in) | :: | this | lorentz_transformation object to apply | ||
| double precision, | intent(in), | DIMENSION(n_sym4x4) | :: | t | -vector storing the components of the symmetric tensor to be boosted | 
-vector storing the components of the boosted symmetric tensor
Action of the lorentz_transformation on a -vector
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lorentz_transformation), | intent(in) | :: | this | lorentz_transformation object to apply | ||
| double precision, | intent(in), | DIMENSION(4,4) | :: | t(0:3,0:3) | tensor to be boosted | 
Boosted tensor
Action of the lorentz_transformation on a -vector
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lorentz_transformation), | intent(in) | :: | this | lorentz_transformation object to apply | ||
| double precision, | intent(in), | DIMENSION(4) | :: | u(0:3) | -vector to be boosted | 
Boosted -vector
Compute the matrices for the lorentz_boost
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lorentz_boost), | intent(inout) | :: | this | |||
| double precision, | intent(in), | DIMENSION(3) | :: | p | ||
| double precision, | intent(out), | DIMENSION(n_sym3x3) | :: | lambda_s | Spatial part of the Lorentz boost | |
| double precision, | intent(out), | DIMENSION(4,4) | :: | matrix(0:3,0:3) | matrix representing the Lorentz boost | 
Compute the matrices for the spatial_rotation
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(spatial_rotation), | intent(inout) | :: | this | spatial_rotation object to compuet the matrices for | ||
| double precision, | intent(in), | DIMENSION(3) | :: | euler_angles | ||
| double precision, | intent(out), | DIMENSION(3,3) | :: | r_x | Rotation operator around the axis | |
| double precision, | intent(out), | DIMENSION(3,3) | :: | r_y | Rotation operator around the axis | |
| double precision, | intent(out), | DIMENSION(3,3) | :: | r_z | Rotation operator around the axis | |
| double precision, | intent(out), | DIMENSION(3,3) | :: | r | Full rotation operator | |
| double precision, | intent(out), | DIMENSION(4,4) | :: | matrix(0:3,0:3) | matrix representing the Lorentz boost | |
| double precision, | intent(out), | DIMENSION(3,3) | :: | inv_r_x | Inverse rotation operator around the axis | |
| double precision, | intent(out), | DIMENSION(3,3) | :: | inv_r_y | Inverse rotation operator around the axis | |
| double precision, | intent(out), | DIMENSION(3,3) | :: | inv_r_z | Inverse rotation operator around the axis | |
| double precision, | intent(out), | DIMENSION(3,3) | :: | inv_r | Inverse of the full rotation operator | |
| double precision, | intent(out), | DIMENSION(4,4) | :: | inv_matrix(0:3,0:3) | Inverse of the matrix representing the Lorentz boost | 
Returns the Lorentz factor lambda
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lorentz_boost), | intent(in) | :: | this | lorentz_boost object owning this FUNCTION | 
Lorentz factor lambda
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in), | DIMENSION(3) | :: | v | Spatial velocity that determines the boost | 
lorentz_boost object to be constructed
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | vx | component of the spatial velocity that determines the boost | ||
| double precision, | intent(in) | :: | vy | component of the spatial velocity that determines the boost | ||
| double precision, | intent(in) | :: | vz | component of the spatial velocity that determines the boost | 
lorentz_boost object to be constructed
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in), | DIMENSION(3) | :: | euler_angles | Euler angles that define the rotation around the axes, in this order | 
spatial_rotation object to be constructed
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | alpha | Euler angle that defines the rotation around the axis | ||
| double precision, | intent(in) | :: | beta | Euler angle that defines the rotation around the axis | ||
| double precision, | intent(in) | :: | gamma | Euler angle that defines the rotation around the axis | 
spatial_rotation object to be constructed
TYPE representing a Lorentz boost
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| double precision, | private, | DIMENSION(n_sym3x3) | :: | inv_lambda_s | Spatial part of the inverse Lorentz boost | ||
| double precision, | private | :: | lambda | Lorentz factor | |||
| double precision, | private, | DIMENSION(n_sym3x3) | :: | lambda_s | Spatial part of the Lorentz boost | ||
| double precision, | private, | DIMENSION(3) | :: | p | Spatial vector equal to | ||
| double precision, | private, | DIMENSION(3) | :: | v | Spatial velocity that determines the boost | ||
| double precision, | private | :: | v_speed | Euclidean norm of v (its speed) | 
| public module function construct_boost (v) | |
| public module function construct_boost_components (vx, vy, vz) | 
| generic, public :: apply_as_congruence => apply_as_congruence_to_tensor, apply_as_congruence_to_symrank2_tensor | Generic procedure to apply the lorentz_transformation as a congruence | 
| procedure , public , NON_OVERRIDABLE :: apply_as_congruence_to_symrank2_tensor Interface | Action of the lorentz_transformation as a congruence on a -vector storing the components of a symmetric, purely covariant, tensor | 
| procedure , public , NON_OVERRIDABLE :: apply_as_congruence_to_tensor Interface | Action of the lorentz_transformation as a congruence on a generic purely covariant tensor | 
| generic, public :: apply_as_similarity => apply_as_similarity_to_tensor, apply_as_similarity_to_symrank2_tensor | Generic procedure to apply the lorentz_transformation as a similarity | 
| procedure , public , NON_OVERRIDABLE :: apply_as_similarity_to_symrank2_tensor Interface | Action of the lorentz_transformation as a similarity on a -vector storing the components of a symmetric tensor | 
| procedure , public , NON_OVERRIDABLE :: apply_as_similarity_to_tensor Interface | Action of the lorentz_transformation as a similarity on a generic tensor | 
| procedure , public , NON_OVERRIDABLE :: apply_to_vector Interface | Action of the lorentz_transformation on a -vector | 
| procedure , public :: compute_boost_matrices Interface | Computes the spatial part of the matrix of the Lorentz boost, and its whole matrix, starting from the vector | 
| procedure , public :: get_lambda Interface | Returns the Lorentz factor lambda | 
TYPE representing a 4D, proper, orthochronous Lorentz transformation
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| double precision, | private, | DIMENSION(4,4) | :: | inv_matrix(0:3,0:3) | matrix representing the inverse Lorentz transformation | ||
| double precision, | private, | DIMENSION(4,4) | :: | matrix(0:3,0:3) | matrix representing the Lorentz transformation | ||
| double precision, | private, | DIMENSION(4,4) | :: | tr_matrix(0:3,0:3) | Transpose of the matrix representing the Lorentz transformation | 
| generic, public :: apply_as_congruence => apply_as_congruence_to_tensor, apply_as_congruence_to_symrank2_tensor | Generic procedure to apply the lorentz_transformation as a congruence | 
| procedure , public , NON_OVERRIDABLE :: apply_as_congruence_to_symrank2_tensor Interface | Action of the lorentz_transformation as a congruence on a -vector storing the components of a symmetric, purely covariant, tensor | 
| procedure , public , NON_OVERRIDABLE :: apply_as_congruence_to_tensor Interface | Action of the lorentz_transformation as a congruence on a generic purely covariant tensor | 
| generic, public :: apply_as_similarity => apply_as_similarity_to_tensor, apply_as_similarity_to_symrank2_tensor | Generic procedure to apply the lorentz_transformation as a similarity | 
| procedure , public , NON_OVERRIDABLE :: apply_as_similarity_to_symrank2_tensor Interface | Action of the lorentz_transformation as a similarity on a -vector storing the components of a symmetric tensor | 
| procedure , public , NON_OVERRIDABLE :: apply_as_similarity_to_tensor Interface | Action of the lorentz_transformation as a similarity on a generic tensor | 
| procedure , public , NON_OVERRIDABLE :: apply_to_vector Interface | Action of the lorentz_transformation on a -vector | 
TYPE representing a spatial rotation
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| double precision, | private, | DIMENSION(3) | :: | euler_angles | Euler angles that define the rotation around the axes, in this order | ||
| double precision, | private, | DIMENSION(3,3) | :: | inv_r | Full inverse rotation operator | ||
| double precision, | private, | DIMENSION(3,3) | :: | inv_r_x | Inverse rotation operator around the axis | ||
| double precision, | private, | DIMENSION(3,3) | :: | inv_r_y | Inverse rotation operator around the axis | ||
| double precision, | private, | DIMENSION(3,3) | :: | inv_r_z | Inverse rotation operator around the axis | ||
| double precision, | private, | DIMENSION(3,3) | :: | r | Full rotation operator | ||
| double precision, | private, | DIMENSION(3,3) | :: | r_x | Rotation operator around the axis | ||
| double precision, | private, | DIMENSION(3,3) | :: | r_y | Rotation operator around the axis | ||
| double precision, | private, | DIMENSION(3,3) | :: | r_z | Rotation operator around the axis | ||
| double precision, | private, | DIMENSION(3,3) | :: | tr_r | Transpose of the full inverse rotation operator | 
| public module function construct_rotation (euler_angles) | |
| public module function construct_rotation_angles (alpha, beta, gamma) | 
| generic, public :: apply_as_congruence => apply_as_congruence_to_tensor, apply_as_congruence_to_symrank2_tensor | Generic procedure to apply the lorentz_transformation as a congruence | 
| procedure , public , NON_OVERRIDABLE :: apply_as_congruence_to_symrank2_tensor Interface | Action of the lorentz_transformation as a congruence on a -vector storing the components of a symmetric, purely covariant, tensor | 
| procedure , public , NON_OVERRIDABLE :: apply_as_congruence_to_tensor Interface | Action of the lorentz_transformation as a congruence on a generic purely covariant tensor | 
| generic, public :: apply_as_similarity => apply_as_similarity_to_tensor, apply_as_similarity_to_symrank2_tensor | Generic procedure to apply the lorentz_transformation as a similarity | 
| procedure , public , NON_OVERRIDABLE :: apply_as_similarity_to_symrank2_tensor Interface | Action of the lorentz_transformation as a similarity on a -vector storing the components of a symmetric tensor | 
| procedure , public , NON_OVERRIDABLE :: apply_as_similarity_to_tensor Interface | Action of the lorentz_transformation as a similarity on a generic tensor | 
| procedure , public , NON_OVERRIDABLE :: apply_to_vector Interface | Action of the lorentz_transformation on a -vector | 
| procedure , public :: compute_rotation_matrices Interface | Computes the spatial part of the matrix of the Lorentz | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in), | DIMENSION(3) | :: | u | ||
| double precision, | intent(in), | DIMENSION(3) | :: | v | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in), | DIMENSION(4) | :: | u(0:3) | ||
| double precision, | intent(in), | DIMENSION(4) | :: | v(0:3) | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in), | DIMENSION(4) | :: | u(0:3) | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in), | DIMENSION(:) | :: | u | Row | |
| double precision, | intent(in), | DIMENSION(:) | :: | v | Column | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in), | DIMENSION(:,:) | :: | a | First matrix | |
| double precision, | intent(in), | DIMENSION(:,:) | :: | b | Second matrix |