c
c... File name ... GXIDIF.HTM ... 050922
REAL FUNCTION INTDIF(I)
INCLUDE 'farray'
INCLUDE 'grdloc'
INCLUDE 'satgrd'
INCLUDE 'satear'
INCLUDE 'grdear'
INCLUDE 'prpcmn'
COMMON/GENI/IGF1(2),NXNYST,NDIR,KDUMM,IGF2(4),NFM,IGF3(39),
1 ITEM1,ITEM2,ISPH1,ISPH2,ICON1,ICON2,IPRPS,IGF4(4)
1 /CELPAR/IPHASE,IPROP,IGRND,IFILEP,KPROP
LOGICAL GRN
c-----------------------------------------------------------------------
INTDIF=-999.0
C.... Bulk-to-interface diffusive-transfer coefficient:
IF(IGRND==-1) THEN
INTDIF=PRPRTY
ELSEIF(IGRND==1) THEN
INTDIF=0.0
ELSEIF(IGRND==7 .OR. IGRND==8) THEN
C.... Use stored slip velocity, or calculate it (CINH1C stores minimum
C slip velocity):
IF(STVSLP) THEN
VSLP= F(L0VSLP+I)
ELSE
VSLP= AMAX1(CINH1C, VSLPCL(I,XCYCZ,SLUNX1))
IF(LBVREL/=0) THEN
L0VSL=L0F(LBVREL); F(L0VSL+I)= VSLP
ENDIF
ENDIF
IF(L0DIAM/=0.AND.L0REYD/=0) THEN
DIAM= F(L0DIAM+I); REYD= F(L0REYD+I)
ELSE
C.... Compute particle size Dp= Dp0*(Rd/RS)**0.3333, where Dp0=CINH2C
C is the initial particle diameter for the SHADOW method, and
C particle Reynolds number ReD= Dp*RelVel/Enul:
DIAM= ABS(CINH2C)
IF(SOLVRS)
1 DIAM= DIAM*AMAX1(0., AMIN1(1.,F(L0RD+I)/F(L0RS+I)))**0.3333
REYD= DIAM*VSLP/(F(L0VISL+I)+TINY)
F(L0DIAM+I)= DIAM; F(L0REYD+I)= REYD
ENDIF
C.... Get Prandtl number and diffusivity:
PRLM= PRNDTL(INDVAR)
IF(GRN(-ABS(PRLM))) THEN
C.... GROUND-set Prandtl number (PRLM=GRND) or diffusivity (PRLM=-GRND):
IF(PRLM<0.0) THEN
PRLM= F(L0PRL+I); DIFF= F(L0VISL+I)/PRLM
ELSE
DIFF= F(L0PRL+I); PRLM= F(L0VISL+I)/DIFF
ENDIF
ELSE
C.... Constant Prandtl (PRLM>0.0) or diffusivity (PRLM<0.0):
IF(PRLM>0.0) THEN
DIFF= F(L0VISL+I)/PRLM
ELSE
DIFF= - PRLM; PRLM= F(L0VISL+I)/DIFF
ENDIF
ENDIF
IF(IGRND==7) THEN
C.... Calculate Nusselt number from Clift-Grace-Weber correlation:
FAC= ((1.0 + 1.0/(REYD*PRLM))*PRLM)**0.3333
IF(REYD<=400) THEN
DNUSS= 1.0 + FAC*REYD**0.41
ELSEIF(REYD<=2000.) THEN
DNUSS= 1.0 + 0.752*FAC*REYD**0.472
ELSE
DNUSS= 1.0 + FAC*(0.44*SQRT(REYD) + 0.034*REYD**0.71)
ENDIF
ELSE
C.... Calculate Nusselt number from Ranz-Marshall correlation:
DNUSS= 2.0 + 0.6*SQRT(REYD)*PRLM**0.3333
ENDIF
IF(LBNUSS/=0) F(L0NUSS+I)= DNUSS
C.... Compute the surface area of particles (spheres) in each cell:
ASD= 6.*F(L0RD+I)*CELVOL(I)/DIAM
C.... Set interface transfer coefficient Ci= RHOCG*(Enul*Nu/Prl)/Dp*As:
INTDIF= CINHFG*F(L0DEN+I)*DIFF*DNUSS/DIAM*ASD
ELSEIF(IGRND==9) THEN
C.... Constant diffusive-transfer coefficient:
INTDIF= CINHAG
ENDIF
END
C-----------------------------------------------------------------------
SUBROUTINE SLBIDF(IPILOPT,dbgloc)
INCLUDE 'farray'
INCLUDE 'grdloc'
INCLUDE 'satgrd'
INCLUDE 'satear'
INCLUDE 'grdear'
INCLUDE 'prpcmn'
COMMON/VMSCMN/FL1CON
1 /LRNTM1/L0WDIS,L0FMU,L0FONE,L0FTWO,L0REYN,L0REYT,L0UD1,
1 L0UD2,L0UD3,L0UD4
1 /LRNTM2/LBWDIS,LBFMU,LBFONE,LBFTWO,LBREYN,LBREYT,LBEPKE
C 1 /TSKEM/ GKTDKP,LBKP,LBKT,LBET,LBVOSQ,LBOMEG
COMMON/TSKEMI/ LBKP,LBKT,LBET,LBVOSQ,LBOMEG
1 /TSKEMR/ GKTDKP
1 /VELCMN/L0UVW(6),L0UVW2(6)
1 /CELPAR/IPHASE,IPROP,IGRND,IFILEP,KPROP
COMMON/GENI/IGF1(2),NXNYST,NDIR,KDUMM,IGF2(4),NFM,IGF3(21),IPRL,
1 IBTAU,IGF4(16),ITEM1,ITEM2,ISPH1,ISPH2,ICON1,ICON2,
1 IPRPS,IRADX,IRADY,IRADZ,IVFOL
1 /F0/ IF01(29),L0XYDX,L0XYDY,IF02(3),L0XYRV,L0XYXG,IF03,
1 L0XYYG,IF04,L0XYDXG,L0XYDYG,IF05(68),KZXCY,IF05A(37),
1 L0AHZ,IF06(17),L0XYDZ,L0XYDZG,IF07(137)
COMMON/NAMFN/NAMFUN,NAMSUB
REAL INTDIF
LOGICAL DBGLOC,SLD,GRN,CINT78,FL1CON,NEZ
CHARACTER*6 NAMFUN,NAMSUB
C
NAMSUB= 'SLBIDF'
if(flag.or.dbgloc) call banner(1,namsub,050922)
IGR= 10
ISC= IPROP-20
C.... Call GROUND for the user set property:
IF(IGRND==0) THEN
IF(USEGRD) THEN
CALL GROUND
ENDIF
GO TO 800
ENDIF
C.... For a constant property go to the slab loop
IF(IGRND==-1) GO TO 700
C.... Set constants and other auxiliary variables:
C-----------------------------------------------------------------------
C.... Bulk-to-interface diffusive-transfer coeff.:
IF(IPHASE==1) THEN
CINHAG = CINH1A; CINHAG = CINH2A
ENDIF
CINT78= .FALSE.
IF(IPILOPT==7 .OR. IPILOPT==8) THEN
L0VISL= L0F(VISL)
IF(GRN(-ABS(PRNDTL(INDVAR)))) L0PRL= L0F(IPRL)
IF(LBSIZE/=0) L0DIAM= L0F(LBSIZE)
IF(LBREYD/=0) L0REYD= L0F(LBREYD)
IF(LBNUSS/=0) L0NUSS= L0F(LBNUSS)
C.... First check the option used to calculate Cfip. If it is GRND7 or
C GRND8, use values of slip velocity, particle sizes and Reynolds
C number calculated for Cfip.
IF(CFIPS>=0) THEN
IGRNDCF=-1
ELSE
IGRNDCF= NINT(ABS(CFIPS-GRND))/10
ENDIF
CFIP78= IGRNDCF==7 .OR. IGRNDCF==8
STVSLP= CFIP78 .AND. LBVREL/=0
IF(STVSLP) L0VSLP= L0F(LBVREL)
C.... Determine indices for continuous and dispersed phases:
IF(CFIP78) THEN
IF(IGRNDCF==7) THEN
L0DEN= L0F(DEN1); L0RD = L0R2
ELSE
L0DEN= L0F(DEN2); L0RD = L0R1
ENDIF
ELSEIF(IPHASE==1) THEN
L0DEN= L0F(DEN1); L0RD = L0R2
ELSE
L0DEN= L0F(DEN2); L0RD = L0R1
ENDIF
INEIGH = ITWO(INDVAR+1,INDVAR-1,IPHASE==1)
PHNHFG= 1.0
IF(CINT(INEIGH)>1.E10) THEN
PHNHFG = 0.5; CINT78 = IPHASE==1
ENDIF
IF(XCYCLE) XCYCZ=NEZ(F(KZXCY+IZ))
IF(SOLVE(3)) L0UVW(3)=L0F(3); IF(SOLVE(4)) L0UVW2(3)=L0F(4)
IF(SOLVE(5)) L0UVW(1)=L0F(5); IF(SOLVE(6)) L0UVW2(1)=L0F(6)
IF(SOLVE(7)) L0UVW(5)=L0F(7); IF(SOLVE(8)) L0UVW2(5)=L0F(8)
IF(SOLVRS) L0RS = L0F(11)
ENDIF
C-----------------------------------------------------------------------
C.... Loop over slab to get and set cell properties:
700 IGRND=IPILOPT
IF(IPRPS==0) THEN
C.... One material only
DO 60 I= 1,NXNYST
60 F(KPROP+I) = INTDIF(I)
ELSE
C.... exclude solids
DO 70 I= 1,NXNYST
IF(SLD(I)) THEN
F(KPROP+I)= TINY
ELSE
F(KPROP+I)= INTDIF(I)
ENDIF
70 CONTINUE
ENDIF
C----------------------------------------------------------------------
C.... Corrections, debug print-out, and other property adjustments:
C.... Call GREX to correct a property set above:
800 IF(USEGRX) CALL GREX3
C.... Call ALTPRP for an alternative property setting
IF(USEALT) CALL ALTPRP
C.... Call GROUND for the user to correct a property set above:
IF(USEGRD) THEN
IF(IPILOPT>0) CALL GROUND
ENDIF
NAMSUB= 'slbidf'
if(flag.or.dbgloc) call banner(2,namsub,0)
END
c