@@ -358,18 +358,18 @@ SUBROUTINE SURFACE_HEAT_TRANSFER(NM,T,SF,BC,B1,WALL_INDEX,CFACE_INDEX,PARTICLE_I
358358
359359USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP,INTERPOLATE1D_UNIFORM, GET_SCALAR_FACE_VALUE
360360USE COMPLEX_GEOMETRY, ONLY : CC_CGSC, CC_SOLID
361- USE PHYSICAL_FUNCTIONS, ONLY : GET_SPECIFIC_GAS_CONSTANT,GET_VISCOSITY
361+ USE PHYSICAL_FUNCTIONS, ONLY : GET_SPECIFIC_GAS_CONSTANT,GET_VISCOSITY,GET_MOLECULAR_WEIGHT
362362USE DEVICE_VARIABLES, ONLY : PROPERTY,PROPERTY_TYPE
363363
364364REAL (EB), INTENT (IN ) :: T
365365INTEGER , INTENT (IN ) :: NM
366366INTEGER , INTENT (IN ), OPTIONAL :: WALL_INDEX,CFACE_INDEX,PARTICLE_INDEX
367367REAL (EB) :: ARO,QNET,RAMP_FACTOR,RHO_G_2,RSUM_F,PBAR_F,TSI,UN, &
368- RHO_ZZ_F(1 :N_TOTAL_SCALARS),ZZ_GET(1 :N_TRACKED_SPECIES), &
368+ RHO_ZZ_F(1 :N_TOTAL_SCALARS),ZZ_GET(1 :N_TRACKED_SPECIES),ZZ_GET_OTHER( 1 :N_TRACKED_SPECIES), &
369369 RHO_OTHER,RHO_OTHER_2,RHO_ZZ_OTHER(1 :N_TOTAL_SCALARS),RHO_ZZ_OTHER_2,RHO_ZZ_G,RHO_ZZ_G_2, &
370370 DDO,PBAR_G,PBAR_OTHER,DENOM,D_Z_N(0 :I_MAX_TEMP),D_Z_G,D_Z_OTHER,TMP_OTHER, &
371371 MU_DNS_G,MU_DNS_OTHER,MU_OTHER,RHO_D,RHO_D_TURB,RHO_D_DZDN,RHO_D_DZDN_OTHER,RSUM_OTHER,SF_HTC,&
372- BBB,CCC,PPP,QQQ,RRR,UUU,YYY,WWW,HTC_OLD,RSC_LOC,DTMP,RSUM_G,MU_G
372+ BBB,CCC,PPP,QQQ,RRR,UUU,YYY,WWW,HTC_OLD,RSC_LOC,DTMP,RSUM_G,MU_G,MW_G,MW_G_2,MW_OTHER,MW_OTHER_2
373373LOGICAL :: SECOND_ORDER_INTERPOLATED_BOUNDARY,ATMOSPHERIC_INTERPOLATION,CC_SOLID_FLAG
374374INTEGER :: IIO,JJO,KKO,N,ADCOUNT,ICG,ICO
375375REAL (EB), POINTER , DIMENSION (:,:,:,:) :: OM_ZZP
@@ -651,13 +651,48 @@ SUBROUTINE SURFACE_HEAT_TRANSFER(NM,T,SF,BC,B1,WALL_INDEX,CFACE_INDEX,PARTICLE_I
651651 RHOP(BC% II,BC% JJ,BC% KK) = PBAR_P(BC% KK,B1% PRESSURE_ZONE)/ RSUM(BC% II,BC% JJ,BC% KK)/ DENOM
652652 ENDIF
653653
654+ ! Correction for variable molecular weights
655+
656+ IF (TEST_FLUX_LIMITER_FACE_CORRECTION) THEN
657+ ZZ_GET(1 :N_TRACKED_SPECIES) = ZZP(BC% IIG,BC% JJG,BC% KKG,1 :N_TRACKED_SPECIES); CALL GET_MOLECULAR_WEIGHT(ZZ_GET,MW_G)
658+ ZZ_GET(1 :N_TRACKED_SPECIES) = ZZP(BC% II,BC% JJ,BC% KK,1 :N_TRACKED_SPECIES) ; CALL GET_MOLECULAR_WEIGHT(ZZ_GET,MW_OTHER)
659+ IF (SECOND_ORDER_INTERPOLATED_BOUNDARY) THEN
660+ SELECT CASE (BC% IOR)
661+ CASE ( 1 )
662+ ZZ_GET(1 :N_TRACKED_SPECIES) = ZZP(BC% IIG+1 ,BC% JJG,BC% KKG,1 :N_TRACKED_SPECIES)
663+ ZZ_GET_OTHER(1 :N_TRACKED_SPECIES) = OM_ZZP(IIO-1 ,JJO,KKO,1 :N_TRACKED_SPECIES)
664+ CASE (- 1 )
665+ ZZ_GET(1 :N_TRACKED_SPECIES) = ZZP(BC% IIG-1 ,BC% JJG,BC% KKG,1 :N_TRACKED_SPECIES)
666+ ZZ_GET_OTHER(1 :N_TRACKED_SPECIES) = OM_ZZP(IIO+1 ,JJO,KKO,1 :N_TRACKED_SPECIES)
667+ CASE ( 2 )
668+ ZZ_GET(1 :N_TRACKED_SPECIES) = ZZP(BC% IIG,BC% JJG+1 ,BC% KKG,1 :N_TRACKED_SPECIES)
669+ ZZ_GET_OTHER(1 :N_TRACKED_SPECIES) = OM_ZZP(IIO,JJO-1 ,KKO,1 :N_TRACKED_SPECIES)
670+ CASE (- 2 )
671+ ZZ_GET(1 :N_TRACKED_SPECIES) = ZZP(BC% IIG,BC% JJG-1 ,BC% KKG,1 :N_TRACKED_SPECIES)
672+ ZZ_GET_OTHER(1 :N_TRACKED_SPECIES) = OM_ZZP(IIO,JJO+1 ,KKO,1 :N_TRACKED_SPECIES)
673+ CASE ( 3 )
674+ ZZ_GET(1 :N_TRACKED_SPECIES) = ZZP(BC% IIG,BC% JJG,BC% KKG+1 ,1 :N_TRACKED_SPECIES)
675+ ZZ_GET_OTHER(1 :N_TRACKED_SPECIES) = OM_ZZP(IIO,JJO,KKO-1 ,1 :N_TRACKED_SPECIES)
676+ CASE (- 3 )
677+ ZZ_GET(1 :N_TRACKED_SPECIES) = ZZP(BC% IIG,BC% JJG,BC% KKG-1 ,1 :N_TRACKED_SPECIES)
678+ ZZ_GET_OTHER(1 :N_TRACKED_SPECIES) = OM_ZZP(IIO,JJO,KKO+1 ,1 :N_TRACKED_SPECIES)
679+ END SELECT
680+ CALL GET_MOLECULAR_WEIGHT(ZZ_GET,MW_G_2)
681+ CALL GET_MOLECULAR_WEIGHT(ZZ_GET_OTHER,MW_OTHER_2)
682+ ELSE
683+ MW_G_2 = MW_G
684+ MW_OTHER_2 = MW_OTHER
685+ ENDIF
686+ ENDIF
687+
654688 SELECT CASE (BC% IOR)
655689 CASE ( 1 )
656690 IF (SECOND_ORDER_INTERPOLATED_BOUNDARY) THEN
657691 RHO_G_2 = RHOP(BC% IIG+1 ,BC% JJG,BC% KKG)
658692 RHO_OTHER_2 = OM_RHOP(IIO-1 ,JJO,KKO)
659693 ENDIF
660694 Z_TEMP(0 :3 ,1 ,1 ) = (/ RHO_OTHER_2,RHO_OTHER,B1% RHO_G,RHO_G_2/ )
695+ IF (TEST_FLUX_LIMITER_FACE_CORRECTION) Z_TEMP(0 :3 ,1 ,1 ) = Z_TEMP(0 :3 ,1 ,1 )/ (/ MW_OTHER_2,MW_OTHER,MW_G,MW_G_2/ )
661696 U_TEMP(1 ,1 ,1 ) = UU(BC% II,BC% JJ,BC% KK)
662697 CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1 ,1 ,1 ,1 ,1 ,1 ,1 ,I_FLUX_LIMITER)
663698 B1% RHO_F = F_TEMP(1 ,1 ,1 )
@@ -667,6 +702,7 @@ SUBROUTINE SURFACE_HEAT_TRANSFER(NM,T,SF,BC,B1,WALL_INDEX,CFACE_INDEX,PARTICLE_I
667702 RHO_OTHER_2 = OM_RHOP(IIO+1 ,JJO,KKO)
668703 ENDIF
669704 Z_TEMP(0 :3 ,1 ,1 ) = (/ RHO_G_2,B1% RHO_G,RHO_OTHER,RHO_OTHER_2/ )
705+ IF (TEST_FLUX_LIMITER_FACE_CORRECTION) Z_TEMP(0 :3 ,1 ,1 ) = Z_TEMP(0 :3 ,1 ,1 )/ (/ MW_G_2,MW_G,MW_OTHER,MW_OTHER_2/ )
670706 U_TEMP(1 ,1 ,1 ) = UU(BC% II-1 ,BC% JJ,BC% KK)
671707 CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1 ,1 ,1 ,1 ,1 ,1 ,1 ,I_FLUX_LIMITER)
672708 B1% RHO_F = F_TEMP(1 ,1 ,1 )
@@ -676,6 +712,7 @@ SUBROUTINE SURFACE_HEAT_TRANSFER(NM,T,SF,BC,B1,WALL_INDEX,CFACE_INDEX,PARTICLE_I
676712 RHO_OTHER_2 = OM_RHOP(IIO,JJO-1 ,KKO)
677713 ENDIF
678714 Z_TEMP(1 ,0 :3 ,1 ) = (/ RHO_OTHER_2,RHO_OTHER,B1% RHO_G,RHO_G_2/ )
715+ IF (TEST_FLUX_LIMITER_FACE_CORRECTION) Z_TEMP(1 ,0 :3 ,1 ) = Z_TEMP(1 ,0 :3 ,1 )/ (/ MW_OTHER_2,MW_OTHER,MW_G,MW_G_2/ )
679716 U_TEMP(1 ,1 ,1 ) = VV(BC% II,BC% JJ,BC% KK)
680717 CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1 ,1 ,1 ,1 ,1 ,1 ,2 ,I_FLUX_LIMITER)
681718 B1% RHO_F = F_TEMP(1 ,1 ,1 )
@@ -685,6 +722,7 @@ SUBROUTINE SURFACE_HEAT_TRANSFER(NM,T,SF,BC,B1,WALL_INDEX,CFACE_INDEX,PARTICLE_I
685722 RHO_OTHER_2 = OM_RHOP(IIO,JJO+1 ,KKO)
686723 ENDIF
687724 Z_TEMP(1 ,0 :3 ,1 ) = (/ RHO_G_2,B1% RHO_G,RHO_OTHER,RHO_OTHER_2/ )
725+ IF (TEST_FLUX_LIMITER_FACE_CORRECTION) Z_TEMP(1 ,0 :3 ,1 ) = Z_TEMP(1 ,0 :3 ,1 )/ (/ MW_G_2,MW_G,MW_OTHER,MW_OTHER_2/ )
688726 U_TEMP(1 ,1 ,1 ) = VV(BC% II,BC% JJ-1 ,BC% KK)
689727 CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1 ,1 ,1 ,1 ,1 ,1 ,2 ,I_FLUX_LIMITER)
690728 B1% RHO_F = F_TEMP(1 ,1 ,1 )
@@ -694,6 +732,7 @@ SUBROUTINE SURFACE_HEAT_TRANSFER(NM,T,SF,BC,B1,WALL_INDEX,CFACE_INDEX,PARTICLE_I
694732 RHO_OTHER_2 = OM_RHOP(IIO,JJO,KKO-1 )
695733 ENDIF
696734 Z_TEMP(1 ,1 ,0 :3 ) = (/ RHO_OTHER_2,RHO_OTHER,B1% RHO_G,RHO_G_2/ )
735+ IF (TEST_FLUX_LIMITER_FACE_CORRECTION) Z_TEMP(1 ,1 ,0 :3 ) = Z_TEMP(1 ,1 ,0 :3 )/ (/ MW_OTHER_2,MW_OTHER,MW_G,MW_G_2/ )
697736 U_TEMP(1 ,1 ,1 ) = WW(BC% II,BC% JJ,BC% KK)
698737 CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1 ,1 ,1 ,1 ,1 ,1 ,3 ,I_FLUX_LIMITER)
699738 B1% RHO_F = F_TEMP(1 ,1 ,1 )
@@ -703,6 +742,7 @@ SUBROUTINE SURFACE_HEAT_TRANSFER(NM,T,SF,BC,B1,WALL_INDEX,CFACE_INDEX,PARTICLE_I
703742 RHO_OTHER_2 = OM_RHOP(IIO,JJO,KKO+1 )
704743 ENDIF
705744 Z_TEMP(1 ,1 ,0 :3 ) = (/ RHO_G_2,B1% RHO_G,RHO_OTHER,RHO_OTHER_2/ )
745+ IF (TEST_FLUX_LIMITER_FACE_CORRECTION) Z_TEMP(1 ,1 ,0 :3 ) = Z_TEMP(1 ,1 ,0 :3 )/ (/ MW_G_2,MW_G,MW_OTHER,MW_OTHER_2/ )
706746 U_TEMP(1 ,1 ,1 ) = WW(BC% II,BC% JJ,BC% KK-1 )
707747 CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1 ,1 ,1 ,1 ,1 ,1 ,3 ,I_FLUX_LIMITER)
708748 B1% RHO_F = F_TEMP(1 ,1 ,1 )
@@ -783,6 +823,17 @@ SUBROUTINE SURFACE_HEAT_TRANSFER(NM,T,SF,BC,B1,WALL_INDEX,CFACE_INDEX,PARTICLE_I
783823 END SELECT
784824 ENDDO SPECIES_LOOP
785825
826+ ! Correction for variable molecular weights
827+
828+ IF (TEST_FLUX_LIMITER_FACE_CORRECTION) THEN
829+ N= MAXLOC (RHO_ZZ_F(1 :N_TRACKED_SPECIES),1 )
830+ MW_G = SPECIES_MIXTURE(N)% MW
831+ RHO_ZZ_F(N) = MW_G* MAX ( 0._EB , B1% RHO_F &
832+ - SUM (RHO_ZZ_F(1 :(N-1 ))/ SPECIES_MIXTURE(1 :(N-1 ))% MW) &
833+ - SUM (RHO_ZZ_F((N+1 ):N_TRACKED_SPECIES)/ SPECIES_MIXTURE((N+1 ):N_TRACKED_SPECIES)% MW) )
834+ B1% RHO_F = SUM (RHO_ZZ_F(1 :N_TRACKED_SPECIES))
835+ ENDIF
836+
786837 ! face value of temperature
787838
788839 IF (ATMOSPHERIC_INTERPOLATION) THEN
0 commit comments