59 CHARACTER(CHRLEN) :: &
60 RCSIdentString =
'$RCSfile: RFLU_ModAUSMFlux.F90,v $ $Revision: 1.11 $'
100 TYPE(t_region
),
POINTER :: pregion
112 global => pregion%global
115 'RFLU_ModAUSMFlux.F90')
121 SELECT CASE ( pregion%mixtInput%gasModel )
127 CASE ( gas_model_tcperf )
128 SELECT CASE ( pregion%mixtInput%spaceOrder )
129 CASE ( discr_order_1 )
131 CASE ( discr_order_2 )
134 CALL
errorstop(global,err_reached_default,__line__)
141 CASE ( gas_model_mixt_tcperf )
142 SELECT CASE ( pregion%mixtInput%spaceOrder )
143 CASE ( discr_order_1 )
145 CASE ( discr_order_2 )
148 CALL
errorstop(global,err_reached_default,__line__)
155 CASE ( gas_model_mixt_pseudo )
156 SELECT CASE ( pregion%mixtInput%spaceOrder )
161 CASE ( discr_order_2 )
164 CALL
errorstop(global,err_reached_default,__line__)
172 CALL
errorstop(global,err_reached_default,__line__)
230 SUBROUTINE rflu_ausm_fluxfunction(nx,ny,nz,nm,fs,rl,ul,vl,wl,pl,Hl,al,rr,ur, &
231 vr,wr,pr,hr,ar,flx,vf)
243 REAL(RFREAL),
INTENT(IN) :: al,ar,fs,hl,hr,nm,nx,ny,nz,pl,pr,rl,rr,ul,ur,vl, &
245 REAL(RFREAL),
INTENT(OUT) :: flx(5),vf(3)
251 REAL(RFREAL) :: af,mf,mfa,mfm,mfp,ml,mla,mlp,mr,mra,mrm,pf,ql,qr,vml,vmr, &
258 ql = ul*nx + vl*ny + wl*nz - fs
259 qr = ur*nx + vr*ny + wr*nz - fs
261 af = 0.5_rfreal*(al+ar)
269 IF ( mla <= 1.0_rfreal )
THEN
270 mlp = 0.25_rfreal*(ml+1.0_rfreal)*(ml+1.0_rfreal) &
271 + 0.125_rfreal*(ml*ml-1.0_rfreal)*(ml*ml-1.0_rfreal)
272 wtl = 0.25_rfreal*(ml+1.0_rfreal)*(ml+1.0_rfreal)*(2.0_rfreal-ml) &
273 + 0.1875_rfreal*ml*(ml*ml-1.0_rfreal)*(ml*ml-1.0_rfreal)
275 mlp = 0.5_rfreal*(ml+mla)
276 wtl = 0.5_rfreal*(1.0_rfreal+ml/mla)
279 IF ( mra <= 1.0_rfreal )
THEN
280 mrm = -0.25_rfreal*(mr-1.0_rfreal)*(mr-1.0_rfreal) &
281 -0.125_rfreal*(mr*mr-1.0_rfreal)*(mr*mr-1.0_rfreal)
282 wtr = 0.25_rfreal*(mr-1.0_rfreal)*(mr-1.0_rfreal)*(2.0_rfreal+mr) &
283 - 0.1875_rfreal*mr*(mr*mr-1.0_rfreal)*(mr*mr-1.0_rfreal)
285 mrm = 0.5_rfreal*(mr-mra)
286 wtr = 0.5_rfreal*(1.0_rfreal-mr/mra)
291 mfp = 0.5_rfreal*(mf+mfa)
292 mfm = 0.5_rfreal*(mf-mfa)
300 vf(1) = mfp*ul + mfm*ur
301 vf(2) = mfp*vl + mfm*vr
302 vf(3) = mfp*wl + mfm*wr
304 flx(1) = (af*(mfp*rl + mfm*rr ) )*nm
305 flx(2) = (af*(mfp*rl*ul + mfm*rr*ur) + pf*nx)*nm
306 flx(3) = (af*(mfp*rl*vl + mfm*rr*vr) + pf*ny)*nm
307 flx(4) = (af*(mfp*rl*wl + mfm*rr*wr) + pf*nz)*nm
308 flx(5) = (af*(mfp*rl*hl + mfm*rr*hr) + pf*fs)*nm
357 TYPE(t_region
),
POINTER :: pregion
363 INTEGER :: c1,c2,ifg,indcp,indgs,indmf,indmol,indsd,ipatch
364 REAL(RFREAL) :: al,ar,cpl,cpr,fs,hl,hr,irl,irr,nm,nx,ny,nz,pl,pr,rl,rr, &
365 tl,tr,ul,ur,vl,vr,wl,wr
366 REAL(RFREAL) :: flx(5),vf(3)
367 REAL(RFREAL),
DIMENSION(:),
POINTER :: pmf
368 REAL(RFREAL),
DIMENSION(:,:),
POINTER :: pcv,pdv,pgv,prhs,psd
370 TYPE(t_grid),
POINTER :: pgrid
371 TYPE(t_patch),
POINTER :: ppatch
377 global => pregion%global
380 'RFLU_ModAUSMFlux.F90')
383 CALL fprofiler_begins(
"RFLU::AUSM_ComputeFlux1")
390 pgrid => pregion%grid
392 indgs = pregion%grid%indGs
394 indcp = pregion%mixtInput%indCp
395 indmf = pregion%mixtInput%indMfMixt
396 indmol = pregion%mixtInput%indMol
397 indsd = pregion%mixtInput%indSd
399 pcv => pregion%mixt%cv
400 pdv => pregion%mixt%dv
401 pgv => pregion%mixt%gv
403 pmf => pregion%mixt%mfMixt
404 prhs => pregion%mixt%rhs
405 psd => pregion%mixt%sd
411 DO ifg = 1,pgrid%nFaces
412 c1 = pgrid%f2c(1,ifg)
413 c2 = pgrid%f2c(2,ifg)
419 nx = pgrid%fn(xcoord,ifg)
420 ny = pgrid%fn(ycoord,ifg)
421 nz = pgrid%fn(zcoord,ifg)
422 nm = pgrid%fn(xyzmag,ifg)
424 fs = pgrid%gs(indgs*ifg)
434 cpl = pgv(gv_mixt_cp,indcp*c1)
436 rl = pcv(cv_mixt_dens,c1)
439 ul = pcv(cv_mixt_xmom,c1)*irl
440 vl = pcv(cv_mixt_ymom,c1)*irl
441 wl = pcv(cv_mixt_zmom,c1)*irl
443 pl = pdv(dv_mixt_pres,c1)
444 tl = pdv(dv_mixt_temp,c1)
445 al = pdv(dv_mixt_soun,c1)
453 cpr = pgv(gv_mixt_cp,indcp*c2)
455 rr = pcv(cv_mixt_dens,c2)
458 ur = pcv(cv_mixt_xmom,c2)*irr
459 vr = pcv(cv_mixt_ymom,c2)*irr
460 wr = pcv(cv_mixt_zmom,c2)*irr
462 pr = pdv(dv_mixt_pres,c2)
463 tr = pdv(dv_mixt_temp,c2)
464 ar = pdv(dv_mixt_soun,c2)
472 CALL
rflu_ausm_fluxfunction(nx,ny,nz,nm,fs,rl,ul,vl,wl,pl,hl,al,rr,ur,vr, &
479 pmf(indmf*ifg) = flx(1)
485 prhs(cv_mixt_dens,c1) = prhs(cv_mixt_dens,c1) + flx(1)
486 prhs(cv_mixt_xmom,c1) = prhs(cv_mixt_xmom,c1) + flx(2)
487 prhs(cv_mixt_ymom,c1) = prhs(cv_mixt_ymom,c1) + flx(3)
488 prhs(cv_mixt_zmom,c1) = prhs(cv_mixt_zmom,c1) + flx(4)
489 prhs(cv_mixt_ener,c1) = prhs(cv_mixt_ener,c1) + flx(5)
491 prhs(cv_mixt_dens,c2) = prhs(cv_mixt_dens,c2) - flx(1)
492 prhs(cv_mixt_xmom,c2) = prhs(cv_mixt_xmom,c2) - flx(2)
493 prhs(cv_mixt_ymom,c2) = prhs(cv_mixt_ymom,c2) - flx(3)
494 prhs(cv_mixt_zmom,c2) = prhs(cv_mixt_zmom,c2) - flx(4)
495 prhs(cv_mixt_ener,c2) = prhs(cv_mixt_ener,c2) - flx(5)
501 psd(sd_xmom,c1*indsd) = psd(sd_xmom,c1*indsd) + vf(1)*flx(1)
502 psd(sd_ymom,c1*indsd) = psd(sd_ymom,c1*indsd) + vf(2)*flx(1)
503 psd(sd_zmom,c1*indsd) = psd(sd_zmom,c1*indsd) + vf(3)*flx(1)
505 psd(sd_xmom,c2*indsd) = psd(sd_xmom,c2*indsd) - vf(1)*flx(1)
506 psd(sd_ymom,c2*indsd) = psd(sd_ymom,c2*indsd) - vf(2)*flx(1)
507 psd(sd_zmom,c2*indsd) = psd(sd_zmom,c2*indsd) - vf(3)*flx(1)
514 DO ipatch = 1,pregion%grid%nPatches
515 ppatch => pregion%patches(ipatch)
525 CALL fprofiler_ends(
"RFLU::AUSM_ComputeFlux1")
580 TYPE(t_region
),
POINTER :: pregion
586 INTEGER :: c1,c2,ifg,indcp,indgs,indmf,indmol,indsd,ipatch
587 REAL(RFREAL) :: al,ar,cpl,cpr,
dx,
dy,
dz,fs,gcl,gcr,gl,gr,hl,hr,irl,irr,mml, &
588 mmr,nm,nx,ny,nz,pl,pr,rl,rr,tl,tr,ul,ur,vl,vr,wl,wr,xc,yc,zc
589 REAL(RFREAL) :: flx(5),vf(3)
590 REAL(RFREAL),
DIMENSION(:),
POINTER :: pmf
591 REAL(RFREAL),
DIMENSION(:,:),
POINTER :: pcv,pdv,pgv,prhs,psd
592 REAL(RFREAL),
DIMENSION(:,:,:),
POINTER :: pgc
594 TYPE(t_grid),
POINTER :: pgrid
595 TYPE(t_patch),
POINTER :: ppatch
599 REAL(RFREAL) :: gcg,immg,mmg,phip,yg,y1,y2
600 REAL(RFREAL),
DIMENSION(:,:),
POINTER :: pcvspec
601 REAL(RFREAL),
DIMENSION(:,:,:),
POINTER :: pgcspec
609 global => pregion%global
612 'RFLU_ModAUSMFlux.F90')
615 CALL fprofiler_begins(
"RFLU::AUSM_ComputeFlux2_MPSD")
622 pgrid => pregion%grid
626 indcp = pregion%mixtInput%indCp
627 indmf = pregion%mixtInput%indMfMixt
628 indmol = pregion%mixtInput%indMol
629 indsd = pregion%mixtInput%indSd
631 pcv => pregion%mixt%cv
632 pdv => pregion%mixt%dv
633 pgv => pregion%mixt%gv
635 pgc => pregion%mixt%gradCell
636 pmf => pregion%mixt%mfMixt
637 prhs => pregion%mixt%rhs
638 psd => pregion%mixt%sd
641 pcvspec => pregion%spec%cv
642 pgcspec => pregion%spec%gradCell
645 IF ( pregion%spec%cvState /= cv_mixt_state_cons )
THEN
646 CALL
errorstop(global,err_cv_state_invalid,__line__)
649 IF ( pregion%mixtInput%gasModel /= gas_model_mixt_pseudo )
THEN
650 CALL
errorstop(global,err_gasmodel_invalid,__line__)
653 IF ( (indcp /= 1) .OR. (indmol /= 1) )
THEN
654 CALL
errorstop(global,err_reached_default,__line__)
661 DO ifg = 1,pgrid%nFaces
662 c1 = pgrid%f2c(1,ifg)
663 c2 = pgrid%f2c(2,ifg)
669 nx = pgrid%fn(xcoord,ifg)
670 ny = pgrid%fn(ycoord,ifg)
671 nz = pgrid%fn(zcoord,ifg)
672 nm = pgrid%fn(xyzmag,ifg)
674 xc = pgrid%fc(xcoord,ifg)
675 yc = pgrid%fc(ycoord,ifg)
676 zc = pgrid%fc(zcoord,ifg)
678 fs = pgrid%gs(indgs*ifg)
688 rl = pcv(cv_mixt_dens,c1)
691 dx = xc - pgrid%cofg(xcoord,c1)
692 dy = yc - pgrid%cofg(ycoord,c1)
693 dz = zc - pgrid%cofg(zcoord,c1)
701 DO ispec = 1,pregion%specInput%nSpecies
702 pspectype => pregion%specInput%specType(ispec)
704 y1 = irl*pcvspec(ispec,c1) + pgcspec(xcoord,ispec,c1)*
dx &
705 + pgcspec(ycoord,ispec,c1)*
dy &
706 + pgcspec(zcoord,ispec,c1)*
dz
708 IF ( pspectype%discreteFlag .EQV. .true. )
THEN
709 cpl = cpl + y1*pspectype%pMaterial%spht
710 phip = phip + rl*y1/pspectype%pMaterial%dens
712 immg = immg + y1/pspectype%pMaterial%molw
713 cpl = cpl + y1*pspectype%pMaterial%spht
720 gcl = yg/(1.0_rfreal-phip)*gcg
724 ul = pcv(cv_mixt_xmom,c1)*irl
725 vl = pcv(cv_mixt_ymom,c1)*irl
726 wl = pcv(cv_mixt_zmom,c1)*irl
727 pl = pdv(dv_mixt_pres,c1)
729 rl = rl + pgc(xcoord,grc_mixt_dens,c1)*
dx &
730 + pgc(ycoord,grc_mixt_dens,c1)*
dy &
731 + pgc(zcoord,grc_mixt_dens,c1)*
dz
732 ul = ul + pgc(xcoord,grc_mixt_xvel,c1)*
dx &
733 + pgc(ycoord,grc_mixt_xvel,c1)*
dy &
734 + pgc(zcoord,grc_mixt_xvel,c1)*
dz
735 vl = vl + pgc(xcoord,grc_mixt_yvel,c1)*
dx &
736 + pgc(ycoord,grc_mixt_yvel,c1)*
dy &
737 + pgc(zcoord,grc_mixt_yvel,c1)*
dz
738 wl = wl + pgc(xcoord,grc_mixt_zvel,c1)*
dx &
739 + pgc(ycoord,grc_mixt_zvel,c1)*
dy &
740 + pgc(zcoord,grc_mixt_zvel,c1)*
dz
741 pl = pl + pgc(xcoord,grc_mixt_pres,c1)*
dx &
742 + pgc(ycoord,grc_mixt_pres,c1)*
dy &
743 + pgc(zcoord,grc_mixt_pres,c1)*
dz
753 rr = pcv(cv_mixt_dens,c2)
756 dx = xc - pgrid%cofg(xcoord,c2)
757 dy = yc - pgrid%cofg(ycoord,c2)
758 dz = zc - pgrid%cofg(zcoord,c2)
766 DO ispec = 1,pregion%specInput%nSpecies
767 pspectype => pregion%specInput%specType(ispec)
769 y2 = irr*pcvspec(ispec,c2) + pgcspec(xcoord,ispec,c2)*
dx &
770 + pgcspec(ycoord,ispec,c2)*
dy &
771 + pgcspec(zcoord,ispec,c2)*
dz
773 IF ( pspectype%discreteFlag .EQV. .true. )
THEN
774 cpr = cpr + y2*pspectype%pMaterial%spht
775 phip = phip + rr*y2/pspectype%pMaterial%dens
777 immg = immg + y2/pspectype%pMaterial%molw
778 cpr = cpr + y2*pspectype%pMaterial%spht
785 gcr = yg/(1.0_rfreal-phip)*gcg
789 ur = pcv(cv_mixt_xmom,c2)*irr
790 vr = pcv(cv_mixt_ymom,c2)*irr
791 wr = pcv(cv_mixt_zmom,c2)*irr
792 pr = pdv(dv_mixt_pres,c2)
794 rr = rr + pgc(xcoord,grc_mixt_dens,c2)*
dx &
795 + pgc(ycoord,grc_mixt_dens,c2)*
dy &
796 + pgc(zcoord,grc_mixt_dens,c2)*
dz
797 ur = ur + pgc(xcoord,grc_mixt_xvel,c2)*
dx &
798 + pgc(ycoord,grc_mixt_xvel,c2)*
dy &
799 + pgc(zcoord,grc_mixt_xvel,c2)*
dz
800 vr = vr + pgc(xcoord,grc_mixt_yvel,c2)*
dx &
801 + pgc(ycoord,grc_mixt_yvel,c2)*
dy &
802 + pgc(zcoord,grc_mixt_yvel,c2)*
dz
803 wr = wr + pgc(xcoord,grc_mixt_zvel,c2)*
dx &
804 + pgc(ycoord,grc_mixt_zvel,c2)*
dy &
805 + pgc(zcoord,grc_mixt_zvel,c2)*
dz
806 pr = pr + pgc(xcoord,grc_mixt_pres,c2)*
dx &
807 + pgc(ycoord,grc_mixt_pres,c2)*
dy &
808 + pgc(zcoord,grc_mixt_pres,c2)*
dz
821 IF ( abs(gr-gl) < 0.05_rfreal )
THEN
822 CALL
rflu_ausm_fluxfunction(nx,ny,nz,nm,fs,rl,ul,vl,wl,pl,hl,al, &
823 rr,ur,vr,wr,pr,hr,ar,flx,vf)
825 pmf(indmf*ifg) = flx(1)
827 prhs(cv_mixt_dens,c1) = prhs(cv_mixt_dens,c1) + flx(1)
828 prhs(cv_mixt_xmom,c1) = prhs(cv_mixt_xmom,c1) + flx(2)
829 prhs(cv_mixt_ymom,c1) = prhs(cv_mixt_ymom,c1) + flx(3)
830 prhs(cv_mixt_zmom,c1) = prhs(cv_mixt_zmom,c1) + flx(4)
831 prhs(cv_mixt_ener,c1) = prhs(cv_mixt_ener,c1) + flx(5)
833 prhs(cv_mixt_dens,c2) = prhs(cv_mixt_dens,c2) - flx(1)
834 prhs(cv_mixt_xmom,c2) = prhs(cv_mixt_xmom,c2) - flx(2)
835 prhs(cv_mixt_ymom,c2) = prhs(cv_mixt_ymom,c2) - flx(3)
836 prhs(cv_mixt_zmom,c2) = prhs(cv_mixt_zmom,c2) - flx(4)
837 prhs(cv_mixt_ener,c2) = prhs(cv_mixt_ener,c2) - flx(5)
839 psd(sd_xmom,c1*indsd) = psd(sd_xmom,c1*indsd) + vf(1)*flx(1)
840 psd(sd_ymom,c1*indsd) = psd(sd_ymom,c1*indsd) + vf(2)*flx(1)
841 psd(sd_zmom,c1*indsd) = psd(sd_zmom,c1*indsd) + vf(3)*flx(1)
843 psd(sd_xmom,c2*indsd) = psd(sd_xmom,c2*indsd) - vf(1)*flx(1)
844 psd(sd_ymom,c2*indsd) = psd(sd_ymom,c2*indsd) - vf(2)*flx(1)
845 psd(sd_zmom,c2*indsd) = psd(sd_zmom,c2*indsd) - vf(3)*flx(1)
847 CALL
rflu_ausm_fluxfunction(nx,ny,nz,nm,fs,rl,ul,vl,wl,pl,hl,al, &
848 rr,ur,vr,wr,pr,hr,ar,flx,vf)
850 pmf(indmf*ifg) = 0.5_rfreal*flx(1)
852 prhs(cv_mixt_dens,c1) = prhs(cv_mixt_dens,c1) + flx(1)
853 prhs(cv_mixt_xmom,c1) = prhs(cv_mixt_xmom,c1) + flx(2)
854 prhs(cv_mixt_ymom,c1) = prhs(cv_mixt_ymom,c1) + flx(3)
855 prhs(cv_mixt_zmom,c1) = prhs(cv_mixt_zmom,c1) + flx(4)
856 prhs(cv_mixt_ener,c1) = prhs(cv_mixt_ener,c1) + flx(5)
858 psd(sd_xmom,c1*indsd) = psd(sd_xmom,c1*indsd) + vf(1)*flx(1)
859 psd(sd_ymom,c1*indsd) = psd(sd_ymom,c1*indsd) + vf(2)*flx(1)
860 psd(sd_zmom,c1*indsd) = psd(sd_zmom,c1*indsd) + vf(3)*flx(1)
862 CALL
rflu_ausm_fluxfunction(nx,ny,nz,nm,fs,rl,ul,vl,wl,pl,hl,al, &
863 rr,ur,vr,wr,pr,hr,ar,flx,vf)
865 pmf(indmf*ifg) = pmf(indmf*ifg) + 0.5_rfreal*flx(1)
867 prhs(cv_mixt_dens,c2) = prhs(cv_mixt_dens,c2) - flx(1)
868 prhs(cv_mixt_xmom,c2) = prhs(cv_mixt_xmom,c2) - flx(2)
869 prhs(cv_mixt_ymom,c2) = prhs(cv_mixt_ymom,c2) - flx(3)
870 prhs(cv_mixt_zmom,c2) = prhs(cv_mixt_zmom,c2) - flx(4)
871 prhs(cv_mixt_ener,c2) = prhs(cv_mixt_ener,c2) - flx(5)
873 psd(sd_xmom,c2*indsd) = psd(sd_xmom,c2*indsd) - vf(1)*flx(1)
874 psd(sd_ymom,c2*indsd) = psd(sd_ymom,c2*indsd) - vf(2)*flx(1)
875 psd(sd_zmom,c2*indsd) = psd(sd_zmom,c2*indsd) - vf(3)*flx(1)
883 DO ipatch = 1,pregion%grid%nPatches
884 ppatch => pregion%patches(ipatch)
886 SELECT CASE ( ppatch%spaceOrder )
892 CALL
errorstop(global,err_reached_default,__line__)
901 CALL fprofiler_ends(
"RFLU::AUSM_ComputeFlux2_MPSD")
956 TYPE(t_region
),
POINTER :: pregion
962 INTEGER :: c1,c2,ifg,indcp,indgs,indmf,indmol,indsd,ipatch
963 REAL(RFREAL) :: al,ar,cpl,cpr,
dx,
dy,
dz,fs,gcl,gcr,gl,gr,hl,hr,irl,irr, &
964 nm,nx,ny,nz,pl,pr,rl,rr,tl,tr,ul,ur,vl,vr,wl,wr,xc,yc,zc
965 REAL(RFREAL) :: flx(5),vf(3)
966 REAL(RFREAL),
DIMENSION(:),
POINTER :: pmf
967 REAL(RFREAL),
DIMENSION(:,:),
POINTER :: pcv,pdv,pgv,prhs,psd
968 REAL(RFREAL),
DIMENSION(:,:,:),
POINTER :: pgc
970 TYPE(t_grid),
POINTER :: pgrid
971 TYPE(t_patch),
POINTER :: ppatch
975 REAL(RFREAL) :: mml,mmr,y1,y2
976 REAL(RFREAL),
DIMENSION(:,:),
POINTER :: pcvspec
977 REAL(RFREAL),
DIMENSION(:,:,:),
POINTER :: pgcspec
985 global => pregion%global
988 'RFLU_ModAUSMFlux.F90')
991 CALL fprofiler_begins(
"RFLU::AUSM_ComputeFlux2_MTCP")
998 pgrid => pregion%grid
1002 indcp = pregion%mixtInput%indCp
1003 indmf = pregion%mixtInput%indMfMixt
1004 indmol = pregion%mixtInput%indMol
1005 indsd = pregion%mixtInput%indSd
1007 pcv => pregion%mixt%cv
1008 pdv => pregion%mixt%dv
1009 pgv => pregion%mixt%gv
1011 pgc => pregion%mixt%gradCell
1012 pmf => pregion%mixt%mfMixt
1013 prhs => pregion%mixt%rhs
1014 psd => pregion%mixt%sd
1017 pcvspec => pregion%spec%cv
1018 pgcspec => pregion%spec%gradCell
1021 IF ( pregion%spec%cvState /= cv_mixt_state_cons )
THEN
1022 CALL
errorstop(global,err_cv_state_invalid,__line__)
1025 IF ( pregion%mixtInput%gasModel /= gas_model_mixt_tcperf )
THEN
1026 CALL
errorstop(global,err_gasmodel_invalid,__line__)
1029 IF ( (indcp /= 1) .OR. (indmol /= 1) )
THEN
1030 CALL
errorstop(global,err_reached_default,__line__)
1037 DO ifg = 1,pgrid%nFaces
1038 c1 = pgrid%f2c(1,ifg)
1039 c2 = pgrid%f2c(2,ifg)
1045 nx = pgrid%fn(xcoord,ifg)
1046 ny = pgrid%fn(ycoord,ifg)
1047 nz = pgrid%fn(zcoord,ifg)
1048 nm = pgrid%fn(xyzmag,ifg)
1050 xc = pgrid%fc(xcoord,ifg)
1051 yc = pgrid%fc(ycoord,ifg)
1052 zc = pgrid%fc(zcoord,ifg)
1054 fs = pgrid%gs(indgs*ifg)
1064 rl = pcv(cv_mixt_dens,c1)
1067 dx = xc - pgrid%cofg(xcoord,c1)
1068 dy = yc - pgrid%cofg(ycoord,c1)
1069 dz = zc - pgrid%cofg(zcoord,c1)
1075 DO ispec = 1,pregion%specInput%nSpecies
1076 pspectype => pregion%specInput%specType(ispec)
1078 y1 = irl*pcvspec(ispec,c1) + pgcspec(xcoord,ispec,c1)*
dx &
1079 + pgcspec(ycoord,ispec,c1)*
dy &
1080 + pgcspec(zcoord,ispec,c1)*
dz
1082 mml = mml + y1/pspectype%pMaterial%molw
1083 cpl = cpl + y1*pspectype%pMaterial%spht
1086 mml = 1.0_rfreal/mml
1091 ul = pcv(cv_mixt_xmom,c1)*irl
1092 vl = pcv(cv_mixt_ymom,c1)*irl
1093 wl = pcv(cv_mixt_zmom,c1)*irl
1094 pl = pdv(dv_mixt_pres,c1)
1096 rl = rl + pgc(xcoord,grc_mixt_dens,c1)*
dx &
1097 + pgc(ycoord,grc_mixt_dens,c1)*
dy &
1098 + pgc(zcoord,grc_mixt_dens,c1)*
dz
1099 ul = ul + pgc(xcoord,grc_mixt_xvel,c1)*
dx &
1100 + pgc(ycoord,grc_mixt_xvel,c1)*
dy &
1101 + pgc(zcoord,grc_mixt_xvel,c1)*
dz
1102 vl = vl + pgc(xcoord,grc_mixt_yvel,c1)*
dx &
1103 + pgc(ycoord,grc_mixt_yvel,c1)*
dy &
1104 + pgc(zcoord,grc_mixt_yvel,c1)*
dz
1105 wl = wl + pgc(xcoord,grc_mixt_zvel,c1)*
dx &
1106 + pgc(ycoord,grc_mixt_zvel,c1)*
dy &
1107 + pgc(zcoord,grc_mixt_zvel,c1)*
dz
1108 pl = pl + pgc(xcoord,grc_mixt_pres,c1)*
dx &
1109 + pgc(ycoord,grc_mixt_pres,c1)*
dy &
1110 + pgc(zcoord,grc_mixt_pres,c1)*
dz
1120 rr = pcv(cv_mixt_dens,c2)
1123 dx = xc - pgrid%cofg(xcoord,c2)
1124 dy = yc - pgrid%cofg(ycoord,c2)
1125 dz = zc - pgrid%cofg(zcoord,c2)
1132 DO ispec = 1,pregion%specInput%nSpecies
1133 pspectype => pregion%specInput%specType(ispec)
1135 y2 = irr*pcvspec(ispec,c2) + pgcspec(xcoord,ispec,c2)*
dx &
1136 + pgcspec(ycoord,ispec,c2)*
dy &
1137 + pgcspec(zcoord,ispec,c2)*
dz
1140 mmr = mmr + y2/pspectype%pMaterial%molw
1141 cpr = cpr + y2*pspectype%pMaterial%spht
1144 mmr = 1.0_rfreal/mmr
1149 ur = pcv(cv_mixt_xmom,c2)*irr
1150 vr = pcv(cv_mixt_ymom,c2)*irr
1151 wr = pcv(cv_mixt_zmom,c2)*irr
1152 pr = pdv(dv_mixt_pres,c2)
1154 rr = rr + pgc(xcoord,grc_mixt_dens,c2)*
dx &
1155 + pgc(ycoord,grc_mixt_dens,c2)*
dy &
1156 + pgc(zcoord,grc_mixt_dens,c2)*
dz
1157 ur = ur + pgc(xcoord,grc_mixt_xvel,c2)*
dx &
1158 + pgc(ycoord,grc_mixt_xvel,c2)*
dy &
1159 + pgc(zcoord,grc_mixt_xvel,c2)*
dz
1160 vr = vr + pgc(xcoord,grc_mixt_yvel,c2)*
dx &
1161 + pgc(ycoord,grc_mixt_yvel,c2)*
dy &
1162 + pgc(zcoord,grc_mixt_yvel,c2)*
dz
1163 wr = wr + pgc(xcoord,grc_mixt_zvel,c2)*
dx &
1164 + pgc(ycoord,grc_mixt_zvel,c2)*
dy &
1165 + pgc(zcoord,grc_mixt_zvel,c2)*
dz
1166 pr = pr + pgc(xcoord,grc_mixt_pres,c2)*
dx &
1167 + pgc(ycoord,grc_mixt_pres,c2)*
dy &
1168 + pgc(zcoord,grc_mixt_pres,c2)*
dz
1178 CALL
rflu_ausm_fluxfunction(nx,ny,nz,nm,fs,rl,ul,vl,wl,pl,hl,al,rr,ur,vr, &
1185 pmf(indmf*ifg) = flx(1)
1191 prhs(cv_mixt_dens,c1) = prhs(cv_mixt_dens,c1) + flx(1)
1192 prhs(cv_mixt_xmom,c1) = prhs(cv_mixt_xmom,c1) + flx(2)
1193 prhs(cv_mixt_ymom,c1) = prhs(cv_mixt_ymom,c1) + flx(3)
1194 prhs(cv_mixt_zmom,c1) = prhs(cv_mixt_zmom,c1) + flx(4)
1195 prhs(cv_mixt_ener,c1) = prhs(cv_mixt_ener,c1) + flx(5)
1197 prhs(cv_mixt_dens,c2) = prhs(cv_mixt_dens,c2) - flx(1)
1198 prhs(cv_mixt_xmom,c2) = prhs(cv_mixt_xmom,c2) - flx(2)
1199 prhs(cv_mixt_ymom,c2) = prhs(cv_mixt_ymom,c2) - flx(3)
1200 prhs(cv_mixt_zmom,c2) = prhs(cv_mixt_zmom,c2) - flx(4)
1201 prhs(cv_mixt_ener,c2) = prhs(cv_mixt_ener,c2) - flx(5)
1207 psd(sd_xmom,c1*indsd) = psd(sd_xmom,c1*indsd) + vf(1)*flx(1)
1208 psd(sd_ymom,c1*indsd) = psd(sd_ymom,c1*indsd) + vf(2)*flx(1)
1209 psd(sd_zmom,c1*indsd) = psd(sd_zmom,c1*indsd) + vf(3)*flx(1)
1211 psd(sd_xmom,c2*indsd) = psd(sd_xmom,c2*indsd) - vf(1)*flx(1)
1212 psd(sd_ymom,c2*indsd) = psd(sd_ymom,c2*indsd) - vf(2)*flx(1)
1213 psd(sd_zmom,c2*indsd) = psd(sd_zmom,c2*indsd) - vf(3)*flx(1)
1220 DO ipatch = 1,pregion%grid%nPatches
1221 ppatch => pregion%patches(ipatch)
1223 SELECT CASE ( ppatch%spaceOrder )
1229 CALL
errorstop(global,err_reached_default,__line__)
1238 CALL fprofiler_ends(
"RFLU::AUSM_ComputeFlux2_MTCP")
1289 TYPE(t_region
),
POINTER :: pregion
1295 INTEGER :: c1,c2,ifg,indgs,indmf,indsd,ipatch
1296 REAL(RFREAL) :: al,ar,cp,
dx,
dy,
dz,fs,gc,
g,hl,hr,irl,irr,nm,nx,ny,nz,pl,pr, &
1297 rl,rr,tl,tr,ul,ur,vl,vr,wl,wr,xc,yc,zc
1298 REAL(RFREAL) :: flx(5),vf(3)
1299 REAL(RFREAL),
DIMENSION(:),
POINTER :: pmf
1300 REAL(RFREAL),
DIMENSION(:,:),
POINTER :: pcv,pdv,prhs,psd
1301 REAL(RFREAL),
DIMENSION(:,:,:),
POINTER :: pgc
1303 TYPE(t_grid),
POINTER :: pgrid
1304 TYPE(t_patch),
POINTER :: ppatch
1310 global => pregion%global
1313 'RFLU_ModAUSMFlux.F90')
1316 CALL fprofiler_begins(
"RFLU::AUSM_ComputeFlux2_TCP")
1323 pgrid => pregion%grid
1327 indmf = pregion%mixtInput%indMfMixt
1328 indsd = pregion%mixtInput%indSd
1330 pcv => pregion%mixt%cv
1331 pdv => pregion%mixt%dv
1333 pgc => pregion%mixt%gradCell
1334 pmf => pregion%mixt%mfMixt
1335 prhs => pregion%mixt%rhs
1336 psd => pregion%mixt%sd
1338 IF ( pregion%mixtInput%gasModel /= gas_model_tcperf )
THEN
1339 CALL
errorstop(global,err_gasmodel_invalid,__line__)
1350 DO ifg = 1,pgrid%nFaces
1351 c1 = pgrid%f2c(1,ifg)
1352 c2 = pgrid%f2c(2,ifg)
1358 nx = pgrid%fn(xcoord,ifg)
1359 ny = pgrid%fn(ycoord,ifg)
1360 nz = pgrid%fn(zcoord,ifg)
1361 nm = pgrid%fn(xyzmag,ifg)
1363 xc = pgrid%fc(xcoord,ifg)
1364 yc = pgrid%fc(ycoord,ifg)
1365 zc = pgrid%fc(zcoord,ifg)
1367 fs = pgrid%gs(indgs*ifg)
1377 rl = pcv(cv_mixt_dens,c1)
1380 ul = pcv(cv_mixt_xmom,c1)*irl
1381 vl = pcv(cv_mixt_ymom,c1)*irl
1382 wl = pcv(cv_mixt_zmom,c1)*irl
1383 pl = pdv(dv_mixt_pres,c1)
1385 dx = xc - pgrid%cofg(xcoord,c1)
1386 dy = yc - pgrid%cofg(ycoord,c1)
1387 dz = zc - pgrid%cofg(zcoord,c1)
1389 rl = rl + pgc(xcoord,grc_mixt_dens,c1)*
dx &
1390 + pgc(ycoord,grc_mixt_dens,c1)*
dy &
1391 + pgc(zcoord,grc_mixt_dens,c1)*
dz
1392 ul = ul + pgc(xcoord,grc_mixt_xvel,c1)*
dx &
1393 + pgc(ycoord,grc_mixt_xvel,c1)*
dy &
1394 + pgc(zcoord,grc_mixt_xvel,c1)*
dz
1395 vl = vl + pgc(xcoord,grc_mixt_yvel,c1)*
dx &
1396 + pgc(ycoord,grc_mixt_yvel,c1)*
dy &
1397 + pgc(zcoord,grc_mixt_yvel,c1)*
dz
1398 wl = wl + pgc(xcoord,grc_mixt_zvel,c1)*
dx &
1399 + pgc(ycoord,grc_mixt_zvel,c1)*
dy &
1400 + pgc(zcoord,grc_mixt_zvel,c1)*
dz
1401 pl = pl + pgc(xcoord,grc_mixt_pres,c1)*
dx &
1402 + pgc(ycoord,grc_mixt_pres,c1)*
dy &
1403 + pgc(zcoord,grc_mixt_pres,c1)*
dz
1413 rr = pcv(cv_mixt_dens,c2)
1416 ur = pcv(cv_mixt_xmom,c2)*irr
1417 vr = pcv(cv_mixt_ymom,c2)*irr
1418 wr = pcv(cv_mixt_zmom,c2)*irr
1419 pr = pdv(dv_mixt_pres,c2)
1421 dx = xc - pgrid%cofg(xcoord,c2)
1422 dy = yc - pgrid%cofg(ycoord,c2)
1423 dz = zc - pgrid%cofg(zcoord,c2)
1425 rr = rr + pgc(xcoord,grc_mixt_dens,c2)*
dx &
1426 + pgc(ycoord,grc_mixt_dens,c2)*
dy &
1427 + pgc(zcoord,grc_mixt_dens,c2)*
dz
1428 ur = ur + pgc(xcoord,grc_mixt_xvel,c2)*
dx &
1429 + pgc(ycoord,grc_mixt_xvel,c2)*
dy &
1430 + pgc(zcoord,grc_mixt_xvel,c2)*
dz
1431 vr = vr + pgc(xcoord,grc_mixt_yvel,c2)*
dx &
1432 + pgc(ycoord,grc_mixt_yvel,c2)*
dy &
1433 + pgc(zcoord,grc_mixt_yvel,c2)*
dz
1434 wr = wr + pgc(xcoord,grc_mixt_zvel,c2)*
dx &
1435 + pgc(ycoord,grc_mixt_zvel,c2)*
dy &
1436 + pgc(zcoord,grc_mixt_zvel,c2)*
dz
1437 pr = pr + pgc(xcoord,grc_mixt_pres,c2)*
dx &
1438 + pgc(ycoord,grc_mixt_pres,c2)*
dy &
1439 + pgc(zcoord,grc_mixt_pres,c2)*
dz
1449 CALL
rflu_ausm_fluxfunction(nx,ny,nz,nm,fs,rl,ul,vl,wl,pl,hl,al,rr,ur,vr, &
1456 pmf(indmf*ifg) = flx(1)
1462 prhs(cv_mixt_dens,c1) = prhs(cv_mixt_dens,c1) + flx(1)
1463 prhs(cv_mixt_xmom,c1) = prhs(cv_mixt_xmom,c1) + flx(2)
1464 prhs(cv_mixt_ymom,c1) = prhs(cv_mixt_ymom,c1) + flx(3)
1465 prhs(cv_mixt_zmom,c1) = prhs(cv_mixt_zmom,c1) + flx(4)
1466 prhs(cv_mixt_ener,c1) = prhs(cv_mixt_ener,c1) + flx(5)
1468 prhs(cv_mixt_dens,c2) = prhs(cv_mixt_dens,c2) - flx(1)
1469 prhs(cv_mixt_xmom,c2) = prhs(cv_mixt_xmom,c2) - flx(2)
1470 prhs(cv_mixt_ymom,c2) = prhs(cv_mixt_ymom,c2) - flx(3)
1471 prhs(cv_mixt_zmom,c2) = prhs(cv_mixt_zmom,c2) - flx(4)
1472 prhs(cv_mixt_ener,c2) = prhs(cv_mixt_ener,c2) - flx(5)
1478 psd(sd_xmom,c1*indsd) = psd(sd_xmom,c1*indsd) + vf(1)*flx(1)
1479 psd(sd_ymom,c1*indsd) = psd(sd_ymom,c1*indsd) + vf(2)*flx(1)
1480 psd(sd_zmom,c1*indsd) = psd(sd_zmom,c1*indsd) + vf(3)*flx(1)
1482 psd(sd_xmom,c2*indsd) = psd(sd_xmom,c2*indsd) - vf(1)*flx(1)
1483 psd(sd_ymom,c2*indsd) = psd(sd_ymom,c2*indsd) - vf(2)*flx(1)
1484 psd(sd_zmom,c2*indsd) = psd(sd_zmom,c2*indsd) - vf(3)*flx(1)
1491 DO ipatch = 1,pregion%grid%nPatches
1492 ppatch => pregion%patches(ipatch)
1494 SELECT CASE ( ppatch%spaceOrder )
1500 CALL
errorstop(global,err_reached_default,__line__)
1509 CALL fprofiler_ends(
"RFLU::AUSM_ComputeFlux2_TCP")
subroutine rflu_centralsecondpatch(pRegion, pPatch)
real(rfreal) function mixtperf_r_m(M)
subroutine rflu_ausm_computeflux2_mtcp(pRegion)
subroutine rflu_ausm_computeflux1(pRegion)
subroutine registerfunction(global, funName, fileName)
subroutine rflu_ausm_fluxfunction(nx, ny, nz, nm, fs, rl, ul, vl, wl, pl, Hl, al, rr, ur, vr, wr, pr, Hr, ar, flx, vf)
real(rfreal) function mixtperf_r_cpg(Cp, G)
real(rfreal) function mixtperf_ho_cptuvw(Cp, T, U, V, W)
real(rfreal) function mixtperf_m_r(R)
real(rfreal) function mixtperf_t_dpr(D, P, R)
subroutine, public rflu_ausm_computeflux(pRegion)
subroutine rflu_ausm_computeflux2_mpsd(pRegion)
real(rfreal) function mixtperf_c_grt(G, R, T)
subroutine rflu_centralfirstpatch(pRegion, pPatch)
subroutine rflu_ausm_computeflux2_tcp(pRegion)
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine deregisterfunction(global)
real(rfreal) function mixtperf_g_cpr(Cp, R)