|
MOM6
|
Module for supporting the rotation of a field's index map. The implementation of each angle is described below.
+90deg: B(i,j) = A(n-j,i) = transpose, then row reverse 180deg: B(i,j) = A(m-i,n-j) = row reversal + column reversal -90deg: B(i,j) = A(j,m-i) = row reverse, then transpose
90 degree rotations change the shape of the field, and are handled separately from 180 degree rotations.
Data Types | |
| interface | allocate_rotated_array |
| Allocate an array based on the rotated index map of an unrotated reference array. More... | |
| interface | rotate_array |
| Rotate the elements of an array to the rotated set of indices. Rotation is applied across the first and second axes of the array. More... | |
| interface | rotate_array_pair |
| Rotate a pair of arrays which map to a rotated set of indices. Rotation is applied across the first and second axes of the array. This rotation should be applied when one field is mapped onto the other. For example, a tracer indexed along u or v face points will map from one to the other after a quarter turn, and back onto itself after a half turn. More... | |
| interface | rotate_vector |
| Rotate an array pair representing the components of a vector. Rotation is applied across the first and second axes of the array. This rotation should be applied when the fields satisfy vector transformation rules. For example, the u and v components of a velocity will map from one to the other for quarter turns, with a sign change in one component. A half turn will map elements onto themselves with sign changes in both components. More... | |
Functions/Subroutines | |
| subroutine | rotate_array_real_2d (A_in, turns, A) |
| Rotate the elements of a 2d real array along first and second axes. More... | |
| subroutine | rotate_array_real_3d (A_in, turns, A) |
| Rotate the elements of a 3d real array along first and second axes. More... | |
| subroutine | rotate_array_real_4d (A_in, turns, A) |
| Rotate the elements of a 4d real array along first and second axes. More... | |
| subroutine | rotate_array_integer (A_in, turns, A) |
| Rotate the elements of a 2d integer array along first and second axes. More... | |
| subroutine | rotate_array_logical (A_in, turns, A) |
| Rotate the elements of a 2d logical array along first and second axes. More... | |
| subroutine | rotate_array_pair_real_2d (A_in, B_in, turns, A, B) |
| Rotate the elements of a 2d real array pair along first and second axes. More... | |
| subroutine | rotate_array_pair_real_3d (A_in, B_in, turns, A, B) |
| Rotate the elements of a 3d real array pair along first and second axes. More... | |
| subroutine | rotate_array_pair_integer (A_in, B_in, turns, A, B) |
| Rotate the elements of a 4d real array pair along first and second axes. More... | |
| subroutine | rotate_vector_real_2d (A_in, B_in, turns, A, B) |
| Rotate the elements of a 2d real vector along first and second axes. More... | |
| subroutine | rotate_vector_real_3d (A_in, B_in, turns, A, B) |
| Rotate the elements of a 3d real vector along first and second axes. More... | |
| subroutine | rotate_vector_real_4d (A_in, B_in, turns, A, B) |
| Rotate the elements of a 4d real vector along first and second axes. More... | |
| subroutine | allocate_rotated_array_real_2d (A_in, lb, turns, A) |
| Allocate a 2d real array on the rotated index map of a reference array. More... | |
| subroutine | allocate_rotated_array_real_3d (A_in, lb, turns, A) |
| Allocate a 3d real array on the rotated index map of a reference array. More... | |
| subroutine | allocate_rotated_array_real_4d (A_in, lb, turns, A) |
| Allocate a 4d real array on the rotated index map of a reference array. More... | |
| subroutine | allocate_rotated_array_integer (A_in, lb, turns, A) |
| Allocate a 2d integer array on the rotated index map of a reference array. More... | |
|
private |
Allocate a 2d integer array on the rotated index map of a reference array.
| [in] | lb | Lower index bounds of A_in |
| [in] | a_in | Reference array |
| [in] | turns | Number of quarter turns |
| [in,out] | a | Array on rotated index |
Definition at line 342 of file MOM_array_transform.F90.
|
private |
Allocate a 2d real array on the rotated index map of a reference array.
| [in] | lb | Lower index bounds of A_in |
| [in] | a_in | Reference array |
| [in] | turns | Number of quarter turns |
| [in,out] | a | Array on rotated index |
Definition at line 282 of file MOM_array_transform.F90.
|
private |
Allocate a 3d real array on the rotated index map of a reference array.
| [in] | lb | Lower index bounds of A_in |
| [in] | a_in | Reference array |
| [in] | turns | Number of quarter turns |
| [in,out] | a | Array on rotated index |
Definition at line 302 of file MOM_array_transform.F90.
|
private |
Allocate a 4d real array on the rotated index map of a reference array.
| [in] | lb | Lower index bounds of A_in |
| [in] | a_in | Reference array |
| [in] | turns | Number of quarter turns |
| [in,out] | a | Array on rotated index |
Definition at line 322 of file MOM_array_transform.F90.
|
private |
Rotate the elements of a 2d integer array along first and second axes.
| [in] | a_in | Unrotated array |
| [in] | turns | Number of quarter turns |
| [out] | a | Rotated array |
Definition at line 128 of file MOM_array_transform.F90.
|
private |
Rotate the elements of a 2d logical array along first and second axes.
| [in] | a_in | Unrotated array |
| [in] | turns | Number of quarter turns |
| [out] | a | Rotated array |
Definition at line 153 of file MOM_array_transform.F90.
|
private |
Rotate the elements of a 4d real array pair along first and second axes.
| [in] | a_in | Unrotated scalar array pair |
| [in] | b_in | Unrotated scalar array pair |
| [in] | turns | Number of quarter turns |
| [out] | a | Rotated scalar array pair |
| [out] | b | Rotated scalar array pair |
Definition at line 213 of file MOM_array_transform.F90.
|
private |
Rotate the elements of a 2d real array pair along first and second axes.
| [in] | a_in | Unrotated scalar array pair |
| [in] | b_in | Unrotated scalar array pair |
| [in] | turns | Number of quarter turns |
| [out] | a | Rotated scalar array pair |
| [out] | b | Rotated scalar array pair |
Definition at line 178 of file MOM_array_transform.F90.
|
private |
Rotate the elements of a 3d real array pair along first and second axes.
| [in] | a_in | Unrotated scalar array pair |
| [in] | b_in | Unrotated scalar array pair |
| [in] | turns | Number of quarter turns |
| [out] | a | Rotated scalar array pair |
| [out] | b | Rotated scalar array pair |
Definition at line 196 of file MOM_array_transform.F90.
|
private |
Rotate the elements of a 2d real array along first and second axes.
| [in] | a_in | Unrotated array |
| [in] | turns | Number of quarter turns |
| [out] | a | Rotated array |
Definition at line 75 of file MOM_array_transform.F90.
|
private |
Rotate the elements of a 3d real array along first and second axes.
| [in] | a_in | Unrotated array |
| [in] | turns | Number of quarter turns |
| [out] | a | Rotated array |
Definition at line 100 of file MOM_array_transform.F90.
|
private |
Rotate the elements of a 4d real array along first and second axes.
| [in] | a_in | Unrotated array |
| [in] | turns | Number of quarter turns |
| [out] | a | Rotated array |
Definition at line 114 of file MOM_array_transform.F90.
|
private |
Rotate the elements of a 2d real vector along first and second axes.
| [in] | a_in | First component of unrotated vector |
| [in] | b_in | Second component of unrotated vector |
| [in] | turns | Number of quarter turns |
| [out] | a | First component of rotated vector |
| [out] | b | Second component of unrotated vector |
Definition at line 231 of file MOM_array_transform.F90.
|
private |
Rotate the elements of a 3d real vector along first and second axes.
| [in] | a_in | First component of unrotated vector |
| [in] | b_in | Second component of unrotated vector |
| [in] | turns | Number of quarter turns |
| [out] | a | First component of rotated vector |
| [out] | b | Second component of unrotated vector |
Definition at line 249 of file MOM_array_transform.F90.
|
private |
Rotate the elements of a 4d real vector along first and second axes.
| [in] | a_in | First component of unrotated vector |
| [in] | b_in | Second component of unrotated vector |
| [in] | turns | Number of quarter turns |
| [out] | a | First component of rotated vector |
| [out] | b | Second component of unrotated vector |
Definition at line 265 of file MOM_array_transform.F90.