Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RFLU_ComputeExactFlowError.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 errors of computed solution relative to exact solution.
26 !
27 ! Description: None.
28 !
29 ! Input:
30 ! pRegion Pointer to region
31 !
32 ! Output: None.
33 !
34 ! Notes:
35 ! 1. This routine assumes a perfect gas.
36 !
37 ! ******************************************************************************
38 !
39 ! $Id: RFLU_ComputeExactFlowError.F90,v 1.19 2008/12/06 08:45:05 mtcampbe Exp $
40 !
41 ! Copyright: (c) 2004-2006 by the University of Illinois
42 !
43 ! ******************************************************************************
44 
45 SUBROUTINE rflu_computeexactflowerror(pRegion)
46 
47  USE moddatatypes
48  USE moderror
49  USE moddatastruct, ONLY: t_region
50  USE modmixture, ONLY: t_mixt_input
51  USE modglobal, ONLY: t_global
52  USE modgrid, ONLY: t_grid
53  USE modparameters
54 
55  USE rflu_modbessel
60 
61  USE modinterfaces, ONLY: mixtperf_d_cgp, &
62  mixtperf_p_drt, &
66 
67  IMPLICIT NONE
68 
69 ! ******************************************************************************
70 ! Declarations and definitions
71 ! ******************************************************************************
72 
73 ! ==============================================================================
74 ! Arguments
75 ! ==============================================================================
76 
77  TYPE(t_region), POINTER :: pregion
78 
79 ! ==============================================================================
80 ! Locals
81 ! ==============================================================================
82 
83  LOGICAL :: printerrornorms
84  CHARACTER(CHRLEN) :: rcsidentstring
85  INTEGER :: errorflag,ibc,icg,im,in,iq,ivar,ivarbeg,ivarend,l8normloc,ncells
86  INTEGER, DIMENSION(:), ALLOCATABLE :: varinfo
87  INTEGER, DIMENSION(1,MIN_VAL:MAX_VAL) :: locdummy
88  REAL(RFREAL) :: atot,const,cpgas,dc,de,dinc,dtot,dummyreal,etaqm,ggas, &
89  gmc,gme,gxc,gxe,gyc,gye,gzc,gze,height,idc,l,l1norm, &
90  l2norm,l8norm,mi,minj,nx,ny,nz,omega,pc,pe,ptot,rgas,ri, &
91  ro,term,ttot,uc,ue,var,vc,ve,vinj,we,x,y,z
92  REAL(RFREAL), DIMENSION(:,:), POINTER :: pcv,pdv
93  REAL(RFREAL), DIMENSION(:,:,:), POINTER :: grad
94  TYPE(t_global), POINTER :: global
95  TYPE(t_grid), POINTER :: pgrid
96  TYPE(t_mixt_input), POINTER :: pmixtinput
97 
98 ! ******************************************************************************
99 ! Start
100 ! ******************************************************************************
101 
102  rcsidentstring = &
103  '$RCSfile: RFLU_ComputeExactFlowError.F90,v $ $Revision: 1.19 $'
104 
105  global => pregion%global
106 
107  CALL registerfunction(global,'RFLU_ComputeExactFlowError', &
108  'RFLU_ComputeExactFlowError.F90')
109 
110  IF ( global%verbLevel > verbose_none ) THEN
111  WRITE(stdout,'(A,1X,A)') solver_name,'Computing errors in flow solution...'
112 
113  IF ( global%verbLevel > verbose_low ) THEN
114  WRITE(stdout,'(A,3X,A,A)') solver_name,'Case: ',trim(global%casename)
115  END IF ! global%verbLevel
116  END IF ! global%verbLevel
117 
118 ! ==============================================================================
119 ! Set pointers
120 ! ==============================================================================
121 
122  pgrid => pregion%grid
123  pcv => pregion%mixt%cv
124  pdv => pregion%mixt%dv
125  pmixtinput => pregion%mixtInput
126 
127 ! ==============================================================================
128 ! Set constants and initialize variables
129 ! ==============================================================================
130 
131  cpgas = global%refCp
132  ggas = global%refGamma
133  rgas = mixtperf_r_cpg(cpgas,ggas)
134 
135  ncells = 0
136 
137  l1norm = 0.0_rfreal
138  l2norm = 0.0_rfreal
139  l8norm = -huge(1.0_rfreal)
140 
141  printerrornorms = .true.
142 
143 ! ******************************************************************************
144 ! Initialize flow field based on user input
145 ! ******************************************************************************
146 
147  SELECT CASE ( global%casename )
148 
149 ! ==============================================================================
150 ! Gradient test
151 ! ==============================================================================
152 
153  CASE ( "gtlin","gttri" )
154 
155 ! ------------------------------------------------------------------------------
156 ! Set variables and allocate memory
157 ! ------------------------------------------------------------------------------
158 
159  ivarbeg = cv_mixt_dens ! NOTE at present works only for 1 var
160  ivarend = ivarbeg
161 
162  ALLOCATE(grad(xcoord:zcoord,ivarbeg:ivarend,pgrid%nCellsTot), &
163  stat=errorflag)
164  global%error = errorflag
165  IF (global%error /= err_none) THEN
166  CALL errorstop(global,err_allocate,__line__,'grad')
167  END IF ! global%error
168 
169 ! ------------------------------------------------------------------------------
170 ! Compute gradients
171 ! ------------------------------------------------------------------------------
172 
173  ALLOCATE(varinfo(ivarbeg:ivarend),stat=errorflag)
174  global%error = errorflag
175  IF (global%error /= err_none) THEN
176  CALL errorstop(global,err_allocate,__line__,'varInfo')
177  END IF ! global%error
178 
179  varinfo(ivarbeg:ivarend) = ivarbeg ! NOTE at present works only for 1 var
180 
181  CALL rflu_computegradcellswrapper(pregion,ivarbeg,ivarend,ivarbeg, &
182  ivarend,varinfo,pcv,grad)
183 
184  DEALLOCATE(varinfo,stat=errorflag)
185  global%error = errorflag
186  IF (global%error /= err_none) THEN
187  CALL errorstop(global,err_deallocate,__line__,'varInfo')
188  END IF ! global%error
189 
190 ! ------------------------------------------------------------------------------
191 ! Compute error norms
192 ! ------------------------------------------------------------------------------
193 
194  SELECT CASE ( global%casename)
195 
196 ! ----- Linear function --------------------------------------------------------
197 
198  CASE ( "gtlin" )
199  SELECT CASE ( pregion%mixtInput%dimens )
200  CASE ( 1 )
201  DO icg = 1,pgrid%nCellsTot
202  ncells = ncells + 1
203 
204  x = pgrid%cofg(xcoord,icg)
205  y = pgrid%cofg(ycoord,icg)
206  z = pgrid%cofg(zcoord,icg)
207 
208  DO ivar = ivarbeg,ivarend
209  CALL rflu_setexactflowlinear(x,y,z,ivar,var,gxe,gye,gze)
210 
211  gxc = grad(xcoord,ivar,icg)
212 
213  gmc = abs(gxc)
214  gme = abs(gxe)
215 
216  term = abs(gmc/gme-1.0_rfreal)
217 
218  l1norm = l1norm + term
219  l2norm = l2norm + term**2
220 
221  IF ( term > l8norm ) THEN
222  l8norm = term
223  l8normloc = icg
224  END IF ! term
225  END DO ! iVar
226  END DO ! icg
227  CASE ( 2 )
228  DO icg = 1,pgrid%nCellsTot
229  ncells = ncells + 1
230 
231  x = pgrid%cofg(xcoord,icg)
232  y = pgrid%cofg(ycoord,icg)
233  z = pgrid%cofg(zcoord,icg)
234 
235  DO ivar = ivarbeg,ivarend
236  CALL rflu_setexactflowlinear(x,y,z,ivar,var,gxe,gye,gze)
237 
238  gxc = grad(xcoord,ivar,icg)
239  gyc = grad(ycoord,ivar,icg)
240 
241  gmc = sqrt(gxc*gxc + gyc*gyc)
242  gme = sqrt(gxe*gxe + gye*gye)
243 
244  term = abs(gmc/gme-1.0_rfreal)
245 
246  l1norm = l1norm + term
247  l2norm = l2norm + term**2
248 
249  IF ( term > l8norm ) THEN
250  l8norm = term
251  l8normloc = icg
252  END IF ! term
253  END DO ! iVar
254  END DO ! icg
255  CASE ( 3 )
256  DO icg = 1,pgrid%nCellsTot
257  ncells = ncells + 1
258 
259  x = pgrid%cofg(xcoord,icg)
260  y = pgrid%cofg(ycoord,icg)
261  z = pgrid%cofg(zcoord,icg)
262 
263  DO ivar = ivarbeg,ivarend
264  CALL rflu_setexactflowlinear(x,y,z,ivar,var,gxe,gye,gze)
265 
266  gxc = grad(xcoord,ivar,icg)
267  gyc = grad(ycoord,ivar,icg)
268  gzc = grad(zcoord,ivar,icg)
269 
270  gmc = sqrt(gxc*gxc + gyc*gyc + gzc*gzc)
271  gme = sqrt(gxe*gxe + gye*gye + gze*gze)
272 
273  term = abs(gmc/gme-1.0_rfreal)
274 
275  l1norm = l1norm + term
276  l2norm = l2norm + term**2
277 
278  IF ( term > l8norm ) THEN
279  l8norm = term
280  l8normloc = icg
281  END IF ! term
282  END DO ! iVar
283  END DO ! icg
284  CASE default
285  CALL errorstop(global,err_reached_default,__line__)
286  END SELECT ! pRegion%mixtInput%dimens
287 
288 ! ----- Trigonometric function -------------------------------------------------
289 
290  CASE ( "gttri" )
291  nx = pregion%mixtInput%prepRealVal1
292  ny = pregion%mixtInput%prepRealVal2
293  nz = pregion%mixtInput%prepRealVal3
294 
295  SELECT CASE ( pregion%mixtInput%dimens )
296  CASE ( 1 )
297  DO icg = 1,pgrid%nCellsTot
298  ncells = ncells + 1
299 
300  x = pgrid%cofg(xcoord,icg)
301  y = pgrid%cofg(ycoord,icg)
302  z = pgrid%cofg(zcoord,icg)
303 
304  DO ivar = ivarbeg,ivarend
305  CALL rflu_setexactflowtrig(global,nx,ny,nz,x,y,z,ivar,var, &
306  gxe,gye,gze)
307 
308  gxc = grad(xcoord,ivar,icg)
309  gyc = grad(ycoord,ivar,icg)
310 
311  gmc = abs(gxc)
312  gme = abs(gxe)
313 
314  term = abs(gmc/gme-1.0_rfreal)
315 
316  l1norm = l1norm + term
317  l2norm = l2norm + term**2
318 
319  IF ( term > l8norm ) THEN
320  l8norm = term
321  l8normloc = icg
322  END IF ! term
323  END DO ! iVar
324  END DO ! icg
325  CASE ( 2 )
326  DO icg = 1,pgrid%nCellsTot
327  ncells = ncells + 1
328 
329  x = pgrid%cofg(xcoord,icg)
330  y = pgrid%cofg(ycoord,icg)
331  z = pgrid%cofg(zcoord,icg)
332 
333  DO ivar = ivarbeg,ivarend
334  CALL rflu_setexactflowtrig(global,nx,ny,nz,x,y,z,ivar,var, &
335  gxe,gye,gze)
336 
337  gxc = grad(xcoord,ivar,icg)
338  gyc = grad(ycoord,ivar,icg)
339 
340  gmc = sqrt(gxc*gxc + gyc*gyc)
341  gme = sqrt(gxe*gxe + gye*gye)
342 
343  term = abs(gmc/gme-1.0_rfreal)
344 
345  l1norm = l1norm + term
346  l2norm = l2norm + term**2
347 
348  IF ( term > l8norm ) THEN
349  l8norm = term
350  l8normloc = icg
351  END IF ! term
352  END DO ! iVar
353  END DO ! icg
354  CASE ( 3 )
355  DO icg = 1,pgrid%nCellsTot
356  ncells = ncells + 1
357 
358  x = pgrid%cofg(xcoord,icg)
359  y = pgrid%cofg(ycoord,icg)
360  z = pgrid%cofg(zcoord,icg)
361 
362  DO ivar = ivarbeg,ivarend
363  CALL rflu_setexactflowtrig(global,nx,ny,nz,x,y,z,ivar,var, &
364  gxe,gye,gze)
365 
366  gxc = grad(xcoord,ivar,icg)
367  gyc = grad(ycoord,ivar,icg)
368  gzc = grad(zcoord,ivar,icg)
369 
370  gmc = sqrt(gxc*gxc + gyc*gyc + gzc*gzc)
371  gme = sqrt(gxe*gxe + gye*gye + gze*gze)
372 
373  term = abs(gmc/gme-1.0_rfreal)
374 
375  l1norm = l1norm + term
376  l2norm = l2norm + term**2
377 
378  IF ( term > l8norm ) THEN
379  l8norm = term
380  l8normloc = icg
381  END IF ! term
382  END DO ! iVar
383  END DO ! icg
384  CASE default
385  CALL errorstop(global,err_reached_default,__line__)
386  END SELECT ! pRegion%mixtInput%dimens
387  CASE default
388  CALL errorstop(global,err_reached_default,__line__)
389  END SELECT ! global%casename
390 
391 ! ------------------------------------------------------------------------------
392 ! Deallocate memory
393 ! ------------------------------------------------------------------------------
394 
395  DEALLOCATE(grad,stat=errorflag)
396  global%error = errorflag
397  IF (global%error /= err_none) THEN
398  CALL errorstop(global,err_deallocate,__line__,'grad')
399  END IF ! global%error
400 
401 ! ==============================================================================
402 ! Proudman-Culick flow. NOTE this problem is two-dimensional and assumed to
403 ! lie in the x-y plane, and that the injection boundary is located at
404 ! y = -height.
405 ! ==============================================================================
406 
407  CASE ( "onera_c0", "onera_c0_2d_100x50" )
408  CALL rflu_getparamshardcodeproudman(dinc,minj,vinj,ptot)
409 
410  height = minval(pgrid%xyz(ycoord,1:pgrid%nVertTot))
411 
412  DO icg = 1,pgrid%nCellsTot
413  ncells = ncells + 1
414 
415  x = pgrid%cofg(xcoord,icg)
416  y = pgrid%cofg(ycoord,icg)
417 
418  dc = pcv(cv_mixt_dens,icg)
419  idc = 1.0_rfreal/dc
420 
421  uc = idc*pcv(cv_mixt_xmom,icg)
422  vc = idc*pcv(cv_mixt_ymom,icg)
423 
424  CALL rflu_computeexactflowproudman(global,x,y,height,dinc,vinj, &
425  ptot,de,ue,ve,we,pe)
426 
427  term = abs(sqrt(uc*uc + vc*vc)/sqrt(ue*ue + ve*ve) - 1.0_rfreal)
428  l1norm = l1norm + term
429  l2norm = l2norm + term**2
430 
431  IF ( term > l8norm ) THEN
432  l8norm = term
433  l8normloc = icg
434  END IF ! term
435  END DO ! icg
436 
437 ! ==============================================================================
438 ! Pipe acoustics. NOTE the pipe is assumed to have the x-coordinate
439 ! running down the axis.
440 ! ==============================================================================
441 
442  CASE ( "pipeacoust" )
443  CALL rflu_getparamshardcodepacoust(ptot,atot)
444 
445  dtot = mixtperf_d_cgp(atot,ggas,ptot)
446 
447  l = maxval(pgrid%xyz(xcoord,1:pgrid%nVert))
448  ro = maxval(pgrid%xyz(ycoord,1:pgrid%nVert))
449 
450  im = max(pmixtinput%prepIntVal1,1)
451  in = max(pmixtinput%prepIntVal2,1)
452  iq = max(pmixtinput%prepIntVal3,1)
453  ibc = max(min(pmixtinput%prepIntVal4,1),0)
454 
455  const = max(pmixtinput%prepRealVal1,0.0_rfreal)
456 
457  CALL rflu_jyzom(im,iq,dummyreal,etaqm,dummyreal,dummyreal)
458 
459  omega = atot*sqrt((in*global%pi/l)**2 + (etaqm/ro)**2)
460 
461  IF ( global%verbLevel > verbose_low ) THEN
462  WRITE(stdout,'(A,5X,A,1X,I2)' ) solver_name, &
463  'Boundary condition:',ibc
464  WRITE(stdout,'(A,5X,A,3(1X,I2))') solver_name, &
465  'Mode:',im,in,iq
466  WRITE(stdout,'(A,5X,A,1X,E13.6)') solver_name, &
467  'Total density (kg/m^3): ',dtot
468  WRITE(stdout,'(A,5X,A,1X,E13.6)') solver_name, &
469  'Total pressure (N/m^2): ',ptot
470  WRITE(stdout,'(A,5X,A,1X,E13.6)') solver_name, &
471  'Angular frequency (rad/s):',omega
472  WRITE(stdout,'(A,5X,A,1X,E13.6)') solver_name, &
473  'Constant (-): ',const
474  END IF ! global%verbLevel
475 
476  DO icg = 1,pgrid%nCellsTot
477  ncells = ncells + 1
478 
479  x = pgrid%cofg(xcoord,icg)
480  y = pgrid%cofg(ycoord,icg)
481  z = pgrid%cofg(zcoord,icg)
482 
483  pc = pdv(dv_mixt_pres,icg)
484 
485  CALL rflu_computeexactflowpacoust(global,z,y,x,global%currentTime, &
486  l,ro,ibc,im,in,iq,etaqm,omega,dtot, &
487  ptot,atot,const,de,ue,ve,we,pe)
488 
489  term = abs(pc/pe - 1.0_rfreal)
490  l1norm = l1norm + term
491  l2norm = l2norm + term**2
492 
493  IF ( term > l8norm ) THEN
494  l8norm = term
495  l8normloc = icg
496  END IF ! term
497  END DO ! icg
498 
499 ! ==============================================================================
500 ! Ringleb flow. NOTE this problem is two-dimensional and assumed to lie in
501 ! the x-y plane and that the exact solution is restricted to gamma = 1.4.
502 ! ==============================================================================
503 
504  CASE ( "ringleb" )
505  CALL rflu_getparamshardcoderingleb(ptot,ttot)
506 
507  DO icg = 1,pgrid%nCellsTot
508  ncells = ncells + 1
509 
510  x = pgrid%cofg(xcoord,icg)
511  y = pgrid%cofg(ycoord,icg)
512 
513  dc = pcv(cv_mixt_dens,icg)
514 
515  CALL rflu_computeexactflowringleb(x,y,rgas,ptot,ttot,de,ue,ve,we,pe)
516 
517  term = abs(dc/de-1.0_rfreal)
518  l1norm = l1norm + term
519  l2norm = l2norm + term**2
520 
521  IF ( term > l8norm ) THEN
522  l8norm = term
523  l8normloc = icg
524  END IF ! term
525  END DO ! icg
526 
527 ! ==============================================================================
528 ! Supersonic vortex flow. NOTE this problem is two-dimensional and assumed
529 ! to lie in the x-y plane.
530 ! ==============================================================================
531 
532  CASE ( "ssvorth20x5l1" ,"ssvortp20x5l1" , &
533  "ssvorth20x5l3" ,"ssvortp20x5l3" , &
534  "ssvorth40x10l1" ,"ssvortp40x10l1" , &
535  "ssvorth40x10l3" ,"ssvortp40x10l3" , &
536  "ssvorth80x20l1" ,"ssvortp80x20l1" , &
537  "ssvorth80x20l3" ,"ssvortp80x20l3" , &
538  "ssvorth160x40l1" ,"ssvortp160x40l1" , &
539  "ssvorth160x40l3" ,"ssvortp160x40l3" , &
540  "ssvorth320x80l1" ,"ssvortp320x80l1" , &
541  "ssvorth320x80l3" ,"ssvortp320x80l3" , &
542  "ssvorth640x160l1","ssvortp640x160l1", &
543  "ssvorth640x160l3","ssvortp640x160l3" )
544  CALL rflu_getparamshardcodessvortex(ri,mi,ptot,ttot)
545 
546  DO icg = 1,pgrid%nCellsTot
547 
548 ! TEMPORARY
549 ! IF ( RFLU_TestIsBoundaryCell(pRegion,icg) .EQV. .FALSE. ) THEN
550 ! END TEMPORARY
551 
552  ncells = ncells + 1
553 
554  x = pgrid%cofg(xcoord,icg)
555  y = pgrid%cofg(ycoord,icg)
556 
557  dc = pcv(cv_mixt_dens,icg)
558 
559  CALL rflu_computeexactflowssvortex(x,y,ggas,rgas,ri,mi,ptot,ttot, &
560  de,ue,ve,we,pe)
561 
562  term = abs(dc/de-1.0_rfreal)
563  l1norm = l1norm + term
564  l2norm = l2norm + term**2
565 
566  IF ( term > l8norm ) THEN
567  l8norm = term
568  l8normloc = icg
569  END IF ! term
570 
571 ! TEMPORARY
572 ! END IF ! RFLU_TestIsBoundaryCell
573 ! END TEMPORARY
574 
575  END DO ! icg
576 
577 ! ==============================================================================
578 ! Default - due to input error or missing CALL in this routine
579 ! ==============================================================================
580 
581  CASE default
582  printerrornorms = .false.
583 
584  global%warnCounter = global%warnCounter + 1
585 
586  IF ( global%verbLevel > verbose_none ) THEN
587  WRITE(stdout,'(A,3X,A,1X,A)') solver_name,'*** WARNING ***', &
588  'Exact solution not available. Returning to calling procedure.'
589  END IF ! global%verbLevel
590  END SELECT ! global%casename
591 
592 ! ******************************************************************************
593 ! Print error norms and location
594 ! ******************************************************************************
595 
596  IF ( printerrornorms .EQV. .true. ) THEN
597  l1norm = l1norm/REAL(ncells)
598  l2norm = sqrt(l2norm/REAL(ncells))
599 
600  WRITE(stdout,'(A,3X,A,1X,I6)') solver_name,'Number of cells:',ncells
601 
602  WRITE(stdout,'(A,3X,A)') solver_name,'Error norms:'
603  WRITE(stdout,'(A,5X,A,1X,E13.6)') solver_name,'L1 norm:',l1norm
604  WRITE(stdout,'(A,5X,A,1X,E13.6)') solver_name,'L2 norm:',l2norm
605  WRITE(stdout,'(A,5X,A,1X,E13.6,1X,I6)') solver_name,'L8 norm:',l8norm, &
606  l8normloc
607 
608  locdummy(1,min_val) = l8normloc
609  locdummy(1,max_val) = l8normloc
610 
611  CALL rflu_printlocinfo(pregion,locdummy,1,locinfo_mode_verbose, &
612  output_mode_master_only)
613  END IF ! printErrorNorms
614 
615 ! ******************************************************************************
616 ! End
617 ! ******************************************************************************
618 
619  IF ( global%verbLevel > verbose_none ) THEN
620  WRITE(stdout,'(A,1X,A)') solver_name, &
621  'Computing errors in flow solution done.'
622  END IF ! global%verbLevel
623 
624  CALL deregisterfunction(global)
625 
626 END SUBROUTINE rflu_computeexactflowerror
627 
628 ! ******************************************************************************
629 !
630 ! RCS Revision history:
631 !
632 ! $Log: RFLU_ComputeExactFlowError.F90,v $
633 ! Revision 1.19 2008/12/06 08:45:05 mtcampbe
634 ! Updated license.
635 !
636 ! Revision 1.18 2008/11/19 22:18:16 mtcampbe
637 ! Added Illinois Open Source License/Copyright
638 !
639 ! Revision 1.17 2007/02/27 13:19:53 haselbac
640 ! Enabled 1d computations for gradient checking cases
641 !
642 ! Revision 1.16 2006/08/04 03:07:35 haselbac
643 ! Adapted to changes, now use module RFLU_ModBoundaryTests
644 !
645 ! Revision 1.15 2006/01/06 22:19:43 haselbac
646 ! Added comp of error for linear and trig cases
647 !
648 ! Revision 1.14 2005/10/09 15:12:17 haselbac
649 ! Added 2d C0 case
650 !
651 ! Revision 1.13 2005/04/29 12:52:17 haselbac
652 ! Adapted to changes in interface of RFLU_ComputeExactFlowPAcoust
653 !
654 ! Revision 1.12 2005/04/20 14:48:10 haselbac
655 ! Adapted pipeacoust section to changes in init
656 !
657 ! Revision 1.11 2005/03/23 01:53:15 haselbac
658 ! Added setting of modes for pipeacoust case
659 !
660 ! Revision 1.10 2005/03/15 20:48:04 haselbac
661 ! Added error computation for pipe acoustics
662 !
663 ! Revision 1.9 2005/03/09 15:09:05 haselbac
664 ! Added 1-cell wide ssvortex cases
665 !
666 ! Revision 1.8 2004/10/19 19:30:11 haselbac
667 ! Location info now always written
668 !
669 ! Revision 1.7 2004/07/06 15:15:07 haselbac
670 ! Adapted to changes in libflu and modflu, cosmetics
671 !
672 ! Revision 1.6 2004/03/08 22:50:14 haselbac
673 ! Bug fix: Adding missing interfaces
674 !
675 ! Revision 1.5 2004/03/03 01:53:35 haselbac
676 ! Added printing of location info for cell with largest error
677 !
678 ! Revision 1.4 2004/02/23 23:05:42 haselbac
679 ! Added Proudman solution for ONERA C0 case
680 !
681 ! Revision 1.3 2004/02/13 03:04:35 haselbac
682 ! Added more casenames, nCells var to allow interior error comp
683 !
684 ! Revision 1.2 2004/02/02 01:12:57 haselbac
685 ! Changed initialization
686 !
687 ! Revision 1.1 2004/01/29 22:58:38 haselbac
688 ! Initial revision
689 !
690 ! ******************************************************************************
691 
692 
693 
694 
695 
696 
697 
subroutine, public rflu_getparamshardcodessvortex(ri, Mi, pTot, tTot)
subroutine rflu_computeexactflowerror(pRegion)
void int int REAL REAL * y
Definition: read.cpp:74
subroutine, public rflu_computeexactflowpacoust(global, x, y, z, t, L, ro, iBc, im, in, iq, etaqm, omega, dTot, pTot, aTot, const, d, u, v, w, p)
Vector_n max(const Array_n_const &v1, const Array_n_const &v2)
Definition: Vector_n.h:354
subroutine registerfunction(global, funName, fileName)
Definition: ModError.F90:449
double sqrt(double d)
Definition: double.h:73
subroutine, public rflu_jyzom(N, M, RJ0M, RJ1M, RY0M, RY1M)
real(rfreal) function mixtperf_r_cpg(Cp, G)
Definition: MixtPerf_R.F90:39
void int int int REAL REAL REAL * z
Definition: write.cpp:76
void int int REAL * x
Definition: read.cpp:74
real(rfreal) function mixtperf_d_cgp(C, G, P)
Definition: MixtPerf_D.F90:40
subroutine, public rflu_getparamshardcoderingleb(pTot, tTot)
subroutine, public rflu_computeexactflowringleb(x, y, rGas, pTot, tTot, d, u, v, w, p)
subroutine, public rflu_computeexactflowssvortex(x, y, gGas, rGas, ri, Mi, pTot, tTot, d, u, v, w, p)
Vector_n min(const Array_n_const &v1, const Array_n_const &v2)
Definition: Vector_n.h:346
subroutine rflu_printlocinfo(pRegion, locUnsorted, nLocUnsorted, locInfoMode, outputMode)
LOGICAL function, public rflu_testisboundarycell(pRegion, icg)
subroutine, public rflu_getparamshardcodeproudman(dInc, mInj, vInj, pTot)
subroutine, public rflu_computegradcellswrapper(pRegion, iBegVar, iEndVar, iBegGrad, iEndGrad, varInfo, var, grad)
subroutine, public rflu_setexactflowtrig(global, nx, ny, nz, x, y, z, iVar, var, gx, gy, gz)
real(rfreal) function mixtperf_eo_dgpuvw(D, G, P, U, V, W)
Definition: MixtPerf_E.F90:40
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine deregisterfunction(global)
Definition: ModError.F90:469
subroutine, public rflu_getparamshardcodepacoust(pTot, aTot)
subroutine, public rflu_setexactflowlinear(x, y, z, iVar, var, gx, gy, gz)
real(rfreal) function mixtperf_p_drt(D, R, T)
Definition: MixtPerf_P.F90:54
subroutine, public rflu_computeexactflowproudman(global, x, y, height, dInc, vInj, pTot, d, u, v, w, p)