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 |