MODULE C_Binding_Types USE Precision IMPLICIT NONE PRIVATE INTEGER, PARAMETER, PUBLIC :: C_INT = i_word, C_SIGNED_CHAR = i_byte, C_SHORT = i_short, C_LONG = i_sp, C_LONG_LONG = i_dp, & & C_SIZE_T = i_word INTEGER, PARAMETER, PUBLIC :: C_FLOAT = r_sp, C_DOUBLE = r_dp, C_LONG_DOUBLE = r_qp INTEGER, PARAMETER, PUBLIC :: C_BOOL = l_word INTEGER, PARAMETER, PUBLIC :: C_CHAR = c_byte INTEGER, PARAMETER, PUBLIC :: C_ADDRESS = i_word END MODULE C_Binding_Types MODULE ISO_C_BINDING USE Precision USE C_Binding_Types IMPLICIT NONE PRIVATE PUBLIC :: C_LOC, C_ASSOCIATED, C_F_POINTER PUBLIC :: F_C_POINTER, C_ALLOCATE, C_DEALLOCATE, C_STRIDE, C_LOC_Function, C_LOC_Subroutine, MakeArrayPointer, & & MakeAllocatableArray PUBLIC :: C_INT, C_SIGNED_CHAR, C_SHORT, C_LONG, C_LONG_LONG, C_SIZE_T, C_FLOAT, C_DOUBLE, C_LONG_DOUBLE, C_BOOL, C_CHAR PUBLIC :: C_ADDRESS INTEGER (KIND=C_ADDRESS), PARAMETER, PUBLIC :: C_NULL_PTR = 0 CHARACTER (KIND=C_CHAR), PARAMETER, PUBLIC :: C_NULL_CHAR = CHAR (0) INTERFACE F_C_POINTER MODULE PROCEDURE F_C_POINTER_i_sp MODULE PROCEDURE F_C_POINTER_i_dp MODULE PROCEDURE F_C_POINTER_r_sp MODULE PROCEDURE F_C_POINTER_r_dp MODULE PROCEDURE F_C_POINTER_l_word END INTERFACE INTERFACE C_LOC MODULE PROCEDURE C_LOC_i_sp0 MODULE PROCEDURE C_LOC_i_dp0 MODULE PROCEDURE C_LOC_r_sp0 MODULE PROCEDURE C_LOC_r_dp0 MODULE PROCEDURE C_LOC_l_word0 MODULE PROCEDURE C_LOC_i_sp1 MODULE PROCEDURE C_LOC_i_dp1 MODULE PROCEDURE C_LOC_r_sp1 MODULE PROCEDURE C_LOC_r_dp1 MODULE PROCEDURE C_LOC_l_word1 MODULE PROCEDURE C_LOC_i_sp2 MODULE PROCEDURE C_LOC_i_dp2 MODULE PROCEDURE C_LOC_r_sp2 MODULE PROCEDURE C_LOC_r_dp2 MODULE PROCEDURE C_LOC_l_word2 MODULE PROCEDURE C_LOC_i_sp3 MODULE PROCEDURE C_LOC_i_dp3 MODULE PROCEDURE C_LOC_r_sp3 MODULE PROCEDURE C_LOC_r_dp3 MODULE PROCEDURE C_LOC_l_word3 MODULE PROCEDURE C_LOC_i_sp4 MODULE PROCEDURE C_LOC_i_dp4 MODULE PROCEDURE C_LOC_r_sp4 MODULE PROCEDURE C_LOC_r_dp4 MODULE PROCEDURE C_LOC_l_word4 MODULE PROCEDURE C_LOC_i_sp5 MODULE PROCEDURE C_LOC_i_dp5 MODULE PROCEDURE C_LOC_r_sp5 MODULE PROCEDURE C_LOC_r_dp5 MODULE PROCEDURE C_LOC_l_word5 END INTERFACE INTERFACE C_LOC_Function MODULE PROCEDURE C_LOC_Function_i_sp MODULE PROCEDURE C_LOC_Function_i_dp MODULE PROCEDURE C_LOC_Function_r_sp MODULE PROCEDURE C_LOC_Function_r_dp MODULE PROCEDURE C_LOC_Function_l_word END INTERFACE INTERFACE MakeArrayPointer SUBROUTINE MakeArrayPointer_i_sp1 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (1), INTENT (IN), TARGET :: shape INTEGER (KIND=i_sp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:), POINTER :: array_pointer INTEGER, DIMENSION (1), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_i_dp1 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (1), INTENT (IN), TARGET :: shape INTEGER (KIND=i_dp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:), POINTER :: array_pointer INTEGER, DIMENSION (1), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_r_sp1 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (1), INTENT (IN), TARGET :: shape REAL (KIND=r_sp), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:), POINTER :: array_pointer INTEGER, DIMENSION (1), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_r_dp1 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (1), INTENT (IN), TARGET :: shape REAL (KIND=r_dp), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:), POINTER :: array_pointer INTEGER, DIMENSION (1), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_l_word1 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (1), INTENT (IN), TARGET :: shape LOGICAL (KIND=l_word), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:), POINTER :: array_pointer INTEGER, DIMENSION (1), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_i_sp2 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (2), INTENT (IN), TARGET :: shape INTEGER (KIND=i_sp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :), POINTER :: array_pointer INTEGER, DIMENSION (2), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_i_dp2 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (2), INTENT (IN), TARGET :: shape INTEGER (KIND=i_dp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :), POINTER :: array_pointer INTEGER, DIMENSION (2), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_r_sp2 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (2), INTENT (IN), TARGET :: shape REAL (KIND=r_sp), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :), POINTER :: array_pointer INTEGER, DIMENSION (2), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_r_dp2 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (2), INTENT (IN), TARGET :: shape REAL (KIND=r_dp), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :), POINTER :: array_pointer INTEGER, DIMENSION (2), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_l_word2 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (2), INTENT (IN), TARGET :: shape LOGICAL (KIND=l_word), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :), POINTER :: array_pointer INTEGER, DIMENSION (2), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_i_sp3 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (3), INTENT (IN), TARGET :: shape INTEGER (KIND=i_sp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :, :), POINTER :: array_pointer INTEGER, DIMENSION (3), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_i_dp3 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (3), INTENT (IN), TARGET :: shape INTEGER (KIND=i_dp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :, :), POINTER :: array_pointer INTEGER, DIMENSION (3), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_r_sp3 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (3), INTENT (IN), TARGET :: shape REAL (KIND=r_sp), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :, :), POINTER :: array_pointer INTEGER, DIMENSION (3), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_r_dp3 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (3), INTENT (IN), TARGET :: shape REAL (KIND=r_dp), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :, :), POINTER :: array_pointer INTEGER, DIMENSION (3), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_l_word3 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (3), INTENT (IN), TARGET :: shape LOGICAL (KIND=l_word), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :, :), POINTER :: array_pointer INTEGER, DIMENSION (3), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_i_sp4 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (4), INTENT (IN), TARGET :: shape INTEGER (KIND=i_sp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (4), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_i_dp4 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (4), INTENT (IN), TARGET :: shape INTEGER (KIND=i_dp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (4), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_r_sp4 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (4), INTENT (IN), TARGET :: shape REAL (KIND=r_sp), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (4), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_r_dp4 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (4), INTENT (IN), TARGET :: shape REAL (KIND=r_dp), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (4), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_l_word4 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (4), INTENT (IN), TARGET :: shape LOGICAL (KIND=l_word), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (4), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_i_sp5 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (5), INTENT (IN), TARGET :: shape INTEGER (KIND=i_sp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (5), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_i_dp5 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (5), INTENT (IN), TARGET :: shape INTEGER (KIND=i_dp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (5), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_r_sp5 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (5), INTENT (IN), TARGET :: shape REAL (KIND=r_sp), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (5), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_r_dp5 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (5), INTENT (IN), TARGET :: shape REAL (KIND=r_dp), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (5), INTENT (IN), OPTIONAL :: strides END SUBROUTINE SUBROUTINE MakeArrayPointer_l_word5 (storage, array_pointer, shape, strides) USE Precision INTEGER, DIMENSION (5), INTENT (IN), TARGET :: shape LOGICAL (KIND=l_word), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (5), INTENT (IN), OPTIONAL :: strides END SUBROUTINE END INTERFACE INTERFACE C_F_POINTER MODULE PROCEDURE C_F_POINTER_i_sp0 MODULE PROCEDURE C_F_POINTER_i_dp0 MODULE PROCEDURE C_F_POINTER_r_sp0 MODULE PROCEDURE C_F_POINTER_r_dp0 MODULE PROCEDURE C_F_POINTER_l_word0 MODULE PROCEDURE C_F_POINTER_i_sp1 MODULE PROCEDURE C_F_POINTER_i_dp1 MODULE PROCEDURE C_F_POINTER_r_sp1 MODULE PROCEDURE C_F_POINTER_r_dp1 MODULE PROCEDURE C_F_POINTER_l_word1 MODULE PROCEDURE C_F_POINTER_i_sp2 MODULE PROCEDURE C_F_POINTER_i_dp2 MODULE PROCEDURE C_F_POINTER_r_sp2 MODULE PROCEDURE C_F_POINTER_r_dp2 MODULE PROCEDURE C_F_POINTER_l_word2 MODULE PROCEDURE C_F_POINTER_i_sp3 MODULE PROCEDURE C_F_POINTER_i_dp3 MODULE PROCEDURE C_F_POINTER_r_sp3 MODULE PROCEDURE C_F_POINTER_r_dp3 MODULE PROCEDURE C_F_POINTER_l_word3 MODULE PROCEDURE C_F_POINTER_i_sp4 MODULE PROCEDURE C_F_POINTER_i_dp4 MODULE PROCEDURE C_F_POINTER_r_sp4 MODULE PROCEDURE C_F_POINTER_r_dp4 MODULE PROCEDURE C_F_POINTER_l_word4 MODULE PROCEDURE C_F_POINTER_i_sp5 MODULE PROCEDURE C_F_POINTER_i_dp5 MODULE PROCEDURE C_F_POINTER_r_sp5 MODULE PROCEDURE C_F_POINTER_r_dp5 MODULE PROCEDURE C_F_POINTER_l_word5 END INTERFACE INTERFACE MakeAllocatableArray SUBROUTINE MakeAllocatableArray_i_sp1 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (1), INTENT (IN) :: shape INTEGER (KIND=i_sp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_dp1 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (1), INTENT (IN) :: shape INTEGER (KIND=i_dp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_sp1 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (1), INTENT (IN) :: shape REAL (KIND=r_sp), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_dp1 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (1), INTENT (IN) :: shape REAL (KIND=r_dp), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_l_word1 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (1), INTENT (IN) :: shape LOGICAL (KIND=l_word), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_sp2 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (2), INTENT (IN) :: shape INTEGER (KIND=i_sp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_dp2 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (2), INTENT (IN) :: shape INTEGER (KIND=i_dp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_sp2 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (2), INTENT (IN) :: shape REAL (KIND=r_sp), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_dp2 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (2), INTENT (IN) :: shape REAL (KIND=r_dp), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_l_word2 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (2), INTENT (IN) :: shape LOGICAL (KIND=l_word), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_sp3 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (3), INTENT (IN) :: shape INTEGER (KIND=i_sp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_dp3 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (3), INTENT (IN) :: shape INTEGER (KIND=i_dp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_sp3 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (3), INTENT (IN) :: shape REAL (KIND=r_sp), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_dp3 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (3), INTENT (IN) :: shape REAL (KIND=r_dp), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_l_word3 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (3), INTENT (IN) :: shape LOGICAL (KIND=l_word), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_sp4 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (4), INTENT (IN) :: shape INTEGER (KIND=i_sp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_dp4 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (4), INTENT (IN) :: shape INTEGER (KIND=i_dp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_sp4 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (4), INTENT (IN) :: shape REAL (KIND=r_sp), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_dp4 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (4), INTENT (IN) :: shape REAL (KIND=r_dp), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_l_word4 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (4), INTENT (IN) :: shape LOGICAL (KIND=l_word), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_sp5 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (5), INTENT (IN) :: shape INTEGER (KIND=i_sp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_dp5 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (5), INTENT (IN) :: shape INTEGER (KIND=i_dp), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_sp5 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (5), INTENT (IN) :: shape REAL (KIND=r_sp), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_dp5 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (5), INTENT (IN) :: shape REAL (KIND=r_dp), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE MakeAllocatableArray_l_word5 (storage, allocatable_array, shape) USE Precision INTEGER, DIMENSION (5), INTENT (IN) :: shape LOGICAL (KIND=l_word), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE END INTERFACE INTERFACE C_ALLOCATE MODULE PROCEDURE C_ALLOCATE_i_sp1 MODULE PROCEDURE C_ALLOCATE_i_dp1 MODULE PROCEDURE C_ALLOCATE_r_sp1 MODULE PROCEDURE C_ALLOCATE_r_dp1 MODULE PROCEDURE C_ALLOCATE_l_word1 MODULE PROCEDURE C_ALLOCATE_i_sp2 MODULE PROCEDURE C_ALLOCATE_i_dp2 MODULE PROCEDURE C_ALLOCATE_r_sp2 MODULE PROCEDURE C_ALLOCATE_r_dp2 MODULE PROCEDURE C_ALLOCATE_l_word2 MODULE PROCEDURE C_ALLOCATE_i_sp3 MODULE PROCEDURE C_ALLOCATE_i_dp3 MODULE PROCEDURE C_ALLOCATE_r_sp3 MODULE PROCEDURE C_ALLOCATE_r_dp3 MODULE PROCEDURE C_ALLOCATE_l_word3 MODULE PROCEDURE C_ALLOCATE_i_sp4 MODULE PROCEDURE C_ALLOCATE_i_dp4 MODULE PROCEDURE C_ALLOCATE_r_sp4 MODULE PROCEDURE C_ALLOCATE_r_dp4 MODULE PROCEDURE C_ALLOCATE_l_word4 MODULE PROCEDURE C_ALLOCATE_i_sp5 MODULE PROCEDURE C_ALLOCATE_i_dp5 MODULE PROCEDURE C_ALLOCATE_r_sp5 MODULE PROCEDURE C_ALLOCATE_r_dp5 MODULE PROCEDURE C_ALLOCATE_l_word5 END INTERFACE INTERFACE DeallocateArray SUBROUTINE DeallocateArray_i_sp1 (allocatable_array) USE Precision INTEGER (KIND=i_sp), DIMENSION (:), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_i_dp1 (allocatable_array) USE Precision INTEGER (KIND=i_dp), DIMENSION (:), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_r_sp1 (allocatable_array) USE Precision REAL (KIND=r_sp), DIMENSION (:), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_r_dp1 (allocatable_array) USE Precision REAL (KIND=r_dp), DIMENSION (:), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_l_word1 (allocatable_array) USE Precision LOGICAL (KIND=l_word), DIMENSION (:), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_i_sp2 (allocatable_array) USE Precision INTEGER (KIND=i_sp), DIMENSION (:, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_i_dp2 (allocatable_array) USE Precision INTEGER (KIND=i_dp), DIMENSION (:, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_r_sp2 (allocatable_array) USE Precision REAL (KIND=r_sp), DIMENSION (:, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_r_dp2 (allocatable_array) USE Precision REAL (KIND=r_dp), DIMENSION (:, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_l_word2 (allocatable_array) USE Precision LOGICAL (KIND=l_word), DIMENSION (:, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_i_sp3 (allocatable_array) USE Precision INTEGER (KIND=i_sp), DIMENSION (:, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_i_dp3 (allocatable_array) USE Precision INTEGER (KIND=i_dp), DIMENSION (:, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_r_sp3 (allocatable_array) USE Precision REAL (KIND=r_sp), DIMENSION (:, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_r_dp3 (allocatable_array) USE Precision REAL (KIND=r_dp), DIMENSION (:, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_l_word3 (allocatable_array) USE Precision LOGICAL (KIND=l_word), DIMENSION (:, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_i_sp4 (allocatable_array) USE Precision INTEGER (KIND=i_sp), DIMENSION (:, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_i_dp4 (allocatable_array) USE Precision INTEGER (KIND=i_dp), DIMENSION (:, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_r_sp4 (allocatable_array) USE Precision REAL (KIND=r_sp), DIMENSION (:, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_r_dp4 (allocatable_array) USE Precision REAL (KIND=r_dp), DIMENSION (:, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_l_word4 (allocatable_array) USE Precision LOGICAL (KIND=l_word), DIMENSION (:, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_i_sp5 (allocatable_array) USE Precision INTEGER (KIND=i_sp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_i_dp5 (allocatable_array) USE Precision INTEGER (KIND=i_dp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_r_sp5 (allocatable_array) USE Precision REAL (KIND=r_sp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_r_dp5 (allocatable_array) USE Precision REAL (KIND=r_dp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE SUBROUTINE DeallocateArray_l_word5 (allocatable_array) USE Precision LOGICAL (KIND=l_word), DIMENSION (:, :, :, :, :), ALLOCATABLE :: allocatable_array END SUBROUTINE END INTERFACE INTERFACE C_DEALLOCATE MODULE PROCEDURE C_DEALLOCATE_i_sp1 MODULE PROCEDURE C_DEALLOCATE_i_dp1 MODULE PROCEDURE C_DEALLOCATE_r_sp1 MODULE PROCEDURE C_DEALLOCATE_r_dp1 MODULE PROCEDURE C_DEALLOCATE_l_word1 MODULE PROCEDURE C_DEALLOCATE_i_sp2 MODULE PROCEDURE C_DEALLOCATE_i_dp2 MODULE PROCEDURE C_DEALLOCATE_r_sp2 MODULE PROCEDURE C_DEALLOCATE_r_dp2 MODULE PROCEDURE C_DEALLOCATE_l_word2 MODULE PROCEDURE C_DEALLOCATE_i_sp3 MODULE PROCEDURE C_DEALLOCATE_i_dp3 MODULE PROCEDURE C_DEALLOCATE_r_sp3 MODULE PROCEDURE C_DEALLOCATE_r_dp3 MODULE PROCEDURE C_DEALLOCATE_l_word3 MODULE PROCEDURE C_DEALLOCATE_i_sp4 MODULE PROCEDURE C_DEALLOCATE_i_dp4 MODULE PROCEDURE C_DEALLOCATE_r_sp4 MODULE PROCEDURE C_DEALLOCATE_r_dp4 MODULE PROCEDURE C_DEALLOCATE_l_word4 MODULE PROCEDURE C_DEALLOCATE_i_sp5 MODULE PROCEDURE C_DEALLOCATE_i_dp5 MODULE PROCEDURE C_DEALLOCATE_r_sp5 MODULE PROCEDURE C_DEALLOCATE_r_dp5 MODULE PROCEDURE C_DEALLOCATE_l_word5 END INTERFACE INTERFACE C_STRIDE FUNCTION STRIDE_C_long (var1, var2) RESULT (stride) USE C_Binding_Types INTEGER (KIND=C_LONG), INTENT (IN), TARGET :: var1, var2 INTEGER (KIND=C_INT) :: stride END FUNCTION FUNCTION STRIDE_C_long_long (var1, var2) RESULT (stride) USE C_Binding_Types INTEGER (KIND=C_LONG_LONG), INTENT (IN), TARGET :: var1, var2 INTEGER (KIND=C_INT) :: stride END FUNCTION FUNCTION STRIDE_C_float (var1, var2) RESULT (stride) USE C_Binding_Types REAL (KIND=C_FLOAT), INTENT (IN), TARGET :: var1, var2 INTEGER (KIND=C_INT) :: stride END FUNCTION FUNCTION STRIDE_C_double (var1, var2) RESULT (stride) USE C_Binding_Types REAL (KIND=C_DOUBLE), INTENT (IN), TARGET :: var1, var2 INTEGER (KIND=C_INT) :: stride END FUNCTION FUNCTION STRIDE_C_bool (var1, var2) RESULT (stride) USE C_Binding_Types LOGICAL (KIND=C_BOOL), INTENT (IN), TARGET :: var1, var2 INTEGER (KIND=C_INT) :: stride END FUNCTION FUNCTION STRIDE_C_signed_char (var1, var2) RESULT (stride) USE C_Binding_Types INTEGER (KIND=C_SIGNED_CHAR), INTENT (IN), TARGET :: var1, var2 INTEGER (KIND=C_INT) :: stride END FUNCTION FUNCTION STRIDE_C_short (var1, var2) RESULT (stride) USE C_Binding_Types INTEGER (KIND=C_SHORT), INTENT (IN), TARGET :: var1, var2 INTEGER (KIND=C_INT) :: stride END FUNCTION FUNCTION STRIDE_C_char (var1, var2) RESULT (stride) USE C_Binding_Types CHARACTER (KIND=C_CHAR), INTENT (IN), TARGET :: var1, var2 INTEGER (KIND=C_INT) :: stride END FUNCTION END INTERFACE CONTAINS FUNCTION F_C_POINTER_i_sp (f_pointer) RESULT (c_pointer) INTEGER (KIND=i_sp), POINTER :: f_pointer INTEGER (KIND=C_ADDRESS) :: c_pointer INTERFACE FUNCTION F_C_POINTER_C (f_pointer) RESULT (c_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=i_sp), POINTER :: f_pointer INTEGER (KIND=C_ADDRESS) :: c_pointer END FUNCTION F_C_POINTER_C END INTERFACE c_pointer = F_C_POINTER_C (f_pointer) END FUNCTION FUNCTION F_C_POINTER_i_dp (f_pointer) RESULT (c_pointer) INTEGER (KIND=i_dp), POINTER :: f_pointer INTEGER (KIND=C_ADDRESS) :: c_pointer INTERFACE FUNCTION F_C_POINTER_C (f_pointer) RESULT (c_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=i_dp), POINTER :: f_pointer INTEGER (KIND=C_ADDRESS) :: c_pointer END FUNCTION F_C_POINTER_C END INTERFACE c_pointer = F_C_POINTER_C (f_pointer) END FUNCTION FUNCTION F_C_POINTER_r_sp (f_pointer) RESULT (c_pointer) REAL (KIND=r_sp), POINTER :: f_pointer INTEGER (KIND=C_ADDRESS) :: c_pointer INTERFACE FUNCTION F_C_POINTER_C (f_pointer) RESULT (c_pointer) USE Precision USE C_Binding_Types REAL (KIND=r_sp), POINTER :: f_pointer INTEGER (KIND=C_ADDRESS) :: c_pointer END FUNCTION F_C_POINTER_C END INTERFACE c_pointer = F_C_POINTER_C (f_pointer) END FUNCTION FUNCTION F_C_POINTER_r_dp (f_pointer) RESULT (c_pointer) REAL (KIND=r_dp), POINTER :: f_pointer INTEGER (KIND=C_ADDRESS) :: c_pointer INTERFACE FUNCTION F_C_POINTER_C (f_pointer) RESULT (c_pointer) USE Precision USE C_Binding_Types REAL (KIND=r_dp), POINTER :: f_pointer INTEGER (KIND=C_ADDRESS) :: c_pointer END FUNCTION F_C_POINTER_C END INTERFACE c_pointer = F_C_POINTER_C (f_pointer) END FUNCTION FUNCTION F_C_POINTER_l_word (f_pointer) RESULT (c_pointer) LOGICAL (KIND=l_word), POINTER :: f_pointer INTEGER (KIND=C_ADDRESS) :: c_pointer INTERFACE FUNCTION F_C_POINTER_C (f_pointer) RESULT (c_pointer) USE Precision USE C_Binding_Types LOGICAL (KIND=l_word), POINTER :: f_pointer INTEGER (KIND=C_ADDRESS) :: c_pointer END FUNCTION F_C_POINTER_C END INTERFACE c_pointer = F_C_POINTER_C (f_pointer) END FUNCTION FUNCTION C_LOC_i_sp0 (X) RESULT (c_pointer) INTEGER (KIND=i_sp), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTEGER (KIND=i_sp), POINTER :: scalar_pointer scalar_pointer => X c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_i_dp0 (X) RESULT (c_pointer) INTEGER (KIND=i_dp), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTEGER (KIND=i_dp), POINTER :: scalar_pointer scalar_pointer => X c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_r_sp0 (X) RESULT (c_pointer) REAL (KIND=r_sp), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer REAL (KIND=r_sp), POINTER :: scalar_pointer scalar_pointer => X c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_r_dp0 (X) RESULT (c_pointer) REAL (KIND=r_dp), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer REAL (KIND=r_dp), POINTER :: scalar_pointer scalar_pointer => X c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_l_word0 (X) RESULT (c_pointer) LOGICAL (KIND=l_word), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer LOGICAL (KIND=l_word), POINTER :: scalar_pointer scalar_pointer => X c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_i_sp1 (X) RESULT (c_pointer) INTEGER (KIND=i_sp), DIMENSION (:), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTEGER (KIND=i_sp), POINTER :: scalar_pointer scalar_pointer => X (1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_i_dp1 (X) RESULT (c_pointer) INTEGER (KIND=i_dp), DIMENSION (:), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTEGER (KIND=i_dp), POINTER :: scalar_pointer scalar_pointer => X (1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_r_sp1 (X) RESULT (c_pointer) REAL (KIND=r_sp), DIMENSION (:), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer REAL (KIND=r_sp), POINTER :: scalar_pointer scalar_pointer => X (1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_r_dp1 (X) RESULT (c_pointer) REAL (KIND=r_dp), DIMENSION (:), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer REAL (KIND=r_dp), POINTER :: scalar_pointer scalar_pointer => X (1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_l_word1 (X) RESULT (c_pointer) LOGICAL (KIND=l_word), DIMENSION (:), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer LOGICAL (KIND=l_word), POINTER :: scalar_pointer scalar_pointer => X (1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_i_sp2 (X) RESULT (c_pointer) INTEGER (KIND=i_sp), DIMENSION (:, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTEGER (KIND=i_sp), POINTER :: scalar_pointer scalar_pointer => X (1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_i_dp2 (X) RESULT (c_pointer) INTEGER (KIND=i_dp), DIMENSION (:, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTEGER (KIND=i_dp), POINTER :: scalar_pointer scalar_pointer => X (1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_r_sp2 (X) RESULT (c_pointer) REAL (KIND=r_sp), DIMENSION (:, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer REAL (KIND=r_sp), POINTER :: scalar_pointer scalar_pointer => X (1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_r_dp2 (X) RESULT (c_pointer) REAL (KIND=r_dp), DIMENSION (:, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer REAL (KIND=r_dp), POINTER :: scalar_pointer scalar_pointer => X (1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_l_word2 (X) RESULT (c_pointer) LOGICAL (KIND=l_word), DIMENSION (:, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer LOGICAL (KIND=l_word), POINTER :: scalar_pointer scalar_pointer => X (1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_i_sp3 (X) RESULT (c_pointer) INTEGER (KIND=i_sp), DIMENSION (:, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTEGER (KIND=i_sp), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_i_dp3 (X) RESULT (c_pointer) INTEGER (KIND=i_dp), DIMENSION (:, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTEGER (KIND=i_dp), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_r_sp3 (X) RESULT (c_pointer) REAL (KIND=r_sp), DIMENSION (:, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer REAL (KIND=r_sp), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_r_dp3 (X) RESULT (c_pointer) REAL (KIND=r_dp), DIMENSION (:, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer REAL (KIND=r_dp), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_l_word3 (X) RESULT (c_pointer) LOGICAL (KIND=l_word), DIMENSION (:, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer LOGICAL (KIND=l_word), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_i_sp4 (X) RESULT (c_pointer) INTEGER (KIND=i_sp), DIMENSION (:, :, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTEGER (KIND=i_sp), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_i_dp4 (X) RESULT (c_pointer) INTEGER (KIND=i_dp), DIMENSION (:, :, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTEGER (KIND=i_dp), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_r_sp4 (X) RESULT (c_pointer) REAL (KIND=r_sp), DIMENSION (:, :, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer REAL (KIND=r_sp), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_r_dp4 (X) RESULT (c_pointer) REAL (KIND=r_dp), DIMENSION (:, :, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer REAL (KIND=r_dp), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_l_word4 (X) RESULT (c_pointer) LOGICAL (KIND=l_word), DIMENSION (:, :, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer LOGICAL (KIND=l_word), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_i_sp5 (X) RESULT (c_pointer) INTEGER (KIND=i_sp), DIMENSION (:, :, :, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTEGER (KIND=i_sp), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_i_dp5 (X) RESULT (c_pointer) INTEGER (KIND=i_dp), DIMENSION (:, :, :, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTEGER (KIND=i_dp), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_r_sp5 (X) RESULT (c_pointer) REAL (KIND=r_sp), DIMENSION (:, :, :, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer REAL (KIND=r_sp), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_r_dp5 (X) RESULT (c_pointer) REAL (KIND=r_dp), DIMENSION (:, :, :, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer REAL (KIND=r_dp), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_l_word5 (X) RESULT (c_pointer) LOGICAL (KIND=l_word), DIMENSION (:, :, :, :, :), INTENT (IN), TARGET :: X INTEGER (KIND=C_ADDRESS) :: c_pointer LOGICAL (KIND=l_word), POINTER :: scalar_pointer scalar_pointer => X (1, 1, 1, 1, 1) c_pointer = F_C_POINTER (scalar_pointer) END FUNCTION FUNCTION C_LOC_Function_i_sp (X) RESULT (c_pointer) INTEGER (i_sp), EXTERNAL :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTERFACE FUNCTION F_C_PROCEDURE_C (f_procedure) RESULT (c_pointer) USE Precision USE C_Binding_Types INTEGER (i_sp), EXTERNAL :: f_procedure INTEGER (KIND=C_ADDRESS) :: c_pointer END FUNCTION F_C_PROCEDURE_C END INTERFACE c_pointer = F_C_PROCEDURE_C (X) END FUNCTION FUNCTION C_LOC_Function_i_dp (X) RESULT (c_pointer) INTEGER (i_dp), EXTERNAL :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTERFACE FUNCTION F_C_PROCEDURE_C (f_procedure) RESULT (c_pointer) USE Precision USE C_Binding_Types INTEGER (i_dp), EXTERNAL :: f_procedure INTEGER (KIND=C_ADDRESS) :: c_pointer END FUNCTION F_C_PROCEDURE_C END INTERFACE c_pointer = F_C_PROCEDURE_C (X) END FUNCTION FUNCTION C_LOC_Function_r_sp (X) RESULT (c_pointer) REAL (r_sp), EXTERNAL :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTERFACE FUNCTION F_C_PROCEDURE_C (f_procedure) RESULT (c_pointer) USE Precision USE C_Binding_Types REAL (r_sp), EXTERNAL :: f_procedure INTEGER (KIND=C_ADDRESS) :: c_pointer END FUNCTION F_C_PROCEDURE_C END INTERFACE c_pointer = F_C_PROCEDURE_C (X) END FUNCTION FUNCTION C_LOC_Function_r_dp (X) RESULT (c_pointer) REAL (r_dp), EXTERNAL :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTERFACE FUNCTION F_C_PROCEDURE_C (f_procedure) RESULT (c_pointer) USE Precision USE C_Binding_Types REAL (r_dp), EXTERNAL :: f_procedure INTEGER (KIND=C_ADDRESS) :: c_pointer END FUNCTION F_C_PROCEDURE_C END INTERFACE c_pointer = F_C_PROCEDURE_C (X) END FUNCTION FUNCTION C_LOC_Function_l_word (X) RESULT (c_pointer) LOGICAL (l_word), EXTERNAL :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTERFACE FUNCTION F_C_PROCEDURE_C (f_procedure) RESULT (c_pointer) USE Precision USE C_Binding_Types LOGICAL (l_word), EXTERNAL :: f_procedure INTEGER (KIND=C_ADDRESS) :: c_pointer END FUNCTION F_C_PROCEDURE_C END INTERFACE c_pointer = F_C_PROCEDURE_C (X) END FUNCTION FUNCTION C_LOC_Subroutine (X) RESULT (c_pointer) EXTERNAL :: X INTEGER (KIND=C_ADDRESS) :: c_pointer INTERFACE FUNCTION F_C_PROCEDURE_C (f_procedure) RESULT (c_pointer) USE Precision USE C_Binding_Types EXTERNAL :: f_procedure INTEGER (KIND=C_ADDRESS) :: c_pointer END FUNCTION F_C_PROCEDURE_C END INTERFACE c_pointer = F_C_PROCEDURE_C (X) END FUNCTION FUNCTION C_ASSOCIATED (C_PTR_1, C_PTR_2) RESULT (is_associated) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: C_PTR_1 INTEGER (KIND=C_ADDRESS), INTENT (IN), OPTIONAL :: C_PTR_2 LOGICAL :: is_associated IF (PRESENT(C_PTR_2)) THEN is_associated = (C_PTR_1 == C_PTR_2) ELSE is_associated = (C_PTR_1 /= C_NULL_PTR) END IF END FUNCTION C_ASSOCIATED SUBROUTINE C_F_POINTER_i_sp0 (CPTR, FPTR) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_sp), POINTER :: FPTR INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE CALL C_F_POINTER_C (CPTR, FPTR) END SUBROUTINE SUBROUTINE C_F_POINTER_i_dp0 (CPTR, FPTR) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_dp), POINTER :: FPTR INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE CALL C_F_POINTER_C (CPTR, FPTR) END SUBROUTINE SUBROUTINE C_F_POINTER_r_sp0 (CPTR, FPTR) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_sp), POINTER :: FPTR INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE CALL C_F_POINTER_C (CPTR, FPTR) END SUBROUTINE SUBROUTINE C_F_POINTER_r_dp0 (CPTR, FPTR) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_dp), POINTER :: FPTR INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE CALL C_F_POINTER_C (CPTR, FPTR) END SUBROUTINE SUBROUTINE C_F_POINTER_l_word0 (CPTR, FPTR) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR LOGICAL (KIND=l_word), POINTER :: FPTR INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer LOGICAL (KIND=l_word), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE CALL C_F_POINTER_C (CPTR, FPTR) END SUBROUTINE SUBROUTINE C_F_POINTER_i_sp1 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_sp), DIMENSION (:), POINTER :: FPTR INTEGER, DIMENSION (1), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_sp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_i_dp1 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_dp), DIMENSION (:), POINTER :: FPTR INTEGER, DIMENSION (1), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_dp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_r_sp1 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_sp), DIMENSION (:), POINTER :: FPTR INTEGER, DIMENSION (1), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_sp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_r_dp1 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_dp), DIMENSION (:), POINTER :: FPTR INTEGER, DIMENSION (1), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_dp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_l_word1 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR LOGICAL (KIND=l_word), DIMENSION (:), POINTER :: FPTR INTEGER, DIMENSION (1), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer LOGICAL (KIND=l_word), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE LOGICAL (KIND=l_word), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_i_sp2 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_sp), DIMENSION (:, :), POINTER :: FPTR INTEGER, DIMENSION (2), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_sp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_i_dp2 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_dp), DIMENSION (:, :), POINTER :: FPTR INTEGER, DIMENSION (2), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_dp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_r_sp2 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_sp), DIMENSION (:, :), POINTER :: FPTR INTEGER, DIMENSION (2), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_sp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_r_dp2 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_dp), DIMENSION (:, :), POINTER :: FPTR INTEGER, DIMENSION (2), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_dp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_l_word2 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR LOGICAL (KIND=l_word), DIMENSION (:, :), POINTER :: FPTR INTEGER, DIMENSION (2), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer LOGICAL (KIND=l_word), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE LOGICAL (KIND=l_word), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_i_sp3 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_sp), DIMENSION (:, :, :), POINTER :: FPTR INTEGER, DIMENSION (3), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_sp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_i_dp3 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_dp), DIMENSION (:, :, :), POINTER :: FPTR INTEGER, DIMENSION (3), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_dp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_r_sp3 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_sp), DIMENSION (:, :, :), POINTER :: FPTR INTEGER, DIMENSION (3), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_sp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_r_dp3 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_dp), DIMENSION (:, :, :), POINTER :: FPTR INTEGER, DIMENSION (3), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_dp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_l_word3 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR LOGICAL (KIND=l_word), DIMENSION (:, :, :), POINTER :: FPTR INTEGER, DIMENSION (3), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer LOGICAL (KIND=l_word), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE LOGICAL (KIND=l_word), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_i_sp4 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_sp), DIMENSION (:, :, :, :), POINTER :: FPTR INTEGER, DIMENSION (4), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_sp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_i_dp4 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_dp), DIMENSION (:, :, :, :), POINTER :: FPTR INTEGER, DIMENSION (4), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_dp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_r_sp4 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_sp), DIMENSION (:, :, :, :), POINTER :: FPTR INTEGER, DIMENSION (4), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_sp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_r_dp4 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_dp), DIMENSION (:, :, :, :), POINTER :: FPTR INTEGER, DIMENSION (4), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_dp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_l_word4 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR LOGICAL (KIND=l_word), DIMENSION (:, :, :, :), POINTER :: FPTR INTEGER, DIMENSION (4), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer LOGICAL (KIND=l_word), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE LOGICAL (KIND=l_word), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_i_sp5 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_sp), DIMENSION (:, :, :, :, :), POINTER :: FPTR INTEGER, DIMENSION (5), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_sp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_i_dp5 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_dp), DIMENSION (:, :, :, :, :), POINTER :: FPTR INTEGER, DIMENSION (5), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_dp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_r_sp5 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_sp), DIMENSION (:, :, :, :, :), POINTER :: FPTR INTEGER, DIMENSION (5), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_sp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_r_dp5 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_dp), DIMENSION (:, :, :, :, :), POINTER :: FPTR INTEGER, DIMENSION (5), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_dp), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_F_POINTER_l_word5 (CPTR, FPTR, shape) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR LOGICAL (KIND=l_word), DIMENSION (:, :, :, :, :), POINTER :: FPTR INTEGER, DIMENSION (5), INTENT (IN) :: shape INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer LOGICAL (KIND=l_word), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE LOGICAL (KIND=l_word), POINTER :: scalar_pointer CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeArrayPointer (storage=scalar_pointer, array_pointer=FPTR, shape=shape) END SUBROUTINE SUBROUTINE C_ALLOCATE_i_sp1 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_sp), DIMENSION (:), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (1), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_sp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_i_dp1 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_dp), DIMENSION (:), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (1), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_dp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_r_sp1 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_sp), DIMENSION (:), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (1), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_sp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_r_dp1 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_dp), DIMENSION (:), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (1), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_dp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_l_word1 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR LOGICAL (KIND=l_word), DIMENSION (:), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (1), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer LOGICAL (KIND=l_word), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE LOGICAL (KIND=l_word), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_i_sp2 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_sp), DIMENSION (:, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (2), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_sp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_i_dp2 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_dp), DIMENSION (:, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (2), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_dp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_r_sp2 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_sp), DIMENSION (:, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (2), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_sp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_r_dp2 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_dp), DIMENSION (:, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (2), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_dp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_l_word2 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR LOGICAL (KIND=l_word), DIMENSION (:, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (2), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer LOGICAL (KIND=l_word), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE LOGICAL (KIND=l_word), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_i_sp3 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_sp), DIMENSION (:, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (3), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_sp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_i_dp3 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_dp), DIMENSION (:, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (3), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_dp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_r_sp3 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_sp), DIMENSION (:, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (3), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_sp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_r_dp3 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_dp), DIMENSION (:, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (3), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_dp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_l_word3 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR LOGICAL (KIND=l_word), DIMENSION (:, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (3), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer LOGICAL (KIND=l_word), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE LOGICAL (KIND=l_word), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_i_sp4 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_sp), DIMENSION (:, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (4), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_sp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_i_dp4 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_dp), DIMENSION (:, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (4), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_dp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_r_sp4 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_sp), DIMENSION (:, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (4), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_sp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_r_dp4 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_dp), DIMENSION (:, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (4), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_dp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_l_word4 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR LOGICAL (KIND=l_word), DIMENSION (:, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (4), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer LOGICAL (KIND=l_word), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE LOGICAL (KIND=l_word), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_i_sp5 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_sp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (5), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_sp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_i_dp5 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR INTEGER (KIND=i_dp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (5), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer INTEGER (KIND=i_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE INTEGER (KIND=i_dp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_r_sp5 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_sp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (5), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_sp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_sp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_r_dp5 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR REAL (KIND=r_dp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (5), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer REAL (KIND=r_dp), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE REAL (KIND=r_dp), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_ALLOCATE_l_word5 (CPTR, F_ALLOC, shape, STAT) INTEGER (KIND=C_ADDRESS), INTENT (IN) :: CPTR LOGICAL (KIND=l_word), DIMENSION (:, :, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, DIMENSION (5), INTENT (IN) :: shape INTEGER, OPTIONAL :: STAT INTERFACE SUBROUTINE C_F_POINTER_C (c_pointer, f_pointer) USE Precision USE C_Binding_Types INTEGER (KIND=C_ADDRESS), INTENT (IN) :: c_pointer LOGICAL (KIND=l_word), POINTER :: f_pointer END SUBROUTINE C_F_POINTER_C END INTERFACE LOGICAL (KIND=l_word), POINTER :: scalar_pointer IF (C_ASSOCIATED(CPTR)) THEN CALL C_F_POINTER_C (CPTR, scalar_pointer) CALL MakeAllocatableArray (storage=scalar_pointer, allocatable_array=F_ALLOC, shape=shape) IF (PRESENT(STAT)) STAT = 0 ELSE CALL C_DEALLOCATE (F_ALLOC) IF (PRESENT(STAT)) STAT = - 1 END IF END SUBROUTINE SUBROUTINE C_DEALLOCATE_i_sp1 (F_ALLOC, STAT) INTEGER (KIND=i_sp), DIMENSION (:), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_i_dp1 (F_ALLOC, STAT) INTEGER (KIND=i_dp), DIMENSION (:), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_r_sp1 (F_ALLOC, STAT) REAL (KIND=r_sp), DIMENSION (:), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_r_dp1 (F_ALLOC, STAT) REAL (KIND=r_dp), DIMENSION (:), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_l_word1 (F_ALLOC, STAT) LOGICAL (KIND=l_word), DIMENSION (:), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_i_sp2 (F_ALLOC, STAT) INTEGER (KIND=i_sp), DIMENSION (:, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_i_dp2 (F_ALLOC, STAT) INTEGER (KIND=i_dp), DIMENSION (:, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_r_sp2 (F_ALLOC, STAT) REAL (KIND=r_sp), DIMENSION (:, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_r_dp2 (F_ALLOC, STAT) REAL (KIND=r_dp), DIMENSION (:, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_l_word2 (F_ALLOC, STAT) LOGICAL (KIND=l_word), DIMENSION (:, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_i_sp3 (F_ALLOC, STAT) INTEGER (KIND=i_sp), DIMENSION (:, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_i_dp3 (F_ALLOC, STAT) INTEGER (KIND=i_dp), DIMENSION (:, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_r_sp3 (F_ALLOC, STAT) REAL (KIND=r_sp), DIMENSION (:, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_r_dp3 (F_ALLOC, STAT) REAL (KIND=r_dp), DIMENSION (:, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_l_word3 (F_ALLOC, STAT) LOGICAL (KIND=l_word), DIMENSION (:, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_i_sp4 (F_ALLOC, STAT) INTEGER (KIND=i_sp), DIMENSION (:, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_i_dp4 (F_ALLOC, STAT) INTEGER (KIND=i_dp), DIMENSION (:, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_r_sp4 (F_ALLOC, STAT) REAL (KIND=r_sp), DIMENSION (:, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_r_dp4 (F_ALLOC, STAT) REAL (KIND=r_dp), DIMENSION (:, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_l_word4 (F_ALLOC, STAT) LOGICAL (KIND=l_word), DIMENSION (:, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_i_sp5 (F_ALLOC, STAT) INTEGER (KIND=i_sp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_i_dp5 (F_ALLOC, STAT) INTEGER (KIND=i_dp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_r_sp5 (F_ALLOC, STAT) REAL (KIND=r_sp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_r_dp5 (F_ALLOC, STAT) REAL (KIND=r_dp), DIMENSION (:, :, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE SUBROUTINE C_DEALLOCATE_l_word5 (F_ALLOC, STAT) LOGICAL (KIND=l_word), DIMENSION (:, :, :, :, :), ALLOCATABLE :: F_ALLOC INTEGER, OPTIONAL :: STAT CALL DeallocateArray (F_ALLOC) IF (PRESENT(STAT)) STAT = 0 END SUBROUTINE END MODULE ISO_C_BINDING SUBROUTINE MakeArrayPointer_i_sp1 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (1), INTENT (IN) :: shape INTEGER (KIND=i_sp), DIMENSION (shape(1)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:), POINTER :: array_pointer INTEGER, DIMENSION (1), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_i_dp1 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (1), INTENT (IN) :: shape INTEGER (KIND=i_dp), DIMENSION (shape(1)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:), POINTER :: array_pointer INTEGER, DIMENSION (1), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_r_sp1 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (1), INTENT (IN) :: shape REAL (KIND=r_sp), DIMENSION (shape(1)), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:), POINTER :: array_pointer INTEGER, DIMENSION (1), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_r_dp1 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (1), INTENT (IN) :: shape REAL (KIND=r_dp), DIMENSION (shape(1)), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:), POINTER :: array_pointer INTEGER, DIMENSION (1), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_l_word1 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (1), INTENT (IN) :: shape LOGICAL (KIND=l_word), DIMENSION (shape(1)), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:), POINTER :: array_pointer INTEGER, DIMENSION (1), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_i_sp2 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (2), INTENT (IN) :: shape INTEGER (KIND=i_sp), DIMENSION (shape(1), shape(2)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :), POINTER :: array_pointer INTEGER, DIMENSION (2), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_i_dp2 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (2), INTENT (IN) :: shape INTEGER (KIND=i_dp), DIMENSION (shape(1), shape(2)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :), POINTER :: array_pointer INTEGER, DIMENSION (2), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_r_sp2 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (2), INTENT (IN) :: shape REAL (KIND=r_sp), DIMENSION (shape(1), shape(2)), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :), POINTER :: array_pointer INTEGER, DIMENSION (2), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_r_dp2 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (2), INTENT (IN) :: shape REAL (KIND=r_dp), DIMENSION (shape(1), shape(2)), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :), POINTER :: array_pointer INTEGER, DIMENSION (2), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_l_word2 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (2), INTENT (IN) :: shape LOGICAL (KIND=l_word), DIMENSION (shape(1), shape(2)), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :), POINTER :: array_pointer INTEGER, DIMENSION (2), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_i_sp3 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (3), INTENT (IN) :: shape INTEGER (KIND=i_sp), DIMENSION (shape(1), shape(2), shape(3)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :, :), POINTER :: array_pointer INTEGER, DIMENSION (3), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_i_dp3 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (3), INTENT (IN) :: shape INTEGER (KIND=i_dp), DIMENSION (shape(1), shape(2), shape(3)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :, :), POINTER :: array_pointer INTEGER, DIMENSION (3), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_r_sp3 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (3), INTENT (IN) :: shape REAL (KIND=r_sp), DIMENSION (shape(1), shape(2), shape(3)), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :, :), POINTER :: array_pointer INTEGER, DIMENSION (3), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_r_dp3 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (3), INTENT (IN) :: shape REAL (KIND=r_dp), DIMENSION (shape(1), shape(2), shape(3)), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :, :), POINTER :: array_pointer INTEGER, DIMENSION (3), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_l_word3 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (3), INTENT (IN) :: shape LOGICAL (KIND=l_word), DIMENSION (shape(1), shape(2), shape(3)), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :, :), POINTER :: array_pointer INTEGER, DIMENSION (3), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_i_sp4 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (4), INTENT (IN) :: shape INTEGER (KIND=i_sp), DIMENSION (shape(1), shape(2), shape(3), shape(4)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (4), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3), ::strides(4)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_i_dp4 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (4), INTENT (IN) :: shape INTEGER (KIND=i_dp), DIMENSION (shape(1), shape(2), shape(3), shape(4)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (4), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3), ::strides(4)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_r_sp4 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (4), INTENT (IN) :: shape REAL (KIND=r_sp), DIMENSION (shape(1), shape(2), shape(3), shape(4)), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (4), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3), ::strides(4)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_r_dp4 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (4), INTENT (IN) :: shape REAL (KIND=r_dp), DIMENSION (shape(1), shape(2), shape(3), shape(4)), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (4), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3), ::strides(4)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_l_word4 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (4), INTENT (IN) :: shape LOGICAL (KIND=l_word), DIMENSION (shape(1), shape(2), shape(3), shape(4)), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (4), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3), ::strides(4)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_i_sp5 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (5), INTENT (IN) :: shape INTEGER (KIND=i_sp), DIMENSION (shape(1), shape(2), shape(3), shape(4), shape(5)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (5), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3), ::strides(4), ::strides(5)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_i_dp5 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (5), INTENT (IN) :: shape INTEGER (KIND=i_dp), DIMENSION (shape(1), shape(2), shape(3), shape(4), shape(5)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (5), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3), ::strides(4), ::strides(5)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_r_sp5 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (5), INTENT (IN) :: shape REAL (KIND=r_sp), DIMENSION (shape(1), shape(2), shape(3), shape(4), shape(5)), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (5), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3), ::strides(4), ::strides(5)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_r_dp5 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (5), INTENT (IN) :: shape REAL (KIND=r_dp), DIMENSION (shape(1), shape(2), shape(3), shape(4), shape(5)), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (5), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3), ::strides(4), ::strides(5)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeArrayPointer_l_word5 (storage, array_pointer, shape, strides) USE Precision IMPLICIT NONE INTEGER, DIMENSION (5), INTENT (IN) :: shape LOGICAL (KIND=l_word), DIMENSION (shape(1), shape(2), shape(3), shape(4), shape(5)), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :, :, :, :), POINTER :: array_pointer INTEGER, DIMENSION (5), INTENT (IN), OPTIONAL :: strides IF (PRESENT(strides)) THEN array_pointer => storage (::strides(1), ::strides(2), ::strides(3), ::strides(4), ::strides(5)) ELSE array_pointer => storage END IF END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_sp1 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (1), INTENT (IN) :: shape INTEGER (KIND=i_sp), DIMENSION (shape(1)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_dp1 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (1), INTENT (IN) :: shape INTEGER (KIND=i_dp), DIMENSION (shape(1)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_sp1 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (1), INTENT (IN) :: shape REAL (KIND=r_sp), DIMENSION (shape(1)), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_dp1 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (1), INTENT (IN) :: shape REAL (KIND=r_dp), DIMENSION (shape(1)), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_l_word1 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (1), INTENT (IN) :: shape LOGICAL (KIND=l_word), DIMENSION (shape(1)), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_sp2 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (2), INTENT (IN) :: shape INTEGER (KIND=i_sp), DIMENSION (shape(1), shape(2)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_dp2 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (2), INTENT (IN) :: shape INTEGER (KIND=i_dp), DIMENSION (shape(1), shape(2)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_sp2 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (2), INTENT (IN) :: shape REAL (KIND=r_sp), DIMENSION (shape(1), shape(2)), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_dp2 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (2), INTENT (IN) :: shape REAL (KIND=r_dp), DIMENSION (shape(1), shape(2)), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_l_word2 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (2), INTENT (IN) :: shape LOGICAL (KIND=l_word), DIMENSION (shape(1), shape(2)), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_sp3 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (3), INTENT (IN) :: shape INTEGER (KIND=i_sp), DIMENSION (shape(1), shape(2), shape(3)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_dp3 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (3), INTENT (IN) :: shape INTEGER (KIND=i_dp), DIMENSION (shape(1), shape(2), shape(3)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_sp3 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (3), INTENT (IN) :: shape REAL (KIND=r_sp), DIMENSION (shape(1), shape(2), shape(3)), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_dp3 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (3), INTENT (IN) :: shape REAL (KIND=r_dp), DIMENSION (shape(1), shape(2), shape(3)), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_l_word3 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (3), INTENT (IN) :: shape LOGICAL (KIND=l_word), DIMENSION (shape(1), shape(2), shape(3)), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_sp4 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (4), INTENT (IN) :: shape INTEGER (KIND=i_sp), DIMENSION (shape(1), shape(2), shape(3), shape(4)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_dp4 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (4), INTENT (IN) :: shape INTEGER (KIND=i_dp), DIMENSION (shape(1), shape(2), shape(3), shape(4)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_sp4 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (4), INTENT (IN) :: shape REAL (KIND=r_sp), DIMENSION (shape(1), shape(2), shape(3), shape(4)), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_dp4 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (4), INTENT (IN) :: shape REAL (KIND=r_dp), DIMENSION (shape(1), shape(2), shape(3), shape(4)), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_l_word4 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (4), INTENT (IN) :: shape LOGICAL (KIND=l_word), DIMENSION (shape(1), shape(2), shape(3), shape(4)), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_sp5 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (5), INTENT (IN) :: shape INTEGER (KIND=i_sp), DIMENSION (shape(1), shape(2), shape(3), shape(4), shape(5)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_sp), DIMENSION (:, :, :, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_i_dp5 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (5), INTENT (IN) :: shape INTEGER (KIND=i_dp), DIMENSION (shape(1), shape(2), shape(3), shape(4), shape(5)), INTENT (IN), TARGET :: storage INTEGER (KIND=i_dp), DIMENSION (:, :, :, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_sp5 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (5), INTENT (IN) :: shape REAL (KIND=r_sp), DIMENSION (shape(1), shape(2), shape(3), shape(4), shape(5)), INTENT (IN), TARGET :: storage REAL (KIND=r_sp), DIMENSION (:, :, :, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_r_dp5 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (5), INTENT (IN) :: shape REAL (KIND=r_dp), DIMENSION (shape(1), shape(2), shape(3), shape(4), shape(5)), INTENT (IN), TARGET :: storage REAL (KIND=r_dp), DIMENSION (:, :, :, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE MakeAllocatableArray_l_word5 (storage, allocatable_array, shape) USE Precision IMPLICIT NONE INTEGER, DIMENSION (5), INTENT (IN) :: shape LOGICAL (KIND=l_word), DIMENSION (shape(1), shape(2), shape(3), shape(4), shape(5)), INTENT (IN), TARGET :: storage LOGICAL (KIND=l_word), DIMENSION (:, :, :, :, :), POINTER :: allocatable_array allocatable_array => storage END SUBROUTINE SUBROUTINE DeallocateArray_i_sp1 (allocatable_array) USE Precision IMPLICIT NONE INTEGER (KIND=i_sp), DIMENSION (:), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_i_dp1 (allocatable_array) USE Precision IMPLICIT NONE INTEGER (KIND=i_dp), DIMENSION (:), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_r_sp1 (allocatable_array) USE Precision IMPLICIT NONE REAL (KIND=r_sp), DIMENSION (:), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_r_dp1 (allocatable_array) USE Precision IMPLICIT NONE REAL (KIND=r_dp), DIMENSION (:), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_l_word1 (allocatable_array) USE Precision IMPLICIT NONE LOGICAL (KIND=l_word), DIMENSION (:), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_i_sp2 (allocatable_array) USE Precision IMPLICIT NONE INTEGER (KIND=i_sp), DIMENSION (:, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_i_dp2 (allocatable_array) USE Precision IMPLICIT NONE INTEGER (KIND=i_dp), DIMENSION (:, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_r_sp2 (allocatable_array) USE Precision IMPLICIT NONE REAL (KIND=r_sp), DIMENSION (:, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_r_dp2 (allocatable_array) USE Precision IMPLICIT NONE REAL (KIND=r_dp), DIMENSION (:, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_l_word2 (allocatable_array) USE Precision IMPLICIT NONE LOGICAL (KIND=l_word), DIMENSION (:, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_i_sp3 (allocatable_array) USE Precision IMPLICIT NONE INTEGER (KIND=i_sp), DIMENSION (:, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_i_dp3 (allocatable_array) USE Precision IMPLICIT NONE INTEGER (KIND=i_dp), DIMENSION (:, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_r_sp3 (allocatable_array) USE Precision IMPLICIT NONE REAL (KIND=r_sp), DIMENSION (:, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_r_dp3 (allocatable_array) USE Precision IMPLICIT NONE REAL (KIND=r_dp), DIMENSION (:, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_l_word3 (allocatable_array) USE Precision IMPLICIT NONE LOGICAL (KIND=l_word), DIMENSION (:, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_i_sp4 (allocatable_array) USE Precision IMPLICIT NONE INTEGER (KIND=i_sp), DIMENSION (:, :, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_i_dp4 (allocatable_array) USE Precision IMPLICIT NONE INTEGER (KIND=i_dp), DIMENSION (:, :, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_r_sp4 (allocatable_array) USE Precision IMPLICIT NONE REAL (KIND=r_sp), DIMENSION (:, :, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_r_dp4 (allocatable_array) USE Precision IMPLICIT NONE REAL (KIND=r_dp), DIMENSION (:, :, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_l_word4 (allocatable_array) USE Precision IMPLICIT NONE LOGICAL (KIND=l_word), DIMENSION (:, :, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_i_sp5 (allocatable_array) USE Precision IMPLICIT NONE INTEGER (KIND=i_sp), DIMENSION (:, :, :, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_i_dp5 (allocatable_array) USE Precision IMPLICIT NONE INTEGER (KIND=i_dp), DIMENSION (:, :, :, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_r_sp5 (allocatable_array) USE Precision IMPLICIT NONE REAL (KIND=r_sp), DIMENSION (:, :, :, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_r_dp5 (allocatable_array) USE Precision IMPLICIT NONE REAL (KIND=r_dp), DIMENSION (:, :, :, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE SUBROUTINE DeallocateArray_l_word5 (allocatable_array) USE Precision IMPLICIT NONE LOGICAL (KIND=l_word), DIMENSION (:, :, :, :, :), POINTER :: allocatable_array allocatable_array => NULL () END SUBROUTINE