Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RFLU_CentralFirstPatch.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 central convective fluxes using first-order accurate
26 ! approximation through a patch by using an average of variables.
27 !
28 ! Description: None.
29 !
30 ! Input:
31 ! pRegion Pointer to region
32 ! pPatch Pointer to patch
33 !
34 ! Output: None.
35 !
36 ! Notes: None.
37 !
38 ! ******************************************************************************
39 !
40 ! $Id: RFLU_CentralFirstPatch.F90,v 1.33 2008/12/06 08:44:29 mtcampbe Exp $
41 !
42 ! Copyright: (c) 2002-2005 by the University of Illinois
43 !
44 ! ******************************************************************************
45 
46 SUBROUTINE rflu_centralfirstpatch(pRegion,pPatch)
47 
48  USE modglobal, ONLY: t_global
49  USE moddatatypes
50  USE modbndpatch, ONLY: t_patch
51  USE moddatastruct, ONLY: t_region
52  USE moderror
53  USE modparameters
54  USE modmpi
55 
60 
61  USE modinterfaces, ONLY: bcondfarfieldperf, &
64  mixtperf_d_prt, &
68  mixtperf_p_drt, &
69  mixtperf_r_m, &
72 
73  IMPLICIT NONE
74 
75 ! ******************************************************************************
76 ! Definitions and declarations
77 ! ******************************************************************************
78 
79 ! ==============================================================================
80 ! Arguments
81 ! ==============================================================================
82 
83  TYPE(t_patch), POINTER :: ppatch
84  TYPE(t_region), POINTER :: pregion
85 
86 ! ==============================================================================
87 ! Locals
88 ! ==============================================================================
89 
90  LOGICAL :: corrflag,decideprintflag
91  CHARACTER(CHRLEN) :: rcsidentstring
92  INTEGER, PARAMETER :: max_inoutflow_locs = 10
93  INTEGER :: c1,bcoptfixed,bcopttype,distrib,gasmodel,ifl,indcp,indgs,indmf, &
94  indsd,indmol,nlocs
95  INTEGER :: loc(max_inoutflow_locs,min_val:max_val)
96  REAL(RFREAL) :: aoa,aos,betah,betav,corr,cp,er,fs,fsu,g,hl,icmassref,icpref, &
97  irl,irr,liftcoef,mach,mf,minj,mm,nm,nx,ny,nz,pa,pl,pf,pr, &
98  pref,ptot,ql,qr,rgas,rhoa,rhoea,rhoua,rhova,rhowa,rl,rel, &
99  rer,rul,rur,rvl,rvr,rwl,rwr,rr,rref,term,tf,tinj,tr,ttot, &
100  uinj,ul,ur,vcont,vinj,vl,vm2,vr,vref,winj,wl,wr,xc,yc,zc
101  REAL(RFREAL) :: flx(5)
102  REAL(RFREAL), DIMENSION(:), POINTER :: mfmixt
103  REAL(RFREAL), DIMENSION(:,:), POINTER :: cv,dv,gv,rhs,vals,sd
104  TYPE(t_global), POINTER :: global
105 
106 ! ******************************************************************************
107 ! Start
108 ! ******************************************************************************
109 
110  rcsidentstring = '$RCSfile: RFLU_CentralFirstPatch.F90,v $ $Revision: 1.33 $'
111 
112  global => pregion%global
113 
114  CALL registerfunction(global,'RFLU_CentralFirstPatch',&
115  'RFLU_CentralFirstPatch.F90')
116 
117 ! ******************************************************************************
118 ! Set pointers and variables
119 ! ******************************************************************************
120 
121  indcp = pregion%mixtInput%indCp
122  indmf = pregion%mixtInput%indMfMixt
123  indsd = pregion%mixtInput%indSd
124  indmol = pregion%mixtInput%indMol
125  gasmodel = pregion%mixtInput%gasModel
126 
127  indgs = pregion%grid%indGs
128 
129  distrib = ppatch%mixt%distrib
130 
131  cv => pregion%mixt%cv
132  dv => pregion%mixt%dv
133  gv => pregion%mixt%gv
134  rhs => pregion%mixt%rhs
135  sd => pregion%mixt%sd
136 
137  mfmixt => ppatch%mfMixt
138 
139  nlocs = 0
140 
141  decideprintflag = rflu_decideprint(global)
142 
143  pref = global%refPressure
144  rref = global%refDensity
145  vref = global%refVelocity
146 
147  icpref = 2.0_rfreal/(rref*vref*vref)
148  icmassref = 1.0_rfreal/(rref*vref)
149 
150 ! ******************************************************************************
151 ! Select boundary type
152 ! ******************************************************************************
153 
154  SELECT CASE ( ppatch%bcType )
155 
156 ! ==============================================================================
157 ! Inflow (based on total quantities and flow angles)
158 ! ==============================================================================
159 
160  CASE ( bc_inflow_totang )
161  vals => ppatch%mixt%vals
162  bcopttype = ppatch%mixt%switches(bcswi_inflow_type)
163  bcoptfixed = ppatch%mixt%switches(bcswi_inflow_fixed)
164 
165  DO ifl = 1,ppatch%nBFaces
166  c1 = ppatch%bf2c(ifl)
167 
168  nx = ppatch%fn(xcoord,ifl)
169  ny = ppatch%fn(ycoord,ifl)
170  nz = ppatch%fn(zcoord,ifl)
171  nm = ppatch%fn(xyzmag,ifl)
172 
173  fs = ppatch%gs(indgs*ifl)
174 
175  rl = cv(cv_mixt_dens,c1)
176  rul = cv(cv_mixt_xmom,c1)
177  rvl = cv(cv_mixt_ymom,c1)
178  rwl = cv(cv_mixt_zmom,c1)
179  rel = cv(cv_mixt_ener,c1)
180  pl = dv(dv_mixt_pres,c1)
181 
182  ptot = vals(bcdat_inflow_ptot, distrib*ifl)
183  ttot = vals(bcdat_inflow_ttot, distrib*ifl)
184  betah = vals(bcdat_inflow_betah,distrib*ifl)
185  betav = vals(bcdat_inflow_betav,distrib*ifl)
186 
187  IF ( bcopttype /= bcopt_subsonic ) THEN
188  mach = vals(bcdat_inflow_mach,distrib*ifl)
189  ELSE
190  mach = 0.0_rfreal
191  END IF ! bcOptType
192 
193  IF ( gasmodel == gas_model_tcperf ) THEN
194  cp = gv(gv_mixt_cp ,indcp *c1)
195  mm = gv(gv_mixt_mol,indmol*c1)
196 
197  CALL bcondinflowperf(bcopttype,bcoptfixed,ptot,ttot,betah,betav, &
198  mach,nx,ny,nz,cp,mm,rl,rul,rvl,rwl,rr,rur, &
199  rvr,rwr,rer,pr)
200  ELSE
201  CALL errorstop(global,err_reached_default,__line__)
202  END IF ! gasModel
203 
204  ql = (rul*nx + rvl*ny + rwl*nz)/rl - fs
205  qr = (rur*nx + rvr*ny + rwr*nz)/rr - fs
206 
207  ul = rul/rl
208  vl = rvl/rl
209  wl = rwl/rl
210  ur = rur/rr
211  vr = rvr/rr
212  wr = rwr/rr
213 
214  flx(1) = 0.5_rfreal*(ql* rl + qr* rr )*nm
215  flx(2) = 0.5_rfreal*(ql* rul + pl*nx + qr* rur + pr*nx)*nm
216  flx(3) = 0.5_rfreal*(ql* rvl + pl*ny + qr* rvr + pr*ny)*nm
217  flx(4) = 0.5_rfreal*(ql* rwl + pl*nz + qr* rwr + pr*nz)*nm
218  flx(5) = 0.5_rfreal*(ql*(rel + pl) + pl*fs + qr*(rer + pr) + pr*fs)*nm
219 
220  mfmixt(indmf*ifl) = flx(1)
221 
222  ppatch%cp(ifl) = icpref*(0.5_rfreal*(pl + pr) - pref)
223  ppatch%cmass(ifl) = icmassref*flx(1)/nm
224  ppatch%cmom(xcoord,ifl) = icpref*0.5_rfreal*(ul+ur)*flx(1)/nm
225  ppatch%cmom(ycoord,ifl) = icpref*0.5_rfreal*(vl+vr)*flx(1)/nm
226  ppatch%cmom(zcoord,ifl) = icpref*0.5_rfreal*(wl+wr)*flx(1)/nm
227 
228  rhs(cv_mixt_dens,c1) = rhs(cv_mixt_dens,c1) + flx(1)
229  rhs(cv_mixt_xmom,c1) = rhs(cv_mixt_xmom,c1) + flx(2)
230  rhs(cv_mixt_ymom,c1) = rhs(cv_mixt_ymom,c1) + flx(3)
231  rhs(cv_mixt_zmom,c1) = rhs(cv_mixt_zmom,c1) + flx(4)
232  rhs(cv_mixt_ener,c1) = rhs(cv_mixt_ener,c1) + flx(5)
233 
234  sd(sd_xmom,c1*indsd) = sd(sd_xmom,c1*indsd) + 0.5_rfreal*(rul/rl + rur/rr)*flx(1)
235  sd(sd_ymom,c1*indsd) = sd(sd_ymom,c1*indsd) + 0.5_rfreal*(rvl/rl + rvr/rr)*flx(1)
236  sd(sd_zmom,c1*indsd) = sd(sd_zmom,c1*indsd) + 0.5_rfreal*(rwl/rl + rwr/rr)*flx(1)
237 
238  IF ( pregion%irkStep == 1 ) THEN
239  global%massIn = global%massIn - min(flx(1),0.0_rfreal)
240  global%massOut = global%massOut + max(flx(1),0.0_rfreal)
241  END IF ! pRegion
242 
243 
244  IF ( (global%checkLevel == check_high) .AND. &
245  (global%verbLevel >= verbose_high) .AND. &
246  (global%myProcid == masterproc) .AND. &
247  (decideprintflag .EQV. .true.) ) THEN
248  IF ( flx(1) > 0.0_rfreal ) THEN
249  nlocs = nlocs + 1
250 
251  IF ( nlocs == 1 ) THEN
252  global%warnCounter = global%warnCounter + 1
253 
254  WRITE(stdout,'(A,1X,A,1X,I9)') solver_name, &
255  '*** WARNING *** Outflow detected at inflow boundary!'
256  WRITE(stdout,'(A,3X,A,1X,I5.5)') solver_name,'Global region:', &
257  pregion%iRegionGlobal
258  IF ( global%flowType == flow_unsteady ) THEN
259  WRITE(stdout,'(A,3X,A,1X,1PE11.5)') solver_name, &
260  'Current time:', &
261  global%currentTime
262  ELSE
263  WRITE(stdout,'(A,3X,A,1X,I6.6)') solver_name, &
264  'Current iteration number:', &
265  global%currentIter
266  END IF ! global%flowType
267 
268  WRITE(stdout,'(A,3X,A,1X,I1)') solver_name, &
269  'Runge-Kutta stage:', &
270  pregion%irkStep
271  END IF ! nLocs
272 
273  IF ( nlocs <= max_inoutflow_locs ) THEN
274  loc(nlocs,min_val:max_val) = c1
275  END IF ! nLocs
276  END IF ! flx(1)
277  END IF ! global%checkLevel
278  END DO ! ifl
279 
280 ! ------------------------------------------------------------------------------
281 ! Write info on outflow at inflow boundary
282 ! ------------------------------------------------------------------------------
283 
284  IF ( (global%checkLevel == check_high) .AND. &
285  (global%verbLevel >= verbose_high) .AND. &
286  (global%myProcid == masterproc) .AND. &
287  (decideprintflag .EQV. .true.) .AND. &
288  (nlocs > 0) ) THEN
289  IF ( nlocs > max_inoutflow_locs ) THEN
290  WRITE(stdout,'(A,3X,A,1X,I3,1X,A,1X,I9,1X,A)') solver_name, &
291  'Only wrote the first',max_inoutflow_locs,'of',nlocs, &
292  'inflow faces with outflow.'
293  CALL rflu_printlocinfo(pregion,loc,max_inoutflow_locs, &
294  locinfo_mode_silent,output_mode_anybody)
295  ELSE
296  CALL rflu_printlocinfo(pregion,loc(1:nlocs,min_val:max_val),nlocs, &
297  locinfo_mode_silent,output_mode_anybody)
298  END IF ! nLocs
299  END IF ! global%verbLevel
300 
301 ! ==============================================================================
302 ! Inflow (based on velocities and temperature)
303 ! ==============================================================================
304 
305  CASE ( bc_inflow_veltemp )
306  vals => ppatch%mixt%vals
307  bcopttype = ppatch%mixt%switches(bcswi_inflow_type)
308 
309  DO ifl = 1,ppatch%nBFaces
310  c1 = ppatch%bf2c(ifl)
311 
312  nx = ppatch%fn(xcoord,ifl)
313  ny = ppatch%fn(ycoord,ifl)
314  nz = ppatch%fn(zcoord,ifl)
315  nm = ppatch%fn(xyzmag,ifl)
316 
317  fs = ppatch%gs(indgs*ifl)
318 
319  rl = cv(cv_mixt_dens,c1)
320  rul = cv(cv_mixt_xmom,c1)
321  rvl = cv(cv_mixt_ymom,c1)
322  rwl = cv(cv_mixt_zmom,c1)
323  rel = cv(cv_mixt_ener,c1)
324  pl = dv(dv_mixt_pres,c1)
325 
326  ur = vals(bcdat_inflow_u,distrib*ifl)
327  vr = vals(bcdat_inflow_v,distrib*ifl)
328  wr = vals(bcdat_inflow_w,distrib*ifl)
329  tr = vals(bcdat_inflow_t,distrib*ifl)
330 
331  IF ( gasmodel == gas_model_tcperf ) THEN
332  cp = gv(gv_mixt_cp ,indcp *c1)
333  mm = gv(gv_mixt_mol,indmol*c1)
334  rgas = mixtperf_r_m(mm)
335  g = mixtperf_g_cpr(cp,rgas)
336 
337  IF ( bcopttype /= bcopt_subsonic ) THEN
338  pr = vals(bcdat_inflow_p,distrib*ifl)
339  rr = mixtperf_d_prt(pr,rgas,tr)
340  ELSE
341  rr = rl
342  pr = mixtperf_p_drt(rr,rgas,tr)
343  END IF ! bcOptType
344 
345  rer = rr*mixtperf_eo_dgpuvw(rr,g,pr,ur,vr,wr)
346  ELSE
347  CALL errorstop(global,err_reached_default,__line__)
348  END IF ! gasModel
349 
350  rur = rr*ur
351  rvr = rr*vr
352  rwr = rr*wr
353 
354  ql = (rul*nx + rvl*ny + rwl*nz)/rl - fs
355  qr = (rur*nx + rvr*ny + rwr*nz)/rr - fs
356 
357  ul = rul/rl
358  vl = rvl/rl
359  wl = rwl/rl
360 
361  flx(1) = 0.5_rfreal*(ql* rl + qr* rr )*nm
362  flx(2) = 0.5_rfreal*(ql* rul + pl*nx + qr* rur + pr*nx)*nm
363  flx(3) = 0.5_rfreal*(ql* rvl + pl*ny + qr* rvr + pr*ny)*nm
364  flx(4) = 0.5_rfreal*(ql* rwl + pl*nz + qr* rwr + pr*nz)*nm
365  flx(5) = 0.5_rfreal*(ql*(rel + pl) + pl*fs + qr*(rer + pr) + pr*fs)*nm
366 
367  mfmixt(indmf*ifl) = flx(1)
368 
369  ppatch%cp(ifl) = icpref*(0.5_rfreal*(pl + pr) - pref)
370  ppatch%cmass(ifl) = icmassref*flx(1)/nm
371  ppatch%cmom(xcoord,ifl) = icpref*0.5_rfreal*(ul+ur)*flx(1)/nm
372  ppatch%cmom(ycoord,ifl) = icpref*0.5_rfreal*(vl+vr)*flx(1)/nm
373  ppatch%cmom(zcoord,ifl) = icpref*0.5_rfreal*(wl+wr)*flx(1)/nm
374 
375  rhs(cv_mixt_dens,c1) = rhs(cv_mixt_dens,c1) + flx(1)
376  rhs(cv_mixt_xmom,c1) = rhs(cv_mixt_xmom,c1) + flx(2)
377  rhs(cv_mixt_ymom,c1) = rhs(cv_mixt_ymom,c1) + flx(3)
378  rhs(cv_mixt_zmom,c1) = rhs(cv_mixt_zmom,c1) + flx(4)
379  rhs(cv_mixt_ener,c1) = rhs(cv_mixt_ener,c1) + flx(5)
380 
381  sd(sd_xmom,c1*indsd) = sd(sd_xmom,c1*indsd) + 0.5_rfreal*(rul/rl + rur/rr)*flx(1)
382  sd(sd_ymom,c1*indsd) = sd(sd_ymom,c1*indsd) + 0.5_rfreal*(rvl/rl + rvr/rr)*flx(1)
383  sd(sd_zmom,c1*indsd) = sd(sd_zmom,c1*indsd) + 0.5_rfreal*(rwl/rl + rwr/rr)*flx(1)
384 
385  IF ( pregion%irkStep == 1 ) THEN
386  global%massIn = global%massIn - min(flx(1),0.0_rfreal)
387  global%massOut = global%massOut + max(flx(1),0.0_rfreal)
388  END IF ! pRegion
389 
390 
391  IF ( (global%checkLevel == check_high) .AND. &
392  (global%verbLevel >= verbose_high) .AND. &
393  (global%myProcid == masterproc) .AND. &
394  (decideprintflag .EQV. .true.) ) THEN
395  IF ( flx(1) > 0.0_rfreal ) THEN
396  nlocs = nlocs + 1
397 
398  IF ( nlocs == 1 ) THEN
399  global%warnCounter = global%warnCounter + 1
400 
401  WRITE(stdout,'(A,1X,A,1X,I9)') solver_name, &
402  '*** WARNING *** Outflow detected at inflow boundary!'
403  WRITE(stdout,'(A,3X,A,1X,I5.5)') solver_name,'Global region:', &
404  pregion%iRegionGlobal
405  IF ( global%flowType == flow_unsteady ) THEN
406  WRITE(stdout,'(A,3X,A,1X,1PE11.5)') solver_name, &
407  'Current time:', &
408  global%currentTime
409  ELSE
410  WRITE(stdout,'(A,3X,A,1X,I6.6)') solver_name, &
411  'Current iteration number:', &
412  global%currentIter
413  END IF ! global%flowType
414 
415  WRITE(stdout,'(A,3X,A,1X,I1)') solver_name, &
416  'Runge-Kutta stage:', &
417  pregion%irkStep
418  END IF ! nLocs
419 
420  IF ( nlocs <= max_inoutflow_locs ) THEN
421  loc(nlocs,min_val:max_val) = c1
422  END IF ! nLocs
423  END IF ! flx(1)
424  END IF ! global%checkLevel
425  END DO ! ifl
426 
427 ! ------------------------------------------------------------------------------
428 ! Write info on outflow at inflow boundary
429 ! ------------------------------------------------------------------------------
430 
431  IF ( (global%checkLevel == check_high) .AND. &
432  (global%verbLevel >= verbose_high) .AND. &
433  (global%myProcid == masterproc) .AND. &
434  (decideprintflag .EQV. .true.) .AND. &
435  (nlocs > 0) ) THEN
436  IF ( nlocs > max_inoutflow_locs ) THEN
437  WRITE(stdout,'(A,3X,A,1X,I3,1X,A,1X,I9,1X,A)') solver_name, &
438  'Only wrote the first',max_inoutflow_locs,'of',nlocs, &
439  'inflow faces with outflow.'
440  CALL rflu_printlocinfo(pregion,loc,max_inoutflow_locs, &
441  locinfo_mode_silent,output_mode_anybody)
442  ELSE
443  CALL rflu_printlocinfo(pregion,loc(1:nlocs,min_val:max_val),nlocs, &
444  locinfo_mode_silent,output_mode_anybody)
445  END IF ! nLocs
446  END IF ! global%checkLevel
447 
448 ! ==============================================================================
449 ! Outflow
450 ! ==============================================================================
451 
452  CASE ( bc_outflow )
453  bcopttype = ppatch%mixt%switches(bcswi_outflow_type)
454 
455  IF ( bcopttype /= bcopt_supersonic ) THEN
456  vals => ppatch%mixt%vals
457  END IF ! bcOptType
458 
459  DO ifl = 1,ppatch%nBFaces
460  c1 = ppatch%bf2c(ifl)
461 
462  nx = ppatch%fn(xcoord,ifl)
463  ny = ppatch%fn(ycoord,ifl)
464  nz = ppatch%fn(zcoord,ifl)
465  nm = ppatch%fn(xyzmag,ifl)
466 
467  fs = ppatch%gs(indgs*ifl)
468 
469  rl = cv(cv_mixt_dens,c1)
470  rul = cv(cv_mixt_xmom,c1)
471  rvl = cv(cv_mixt_ymom,c1)
472  rwl = cv(cv_mixt_zmom,c1)
473  rel = cv(cv_mixt_ener,c1)
474  pl = dv(dv_mixt_pres,c1)
475 
476  IF ( bcopttype /= bcopt_supersonic ) THEN
477  pr = vals(bcdat_outflow_press,distrib*ifl)
478  ELSE
479  pr = pl
480  END IF ! bcOptType
481 
482  IF ( gasmodel == gas_model_tcperf ) THEN
483  cp = gv(gv_mixt_cp ,indcp *c1)
484  mm = gv(gv_mixt_mol,indmol*c1)
485 
486  CALL bcondoutflowperf(bcopttype,pr,nx,ny,nz,cp,mm,rl,rul,rvl,rwl, &
487  rel,pl,rr,rur,rvr,rwr,rer)
488  ELSE
489  CALL errorstop(global,err_reached_default,__line__)
490  END IF ! gasModel
491 
492  ql = (rul*nx + rvl*ny + rwl*nz)/rl - fs
493  qr = (rur*nx + rvr*ny + rwr*nz)/rr - fs
494 
495  ul = rul/rl
496  vl = rvl/rl
497  wl = rwl/rl
498  ur = rur/rr
499  vr = rvr/rr
500  wr = rwr/rr
501 
502  flx(1) = 0.5_rfreal*(ql* rl + qr* rr )*nm
503  flx(2) = 0.5_rfreal*(ql* rul + pl*nx + qr* rur + pr*nx)*nm
504  flx(3) = 0.5_rfreal*(ql* rvl + pl*ny + qr* rvr + pr*ny)*nm
505  flx(4) = 0.5_rfreal*(ql* rwl + pl*nz + qr* rwr + pr*nz)*nm
506  flx(5) = 0.5_rfreal*(ql*(rel + pl) + pl*fs + qr*(rer + pr) + pr*fs)*nm
507 
508  mfmixt(indmf*ifl) = flx(1)
509 
510  ppatch%cp(ifl) = icpref*(0.5_rfreal*(pl + pr) - pref)
511  ppatch%cmass(ifl) = icmassref*flx(1)/nm
512  ppatch%cmom(xcoord,ifl) = icpref*0.5_rfreal*(ul+ur)*flx(1)/nm
513  ppatch%cmom(ycoord,ifl) = icpref*0.5_rfreal*(vl+vr)*flx(1)/nm
514  ppatch%cmom(zcoord,ifl) = icpref*0.5_rfreal*(wl+wr)*flx(1)/nm
515 
516  rhs(cv_mixt_dens,c1) = rhs(cv_mixt_dens,c1) + flx(1)
517  rhs(cv_mixt_xmom,c1) = rhs(cv_mixt_xmom,c1) + flx(2)
518  rhs(cv_mixt_ymom,c1) = rhs(cv_mixt_ymom,c1) + flx(3)
519  rhs(cv_mixt_zmom,c1) = rhs(cv_mixt_zmom,c1) + flx(4)
520  rhs(cv_mixt_ener,c1) = rhs(cv_mixt_ener,c1) + flx(5)
521 
522  sd(sd_xmom,c1*indsd) = sd(sd_xmom,c1*indsd) + 0.5_rfreal*(rul/rl + rur/rr)*flx(1)
523  sd(sd_ymom,c1*indsd) = sd(sd_ymom,c1*indsd) + 0.5_rfreal*(rvl/rl + rvr/rr)*flx(1)
524  sd(sd_zmom,c1*indsd) = sd(sd_zmom,c1*indsd) + 0.5_rfreal*(rwl/rl + rwr/rr)*flx(1)
525 
526  IF ( pregion%irkStep == 1 ) THEN
527  global%massIn = global%massIn - min(flx(1),0.0_rfreal)
528  global%massOut = global%massOut + max(flx(1),0.0_rfreal)
529  END IF ! pRegion
530 
531  IF ( (global%checkLevel == check_high) .AND. &
532  (global%verbLevel >= verbose_high) .AND. &
533  (global%myProcid == masterproc) .AND. &
534  (decideprintflag .EQV. .true.) ) THEN
535  IF ( flx(1) < 0.0_rfreal ) THEN
536  nlocs = nlocs + 1
537 
538  IF ( nlocs == 1 ) THEN
539  global%warnCounter = global%warnCounter + 1
540 
541  WRITE(stdout,'(A,1X,A,1X,I9)') solver_name, &
542  '*** WARNING *** Inflow detected at outflow boundary!'
543  WRITE(stdout,'(A,3X,A,1X,I5.5)') solver_name,'Global region:', &
544  pregion%iRegionGlobal
545  IF ( global%flowType == flow_unsteady ) THEN
546  WRITE(stdout,'(A,3X,A,1X,1PE11.5)') solver_name, &
547  'Current time:', &
548  global%currentTime
549  ELSE
550  WRITE(stdout,'(A,3X,A,1X,I6.6)') solver_name, &
551  'Current iteration number:', &
552  global%currentIter
553  END IF ! global%flowType
554 
555  WRITE(stdout,'(A,3X,A,1X,I1)') solver_name, &
556  'Runge-Kutta stage:', &
557  pregion%irkStep
558  END IF ! nLocs
559 
560  IF ( nlocs <= max_inoutflow_locs ) THEN
561  loc(nlocs,min_val:max_val) = c1
562  END IF ! nLocs
563  END IF ! flx(1)
564  END IF ! global%checkLevel
565  END DO ! ifl
566 
567 ! ------------------------------------------------------------------------------
568 ! Write info on inflow at outflow boundary
569 ! ------------------------------------------------------------------------------
570 
571  IF ( (global%checkLevel == check_high) .AND. &
572  (global%verbLevel >= verbose_high) .AND. &
573  (global%myProcid == masterproc) .AND. &
574  (decideprintflag .EQV. .true.) .AND. &
575  (nlocs > 0) ) THEN
576  IF ( nlocs > max_inoutflow_locs ) THEN
577  WRITE(stdout,'(A,3X,A,1X,I3,1X,A,1X,I9,1X,A)') solver_name, &
578  'Only wrote the first',max_inoutflow_locs,'of',nlocs, &
579  'outflow faces with inflow.'
580  CALL rflu_printlocinfo(pregion,loc,max_inoutflow_locs, &
581  locinfo_mode_silent,output_mode_anybody)
582  ELSE
583  CALL rflu_printlocinfo(pregion,loc(1:nlocs,min_val:max_val),nlocs, &
584  locinfo_mode_silent,output_mode_anybody)
585  END IF ! nLocs
586  END IF ! global%verbLevel
587 
588 ! ==============================================================================
589 ! Slip wall (weak imposition)
590 ! ==============================================================================
591 
592  CASE ( bc_slipwall )
593  DO ifl = 1,ppatch%nBFaces
594  c1 = ppatch%bf2c(ifl)
595 
596  nx = ppatch%fn(xcoord,ifl)
597  ny = ppatch%fn(ycoord,ifl)
598  nz = ppatch%fn(zcoord,ifl)
599  nm = ppatch%fn(xyzmag,ifl)
600 
601  fs = ppatch%gs(indgs*ifl)
602  fsu = rflu_descalegridspeed(pregion,fs)
603 
604  rl = cv(cv_mixt_dens,c1)
605  rul = cv(cv_mixt_xmom,c1)
606  rvl = cv(cv_mixt_ymom,c1)
607  rwl = cv(cv_mixt_zmom,c1)
608  pl = dv(dv_mixt_pres,c1)
609 
610  SELECT CASE ( pregion%mixtInput%gasModel )
611  CASE ( gas_model_tcperf, &
612  gas_model_mixt_tcperf, &
613  gas_model_mixt_pseudo )
614  cp = gv(gv_mixt_cp ,indcp *c1)
615  mm = gv(gv_mixt_mol,indmol*c1)
616 
617  CALL rflu_setrindstateslipwallperf(cp,mm,nx,ny,nz,rl,rul,rvl,rwl, &
618  fsu,pl)
619  CASE default
620  CALL errorstop(global,err_reached_default,__line__)
621  END SELECT ! pRegion%mixtInput%gasModel
622 
623  flx(2) = pl*nx*nm
624  flx(3) = pl*ny*nm
625  flx(4) = pl*nz*nm
626  flx(5) = pl*fs*nm
627 
628  mfmixt(indmf*ifl) = 0.0_rfreal
629 
630  ppatch%cp(ifl) = icpref*(pl - pref)
631  ppatch%cmass(ifl) = 0.0_rfreal
632  ppatch%cmom(xcoord,ifl) = 0.0_rfreal
633  ppatch%cmom(ycoord,ifl) = 0.0_rfreal
634  ppatch%cmom(zcoord,ifl) = 0.0_rfreal
635 
636  rhs(cv_mixt_xmom,c1) = rhs(cv_mixt_xmom,c1) + flx(2)
637  rhs(cv_mixt_ymom,c1) = rhs(cv_mixt_ymom,c1) + flx(3)
638  rhs(cv_mixt_zmom,c1) = rhs(cv_mixt_zmom,c1) + flx(4)
639  rhs(cv_mixt_ener,c1) = rhs(cv_mixt_ener,c1) + flx(5)
640 
641  END DO ! ifl
642 
643 ! ==============================================================================
644 ! No-slip wall
645 ! ==============================================================================
646 
647  CASE ( bc_noslipwall_hflux,bc_noslipwall_temp )
648  DO ifl = 1,ppatch%nBFaces
649  c1 = ppatch%bf2c(ifl)
650 
651  nx = ppatch%fn(xcoord,ifl)
652  ny = ppatch%fn(ycoord,ifl)
653  nz = ppatch%fn(zcoord,ifl)
654  nm = ppatch%fn(xyzmag,ifl)
655 
656  fs = ppatch%gs(indgs*ifl)
657 
658  pl = dv(dv_mixt_pres,c1)
659 
660  flx(2) = pl*nx*nm
661  flx(3) = pl*ny*nm
662  flx(4) = pl*nz*nm
663  flx(5) = pl*fs*nm
664 
665  mfmixt(indmf*ifl) = 0.0_rfreal
666 
667  ppatch%cp(ifl) = icpref*(pl - pref)
668  ppatch%cmass(ifl) = 0.0_rfreal
669  ppatch%cmom(xcoord,ifl) = 0.0_rfreal
670  ppatch%cmom(ycoord,ifl) = 0.0_rfreal
671  ppatch%cmom(zcoord,ifl) = 0.0_rfreal
672 
673  rhs(cv_mixt_xmom,c1) = rhs(cv_mixt_xmom,c1) + flx(2)
674  rhs(cv_mixt_ymom,c1) = rhs(cv_mixt_ymom,c1) + flx(3)
675  rhs(cv_mixt_zmom,c1) = rhs(cv_mixt_zmom,c1) + flx(4)
676  rhs(cv_mixt_ener,c1) = rhs(cv_mixt_ener,c1) + flx(5)
677  END DO ! ifl
678 
679 ! ==============================================================================
680 ! Farfield
681 ! ==============================================================================
682 
683  CASE ( bc_farfield )
684  corr = ppatch%mixt%switches(bcswi_farf_corr)
685 
686  IF ( corr == bcopt_corr_yes ) THEN
687  corrflag = .true.
688  ELSE
689  corrflag = .false.
690  liftcoef = 0.0_rfreal
691  END IF ! corr
692 
693  vals => ppatch%mixt%vals
694 
695  DO ifl = 1,ppatch%nBFaces
696  c1 = ppatch%bf2c(ifl)
697 
698  nx = ppatch%fn(xcoord,ifl)
699  ny = ppatch%fn(ycoord,ifl)
700  nz = ppatch%fn(zcoord,ifl)
701  nm = ppatch%fn(xyzmag,ifl)
702 
703  xc = ppatch%fc(xcoord,ifl)
704  yc = ppatch%fc(ycoord,ifl)
705  zc = ppatch%fc(zcoord,ifl)
706 
707  fs = ppatch%gs(indgs*ifl)
708 
709  rl = cv(cv_mixt_dens,c1)
710  rul = cv(cv_mixt_xmom,c1)
711  rvl = cv(cv_mixt_ymom,c1)
712  rwl = cv(cv_mixt_zmom,c1)
713  rel = cv(cv_mixt_ener,c1)
714  pl = dv(dv_mixt_pres,c1)
715 
716  mf = vals(bcdat_farf_mach ,distrib*ifl)
717  aoa = vals(bcdat_farf_attack,distrib*ifl)
718  aos = vals(bcdat_farf_slip ,distrib*ifl)
719  pf = vals(bcdat_farf_press ,distrib*ifl)
720  tf = vals(bcdat_farf_temp ,distrib*ifl)
721 
722  IF ( gasmodel == gas_model_tcperf ) THEN
723  cp = gv(gv_mixt_cp ,indcp *c1)
724  mm = gv(gv_mixt_mol,indmol*c1)
725 
726  CALL rflu_setrindstatefarfieldperf(global,cp,mm,nx,ny,nz,mf,pf,tf, &
727  aoa,aos,corrflag,liftcoef,xc,yc, &
728  zc,rl,rul,rvl,rwl,rel,rr,rur, &
729  rvr,rwr,rer,pr)
730  END IF ! gasModel
731 
732  ql = (rul*nx + rvl*ny + rwl*nz)/rl - fs
733  qr = (rur*nx + rvr*ny + rwr*nz)/rr - fs
734 
735  ul = rul/rl
736  vl = rvl/rl
737  wl = rwl/rl
738  ur = rur/rr
739  vr = rvr/rr
740  wr = rwr/rr
741 
742  flx(1) = 0.5_rfreal*(ql* rl + qr* rr )*nm
743  flx(2) = 0.5_rfreal*(ql* rul + pl*nx + qr* rur + pr*nx)*nm
744  flx(3) = 0.5_rfreal*(ql* rvl + pl*ny + qr* rvr + pr*ny)*nm
745  flx(4) = 0.5_rfreal*(ql* rwl + pl*nz + qr* rwr + pr*nz)*nm
746  flx(5) = 0.5_rfreal*(ql*(rel + pl) + pl*fs + qr*(rer + pr) + pr*fs)*nm
747 
748  mfmixt(indmf*ifl) = flx(1)
749 
750  ppatch%cp(ifl) = icpref*(0.5_rfreal*(pl + pr) - pref)
751  ppatch%cmass(ifl) = icmassref*flx(1)/nm
752  ppatch%cmom(xcoord,ifl) = icpref*0.5_rfreal*(ul+ur)*flx(1)/nm
753  ppatch%cmom(ycoord,ifl) = icpref*0.5_rfreal*(vl+vr)*flx(1)/nm
754  ppatch%cmom(zcoord,ifl) = icpref*0.5_rfreal*(wl+wr)*flx(1)/nm
755 
756  rhs(cv_mixt_dens,c1) = rhs(cv_mixt_dens,c1) + flx(1)
757  rhs(cv_mixt_xmom,c1) = rhs(cv_mixt_xmom,c1) + flx(2)
758  rhs(cv_mixt_ymom,c1) = rhs(cv_mixt_ymom,c1) + flx(3)
759  rhs(cv_mixt_zmom,c1) = rhs(cv_mixt_zmom,c1) + flx(4)
760  rhs(cv_mixt_ener,c1) = rhs(cv_mixt_ener,c1) + flx(5)
761 
762  sd(sd_xmom,c1*indsd) = sd(sd_xmom,c1*indsd) + 0.5_rfreal*(rul/rl + rur/rr)*flx(1)
763  sd(sd_ymom,c1*indsd) = sd(sd_ymom,c1*indsd) + 0.5_rfreal*(rvl/rl + rvr/rr)*flx(1)
764  sd(sd_zmom,c1*indsd) = sd(sd_zmom,c1*indsd) + 0.5_rfreal*(rwl/rl + rwr/rr)*flx(1)
765 
766  IF ( pregion%irkStep == 1 ) THEN
767  global%massIn = global%massIn - min(flx(1),0.0_rfreal)
768  global%massOut = global%massOut + max(flx(1),0.0_rfreal)
769  END IF ! pRegion
770  END DO ! ifl
771 
772 ! ==============================================================================
773 ! Injection
774 ! ==============================================================================
775 
776  CASE ( bc_injection )
777  vals => ppatch%mixt%vals
778 
779  DO ifl = 1,ppatch%nBFaces
780  c1 = ppatch%bf2c(ifl)
781 
782  nx = ppatch%fn(xcoord,ifl)
783  ny = ppatch%fn(ycoord,ifl)
784  nz = ppatch%fn(zcoord,ifl)
785  nm = ppatch%fn(xyzmag,ifl)
786 
787  fs = ppatch%gs(indgs*ifl)
788  fsu = rflu_descalegridspeed(pregion,fs)
789 
790  IF ( gasmodel == gas_model_tcperf ) THEN
791  cp = gv(gv_mixt_cp ,indcp *c1)
792  mm = gv(gv_mixt_mol,indmol*c1)
793 
794  minj = vals(bcdat_inject_mfrate,distrib*ifl)
795 
796  IF ( minj > 0.0_rfreal ) THEN ! Surface burning
797  tinj = vals(bcdat_inject_temp,distrib*ifl)
798 
799  pl = dv(dv_mixt_pres,c1)
800 
801  CALL rflu_setrindstateinjectperf(cp,mm,nx,ny,nz,minj,tinj,pl, &
802  fsu,rl,ul,vl,wl,hl)
803 
804  flx(1) = -minj *nm
805  flx(2) = (-minj*ul + pl*nx)*nm
806  flx(3) = (-minj*vl + pl*ny)*nm
807  flx(4) = (-minj*wl + pl*nz)*nm
808  flx(5) = (-minj*hl + pl*fs)*nm
809  ELSE ! Surface NOT burning
810  rl = cv(cv_mixt_dens,c1)
811  rul = cv(cv_mixt_xmom,c1)
812  rvl = cv(cv_mixt_ymom,c1)
813  rwl = cv(cv_mixt_zmom,c1)
814  pl = dv(dv_mixt_pres,c1)
815 
816  CALL rflu_setrindstateslipwallperf(cp,mm,nx,ny,nz,rl,rul,rvl,rwl, &
817  fsu,pl)
818 
819  ul = 0.0_rfreal
820  vl = 0.0_rfreal
821  wl = 0.0_rfreal
822 
823  flx(1) = 0.0_rfreal
824  flx(2) = pl*nx*nm
825  flx(3) = pl*ny*nm
826  flx(4) = pl*nz*nm
827  flx(5) = pl*fs*nm
828  END IF ! minj
829  ELSE
830  CALL errorstop(global,err_reached_default,__line__)
831  END IF ! gasModel
832 
833  mfmixt(indmf*ifl) = flx(1)
834 
835  ppatch%cp(ifl) = icpref*(pl - pref)
836  ppatch%cmass(ifl) = icmassref*flx(1)/nm
837  ppatch%cmom(xcoord,ifl) = icpref*0.5_rfreal*(ul+ur)*flx(1)/nm
838  ppatch%cmom(ycoord,ifl) = icpref*0.5_rfreal*(vl+vr)*flx(1)/nm
839  ppatch%cmom(zcoord,ifl) = icpref*0.5_rfreal*(wl+wr)*flx(1)/nm
840 
841  rhs(cv_mixt_dens,c1) = rhs(cv_mixt_dens,c1) + flx(1)
842  rhs(cv_mixt_xmom,c1) = rhs(cv_mixt_xmom,c1) + flx(2)
843  rhs(cv_mixt_ymom,c1) = rhs(cv_mixt_ymom,c1) + flx(3)
844  rhs(cv_mixt_zmom,c1) = rhs(cv_mixt_zmom,c1) + flx(4)
845  rhs(cv_mixt_ener,c1) = rhs(cv_mixt_ener,c1) + flx(5)
846 
847  sd(sd_xmom,c1*indsd) = sd(sd_xmom,c1*indsd) + ul*flx(1)
848  sd(sd_ymom,c1*indsd) = sd(sd_ymom,c1*indsd) + vl*flx(1)
849  sd(sd_zmom,c1*indsd) = sd(sd_zmom,c1*indsd) + wl*flx(1)
850 
851  IF ( pregion%irkStep == 1 ) THEN
852  global%massIn = global%massIn - min(flx(1),0.0_rfreal)
853  global%massOut = global%massOut + max(flx(1),0.0_rfreal)
854  END IF ! pRegion
855  END DO ! ifl
856 
857 ! ==============================================================================
858 ! Boundaries for which fluxes must not or need not be computed
859 ! ==============================================================================
860 
861  CASE ( bc_periodic, &
862  bc_symmetry, &
863  bc_virtual )
864 
865 ! ==============================================================================
866 ! Default
867 ! ==============================================================================
868 
869  CASE default
870  CALL errorstop(global,err_reached_default,__line__)
871  END SELECT ! pPatch%bcType
872 
873 ! ******************************************************************************
874 ! End
875 ! ******************************************************************************
876 
877  CALL deregisterfunction(global)
878 
879 END SUBROUTINE rflu_centralfirstpatch
880 
881 ! ******************************************************************************
882 !
883 ! RCS Revision history:
884 !
885 ! $Log: RFLU_CentralFirstPatch.F90,v $
886 ! Revision 1.33 2008/12/06 08:44:29 mtcampbe
887 ! Updated license.
888 !
889 ! Revision 1.32 2008/11/19 22:17:40 mtcampbe
890 ! Added Illinois Open Source License/Copyright
891 !
892 ! Revision 1.31 2006/10/20 21:31:38 mparmar
893 ! Added computation of mass and moment coeffs
894 !
895 ! Revision 1.30 2006/08/19 15:39:50 mparmar
896 ! Renamed patch variables
897 !
898 ! Revision 1.29 2006/04/07 15:19:22 haselbac
899 ! Removed tabs
900 !
901 ! Revision 1.28 2006/03/25 22:00:43 haselbac
902 ! Added CASEs for sype patches
903 !
904 ! Revision 1.27 2005/11/14 17:00:29 haselbac
905 ! Added support for pseudo-gas model
906 !
907 ! Revision 1.26 2005/11/10 02:31:05 haselbac
908 ! Added support for mixture of tcperf gases
909 !
910 ! Revision 1.25 2005/10/31 21:09:37 haselbac
911 ! Changed specModel and SPEC_MODEL_NONE
912 !
913 ! Revision 1.24 2005/10/05 14:17:38 haselbac
914 ! Adapted to changes in no-slip wall bc defs
915 !
916 ! Revision 1.23 2005/05/16 20:44:09 haselbac
917 ! Converted to pRegion and pPatch, cosmetics
918 !
919 ! Revision 1.22 2005/04/27 02:12:24 haselbac
920 ! Added treatment for velocity-temperature inlet
921 !
922 ! Revision 1.21 2005/04/20 14:43:12 haselbac
923 ! Removed CHECK_UNIFLOW code section
924 !
925 ! Revision 1.20 2005/03/31 17:05:06 haselbac
926 ! Changed computation of sd
927 !
928 ! Revision 1.19 2005/03/09 15:08:11 haselbac
929 ! Added virtual boundary
930 !
931 ! Revision 1.18 2004/12/27 23:31:30 haselbac
932 ! Changed setting of bc farf rind state (not completed)
933 !
934 ! Revision 1.17 2004/10/19 19:29:07 haselbac
935 ! Modified fluxes for injecting boundaries, clean-up
936 !
937 ! Revision 1.16 2004/07/30 22:47:36 jferry
938 ! Implemented Equilibrium Eulerian method for Rocflu
939 !
940 ! Revision 1.15 2004/06/16 20:01:05 haselbac
941 ! Added setting of cp, cosmetics
942 !
943 ! Revision 1.14 2004/04/14 02:09:07 haselbac
944 ! Added proper setting of rind state for slip walls
945 !
946 ! Revision 1.13 2004/02/13 03:00:37 haselbac
947 ! Fixed comment
948 !
949 ! Revision 1.12 2004/01/31 03:58:36 haselbac
950 ! Improved printing of reverse flow messages
951 !
952 ! Revision 1.11 2004/01/29 22:59:16 haselbac
953 ! Removed hardcode, improved mfMixt use, adapted bcondInflowPerf call
954 !
955 ! Revision 1.10 2004/01/22 16:04:33 haselbac
956 ! Changed declaration to eliminate warning on ALC
957 !
958 ! Revision 1.9 2003/12/04 03:29:58 haselbac
959 ! Changed logic for printing reverse flow information, clean-up
960 !
961 ! Revision 1.8 2003/11/25 21:04:37 haselbac
962 ! Added computation of mass and volume fluxes on patches
963 !
964 ! Revision 1.7 2003/09/04 20:19:37 haselbac
965 ! Removed temporary fix for Rocburn problem in GENx
966 !
967 ! Revision 1.6 2003/08/23 21:44:21 haselbac
968 ! Removed restriction to checkLevel for inflow-outflow checks
969 !
970 ! Revision 1.5 2003/08/22 20:31:56 haselbac
971 ! Added temporary fix for ignition problems
972 !
973 ! Revision 1.4 2003/07/23 22:14:43 haselbac
974 ! Fixed cut-and-paste bug from last check-in
975 !
976 ! Revision 1.3 2003/07/23 15:47:15 haselbac
977 ! Enclosed WARNINGS within ifs, otherwise too verbose
978 !
979 ! Revision 1.2 2003/07/22 02:06:32 haselbac
980 ! Cosmetics and inflow-outflow warnings
981 !
982 ! Revision 1.1 2003/06/04 22:49:27 haselbac
983 ! Renamed from RFLU_RoeCentralFirstPatch
984 !
985 ! Revision 1.12 2003/01/28 14:47:47 haselbac
986 ! Use parameters in fn
987 !
988 ! Revision 1.11 2002/12/19 23:00:50 haselbac
989 ! Rewrote injection fluxes to use minj directly
990 !
991 ! Revision 1.10 2002/11/27 20:26:51 haselbac
992 ! Cosmetic change only (use of vals pointer)
993 !
994 ! Revision 1.9 2002/11/26 15:18:11 haselbac
995 ! Cosmetic changes only
996 !
997 ! Revision 1.8 2002/11/19 23:45:30 haselbac
998 ! Corrected flux on slip wall with grid motion
999 !
1000 ! Revision 1.7 2002/11/08 21:33:45 haselbac
1001 ! Removed grid speed from slip-wall bc
1002 !
1003 ! Revision 1.6 2002/10/05 19:34:03 haselbac
1004 ! GENX integration: changed injection wall, fixed bug for uniform flow check
1005 !
1006 ! Revision 1.5 2002/09/27 00:57:10 jblazek
1007 ! Changed makefiles - no makelinks needed.
1008 !
1009 ! Revision 1.4 2002/09/09 15:51:56 haselbac
1010 ! global and mixtInput now under region, added grid speeds, fixed pointer bug for vals
1011 !
1012 ! Revision 1.3 2002/06/22 16:58:07 haselbac
1013 ! Added USE ModInterface, modified argument lists for inflow and injection
1014 !
1015 ! Revision 1.2 2002/06/10 21:34:03 haselbac
1016 ! Added boundary fluxes, calls to bcond*Perf, changed flag to CHECK_UNIFLOW
1017 !
1018 ! Revision 1.1 2002/05/04 17:01:59 haselbac
1019 ! Initial revision
1020 !
1021 ! ******************************************************************************
1022 
1023 
1024 
1025 
1026 
1027 
1028 
subroutine, public rflu_setrindstateinjectperf(cpGas, mmGas, nx, ny, nz, mInj, tInj, pl, fs, rl, ul, vl, wl, Hl)
real(rfreal) function mixtperf_p_deogvm2(D, Eo, G, Vm2)
Definition: MixtPerf_P.F90:39
real(rfreal) function mixtperf_r_m(M)
Definition: MixtPerf_R.F90:54
subroutine bcondfarfieldperf(machInf, alphaInf, betaInf, pInf, tInf, sxn, syn, szn, cpgas, mol, rho, rhou, rhov, rhow, rhoe, press, rhob, rhoub, rhovb, rhowb, rhoeb, pb)
NT rhs
subroutine, public rflu_setrindstateslipwallperf(cpGas, mmGas, nx, ny, nz, rl, rul, rvl, rwl, fs, pl)
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
real(rfreal) function mixtperf_d_prt(P, R, T)
Definition: MixtPerf_D.F90:71
real(rfreal) function, public rflu_descalegridspeed(pRegion, fs)
subroutine bcondoutflowperf(bcOpt, pout, sxn, syn, szn, cpgas, mol, rho, rhou, rhov, rhow, rhoe, press, rhob, rhoub, rhovb, rhowb, rhoeb)
subroutine, public rflu_setrindstatefarfieldperf(global, cpGas, mmGas, nx, ny, nz, machInf, pInf, tInf, alphaInf, betaInf, corrFlag, liftCoef, xc, yc, zc, rl, rul, rvl, rwl, rel, rr, rur, rvr, rwr, rer, pr)
subroutine bcondinflowperf(bcOptType, bcOptFixed, ptot, ttot, betah, betav, mach, sxn, syn, szn, cpgas, mm, rl, rul, rvl, rwl, rr, rur, rvr, rwr, rer, pr)
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 rflu_decideprint(global)
real(rfreal) function mixtperf_eo_dgpuvw(D, G, P, U, V, W)
Definition: MixtPerf_E.F90:40
subroutine rflu_centralfirstpatch(pRegion, pPatch)
subroutine errorstop(global, errorCode, errorLine, addMessage)
Definition: ModError.F90:483
subroutine deregisterfunction(global)
Definition: ModError.F90:469
real(rfreal) function mixtperf_g_cpr(Cp, R)
Definition: MixtPerf_G.F90:39
real(rfreal) function mixtperf_p_drt(D, R, T)
Definition: MixtPerf_P.F90:54
unsigned char g() const
Definition: Color.h:69