Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RFLU_ComputeWeightsOLES.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: Compute face weights for optimal LES approach.
26 !
27 ! Description: None.
28 !
29 ! Input:
30 ! region current region
31 !
32 ! Output: None.
33 !
34 ! Notes: None.
35 !
36 !*******************************************************************************
37 !
38 ! $Id: RFLU_ComputeWeightsOLES.F90,v 1.6 2008/12/06 08:44:29 mtcampbe Exp $
39 !
40 ! Copyright: (c) 2002 by the University of Illinois
41 !
42 !*******************************************************************************
43 
44 SUBROUTINE rflu_computeweightsoles(region)
45 
46  USE moddatatypes
47  USE moddatastruct, ONLY : t_region
48  USE modgrid, ONLY: t_grid
49  USE moderror
50  USE modglobal, ONLY: t_global
51  USE modparameters
52  USE modtools, ONLY: makenonzero
53 
55 
57 
58  IMPLICIT NONE
59 
60 ! parameters
61 
62  TYPE(t_region) :: region
63 
64 ! local variables
65 
66  CHARACTER(CHRLEN) :: rcsidentstring
67  INTEGER :: a,b,g,hloc,hoffset,i,ifc,ifcp,ihloc,ivloc,j,k,ncells,ncols, &
68  nrows,scount,vloc,voffset
69  REAL(RFREAL) :: lambda,term,wt0,wt1,wt2
70  REAL(RFREAL), DIMENSION(:), POINTER :: rhs,vol
71  REAL(RFREAL), DIMENSION(:,:), POINTER :: fn,lhs,lhsinv
72  REAL(RFREAL), DIMENSION(:,:,:), POINTER :: int1,int20,int21,int31,int32, &
73  int40,int41,int42,int50,int51, &
74  int52
75  REAL(RFREAL), DIMENSION(:,:,:,:), POINTER :: wtlinoles
76  REAL(RFREAL), DIMENSION(:,:,:,:,:,:), POINTER :: wtquadoles
77  TYPE(t_global), POINTER :: global
78 
79 ! ******************************************************************************
80 ! Start
81 ! ******************************************************************************
82 
83  global => region%global
84 
85  CALL registerfunction(global,'RFLU_ComputeWeightsOLES',&
86  'RFLU_ComputeWeightsOLES.F90')
87 
88 ! ******************************************************************************
89 ! Set pointers and variables
90 ! ******************************************************************************
91 
92  int1 => region%grid%int1OLES
93  int20 => region%grid%int20OLES
94  int21 => region%grid%int21OLES
95  int31 => region%grid%int31OLES
96  int32 => region%grid%int32OLES
97  int40 => region%grid%int40OLES
98  int41 => region%grid%int41OLES
99  int42 => region%grid%int42OLES
100  int50 => region%grid%int50OLES
101  int51 => region%grid%int51OLES
102  int52 => region%grid%int52OLES
103 
104  lhs => region%grid%lhsOLES
105  lhsinv => region%grid%lhsInvOLES
106  rhs => region%grid%rhsOLES
107 
108  wtlinoles => region%grid%wtLinOLES
109  wtquadoles => region%grid%wtQuadOLES
110 
111  fn => region%grid%fn
112  vol => region%grid%vol
113 
114 ! TEMPORARY
115 ! WRITE(*,*) '### WARNING correcting sign for tangential linear terms ###'
116 ! WRITE(*,*) '### WARNING skipping weights computation ###'
117 ! GOTO 1
118 ! END TEMPORARY
119 
120 ! ******************************************************************************
121 ! Compute lambda, used as scaling factor
122 ! ******************************************************************************
123 
124 ! TEMPORARY
125  WRITE(*,*) '### WARNING zeroing I3 ###'
126 ! END TEMPORARY
127 
128  term = makenonzero(global%enerOLES)
129  lambda = region%grid%deltaOLES*global%dissOLES/ &
130  (2.0_rfreal/3.0_rfreal*term)**(3.0_rfreal/2.0_rfreal)
131 
132 ! ******************************************************************************
133 ! Loop over prototype faces
134 ! ******************************************************************************
135 
136  DO ifcp = 1,3 ! Loop over prototype faces
137  ncells = SIZE(region%grid%fsOLES,1)
138 
139 ! ==============================================================================
140 ! Compute weights
141 ! ==============================================================================
142 
143  ifc = region%grid%fp2fOLES(ifcp)
144 
145  wt0 = region%grid%rhoOLES(ifc)/region%grid%deltaOLES
146  wt1 = (wt0*lambda)**(2.0_rfreal/3.0_rfreal)
147  wt2 = (wt0*lambda)**(4.0_rfreal/3.0_rfreal)
148 
149 ! DEBUG
150  WRITE(*,*) lambda,region%grid%rhoOLES(ifc),region%grid%deltaOLES
151  WRITE(*,*) 'weights: ',wt0,wt1,wt2
152 ! END DEBUG
153 
154 ! ==============================================================================
155 ! Initialize LHS - defensive programming
156 ! ==============================================================================
157 
158  lhs(:,:) = REAL(crazy_value_int,kind=rfreal)
159 
160 ! ==============================================================================
161 ! Build LHS
162 ! ==============================================================================
163 
164 ! ------------------------------------------------------------------------------
165 ! I2
166 ! ------------------------------------------------------------------------------
167 
168  DO ivloc = 1,3*ncells
169  DO ihloc = 1,3*ncells
170  lhs(ivloc,ihloc) = int20(ifcp,ivloc,ihloc) &
171  + wt1*int21(ifcp,ivloc,ihloc)
172  END DO ! ihLoc
173  END DO ! ivLoc
174 
175 ! ------------------------------------------------------------------------------
176 ! I3 (top right-hand corner)
177 ! ------------------------------------------------------------------------------
178 
179  hoffset = 3*ncells
180 
181  DO ivloc = 1,3*ncells
182  DO ihloc = 1,9*ncells*ncells
183  hloc = ihloc + hoffset
184 
185  lhs(ivloc,hloc) = 0.0_rfreal
186 ! lhs(ivLoc,hLoc) = int31(ifcp,ivLoc,ihLoc)
187  END DO ! ihLoc
188  END DO ! ivLoc
189 
190 ! ------------------------------------------------------------------------------
191 ! I3 (bottom left-hand corner) - NOTE additional factor involving lambda
192 ! ------------------------------------------------------------------------------
193 
194  voffset = 3*ncells
195 
196  DO ivloc = 1,9*ncells*ncells
197  DO ihloc = 1,3*ncells
198  vloc = ivloc + voffset
199 
200  lhs(vloc,ihloc) = 0.0_rfreal
201 ! lhs(vLoc,ihLoc) = lambda*lambda*int32(ifcp,ivLoc,ihLoc)
202  END DO ! ihLoc
203  END DO ! ivLoc
204 
205 ! ------------------------------------------------------------------------------
206 ! I5
207 ! ------------------------------------------------------------------------------
208 
209  voffset = 3*ncells
210  hoffset = 3*ncells
211 
212  DO ivloc = 1,9*ncells*ncells
213  DO ihloc = 1,9*ncells*ncells
214  vloc = ivloc + voffset
215  hloc = ihloc + hoffset
216 
217  lhs(vloc,hloc) = int50(ifcp,ivloc,ihloc) &
218  + wt1*int51(ifcp,ivloc,ihloc) &
219  + wt2*int52(ifcp,ivloc,ihloc)
220  END DO ! ihLoc
221  END DO ! ivLoc
222 
223 ! ==============================================================================
224 ! Invert LHS using SVD
225 ! ==============================================================================
226 
227  nrows = 3*ncells*(1 + 3*ncells)
228  ncols = 3*ncells*(1 + 3*ncells)
229 
230 ! DEBUG
231  WRITE(*,*) 'in RFLU_ComputeWeightsOLES, before SVD'
232  WRITE(*,*) minval(int1),maxval(int1)
233  WRITE(*,*) minval(int20),maxval(int20)
234  WRITE(*,*) minval(int21),maxval(int21)
235  WRITE(*,*) minval(int31),maxval(int31)
236  WRITE(*,*) minval(int32),maxval(int32)
237  WRITE(*,*) minval(int40),maxval(int40)
238  WRITE(*,*) minval(int41),maxval(int41)
239  WRITE(*,*) minval(int42),maxval(int42)
240  WRITE(*,*) minval(int50),maxval(int50)
241  WRITE(*,*) minval(int51),maxval(int51)
242  WRITE(*,*) minval(int52),maxval(int52)
243  WRITE(*,*) minval(lhs),maxval(lhs)
244 ! END DEBUG
245 
246 ! DEBUG
247 ! WRITE(*,*) 'lhs'
248 ! DO ivLoc = 13,36
249 ! WRITE(*,'(12(1X,F10.4))') (lhs(ivLoc,ihLoc),ihLoc=1,24)
250 ! END DO ! ivLoc
251 ! END DEBUG
252 
253  CALL rflu_invertmatrixsvd(global,nrows,ncols,lhs,lhsinv,scount)
254 
255 ! DEBUG
256 ! IF ( sCount > 0 ) THEN
257  WRITE(*,*) '>>> Matrix singular? <<< ',scount
258 ! END IF ! sCount
259 ! END DEBUG
260 
261 ! ==============================================================================
262 ! Determine weights for different RHSs
263 ! ==============================================================================
264 
265  DO i = 1,3 ! Loop over velocity components
266 
267 ! DEBUG
268 ! WRITE(*,*) ' Component: ',i
269 ! END DEBUG
270 
271 ! ------------------------------------------------------------------------------
272 ! Initialize RHS
273 ! ------------------------------------------------------------------------------
274 
275  rhs(:) = REAL(crazy_value_int,kind=rfreal)
276 
277 ! ------------------------------------------------------------------------------
278 ! Build RHS
279 ! ------------------------------------------------------------------------------
280 
281 ! --- I1 -----------------------------------------------------------------------
282 
283  DO ivloc = 1,3*ncells
284  rhs(ivloc) = int1(i,ifcp,ivloc)
285  END DO ! ivLoc
286 
287 ! --- I4 -----------------------------------------------------------------------
288 
289  voffset = 3*ncells
290 
291  DO ivloc = 1,9*ncells*ncells
292  vloc = ivloc + voffset
293 
294  rhs(vloc) = int40(i,ifcp,ivloc) &
295  + wt1*int41(i,ifcp,ivloc) &
296  + wt2*int42(i,ifcp,ivloc)
297  END DO ! ivLoc
298 
299 ! DEBUG
300 ! WRITE(*,*) 'rhs'
301 ! DO ivLoc = 13,36
302 ! WRITE(*,'(1(1X,F10.4))') rhs(ivLoc)
303 ! END DO ! ivLoc
304 ! END DEBUG
305 
306 ! ------------------------------------------------------------------------------
307 ! Determine, denormalize, and store weights. NOTE that the coefficients
308 ! L and Q are defined to act on the product of cell-average quantity and
309 ! volume, and because it is easier to compare coefficients which do not
310 ! contain the influence of a volume, multiply the coefficients here. If
311 ! this happens to get changed at some point in the future, the flux routine
312 ! also has to change...
313 ! ------------------------------------------------------------------------------
314 
315  rhs = matmul(lhsinv,rhs)
316 
317 ! DEBUG
318 ! WRITE(*,*) 'sol'
319 ! DO ivLoc = 13,36
320 ! WRITE(*,'(1X,I4,1X,F10.4)') ivLoc,rhs(ivLoc)
321 ! END DO ! ivLoc
322 ! END DEBUG
323 
324 ! --- Extract linear weights ---------------------------------------------------
325 
326  term = makenonzero(global%enerOLES)
327  term = 3.0_rfreal*global%dissOLES/(2.0_rfreal*term)
328 
329  DO ivloc = 1,3*ncells
330  CALL rflu_getlposinvoles(ivloc,j,a)
331  wtlinoles(i,j,a,ifcp) = term*rhs(ivloc)*vol(a)/fn(xyzmag,ifc)
332 
333  IF ( abs(wtlinoles(i,j,a,ifcp)) < 1.0e-12_rfreal ) THEN
334  wtlinoles(i,j,a,ifcp) = 0.0_rfreal
335  END IF ! wtLinOLES
336  END DO ! ivLoc
337 
338 ! DEBUG
339  WRITE(*,*) 'l ',minval(wtlinoles(i,:,:,ifcp)), &
340  maxval(wtlinoles(i,:,:,ifcp))
341 ! END DEBUG
342 
343 ! --- Extract quadratic weights ------------------------------------------------
344 
345  term = 1.0_rfreal/region%grid%deltaOLES**4
346 
347  voffset = 3*ncells
348 
349  DO ivloc = 1,9*ncells*ncells
350  vloc = ivloc + voffset
351 
352  CALL rflu_getqposinvoles(ivloc,ncells,j,k,b,g)
353  wtquadoles(i,j,k,b,g,ifcp) = term*vol(b)*vol(g)*rhs(vloc)/fn(xyzmag,ifc)
354 
355  IF ( abs(wtquadoles(i,j,k,b,g,ifcp)) < 1.0e-12_rfreal ) THEN
356  wtquadoles(i,j,k,b,g,ifcp) = 0.0_rfreal
357  END IF ! wtQuadOLES
358  END DO ! ivLoc
359 
360 ! DEBUG
361  WRITE(*,*) 'q ',minval(wtquadoles(i,:,:,:,:,ifcp)), &
362  maxval(wtquadoles(i,:,:,:,:,ifcp))
363 ! END DEBUG
364 
365 ! DEBUG
366 ! WRITE(*,*) 'Local face: ',ifcp
367 ! WRITE(*,*) ' Global face: ',ifc
368 ! WRITE(*,*) ' Component: ',i
369 ! WRITE(*,'(1X,A,3(1X,E13.6))') ' Normal: ',fn(1:3,ifc)
370 ! WRITE(*,*) ' Stencil: ',region%grid%fsOLES(1:nCells,ifc)
371 !
372 ! WRITE(*,*) ' Linear part: '
373 ! DO ivLoc = 1,3*nCells
374 ! CALL RFLU_GetLPosInvOLES(ivLoc,j,a)
375 !
376 ! WRITE(*,*) ' Counter: ',ivLoc
377 ! WRITE(*,*) ' Indices: ',j,a
378 !! WRITE(*,*) ' Global cell: ',region%grid%fsOLES(a,ifc)
379 ! WRITE(*,*) ' Weight: ',wtLinOLES(i,j,a,ifcp)
380 ! END DO ! ivLoc
381 !
382 ! WRITE(*,*) ' Quadratic part: '
383 ! DO ivLoc = 1,9*nCells*nCells
384 ! CALL RFLU_GetQPosInvOLES(ivLoc,nCells,j,k,b,g)
385 !
386 ! WRITE(*,*) ' Counter: ',ivLoc
387 ! WRITE(*,*) ' Indices: ',j,k,b,g
388 !! WRITE(*,*) ' Global cells: ',region%grid%fsOLES(b,ifc),region%grid%fsOLES(g,ifc)
389 ! WRITE(*,*) ' Weights: ',wtQuadOLES(i,j,k,b,g,ifcp)
390 ! END DO ! ivLoc
391 ! END DEBUG
392 
393  END DO ! i
394  END DO ! ifcp
395 
396 ! TEMPORARY
397 1 CONTINUE
398 
399 ! Jacobs weights
400 ! GOTO 2
401  goto 3
402  WRITE(*,*) '### WARNING using Jacobs weights ###'
403 
404  wtlinoles(:,:,:,:) = 0.0_rfreal
405 
406  wtlinoles(1,1,1,1) = 0.357_rfreal
407  wtlinoles(1,1,2,1) = -0.357_rfreal
408  wtlinoles(2,2,1,1) = 0.156_rfreal
409  wtlinoles(2,2,2,1) = -0.156_rfreal
410  wtlinoles(3,3,1,1) = 0.156_rfreal
411  wtlinoles(3,3,2,1) = -0.156_rfreal
412 
413  wtlinoles(1,1,1,2) = 0.156_rfreal
414  wtlinoles(1,1,2,2) = -0.156_rfreal
415  wtlinoles(2,2,1,2) = 0.357_rfreal
416  wtlinoles(2,2,2,2) = -0.357_rfreal
417  wtlinoles(3,3,1,2) = 0.156_rfreal
418  wtlinoles(3,3,2,2) = -0.156_rfreal
419 
420  wtlinoles(1,1,1,3) = 0.156_rfreal
421  wtlinoles(1,1,2,3) = -0.156_rfreal
422  wtlinoles(2,2,1,3) = 0.156_rfreal
423  wtlinoles(2,2,2,3) = -0.156_rfreal
424  wtlinoles(3,3,1,3) = 0.357_rfreal
425  wtlinoles(3,3,2,3) = -0.357_rfreal
426 
427  wtquadoles(:,:,:,:,:,:) = 0.0_rfreal
428 
429  wtquadoles(1,1,1,1,1,1) = 0.388_rfreal
430  wtquadoles(1,1,1,1,2,1) = 0.135_rfreal
431  wtquadoles(1,1,1,2,1,1) = 0.135_rfreal
432  wtquadoles(1,1,1,2,2,1) = 0.388_rfreal
433 
434  wtquadoles(2,1,2,1,1,1) = 0.180_rfreal
435  wtquadoles(2,2,1,1,1,1) = 0.180_rfreal
436  wtquadoles(2,1,2,1,2,1) = 0.087_rfreal
437  wtquadoles(2,2,1,1,2,1) = 0.087_rfreal
438  wtquadoles(2,1,2,2,1,1) = 0.087_rfreal
439  wtquadoles(2,2,1,2,1,1) = 0.087_rfreal
440  wtquadoles(2,1,2,2,2,1) = 0.180_rfreal
441  wtquadoles(2,2,1,2,2,1) = 0.180_rfreal
442 
443  wtquadoles(3,1,3,1,1,1) = 0.180_rfreal
444  wtquadoles(3,3,1,1,1,1) = 0.180_rfreal
445  wtquadoles(3,1,3,1,2,1) = 0.087_rfreal
446  wtquadoles(3,3,1,1,2,1) = 0.087_rfreal
447  wtquadoles(3,1,3,2,1,1) = 0.087_rfreal
448  wtquadoles(3,3,1,2,1,1) = 0.087_rfreal
449  wtquadoles(3,1,3,2,2,1) = 0.180_rfreal
450  wtquadoles(3,3,1,2,2,1) = 0.180_rfreal
451 
452  wtquadoles(2,2,2,1,1,2) = 0.388_rfreal
453  wtquadoles(2,2,2,1,2,2) = 0.135_rfreal
454  wtquadoles(2,2,2,2,1,2) = 0.135_rfreal
455  wtquadoles(2,2,2,2,2,2) = 0.388_rfreal
456 
457  wtquadoles(1,1,2,1,1,2) = 0.180_rfreal
458  wtquadoles(1,2,1,1,1,2) = 0.180_rfreal
459  wtquadoles(1,1,2,1,2,2) = 0.087_rfreal
460  wtquadoles(1,2,1,1,2,2) = 0.087_rfreal
461  wtquadoles(1,1,2,2,1,2) = 0.087_rfreal
462  wtquadoles(1,2,1,2,1,2) = 0.087_rfreal
463  wtquadoles(1,1,2,2,2,2) = 0.180_rfreal
464  wtquadoles(1,2,1,2,2,2) = 0.180_rfreal
465 
466  wtquadoles(3,2,3,1,1,2) = 0.180_rfreal
467  wtquadoles(3,3,2,1,1,2) = 0.180_rfreal
468  wtquadoles(3,2,3,1,2,2) = 0.087_rfreal
469  wtquadoles(3,3,2,1,2,2) = 0.087_rfreal
470  wtquadoles(3,2,3,2,1,2) = 0.087_rfreal
471  wtquadoles(3,3,2,2,1,2) = 0.087_rfreal
472  wtquadoles(3,2,3,2,2,2) = 0.180_rfreal
473  wtquadoles(3,3,2,2,2,2) = 0.180_rfreal
474 
475  wtquadoles(3,3,3,1,1,3) = 0.388_rfreal
476  wtquadoles(3,3,3,1,2,3) = 0.135_rfreal
477  wtquadoles(3,3,3,2,1,3) = 0.135_rfreal
478  wtquadoles(3,3,3,2,2,3) = 0.388_rfreal
479 
480  wtquadoles(1,1,3,1,1,3) = 0.180_rfreal
481  wtquadoles(1,3,1,1,1,3) = 0.180_rfreal
482  wtquadoles(1,1,3,1,2,3) = 0.087_rfreal
483  wtquadoles(1,3,1,1,2,3) = 0.087_rfreal
484  wtquadoles(1,1,3,2,1,3) = 0.087_rfreal
485  wtquadoles(1,3,1,2,1,3) = 0.087_rfreal
486  wtquadoles(1,1,3,2,2,3) = 0.180_rfreal
487  wtquadoles(1,3,1,2,2,3) = 0.180_rfreal
488 
489  wtquadoles(2,2,3,1,1,3) = 0.180_rfreal
490  wtquadoles(2,3,2,1,1,3) = 0.180_rfreal
491  wtquadoles(2,2,3,1,2,3) = 0.087_rfreal
492  wtquadoles(2,3,2,1,2,3) = 0.087_rfreal
493  wtquadoles(2,2,3,2,1,3) = 0.087_rfreal
494  wtquadoles(2,3,2,2,1,3) = 0.087_rfreal
495  wtquadoles(2,2,3,2,2,3) = 0.180_rfreal
496  wtquadoles(2,3,2,2,2,3) = 0.180_rfreal
497 
498 ! Central flux weights
499  goto 3
500 2 CONTINUE
501  WRITE(*,*) '### WARNING using central weights ###'
502  wtlinoles(:,:,:,:) = 0.0_rfreal
503 
504  wtlinoles(1,1,1,1) = 0.5_rfreal
505  wtlinoles(1,1,2,1) = -0.5_rfreal
506  wtlinoles(2,2,1,1) = 0.5_rfreal
507  wtlinoles(2,2,2,1) = -0.5_rfreal
508  wtlinoles(3,3,1,1) = 0.5_rfreal
509  wtlinoles(3,3,2,1) = -0.5_rfreal
510 
511  wtlinoles(1,1,1,2) = 0.5_rfreal
512  wtlinoles(1,1,2,2) = -0.5_rfreal
513  wtlinoles(2,2,1,2) = 0.5_rfreal
514  wtlinoles(2,2,2,2) = -0.5_rfreal
515  wtlinoles(3,3,1,2) = 0.5_rfreal
516  wtlinoles(3,3,2,2) = -0.5_rfreal
517 
518  wtlinoles(1,1,1,3) = 0.5_rfreal
519  wtlinoles(1,1,2,3) = -0.5_rfreal
520  wtlinoles(2,2,1,3) = 0.5_rfreal
521  wtlinoles(2,2,2,3) = -0.5_rfreal
522  wtlinoles(3,3,1,3) = 0.5_rfreal
523  wtlinoles(3,3,2,3) = -0.5_rfreal
524 
525  wtquadoles(:,:,:,:,:,:) = 0.0_rfreal
526 
527 ! x-face
528 
529  wtquadoles(1,1,1,1,1,1) = 0.250_rfreal
530  wtquadoles(1,1,1,1,2,1) = 0.250_rfreal
531  wtquadoles(1,1,1,2,2,1) = 0.250_rfreal
532  wtquadoles(1,1,1,2,1,1) = 0.250_rfreal
533 
534  wtquadoles(2,1,2,1,1,1) = 0.125_rfreal
535  wtquadoles(2,1,2,1,2,1) = 0.125_rfreal
536  wtquadoles(2,2,1,1,1,1) = 0.125_rfreal
537  wtquadoles(2,2,1,2,1,1) = 0.125_rfreal
538  wtquadoles(2,1,2,2,1,1) = 0.125_rfreal
539  wtquadoles(2,2,1,1,2,1) = 0.125_rfreal
540  wtquadoles(2,1,2,2,2,1) = 0.125_rfreal
541  wtquadoles(2,2,1,2,2,1) = 0.125_rfreal
542 
543  wtquadoles(3,1,3,1,1,1) = 0.125_rfreal
544  wtquadoles(3,1,3,1,2,1) = 0.125_rfreal
545  wtquadoles(3,3,1,1,1,1) = 0.125_rfreal
546  wtquadoles(3,3,1,2,1,1) = 0.125_rfreal
547  wtquadoles(3,1,3,2,1,1) = 0.125_rfreal
548  wtquadoles(3,3,1,1,2,1) = 0.125_rfreal
549  wtquadoles(3,1,3,2,2,1) = 0.125_rfreal
550  wtquadoles(3,3,1,2,2,1) = 0.125_rfreal
551 
552 ! y-face
553 
554  wtquadoles(2,2,2,1,1,2) = 0.250_rfreal
555  wtquadoles(2,2,2,1,2,2) = 0.250_rfreal
556  wtquadoles(2,2,2,2,2,2) = 0.250_rfreal
557  wtquadoles(2,2,2,2,1,2) = 0.250_rfreal
558 
559  wtquadoles(1,1,2,1,1,2) = 0.125_rfreal
560  wtquadoles(1,1,2,1,2,2) = 0.125_rfreal
561  wtquadoles(1,2,1,1,1,2) = 0.125_rfreal
562  wtquadoles(1,2,1,2,1,2) = 0.125_rfreal
563  wtquadoles(1,1,2,2,1,2) = 0.125_rfreal
564  wtquadoles(1,2,1,1,2,2) = 0.125_rfreal
565  wtquadoles(1,1,2,2,2,2) = 0.125_rfreal
566  wtquadoles(1,2,1,2,2,2) = 0.125_rfreal
567 
568  wtquadoles(3,2,3,1,1,2) = 0.125_rfreal
569  wtquadoles(3,2,3,1,2,2) = 0.125_rfreal
570  wtquadoles(3,3,2,1,1,2) = 0.125_rfreal
571  wtquadoles(3,3,2,2,1,2) = 0.125_rfreal
572  wtquadoles(3,2,3,2,1,2) = 0.125_rfreal
573  wtquadoles(3,3,2,1,2,2) = 0.125_rfreal
574  wtquadoles(3,2,3,2,2,2) = 0.125_rfreal
575  wtquadoles(3,3,2,2,2,2) = 0.125_rfreal
576 
577 ! z-face
578 
579  wtquadoles(3,3,3,1,1,3) = 0.250_rfreal
580  wtquadoles(3,3,3,1,2,3) = 0.250_rfreal
581  wtquadoles(3,3,3,2,2,3) = 0.250_rfreal
582  wtquadoles(3,3,3,2,1,3) = 0.250_rfreal
583 
584  wtquadoles(1,1,3,1,1,3) = 0.125_rfreal
585  wtquadoles(1,1,3,1,2,3) = 0.125_rfreal
586  wtquadoles(1,3,1,1,1,3) = 0.125_rfreal
587  wtquadoles(1,3,1,2,1,3) = 0.125_rfreal
588  wtquadoles(1,1,3,2,1,3) = 0.125_rfreal
589  wtquadoles(1,3,1,1,2,3) = 0.125_rfreal
590  wtquadoles(1,1,3,2,2,3) = 0.125_rfreal
591  wtquadoles(1,3,1,2,2,3) = 0.125_rfreal
592 
593  wtquadoles(2,2,3,1,1,3) = 0.125_rfreal
594  wtquadoles(2,2,3,1,2,3) = 0.125_rfreal
595  wtquadoles(2,3,2,1,1,3) = 0.125_rfreal
596  wtquadoles(2,3,2,2,1,3) = 0.125_rfreal
597  wtquadoles(2,2,3,2,1,3) = 0.125_rfreal
598  wtquadoles(2,3,2,1,2,3) = 0.125_rfreal
599  wtquadoles(2,2,3,2,2,3) = 0.125_rfreal
600  wtquadoles(2,3,2,2,2,3) = 0.125_rfreal
601 3 CONTINUE
602 ! END TEMPORARY
603 
604 
605 ! ******************************************************************************
606 ! End
607 ! ******************************************************************************
608 
609  CALL deregisterfunction(global)
610 
611 END SUBROUTINE rflu_computeweightsoles
612 
613 !*******************************************************************************
614 !
615 ! RCS Revision history:
616 !
617 ! $Log: RFLU_ComputeWeightsOLES.F90,v $
618 ! Revision 1.6 2008/12/06 08:44:29 mtcampbe
619 ! Updated license.
620 !
621 ! Revision 1.5 2008/11/19 22:17:42 mtcampbe
622 ! Added Illinois Open Source License/Copyright
623 !
624 ! Revision 1.4 2003/01/28 14:33:14 haselbac
625 ! Use parameters in fn
626 !
627 ! Revision 1.3 2002/09/09 15:45:10 haselbac
628 ! global now under regions, several bug fixes
629 !
630 !*******************************************************************************
631 
632 
633 
634 
635 
636 
637 
j indices k indices k
Definition: Indexing.h:6
NT rhs
subroutine rflu_invertmatrixsvd(global, nRows, nCols, a, aInv, sCount)
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
unsigned char b() const
Definition: Color.h:70
subroutine, public rflu_getqposinvoles(loc, nCells, j, k, b, g)
subroutine, public rflu_getlposinvoles(loc, j, a)
blockLoc i
Definition: read.cpp:79
j indices j
Definition: Indexing.h:6
subroutine rflu_computeweightsoles(region)
subroutine deregisterfunction(global)
Definition: ModError.F90:469
RT a() const
Definition: Line_2.h:140
unsigned char g() const
Definition: Color.h:69
real(rfreal) function makenonzero(x)
Definition: ModTools.F90:85