dm_transform Module

Coordinate transformations (unfinished).


Uses

  • module~~dm_transform~~UsesGraph module~dm_transform dm_transform module~dm_const dm_const module~dm_transform->module~dm_const module~dm_error dm_error module~dm_transform->module~dm_error module~dm_kind dm_kind module~dm_transform->module~dm_kind module~dm_util dm_util module~dm_transform->module~dm_util module~dm_const->module~dm_kind module~dm_error->module~dm_kind module~dm_ascii dm_ascii module~dm_error->module~dm_ascii iso_fortran_env iso_fortran_env module~dm_kind->iso_fortran_env module~dm_util->module~dm_error module~dm_util->module~dm_kind

Used by

  • module~~dm_transform~~UsedByGraph module~dm_transform dm_transform module~dmpack dmpack module~dmpack->module~dm_transform

Interfaces

  • private pure subroutine dm_transform_cartesian_to_polar_3d_array(c, p)

    Transforms cartesian coordinates to polar (spherical) coordinates. Array c must contain [ x, y, z ], array p will contain [ r, omega, phi ].

    Arguments

    Type IntentOptional Attributes Name
    real(kind=r8), intent(in) :: c(3)

    Cartesian coordinates (x, y, z).

    real(kind=r8), intent(out) :: p(3)

    Polar coordinates (r, omega, phi).

  • private pure elemental subroutine dm_transform_cartesian_to_polar_3d_scalar(x, y, z, r, omega, phi)

    Transforms cartesian coordinates to polar (spherical) coordinates.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=r8), intent(in) :: x

    X coordinate.

    real(kind=r8), intent(in) :: y

    Y coordinate.

    real(kind=r8), intent(in) :: z

    Z coordinate.

    real(kind=r8), intent(out) :: r

    Radial distance.

    real(kind=r8), intent(out) :: omega

    Polar (vertical) angle [rad].

    real(kind=r8), intent(out) :: phi

    Azimuthal (horizontal) angle [rad].

  • private pure subroutine dm_transform_polar_to_cartesian_3d_array(p, c)

    Transforms polar (spherical) coordinates to cartesian coordinates. Array p must contain [ r, omega, phi ], array c will contain [ x, y, z ].

    Arguments

    Type IntentOptional Attributes Name
    real(kind=r8), intent(in) :: p(3)

    Polar coordinates (r, omega, phi).

    real(kind=r8), intent(out) :: c(3)

    Cartesian coordinates (x, y, z).

  • private pure elemental subroutine dm_transform_polar_to_cartesian_3d_scalar(r, omega, phi, x, y, z)

    Transforms polar (spherical) coordinates to cartesian coordinates.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=r8), intent(in) :: r

    Radial distance.

    real(kind=r8), intent(in) :: omega

    Polar (vertical) angle [rad].

    real(kind=r8), intent(in) :: phi

    Azimuthal (horizontal) angle [rad].

    real(kind=r8), intent(out) :: x

    X coordinate.

    real(kind=r8), intent(out) :: y

    Y coordinate.

    real(kind=r8), intent(out) :: z

    Z coordinate.


Derived Types

type, public ::  transform_coordinate_2d_type

Components

Type Visibility Attributes Name Initial
real(kind=r8), public :: a = 0_r8
real(kind=r8), public :: b = 0_r8
real(kind=r8), public :: scale = 0_r8
real(kind=r8), public :: variance = 0_r8

Functions

public function dm_transform_coordinate_2d(cs, ct, observs, trans, params, residuals, variance, rotation, scale_factor) result(rc)

Arguments

Type IntentOptional Attributes Name
real(kind=r8), intent(inout) :: cs(:)

Common control points in source system.

real(kind=r8), intent(inout) :: ct(:)

Common control points in target system.

real(kind=r8), intent(inout) :: observs(:)

Observations.

real(kind=r8), intent(out), allocatable :: trans(:)

Transformed observations.

real(kind=r8), intent(out), optional, allocatable :: params(:)

Transformation parameters.

real(kind=r8), intent(out), optional, allocatable :: residuals(:)

Residuals.

real(kind=r8), intent(out), optional :: variance

Reference variance of adjustment.

real(kind=r8), intent(out), optional :: rotation

Rotation angle.

real(kind=r8), intent(out), optional :: scale_factor

Scale factor.

Return Value integer

public function dm_transform_polar_3d(vx, vy, vz, tx, ty, hz, v, hz_dist, x, y, z, azimuth) result(rc)

Calculates coordinates (x, y, z) out of horizontal direction, vertical angle, and slope distance to a target point using a 3-dimensional polar transformation.

Arguments

Type IntentOptional Attributes Name
real(kind=r8), intent(in) :: vx

View point x.

real(kind=r8), intent(in) :: vy

View point y.

real(kind=r8), intent(in) :: vz

View point z.

real(kind=r8), intent(in) :: tx

Target x.

real(kind=r8), intent(in) :: ty

Target y.

real(kind=r8), intent(in) :: hz

Horizontal direction between view point and target point.

real(kind=r8), intent(in) :: v

Vertical angle between view point and target point.

real(kind=r8), intent(in) :: hz_dist

Horizontal distance between view point and target point.

real(kind=r8), intent(out) :: x

Transformed x.

real(kind=r8), intent(out) :: y

Transformed y.

real(kind=r8), intent(out) :: z

Transformed z.

real(kind=r8), intent(in), optional :: azimuth

Global azimuth.

Return Value integer