psmile_transform_index.F90
Go to the documentation of this file.00001
00002
00003
00004
00005
00006 function psmile_transform_index_1d_to_3d ( &
00007 index_1d, array_shape)
00008
00009
00010
00011 use psmile_common, only : ndim_3d
00012 use psmile, dummy_interface => psmile_transform_index_1d_to_3d
00013
00014 implicit none
00015
00016
00017
00018 integer, intent(in) :: index_1d
00019
00020 integer, intent(in) :: array_shape (2, ndim_3d)
00021
00022
00023
00024
00025 integer :: psmile_transform_index_1d_to_3d (ndim_3d)
00026
00027
00028
00029
00030
00031 integer :: array_size(3)
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 Character(len=len_cvs_string), save :: mycvs =
00051 '$Id: psmile_transform_index.F90 2580 2010-09-21 12:58:05Z hanke $'
00052
00053
00054
00055
00056
00057 array_size(:) = array_shape(2,:) - array_shape(1,:) + 1
00058
00059 psmile_transform_index_1d_to_3d(3) = (index_1d-1) / product(array_size(1:2))
00060 psmile_transform_index_1d_to_3d(2) = (index_1d - 1 - &
00061 psmile_transform_index_1d_to_3d(3) * &
00062 product(array_size(1:2))) / array_size(1)
00063 psmile_transform_index_1d_to_3d(1) = index_1d - 1 - &
00064 psmile_transform_index_1d_to_3d(2) * &
00065 array_size(1) - &
00066 psmile_transform_index_1d_to_3d(3) * &
00067 product(array_size(1:2))
00068
00069 psmile_transform_index_1d_to_3d(:) = psmile_transform_index_1d_to_3d(:) + &
00070 array_shape(1,:)
00071
00072 end function psmile_transform_index_1d_to_3d
00073
00074
00075
00076 function psmile_transform_index_3d_to_1d ( &
00077 index_3d, array_shape)
00078
00079
00080
00081 use psmile_common, only : ndim_3d
00082 use psmile, dummy_interface => psmile_transform_index_3d_to_1d
00083
00084 implicit none
00085
00086
00087
00088 integer, intent(in) :: index_3d (ndim_3d)
00089
00090 integer, intent(in) :: array_shape (2, ndim_3d)
00091
00092
00093
00094
00095 integer :: psmile_transform_index_3d_to_1d
00096
00097
00098
00099
00100
00101 integer :: array_size(3), i
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120 Character(len=len_cvs_string), save :: mycvs =
00121 '$Id: psmile_transform_index.F90 2580 2010-09-21 12:58:05Z hanke $'
00122
00123
00124
00125
00126
00127 array_size(:) = array_shape(2,:) - array_shape(1,:) + 1
00128
00129 psmile_transform_index_3d_to_1d = 1 + &
00130 (index_3d(1) - array_shape(1,1)) + &
00131 (index_3d(2) - array_shape(1,2)) * array_size(1) + &
00132 (index_3d(3) - array_shape(1,3)) * product(array_size(1:2))
00133
00134 end function psmile_transform_index_3d_to_1d
00135