tem_coordinate_module Module



Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: xToXAxes = 1

Identity transformation

integer, public, parameter :: yToXAxes = 2

Transformation to transform a y axis into an x axis

integer, public, parameter :: zToXAxes = 3

Transformation to transform a z axis into an x axis

integer, private, parameter :: xDir = 1

constant representing the x direction

integer, private, parameter :: yDir = 2

constant representing the y direction

integer, private, parameter :: zDir = 3

constant representing the z direction


Derived Types

type, public ::  coordRotation_type

datatype to transform varibales given in one coordinate

Read more…

Components

Type Visibility Attributes Name Initial
integer, public :: rotationType

The type of the rotation, see parameters above.

integer, public, allocatable :: varTransformIndices(:)

Array of integers defining how to transform the variables of your state vector. Therefore the size of this array is the number of scalar variables of your equation system.

integer, public, allocatable :: derTransformIndices(:)

Array of integers defining how to transform the derivatives of your state vector. Therefore the size of this array is the total number of derivatives you store in your state vector.


Functions

public function dirToString(direction) result(dirAsChar)

function to convert a direction to a string.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: direction

direction to convert

Return Value character(len=1)

direction as string

private function rotateVector3(coordTrans) result(rotationIndices)

rotate a vector in 3D by a given rotation.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: coordTrans

The coordinate transformation you apply.

Return Value integer, (3)

Rotation indices for the given transformation

private function rotateTensor3(coordTrans) result(rotationIndices)

rotate a tensor in 3D by a given rotation.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: coordTrans

The coordinate transformation you apply.

Return Value integer, (9)

Rotation indices for the given transformation

private function rotateVector2(coordTrans) result(rotationIndices)

rotate a vector in 2D by a given rotation.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: coordTrans

The coordinate transformation you apply.

Return Value integer, (2)

Rotation indices for the given transformation

private function rotateScalar() result(rotationIndices)

rotate a scalar?

Read more…

Arguments

None

Return Value integer, (1)

The coordinate transformation you apply. Rotation indices for the given transformation


Subroutines

public subroutine initCoordinateRotation(varSys, coordTrans, derivatives, rotation, dimen)

routine to specify a coordinate transformation for the state

Read more…

Arguments

Type IntentOptional Attributes Name
type(tem_varSys_type), intent(in) :: varSys

The variables to build the permutations for.

integer, intent(in) :: coordTrans

The rotation you want to obtain. Please have a look at the parameters of this module to find a valid input argument.

integer, intent(in) :: derivatives

The number of derivatives (already multidimensional) you need for your equation. Zero means that we calculate cell values only, one means all first derivatives and so on.

type(coordRotation_type), intent(out) :: rotation

The coordinate rotation you want to initialize.

integer, intent(in) :: dimen

The spatial dimension of the system

private subroutine appendDerivative(derivatives, coordTrans, rotation, dimen)

subroutine to append a rotated derivative to coordRotation type.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: derivatives

The number of derivatives of your equation (inclunding the zeroth order derivative).

integer, intent(in) :: coordTrans

The coordinate transformation you apply.

type(coordRotation_type), intent(inout) :: rotation

The coordinate rotation you want to initialize.

integer, intent(in) :: dimen

The spatial dimension of the system

private subroutine appendRotatedVariable(nComponents, prevScalarVars, coordTrans, rotation)

routine to append a rotated varibale to corrdRoation type.

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nComponents

nComponents of variable you want to append.

integer, intent(in) :: prevScalarVars

The number of scalar variable you append before you append this variable.

integer, intent(in) :: coordTrans

The coordinate transformation you apply.

type(coordRotation_type), intent(inout) :: rotation

The coordinate rotation you want to initialize.