B.6. Source Programs
347
C
C********************************************************************
C
C
Subroutine SNIM solves discretization equations.
C
C********************************************************************
C
C
SUBROUTINE
1
SNIM (MA,MCPN,IE,IEE,CFA,CFB,NHBP,HO,Hl,H2,DFOO,DFO,
DWR,DWC,DSR,DSC,TH,PS,PPR,PAD,EPS,ALF,RDC,
DTOO,DTO,DT1,NP,NP1,NB,NHB,IH,IHC)
2
IMPLICIT
DIMENSION
1
2
3
REAL*8 (A-H, O-Z)
MA(NP1),MCPN(NB,NP),IE(NP),IEE(NP),CFA(IH),
CFB(IH),NHBP(NHB) ,HO(NP) ,Hl(NP) ,H2(NP),
DFOO(NP) ,DFO(NP) ,DWR(NP) ,DWC(NP) ,DSR(NP),
DSC(NP) ,TH(NP) ,PS(NP) ,PPR(NP) ,PAD(NP) ,EPS(2)
C Identifying given head or given concentration boundary nodes
C
C
DO I=l, NP
IE(I)=O
IF (NHB .GT. 0) THEN
DO J=l, NHB
IF (I .EQ. NHBP(J)) THEN
Hl(I)=HO(I)
IE(I)=2
ENDIF
END DO
ENDIF
END DO
C extrapolation
C
C
DO N=l, NP
IF(IE(N) .LT.2) THEN
IF(ABS(DFOO(N)) .GE.l.E-5) THEN
DD=(DTOO/DTO)*(DFO(N)/DFOO(N))
ELSE
DD=l.
ENDIF
IF(DD. GT. 5.) DD=5.
IF(DD. LT. 0.) DD=O.
Hl(N)=HO(N)-(DT1*DD*DFO(N))/DTO
ENDIF
END DO
C forming iteration equations
C
C
40 DO N=l, NP
IF(IE(N) .EQ. 0) THEN
NA=MA(N+l)
NC=MA(N)
TRS=CFA(NC+l)+CFB(NC+l)/DTl
IF (IHC .EQ. 2) TRS=TRS+RDC*PS(N)
DD=CFB(NC+l)/DT1*HO(N)
ND=NA-NC
DO K=2, ND
MC=MCPN(K,N)
DD=DD+CFB(NC+K)/DT1*(HO(MC)-Hl(MC))-CFA(NC+K)*Hl(MC)
END DO
C incorporating sink/source terms
347
C
C********************************************************************
C
C
Subroutine SNIM solves discretization equations.
C
C********************************************************************
C
C
SUBROUTINE
1
SNIM (MA,MCPN,IE,IEE,CFA,CFB,NHBP,HO,Hl,H2,DFOO,DFO,
DWR,DWC,DSR,DSC,TH,PS,PPR,PAD,EPS,ALF,RDC,
DTOO,DTO,DT1,NP,NP1,NB,NHB,IH,IHC)
2
IMPLICIT
DIMENSION
1
2
3
REAL*8 (A-H, O-Z)
MA(NP1),MCPN(NB,NP),IE(NP),IEE(NP),CFA(IH),
CFB(IH),NHBP(NHB) ,HO(NP) ,Hl(NP) ,H2(NP),
DFOO(NP) ,DFO(NP) ,DWR(NP) ,DWC(NP) ,DSR(NP),
DSC(NP) ,TH(NP) ,PS(NP) ,PPR(NP) ,PAD(NP) ,EPS(2)
C Identifying given head or given concentration boundary nodes
C
C
DO I=l, NP
IE(I)=O
IF (NHB .GT. 0) THEN
DO J=l, NHB
IF (I .EQ. NHBP(J)) THEN
Hl(I)=HO(I)
IE(I)=2
ENDIF
END DO
ENDIF
END DO
C extrapolation
C
C
DO N=l, NP
IF(IE(N) .LT.2) THEN
IF(ABS(DFOO(N)) .GE.l.E-5) THEN
DD=(DTOO/DTO)*(DFO(N)/DFOO(N))
ELSE
DD=l.
ENDIF
IF(DD. GT. 5.) DD=5.
IF(DD. LT. 0.) DD=O.
Hl(N)=HO(N)-(DT1*DD*DFO(N))/DTO
ENDIF
END DO
C forming iteration equations
C
C
40 DO N=l, NP
IF(IE(N) .EQ. 0) THEN
NA=MA(N+l)
NC=MA(N)
TRS=CFA(NC+l)+CFB(NC+l)/DTl
IF (IHC .EQ. 2) TRS=TRS+RDC*PS(N)
DD=CFB(NC+l)/DT1*HO(N)
ND=NA-NC
DO K=2, ND
MC=MCPN(K,N)
DD=DD+CFB(NC+K)/DT1*(HO(MC)-Hl(MC))-CFA(NC+K)*Hl(MC)
END DO
C incorporating sink/source terms
