Skip to content

Commit f341944

Browse files
committed
FDS Source: update TEST_FLUX_LIMITER_FACE_CORRECTION for INTERPOLATED_BC
1 parent 4e00f89 commit f341944

File tree

2 files changed

+55
-4
lines changed

2 files changed

+55
-4
lines changed

Source/mass.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ SUBROUTINE MASS_FINITE_DIFFERENCES(NM)
178178

179179
ENDDO SPECIES_LOOP
180180

181-
FACE_CORRECTION_IF: IF (TEST_FLUX_LIMITER_FACE_CORRECTION .AND. N_TRACKED_SPECIES>2) THEN
181+
FACE_CORRECTION_IF: IF (TEST_FLUX_LIMITER_FACE_CORRECTION) THEN
182182

183183
! Repeat the above for DENSITY
184184

Source/wall.f90

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -358,18 +358,18 @@ SUBROUTINE SURFACE_HEAT_TRANSFER(NM,T,SF,BC,B1,WALL_INDEX,CFACE_INDEX,PARTICLE_I
358358

359359
USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP,INTERPOLATE1D_UNIFORM, GET_SCALAR_FACE_VALUE
360360
USE 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
362362
USE DEVICE_VARIABLES, ONLY : PROPERTY,PROPERTY_TYPE
363363

364364
REAL(EB), INTENT(IN) :: T
365365
INTEGER, INTENT(IN) :: NM
366366
INTEGER, INTENT(IN), OPTIONAL :: WALL_INDEX,CFACE_INDEX,PARTICLE_INDEX
367367
REAL(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
373373
LOGICAL :: SECOND_ORDER_INTERPOLATED_BOUNDARY,ATMOSPHERIC_INTERPOLATION,CC_SOLID_FLAG
374374
INTEGER :: IIO,JJO,KKO,N,ADCOUNT,ICG,ICO
375375
REAL(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

Comments
 (0)