12 numDim,numPointsBuffer,bufferSizes,opInterval, &
13 gridType,gridMetric,alphaDir,alphaW)
17 INTEGER(KIND=4),
INTENT(IN) :: numDim, gridType, alphaDir
18 INTEGER(KIND=8),
INTENT(IN) :: bufferSizes(numdim),numPointsBuffer
19 INTEGER(KIND=8),
INTENT(IN) :: opInterval(2*numdim)
20 REAL(KIND=8),
INTENT(IN),
TARGET :: gridMetric(numdim*numdim*numpointsbuffer)
21 REAL(KIND=8),
INTENT(OUT) :: alphaW(numpointsbuffer)
23 REAL(KIND=8) :: gridScale
24 INTEGER(KIND=8) :: metricOffset
26 REAL(KIND=8),
DIMENSION(:),
POINTER :: metricPtr
30 gridscale = abs(gridmetric(alphadir))
32 CALL assignmentxa(numdim,numpointsbuffer,buffersizes,opinterval, &
38 metricoffset = (alphadir-1)*numpointsbuffer
39 metricptr => gridmetric(metricoffset+1:metricoffset+numpointsbuffer)
46 metricoffset = (alphadir-1)*numdim*numpointsbuffer
47 metricptr => gridmetric(metricoffset+1:metricoffset+(numdim*numpointsbuffer))
49 CALL veclen(numdim,numpointsbuffer,buffersizes,opinterval, &
50 numdim,metricptr,alphaw)
57 numDim,numPointsBuffer,bufferSizes,opInterval, &
58 gridType,gridMetric,velDir,velocity,velHatComponent)
62 INTEGER(KIND=4),
INTENT(IN) :: numDim, gridType,velDir
63 INTEGER(KIND=8),
INTENT(IN) :: bufferSizes(numdim),numPointsBuffer
64 INTEGER(KIND=8),
INTENT(IN) :: opInterval(2*numdim)
65 REAL(KIND=8),
INTENT(IN),
TARGET :: gridMetric(numdim*numdim*numpointsbuffer)
66 REAL(KIND=8),
INTENT(IN),
TARGET :: velocity(numdim*numpointsbuffer)
67 REAL(KIND=8),
INTENT(OUT) :: velHatComponent(numpointsbuffer)
71 INTEGER(KIND=8) :: metricOffset, velOffset
72 REAL(KIND=8) :: gridScale
74 REAL(KIND=8),
DIMENSION(:),
POINTER :: velPtr
75 REAL(KIND=8),
DIMENSION(:),
POINTER :: metricPtr
93 gridscale = gridmetric(veldir)
94 veloffset = (veldir-1)*numpointsbuffer
95 velptr => velocity(veloffset+1:veloffset+numpointsbuffer)
97 CALL yax(numdim,numpointsbuffer,buffersizes,opinterval, &
98 gridscale,velptr,velhatcomponent)
103 metricoffset = (veldir-1)*numpointsbuffer
104 metricptr => gridmetric(metricoffset+1:metricoffset+numpointsbuffer)
105 velptr => velocity(metricoffset+1:metricoffset+numpointsbuffer)
107 CALL zxy(numdim,numpointsbuffer,buffersizes,opinterval, &
108 metricptr,velptr,velhatcomponent);
112 metricoffset = (veldir-1)*numdim*numpointsbuffer
113 metricptr => gridmetric(metricoffset+1:metricoffset+(numdim*numpointsbuffer))
115 CALL zxdoty(numdim,numpointsbuffer,buffersizes,opinterval, &
116 numdim,metricptr,velocity,velhatcomponent);
126 numDim, numPoints, gridSizes, opInterval, &
127 gridType, gridJacobian,gridMetric,gradVBuffer, &
132 INTEGER(KIND=4),
INTENT(IN) :: numDim, gridType
133 INTEGER(KIND=8),
INTENT(IN) :: gridSizes(numdim), numPoints
134 INTEGER(KIND=8),
INTENT(IN) :: opInterval(2*numdim)
135 REAL(KIND=8),
INTENT(IN) :: gridJacobian(numpoints)
136 REAL(KIND=8),
INTENT(IN),
TARGET :: gridMetric(numdim*numdim*numpoints)
137 REAL(KIND=8),
INTENT(IN),
TARGET :: gradVBuffer(numdim*numdim*numpoints)
138 REAL(KIND=8),
INTENT(OUT) :: divBuffer(numpoints)
140 INTEGER :: iDim, jDim
141 INTEGER(KIND=8) :: metricOffset, gradOffset
142 REAL(KIND=8) :: gridScale
144 REAL(KIND=8),
DIMENSION(:),
POINTER :: gradPtr
145 REAL(KIND=8),
DIMENSION(:),
POINTER :: metricPtr
150 gradoffset = ((idim-1)*numdim+(jdim-1))*numpoints
151 metricoffset = ((idim-1)+(jdim-1)*numdim)*numpoints
152 metricptr => gridmetric(metricoffset+1:metricoffset+numpoints)
153 gradptr => gradvbuffer(gradoffset+1:gradoffset+numpoints)
154 CALL ywxpy(numdim,numpoints,gridsizes,opinterval, &
155 metricptr,gradptr,divbuffer)
158 CALL yxy(numdim,numpoints,gridsizes,opinterval,gridjacobian,divbuffer)
161 gridscale = gridmetric(idim)
162 gradoffset = ((idim-1)*(numdim+1))*numpoints
163 gradptr => gradvbuffer(gradoffset+1:gradoffset+numpoints)
164 CALL yaxpy(numdim,numpoints,gridsizes,opinterval, &
165 gridscale,gradptr, divbuffer)
167 CALL xax(numdim,numpoints,gridsizes,opinterval, &
168 gridjacobian(1),divbuffer)
171 metricoffset = (idim-1)*numpoints
172 metricptr => gridmetric(metricoffset+1:metricoffset+numpoints)
173 gradoffset = ((idim-1)*(numdim+1))*numpoints
174 gradptr => gradvbuffer(gradoffset+1:gradoffset+numpoints)
175 CALL ywxpy(numdim,numpoints,gridsizes,opinterval, &
176 metricptr,gradptr,divbuffer)
178 CALL yxy(numdim,numpoints,gridsizes,opinterval,gridjacobian,divbuffer)
185 numDim, numPoints, gridSizes, opInterval, gridType, &
186 gridJacobian,gridMetric,gradIJK, gradXYZ)
190 INTEGER(KIND=4),
INTENT(IN) :: numDim, gridType
191 INTEGER(KIND=8),
INTENT(IN) :: gridSizes(numdim), numPoints
192 INTEGER(KIND=8),
INTENT(IN) :: opInterval(2*numdim)
193 REAL(KIND=8),
INTENT(IN) :: gridJacobian(numpoints)
194 REAL(KIND=8),
INTENT(IN),
TARGET :: gridMetric(numdim*numdim*numpoints)
195 REAL(KIND=8),
INTENT(IN),
TARGET :: gradIJK(numdim*numpoints)
196 REAL(KIND=8),
INTENT(OUT),
TARGET :: gradXYZ(numdim*numpoints)
198 INTEGER :: iDim, jDim
199 INTEGER(KIND=8) :: metricOffset, gradIJKOffset, gradXYZOffset
200 REAL(KIND=8) :: gridScale
203 REAL(KIND=8),
DIMENSION(:),
POINTER :: gradIJKPtr
204 REAL(KIND=8),
DIMENSION(:),
POINTER :: gradXYZPtr
205 REAL(KIND=8),
DIMENSION(:),
POINTER :: metricPtr
214 gradxyzoffset = (idim-1)*numpoints
215 gradxyzptr => gradxyz(gradxyzoffset+1:gradxyzoffset+numpoints)
216 CALL assignmentxa(numdim,numpoints,gridsizes,opinterval,zero,gradxyzptr)
220 gradxyzoffset = (idim-1)*numpoints
221 gradxyzptr => gradxyz(gradxyzoffset+1:gradxyzoffset+numpoints)
223 gradijkoffset = (jdim-1)*numpoints
224 gradijkptr => gradijk(gradijkoffset+1:gradijkoffset+numpoints)
225 metricoffset = ((jdim-1)*numdim+(idim-1))*numpoints
226 metricptr => gridmetric(metricoffset+1:metricoffset+numpoints)
227 CALL ywxpy(numdim,numpoints,gridsizes,opinterval, &
228 metricptr,gradijkptr,gradxyzptr)
230 CALL yxy(numdim,numpoints,gridsizes,opinterval,gridjacobian,gradxyzptr)
235 gridscale = gridmetric(idim)*gridjacobian(1)
236 gradijkoffset = (idim-1)*numpoints
237 gradijkptr => gradijk(gradijkoffset+1:gradijkoffset+numpoints)
238 gradxyzptr => gradxyz(gradijkoffset+1:gradijkoffset+numpoints)
239 CALL yax(numdim,numpoints,gridsizes,opinterval, &
240 gridscale,gradijkptr, gradxyzptr)
244 metricoffset = (idim-1)*numpoints
245 metricptr => gridmetric(metricoffset+1:metricoffset+numpoints)
246 gradijkptr => gradijk(metricoffset+1:metricoffset+numpoints)
247 gradxyzptr => gradxyz(metricoffset+1:metricoffset+numpoints)
248 CALL zxy(numdim,numpoints,gridsizes,opinterval, &
249 metricptr,gradijkptr,gradxyzptr)
250 CALL yxy(numdim,numpoints,gridsizes,opinterval,gridjacobian,gradxyzptr)
subroutine vhatcomponent(numDim, numPointsBuffer, bufferSizes, opInterval, gridType, gridMetric, velDir, velocity, velHatComponent)
subroutine ywxpy(numDim, numPoints, bufferSize, bufferInterval, W, X, Y)
YWXPY point-wise operator performing Y = WX + Y, where all are vectors.
subroutine assignmentyabsx(numDim, numPoints, bufferSize, bufferInterval, X, Y)
ASSIGNMENTYABSX point-wise operator performing X = scalar a.
subroutine yaxpy(numDim, numPoints, bufferSize, bufferInterval, a, X, Y)
YAXPY point-wise operator performing Y = aX + Y (scalar a)
subroutine yxy(numDim, numPoints, bufferSize, bufferInterval, X, Y)
YXY point-wise operator performing Y = XY (all vectors)
subroutine veclen(numDim, numPoints, bufferSize, bufferInterval, numComp, V, lenV)
VECLEN point-wise operator returning the length of a numComp-dimensional vector.
subroutine assignmentxa(numDim, numPoints, bufferSize, bufferInterval, a, X)
ASSIGNMENTXA point-wise operator performing X = scalar a.
subroutine ijkgradtoxyzdiv(numDim, numPoints, gridSizes, opInterval, gridType, gridJacobian, gridMetric, gradVBuffer, divBuffer)
subroutine zxdoty(numDim, numPoints, bufferSize, bufferInterval, numComponents, X, Y, Z)
ZXDOTY numComponents-vector inner product Z = X * Y.
subroutine gradijktogradxyz(numDim, numPoints, gridSizes, opInterval, gridType, gridJacobian, gridMetric, gradIJK, gradXYZ)
Converts Cartesian (computational) gradient to physical coordinates.
subroutine alphaweight(numDim, numPointsBuffer, bufferSizes, opInterval, gridType, gridMetric, alphaDir, alphaW)
integer(kind=4), parameter rectilinear
subroutine yax(numDim, numPoints, bufferSize, bufferInterval, a, X, Y)
YAX point-wise operator performing Y = aX (scalar a)
subroutine zxy(numDim, numPoints, bufferSize, bufferInterval, X, Y, Z)
ZXY point-wise operator performing Z = XY (all vectors)
subroutine xax(numDim, numPoints, bufferSize, bufferInterval, a, X)
XAX point-wise operator performing X = aX (scalar a)