Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RFLO_CalcGradConnBc.F90
Go to the documentation of this file.
1 ! *********************************************************************
2 ! * Rocstar Simulation Suite *
3 ! * Copyright@2015, Illinois Rocstar LLC. All rights reserved. *
4 ! * *
5 ! * Illinois Rocstar LLC *
6 ! * Champaign, IL *
7 ! * www.illinoisrocstar.com *
8 ! * sales@illinoisrocstar.com *
9 ! * *
10 ! * License: See LICENSE file in top level of distribution package or *
11 ! * http://opensource.org/licenses/NCSA *
12 ! *********************************************************************
13 ! *********************************************************************
14 ! * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
15 ! * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES *
16 ! * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND *
17 ! * NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR *
18 ! * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
19 ! * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
20 ! * Arising FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
21 ! * USE OR OTHER DEALINGS WITH THE SOFTWARE. *
22 ! *********************************************************************
23 !******************************************************************************
24 !
25 ! Purpose: specify gradients at the current patch subject to connecting
26 ! boundary condition (block interface or periodic)
27 !
28 ! Description: if a region side has a patch with connecting bc, treatment
29 ! applied on whole side to omit complications at inter-patch
30 ! junctions; non-conneting patches will be overruled by other bc
31 !
32 ! Input: region = data of current region
33 ! patch = current patch
34 ! iConBc = connecting Bc treatment flag (1:treated, 0: not yet)
35 ! iBegV, iEndV = begin and end var index
36 ! iBegG, iEndG = begin and end gradient index
37 ! var = variables, the gradient of which to be determined
38 !
39 ! Output: gradi, gradj, gradk = gradients at the patch faces subject to
40 ! connecting boundary conditions
41 !
42 ! Notes: 1) gradients at edges and corners can be computed more accurately
43 ! if the required information of face vectors are available
44 ! 2) three other routines contained in this file:
45 ! - RFLO_SetIndexRange to set index-range to whole region-side
46 ! - RFLO_CalcSideGrad to compute gradients on region-side
47 ! - RFLO_CopyPatchEdgeGrad to copy gradients to patch edges
48 !
49 !******************************************************************************
50 !
51 ! $Id: RFLO_CalcGradConnBc.F90,v 1.3 2008/12/06 08:44:06 mtcampbe Exp $
52 !
53 ! Copyright: (c) 2001 by the University of Illinois
54 !
55 !******************************************************************************
56 
57 SUBROUTINE rflo_calcgradconnbc( region,patch,iConBc,iBegV,iEndV,iBegG,iEndG, &
58  var,gradi,gradj,gradk )
59 
60  USE moddatatypes
61  USE modbndpatch, ONLY : t_patch
62  USE moddatastruct, ONLY : t_region
65  USE moderror
66  USE modparameters
67  IMPLICIT NONE
68 
69 #include "Indexing.h"
70 
71 ! ... parameters
72  TYPE(t_region) :: region
73  TYPE(t_patch) :: patch
74  INTEGER :: iconbc(6),ibegv,iendv,ibegg,iendg
75  REAL(RFREAL), POINTER :: var(:,:), gradi(:,:), gradj(:,:), gradk(:,:)
76 
77 ! ... loop variables
78  INTEGER :: i, j, k, l, lx, ly, lz
79 
80 ! ... local variables
81  INTEGER :: ilev, lbound, bctype
82  INTEGER :: ipcbeg, ipcend, jpcbeg, jpcend, kpcbeg, kpcend
83  INTEGER :: ibeg, iend, jbeg, jend, kbeg, kend
84  INTEGER :: inbeg, inend, jnbeg, jnend, knbeg, knend
85  INTEGER :: idir, jdir, kdir
86  INTEGER :: icoff,ijcoff,inoff,ijnoff
87  INTEGER :: ijkc, im1jkc, ijm1kc, ijkm1c, im1jm1kc, im1jkm1c, ijm1km1c, &
88  im1jm1km1c, ijkn, im1jkn, ijm1kn, ijkm1n, nvar
89 
90  REAL(RFREAL), POINTER :: aci(:,:), acj(:,:), ack(:,:)
91  REAL(RFREAL), POINTER :: si(:,:), sj(:,:), sk(:,:), vol(:)
92  REAL(RFREAL) :: fnx, fny, fnz, rvol, fface(ibegv:iendv), tvar
93 
94 !******************************************************************************
95 
96  CALL registerfunction( region%global,'RFLO_CalcGradConnBc',&
97  'RFLO_CalcGradConnBc.F90' )
98 
99 ! get cell indices and geometrical parameters --------------------------------
100 
101  ilev = region%currLevel
102  lbound = patch%lbound
103  bctype = patch%bcType
104 
105  CALL rflo_getdimensphys( region,ilev,ipcbeg,ipcend, &
106  jpcbeg,jpcend,kpcbeg,kpcend )
107 
108 ! complete the outer layers --------------------------------------------------
109 
110  IF ((bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri+ bc_range) .OR. &
111  (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri+ bc_range) .OR. &
112  (bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range)) THEN
113 
114  CALL rflo_getpatchindices( region,patch,ilev,ibeg,iend,jbeg,jend,kbeg,kend )
116  CALL rflo_getcelloffset( region,ilev,icoff,ijcoff )
117  CALL rflo_getnodeoffset( region,ilev,inoff,ijnoff )
118 
119  nvar = iendv - ibegv + 1
120 
121 ! - get dimensions and pointers
122 
123  aci => region%levels(ilev)%grid%c2eCoI
124  acj => region%levels(ilev)%grid%c2eCoJ
125  ack => region%levels(ilev)%grid%c2eCoK
126  si => region%levels(ilev)%grid%si
127  sj => region%levels(ilev)%grid%sj
128  sk => region%levels(ilev)%grid%sk
129  vol => region%levels(ilev)%grid%vol
130 
131  IF (iconbc(lbound)==0) THEN
132  IF (lbound==1 .OR. lbound==2) THEN
133  jbeg=jpcbeg
134  jend=jpcend
135  kbeg=kpcbeg
136  kend=kpcend
137  ELSE IF (lbound==3 .OR. lbound==4) THEN
138  ibeg=ipcbeg
139  iend=ipcend
140  kbeg=kpcbeg
141  kend=kpcend
142  ELSE IF (lbound==5 .OR. lbound==6) THEN
143  ibeg=ipcbeg
144  iend=ipcend
145  jbeg=jpcbeg
146  jend=jpcend
147  ENDIF
148  CALL rflo_setindexrange
149  CALL rflo_calcsidegrad
150  iconbc(lbound)=1
151  ENDIF
152 
153  CALL rflo_setindexrange
155 
156  ENDIF
157 
158 ! finalize --------------------------------------------------------------------
159 
160  CALL deregisterfunction( region%global )
161 
162 ! ==============================================================================
163 ! gradient completion subroutine for dummy cells at connecting boundaries
164 ! ==============================================================================
165 
166 CONTAINS
167 
169 
170 ! set index-range be used in RFLO_CalcSideGrad and RFLO_CopyPatchEdgeGrad ----
171 
172  IF (lbound==1 .OR. lbound==3 .OR. lbound==5) THEN
173  inbeg = ibeg-idir*(region%nDumCells-1)
174  jnbeg = jbeg-jdir*(region%nDumCells-1)
175  knbeg = kbeg-kdir*(region%nDumCells-1)
176  inend = iend-2*idir+1
177  jnend = jend-2*jdir+1
178  knend = kend-2*kdir+1
179  ELSE
180  inbeg = ibeg-2*idir
181  jnbeg = jbeg-2*jdir
182  knbeg = kbeg-2*kdir
183  inend = iend-idir*(region%nDumCells-1)+1
184  jnend = jend-jdir*(region%nDumCells-1)+1
185  knend = kend-kdir*(region%nDumCells-1)+1
186  ENDIF
187 
188  END SUBROUTINE rflo_setindexrange
189 
190  SUBROUTINE rflo_calcsidegrad
191 
192 ! ... local variables
193 
194  INTEGER :: inode,jnode,knode
195 
196 ! compute gradients at sides of current region having connecting bc --------
197 
198  inode = 0
199  jnode = 0
200  knode = 0
201  IF( lbound==2 .OR. lbound==4 .OR. lbound==6 ) THEN
202  inode = -idir
203  jnode = -jdir
204  knode = -kdir
205  ENDIF
206 
207  IF (((knend>knbeg).AND.(jnend>jnbeg).AND.(inend>inbeg)).OR. &
208  (lbound==1).OR.(lbound==3).OR.(lbound==5)) THEN
209 
210  DO k=knbeg+knode,knend
211  DO j=jnbeg+jnode,jnend
212  DO i=inbeg+inode,inend
213 
214  ijkc = indijk(i ,j ,k ,icoff,ijcoff)
215  im1jkc = indijk(i-1,j ,k ,icoff,ijcoff)
216  ijm1kc = indijk(i ,j-1,k ,icoff,ijcoff)
217  ijkm1c = indijk(i ,j ,k-1,icoff,ijcoff)
218  im1jm1kc= indijk(i-1,j-1,k ,icoff,ijcoff)
219  im1jkm1c= indijk(i-1,j ,k-1,icoff,ijcoff)
220  ijm1km1c= indijk(i ,j-1,k-1,icoff,ijcoff)
221  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
222  im1jkn = indijk(i-1,j ,k ,inoff,ijnoff)
223  ijm1kn = indijk(i ,j-1,k ,inoff,ijnoff)
224  ijkm1n = indijk(i ,j ,k-1,inoff,ijnoff)
225 
226 ! - gradients at I-Face
227 
228 ! --- i-face of auxiliary control volume (face vectors pointed inwards/negative)
229 
230  fnx = .5_rfreal*(si(xcoord,ijkn)+si(xcoord,im1jkn))
231  fny = .5_rfreal*(si(ycoord,ijkn)+si(ycoord,im1jkn))
232  fnz = .5_rfreal*(si(zcoord,ijkn)+si(zcoord,im1jkn))
233 
234  DO l=ibegv,iendv
235  lx=l+ibegg-ibegv
236  ly=lx+nvar
237  lz=ly+nvar
238  tvar=var(l,im1jkc)
239  gradi(lx,im1jkn) = gradi(lx,im1jkn) - fnx*tvar
240  gradi(ly,im1jkn) = gradi(ly,im1jkn) - fny*tvar
241  gradi(lz,im1jkn) = gradi(lz,im1jkn) - fnz*tvar
242 
243  gradi(lx,ijkn) = gradi(lx,ijkn) + fnx*tvar
244  gradi(ly,ijkn) = gradi(ly,ijkn) + fny*tvar
245  gradi(lz,ijkn) = gradi(lz,ijkn) + fnz*tvar
246  END DO
247 
248 ! --- j-face of auxiliary control volume (face vectors pointed inwards/negative)
249 
250  fnx = .5_rfreal*(sj(xcoord,ijkn)+sj(xcoord,im1jkn))
251  fny = .5_rfreal*(sj(ycoord,ijkn)+sj(ycoord,im1jkn))
252  fnz = .5_rfreal*(sj(zcoord,ijkn)+sj(zcoord,im1jkn))
253 
254  DO l=ibegv,iendv
255  lx=l+ibegg-ibegv
256  ly=lx+nvar
257  lz=ly+nvar
258 ! fface(l) = .25_RFREAL*(var(l,im1jkC)+var(l,ijkC)+ &
259 ! var(l,im1jm1kC)+var(l,ijm1kC))
260 
261  fface(l) = ack(1,ijkn)*var(l,im1jm1kc)+ack(2,ijkn)*var(l,ijm1kc)+ &
262  ack(3,ijkn)*var(l,ijkc)+ack(4,ijkn)*var(l,im1jkc)
263 
264  gradi(lx,ijm1kn) = gradi(lx,ijm1kn) - fnx*fface(l)
265  gradi(ly,ijm1kn) = gradi(ly,ijm1kn) - fny*fface(l)
266  gradi(lz,ijm1kn) = gradi(lz,ijm1kn) - fnz*fface(l)
267 
268  gradi(lx,ijkn) = gradi(lx,ijkn) + fnx*fface(l)
269  gradi(ly,ijkn) = gradi(ly,ijkn) + fny*fface(l)
270  gradi(lz,ijkn) = gradi(lz,ijkn) + fnz*fface(l)
271  END DO
272 
273 ! --- k-face of auxiliary control volume (face vectors pointed inwards/negative)
274 
275  fnx = .5_rfreal*(sk(xcoord,im1jkn)+sk(xcoord,ijkn))
276  fny = .5_rfreal*(sk(ycoord,im1jkn)+sk(ycoord,ijkn))
277  fnz = .5_rfreal*(sk(zcoord,im1jkn)+sk(zcoord,ijkn))
278 
279  DO l=ibegv,iendv
280  lx=l+ibegg-ibegv
281  ly=lx+nvar
282  lz=ly+nvar
283 ! fface(l) = .25_RFREAL*(var(l,im1jkC)+var(l,ijkC)+ &
284 ! var(l,im1jkm1C)+var(l,ijkm1C))
285 
286  fface(l) = acj(1,ijkn)*var(l,im1jkm1c)+acj(2,ijkn)*var(l,im1jkc)+ &
287  acj(3,ijkn)*var(l,ijkc)+acj(4,ijkn)*var(l,ijkm1c)
288 
289  gradi(lx,ijkm1n) = gradi(lx,ijkm1n) - fnx*fface(l)
290  gradi(ly,ijkm1n) = gradi(ly,ijkm1n) - fny*fface(l)
291  gradi(lz,ijkm1n) = gradi(lz,ijkm1n) - fnz*fface(l)
292 
293  gradi(lx,ijkn) = gradi(lx,ijkn) + fnx*fface(l)
294  gradi(ly,ijkn) = gradi(ly,ijkn) + fny*fface(l)
295  gradi(lz,ijkn) = gradi(lz,ijkn) + fnz*fface(l)
296  END DO
297 
298 ! - gradients at J-Face
299 
300 ! --- j-face of auxiliary control volume (face vectors pointed inwards/negative)
301 
302  fnx = .5_rfreal*(sj(xcoord,ijkn)+sj(xcoord,ijm1kn))
303  fny = .5_rfreal*(sj(ycoord,ijkn)+sj(ycoord,ijm1kn))
304  fnz = .5_rfreal*(sj(zcoord,ijkn)+sj(zcoord,ijm1kn))
305 
306  DO l=ibegv,iendv
307  lx=l+ibegg-ibegv
308  ly=lx+nvar
309  lz=ly+nvar
310  tvar=var(l,ijm1kc)
311  gradj(lx,ijm1kn) = gradj(lx,ijm1kn) - fnx*tvar
312  gradj(ly,ijm1kn) = gradj(ly,ijm1kn) - fny*tvar
313  gradj(lz,ijm1kn) = gradj(lz,ijm1kn) - fnz*tvar
314 
315  gradj(lx,ijkn) = gradj(lx,ijkn) + fnx*tvar
316  gradj(ly,ijkn) = gradj(ly,ijkn) + fny*tvar
317  gradj(lz,ijkn) = gradj(lz,ijkn) + fnz*tvar
318  END DO
319 
320 ! --- i-face of auxiliary control volume (face vectors pointed inwards/negative)
321 
322  fnx = .5_rfreal*(si(xcoord,ijkn)+si(xcoord,ijm1kn))
323  fny = .5_rfreal*(si(ycoord,ijkn)+si(ycoord,ijm1kn))
324  fnz = .5_rfreal*(si(zcoord,ijkn)+si(zcoord,ijm1kn))
325 
326  DO l=ibegv,iendv
327  lx=l+ibegg-ibegv
328  ly=lx+nvar
329  lz=ly+nvar
330 ! fface(l) = .25_RFREAL*(var(l,im1jkC)+var(l,ijkC)+ &
331 ! var(l,im1jm1kC)+var(l,ijm1kC))
332 
333  fface(l) = ack(1,ijkn)*var(l,im1jm1kc)+ack(2,ijkn)*var(l,ijm1kc)+ &
334  ack(3,ijkn)*var(l,ijkc)+ack(4,ijkn)*var(l,im1jkc)
335 
336  gradj(lx,im1jkn) = gradj(lx,im1jkn) - fnx*fface(l)
337  gradj(ly,im1jkn) = gradj(ly,im1jkn) - fny*fface(l)
338  gradj(lz,im1jkn) = gradj(lz,im1jkn) - fnz*fface(l)
339 
340  gradj(lx,ijkn) = gradj(lx,ijkn) + fnx*fface(l)
341  gradj(ly,ijkn) = gradj(ly,ijkn) + fny*fface(l)
342  gradj(lz,ijkn) = gradj(lz,ijkn) + fnz*fface(l)
343  END DO
344 
345 ! --- k-face of auxiliary control volume (face vectors pointed inwards/negative)
346 
347  fnx = .5_rfreal*(sk(xcoord,ijm1kn)+sk(xcoord,ijkn))
348  fny = .5_rfreal*(sk(ycoord,ijm1kn)+sk(ycoord,ijkn))
349  fnz = .5_rfreal*(sk(zcoord,ijm1kn)+sk(zcoord,ijkn))
350 
351  DO l=ibegv,iendv
352  lx=l+ibegg-ibegv
353  ly=lx+nvar
354  lz=ly+nvar
355 ! fface(l) = .25_RFREAL*(var(l,ijm1kC)+var(l,ijkC)+ &
356 ! var(l,ijm1km1C)+var(l,ijkm1C))
357 
358  fface(l) = aci(1,ijkn)*var(l,ijm1km1c)+aci(2,ijkn)*var(l,ijkm1c)+ &
359  aci(3,ijkn)*var(l,ijkc)+aci(4,ijkn)*var(l,ijm1kc)
360 
361  gradj(lx,ijkm1n) = gradj(lx,ijkm1n) - fnx*fface(l)
362  gradj(ly,ijkm1n) = gradj(ly,ijkm1n) - fny*fface(l)
363  gradj(lz,ijkm1n) = gradj(lz,ijkm1n) - fnz*fface(l)
364 
365  gradj(lx,ijkn) = gradj(lx,ijkn) + fnx*fface(l)
366  gradj(ly,ijkn) = gradj(ly,ijkn) + fny*fface(l)
367  gradj(lz,ijkn) = gradj(lz,ijkn) + fnz*fface(l)
368  END DO
369 
370 ! - gradients at K-Face
371 
372 ! --- k-face of auxiliary control volume (face vectors pointed inwards/negative)
373 
374  fnx = .5_rfreal*(sk(xcoord,ijkn)+sk(xcoord,ijkm1n))
375  fny = .5_rfreal*(sk(ycoord,ijkn)+sk(ycoord,ijkm1n))
376  fnz = .5_rfreal*(sk(zcoord,ijkn)+sk(zcoord,ijkm1n))
377 
378  DO l=ibegv,iendv
379  lx=l+ibegg-ibegv
380  ly=lx+nvar
381  lz=ly+nvar
382  tvar=var(l,ijkm1c)
383  gradk(lx,ijkm1n) = gradk(lx,ijkm1n) - fnx*tvar
384  gradk(ly,ijkm1n) = gradk(ly,ijkm1n) - fny*tvar
385  gradk(lz,ijkm1n) = gradk(lz,ijkm1n) - fnz*tvar
386 
387  gradk(lx,ijkn) = gradk(lx,ijkn) + fnx*tvar
388  gradk(ly,ijkn) = gradk(ly,ijkn) + fny*tvar
389  gradk(lz,ijkn) = gradk(lz,ijkn) + fnz*tvar
390  END DO
391 
392 ! --- j-face of auxiliary control volume (face vectors pointed inwards/negative)
393 
394  fnx = .5_rfreal*(sj(xcoord,ijkn)+sj(xcoord,ijkm1n))
395  fny = .5_rfreal*(sj(ycoord,ijkn)+sj(ycoord,ijkm1n))
396  fnz = .5_rfreal*(sj(zcoord,ijkn)+sj(zcoord,ijkm1n))
397 
398  DO l=ibegv,iendv
399  lx=l+ibegg-ibegv
400  ly=lx+nvar
401  lz=ly+nvar
402 ! fface(l) = .25_RFREAL*(var(l,ijkm1C)+var(l,ijkC)+ &
403 ! var(l,ijm1km1C)+var(l,ijm1kC))
404 
405  fface(l) = aci(1,ijkn)*var(l,ijm1km1c)+aci(2,ijkn)*var(l,ijkm1c)+ &
406  aci(3,ijkn)*var(l,ijkc)+aci(4,ijkn)*var(l,ijm1kc)
407 
408  gradk(lx,ijm1kn) = gradk(lx,ijm1kn) - fnx*fface(l)
409  gradk(ly,ijm1kn) = gradk(ly,ijm1kn) - fny*fface(l)
410  gradk(lz,ijm1kn) = gradk(lz,ijm1kn) - fnz*fface(l)
411 
412  gradk(lx,ijkn) = gradk(lx,ijkn) + fnx*fface(l)
413  gradk(ly,ijkn) = gradk(ly,ijkn) + fny*fface(l)
414  gradk(lz,ijkn) = gradk(lz,ijkn) + fnz*fface(l)
415  END DO
416 
417 ! --- i-face of auxiliary control volume (face vectors pointed inwards/negative)
418 
419  fnx = .5_rfreal*(si(xcoord,ijkm1n)+si(xcoord,ijkn))
420  fny = .5_rfreal*(si(ycoord,ijkm1n)+si(ycoord,ijkn))
421  fnz = .5_rfreal*(si(zcoord,ijkm1n)+si(zcoord,ijkn))
422 
423  DO l=ibegv,iendv
424  lx=l+ibegg-ibegv
425  ly=lx+nvar
426  lz=ly+nvar
427 ! fface(l) = .25_RFREAL*(var(l,im1jkC)+var(l,ijkC)+ &
428 ! var(l,im1jkm1C)+var(l,ijkm1C))
429 
430  fface(l) = acj(1,ijkn)*var(l,im1jkm1c)+acj(2,ijkn)*var(l,im1jkc)+ &
431  acj(3,ijkn)*var(l,ijkc)+acj(4,ijkn)*var(l,ijkm1c)
432 
433  gradk(lx,im1jkn) = gradk(lx,im1jkn) - fnx*fface(l)
434  gradk(ly,im1jkn) = gradk(ly,im1jkn) - fny*fface(l)
435  gradk(lz,im1jkn) = gradk(lz,im1jkn) - fnz*fface(l)
436 
437  gradk(lx,ijkn) = gradk(lx,ijkn) + fnx*fface(l)
438  gradk(ly,ijkn) = gradk(ly,ijkn) + fny*fface(l)
439  gradk(lz,ijkn) = gradk(lz,ijkn) + fnz*fface(l)
440  END DO
441 
442  END DO ! i
443  END DO ! j
444  END DO ! k
445 
446  END IF
447 
448  IF (lbound==2) THEN
449 
450 ! - finish the last i-face (face vectors pointed inwards/negative)
451 
452  DO k=knbeg,knend-1
453  DO j=jnbeg,jnend-1
454 
455  im1jkc = indijk(inend ,j ,k ,icoff,ijcoff)
456  ijkn = indijk(inend+1,j ,k ,inoff,ijnoff)
457  im1jkn = indijk(inend ,j ,k ,inoff,ijnoff)
458 
459  fnx = .5_rfreal*(si(xcoord,ijkn)+si(xcoord,im1jkn))
460  fny = .5_rfreal*(si(ycoord,ijkn)+si(ycoord,im1jkn))
461  fnz = .5_rfreal*(si(zcoord,ijkn)+si(zcoord,im1jkn))
462  DO l=ibegv,iendv
463  lx=l+ibegg-ibegv
464  ly=lx+nvar
465  lz=ly+nvar
466  tvar=var(l,im1jkc)
467  gradi(lx,im1jkn) = gradi(lx,im1jkn) - fnx*tvar
468  gradi(ly,im1jkn) = gradi(ly,im1jkn) - fny*tvar
469  gradi(lz,im1jkn) = gradi(lz,im1jkn) - fnz*tvar
470  END DO
471 
472  END DO ! j
473  END DO ! k
474 
475  ELSEIF (lbound==4) THEN
476 
477 ! - finish the last j-face (face vectors pointed inwards/negative)
478 
479  DO k=knbeg,knend-1
480  DO i=inbeg,inend-1
481 
482  ijm1kc = indijk(i ,jnend ,k ,icoff,ijcoff)
483  ijkn = indijk(i ,jnend+1,k ,inoff,ijnoff)
484  ijm1kn = indijk(i ,jnend ,k ,inoff,ijnoff)
485 
486  fnx = .5_rfreal*(sj(xcoord,ijkn)+sj(xcoord,ijm1kn))
487  fny = .5_rfreal*(sj(ycoord,ijkn)+sj(ycoord,ijm1kn))
488  fnz = .5_rfreal*(sj(zcoord,ijkn)+sj(zcoord,ijm1kn))
489  DO l=ibegv,iendv
490  lx=l+ibegg-ibegv
491  ly=lx+nvar
492  lz=ly+nvar
493  tvar=var(l,ijm1kc)
494  gradj(lx,ijm1kn) = gradj(lx,ijm1kn) - fnx*tvar
495  gradj(ly,ijm1kn) = gradj(ly,ijm1kn) - fny*tvar
496  gradj(lz,ijm1kn) = gradj(lz,ijm1kn) - fnz*tvar
497  END DO
498 
499  END DO ! i
500  END DO ! k
501 
502  ELSEIF (lbound==6) THEN
503 
504 ! - finish the last k-face (face vectors pointed inwards/negative)
505 
506  DO j=jnbeg,jnend-1
507  DO i=inbeg,inend-1
508 
509  ijkm1c = indijk(i ,j ,knend ,icoff,ijcoff)
510  ijkn = indijk(i ,j ,knend+1,inoff,ijnoff)
511  ijkm1n = indijk(i ,j ,knend ,inoff,ijnoff)
512 
513  fnx = .5_rfreal*(sk(xcoord,ijkn)+sk(xcoord,ijkm1n))
514  fny = .5_rfreal*(sk(ycoord,ijkn)+sk(ycoord,ijkm1n))
515  fnz = .5_rfreal*(sk(zcoord,ijkn)+sk(zcoord,ijkm1n))
516  DO l=ibegv,iendv
517  lx=l+ibegg-ibegv
518  ly=lx+nvar
519  lz=ly+nvar
520  tvar=var(l,ijkm1c)
521  gradk(lx,ijkm1n) = gradk(lx,ijkm1n) - fnx*tvar
522  gradk(ly,ijkm1n) = gradk(ly,ijkm1n) - fny*tvar
523  gradk(lz,ijkm1n) = gradk(lz,ijkm1n) - fnz*tvar
524  END DO
525 
526  END DO ! i
527  END DO ! j
528 
529  END IF
530 
531 ! finally, division by face averaged volume
532 
533  DO k=knbeg,knend
534  DO j=jnbeg,jnend
535  DO i=inbeg,inend
536 
537  ijkc = indijk(i ,j ,k ,icoff,ijcoff)
538  im1jkc = indijk(i-1,j ,k ,icoff,ijcoff)
539  ijm1kc = indijk(i ,j-1,k ,icoff,ijcoff)
540  ijkm1c = indijk(i ,j ,k-1,icoff,ijcoff)
541  ijkn = indijk(i ,j ,k ,inoff,ijnoff)
542 
543  rvol = 2.0_rfreal/(vol(im1jkc)+vol(ijkc))
544  DO l=ibegg,iendg
545  gradi(l,ijkn) = gradi(l,ijkn)*rvol
546  END DO
547 
548  rvol = 2.0_rfreal/(vol(ijm1kc)+vol(ijkc))
549  DO l=ibegg,iendg
550  gradj(l,ijkn) = gradj(l,ijkn)*rvol
551  END DO
552 
553  rvol = 2.0_rfreal/(vol(ijkm1c)+vol(ijkc))
554  DO l=ibegg,iendg
555  gradk(l,ijkn) = gradk(l,ijkn)*rvol
556  END DO
557 
558  END DO ! i
559  END DO ! j
560  END DO ! k
561 
562  END SUBROUTINE rflo_calcsidegrad
563 
564 
566 
567 ! ... local variables
568 
569  INTEGER :: ijkn1
570 
571 ! copy gradients to patch edges ---------------------------------------------
572 
573  IF ((lbound==1).OR.(lbound==2)) THEN
574  DO i=inbeg,inend
575  DO k=knbeg,knend-1
576  ijkn = indijk(i ,jnbeg ,k,inoff,ijnoff)
577  ijkn1 = indijk(ibeg,jnbeg ,k,inoff,ijnoff)
578  gradj(:,ijkn)=gradj(:,ijkn1)
579  ijkn = indijk(i ,jnend ,k,inoff,ijnoff)
580  ijkn1 = indijk(ibeg,jnend ,k,inoff,ijnoff)
581  gradj(:,ijkn)=gradj(:,ijkn1)
582  END DO
583  DO j=jnbeg,jnend-1
584  ijkn = indijk(i ,j,knbeg ,inoff,ijnoff)
585  ijkn1 = indijk(ibeg,j,knbeg ,inoff,ijnoff)
586  gradk(:,ijkn)=gradk(:,ijkn1)
587  ijkn = indijk(i ,j,knend ,inoff,ijnoff)
588  ijkn1 = indijk(ibeg,j,knend ,inoff,ijnoff)
589  gradk(:,ijkn)=gradk(:,ijkn1)
590  END DO
591  END DO ! i
592  ELSEIF ((lbound==3).OR.(lbound==4)) THEN
593  DO j=jnbeg,jnend
594  DO k=knbeg,knend-1
595  ijkn = indijk(inbeg ,j ,k,inoff,ijnoff)
596  ijkn1 = indijk(inbeg ,jbeg,k,inoff,ijnoff)
597  gradi(:,ijkn)=gradi(:,ijkn1)
598  ijkn = indijk(inend ,j ,k,inoff,ijnoff)
599  ijkn1 = indijk(inend ,jbeg,k,inoff,ijnoff)
600  gradi(:,ijkn)=gradi(:,ijkn1)
601  END DO
602  DO i=inbeg,inend-1
603  ijkn = indijk(i,j ,knbeg ,inoff,ijnoff)
604  ijkn1 = indijk(i,jbeg,knbeg ,inoff,ijnoff)
605  gradk(:,ijkn)=gradk(:,ijkn1)
606  ijkn = indijk(i,j ,knend ,inoff,ijnoff)
607  ijkn1 = indijk(i,jbeg,knend ,inoff,ijnoff)
608  gradk(:,ijkn)=gradk(:,ijkn1)
609  END DO
610  END DO ! j
611  ELSEIF ((lbound==5).OR.(lbound==6)) THEN
612  DO k=knbeg,knend
613  DO i=inbeg,inend-1
614  ijkn = indijk(i,jnbeg ,k ,inoff,ijnoff)
615  ijkn1 = indijk(i,jnbeg ,kbeg,inoff,ijnoff)
616  gradj(:,ijkn)=gradj(:,ijkn1)
617  ijkn = indijk(i,jnend ,k ,inoff,ijnoff)
618  ijkn1 = indijk(i,jnend ,kbeg,inoff,ijnoff)
619  gradj(:,ijkn)=gradj(:,ijkn1)
620  END DO
621  DO j=jnbeg,jnend-1
622  ijkn = indijk(inbeg ,j,k ,inoff,ijnoff)
623  ijkn1 = indijk(inbeg ,j,kbeg,inoff,ijnoff)
624  gradi(:,ijkn)=gradi(:,ijkn1)
625  ijkn = indijk(inend ,j,k ,inoff,ijnoff)
626  ijkn1 = indijk(inend ,j,kbeg,inoff,ijnoff)
627  gradi(:,ijkn)=gradi(:,ijkn1)
628  END DO
629  END DO ! k
630  END IF ! lbound
631 
632  END SUBROUTINE rflo_copypatchedgegrad
633 
634 END SUBROUTINE rflo_calcgradconnbc
635 
636 !******************************************************************************
637 !
638 ! RCS Revision history:
639 !
640 ! $Log: RFLO_CalcGradConnBc.F90,v $
641 ! Revision 1.3 2008/12/06 08:44:06 mtcampbe
642 ! Updated license.
643 !
644 ! Revision 1.2 2008/11/19 22:17:19 mtcampbe
645 ! Added Illinois Open Source License/Copyright
646 !
647 ! Revision 1.1 2004/11/29 21:25:15 wasistho
648 ! lower to upper case
649 !
650 ! Revision 1.11 2004/08/03 22:48:43 wasistho
651 ! changed cell2edge averaging to grid dependent avg
652 !
653 ! Revision 1.10 2004/01/22 03:56:27 wasistho
654 ! extrapolated to patch edges from different direction of side faces
655 !
656 ! Revision 1.9 2003/12/07 17:48:39 jiao
657 ! Chaged in order to compile with Intel compilers on NCSA machines
658 !
659 ! Revision 1.8 2003/11/20 16:40:34 mdbrandy
660 ! Backing out RocfluidMP changes from 11-17-03
661 !
662 ! Revision 1.5 2003/05/15 02:57:01 jblazek
663 ! Inlined index function.
664 !
665 ! Revision 1.4 2003/01/10 17:58:42 jblazek
666 ! Added missing explicit interfaces.
667 !
668 ! Revision 1.3 2002/09/27 00:57:09 jblazek
669 ! Changed makefiles - no makelinks needed.
670 !
671 ! Revision 1.2 2002/09/05 17:40:19 jblazek
672 ! Variable global moved into regions().
673 !
674 ! Revision 1.1 2002/09/02 22:58:54 wasistho
675 ! RFLO grad routines migrated from rocflo to libflo
676 !
677 ! Revision 1.3 2002/07/22 22:59:11 jblazek
678 ! Some more clean up.
679 !
680 ! Revision 1.2 2002/07/19 23:43:00 wasistho
681 ! made compliant with CODING RULE
682 !
683 !******************************************************************************
684 
685 
686 
687 
688 
689 
690 
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE ibeg
subroutine rflo_getpatchdirection(patch, idir, jdir, kdir)
subroutine rflo_setindexrange
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE inode
j indices k indices k
Definition: Indexing.h:6
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE kpcbeg
subroutine rflo_calcsidegrad
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
subroutine rflo_getpatchindices(region, patch, iLev, ibeg, iend, jbeg, jend, kbeg, kend)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jpcbeg
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE ipcend
subroutine rflo_getnodeoffset(region, iLev, iNodeOffset, ijNodeOffset)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jdir
Definition: patch.h:74
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE knode iend
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE ipcbeg
blockLoc i
Definition: read.cpp:79
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE idir
subroutine rflo_getcelloffset(region, iLev, iCellOffset, ijCellOffset)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE iEndG gradi(:,:)
subroutine rflo_copypatchedgegrad
j indices j
Definition: Indexing.h:6
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jpcend
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE knode jend
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE kdir
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE knode jbeg
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE knode kbeg
subroutine deregisterfunction(global)
Definition: ModError.F90:469
subroutine rflo_calcgradconnbc(region, patch, iConBc, iBegV, iEndV, iBegG, iEndG, var, gradi, gradj, gradk)
subroutine rflo_getdimensphys(region, iLev, ipcbeg, ipcend, jpcbeg, jpcend, kpcbeg, kpcend)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jnode
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE iEndG gradj(:,:)