CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Wiki > TDMA 11.f90 - Solution of system of linear equatrions by Thoma...

TDMA 11.f90 - Solution of system of linear equatrions by Thomas method

From CFD-Wiki

Revision as of 02:31, 19 September 2005 by Michail (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Subroutine TDMA_1(NF)

include 'icomm_1.f90'

Dimension P(nx),Q(nx)

!--------------------------------------------------------------------------------------------------------------------------------------------------------

!--------------------------------------------------------------------------------------------------------------------------------------------------------

!--------------------------------------------------------------------------------------------------------------------------------------------------------

Do 101 J = 2, NYmax

P(1) = 0.

Q(1) = F(1,j,nf)

P(NXmaxP) = 0.

Q(NXmaxP) = F(NXmaxP,j,nf)

!		Forward Elimination

Do 10 i = 2,NXmaxP-1

temp = Ap(i,j) - Aw(i,j) * P(i-1)

					Spp= Sp(i,j) + As(i,j) * F(i,j-1,nf) + &

An(i,j) * F(i,j+1,nf)

P(i) = Ae(i,j) / temp

Q(i) = (Spp + Aw(i,j)*Q(i-1)) / temp

10 continue

! Back Substitution

Do 20 i = NXmaxP-1,1,-1

         F(i,j,nf) = P(i)*F(i+1,j,nf) + Q(i)

20 continue

    101 continue 

!-------------------------------------------------------------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------------------------------------------------------------

Do 301 J = NYmax,2,-1

P(1) = 0.

Q(1) = F(1,j,nf)

P(NXmaxP) = 0.

Q(NXmaxP) = F(NXmaxP,j,nf)

!		Forward Elimination

Do 32 i = 2,NXmaxP-1

temp = Ap(i,j) - Aw(i,j) * P(i-1)

					Spp= Sp(i,j) + As(i,j) * F(i,j-1,nf) + &

An(i,j) * F(i,j+1,nf)

P(i) = Ae(i,j) / temp

Q(i) = (Spp + Aw(i,j)*Q(i-1)) / temp

32 continue

! Back Substitution

Do 30 i = NXmaxP-1,2,-1

        F(i,j,nf) = P(i)*F(i+1,j,nf) + Q(i)

30 continue

    301 continue 

!--------------------------------------------------------------------------------------------------------------------------------------------------------

!--------------------------------------------------------------------------------------------------------------------------------------------------------

Do 201 I = NXmax,2,-1

P(1) = 0. Q(1) = F(i,1,nf)


P(NYmaxP) = 0.

Q(NYmaxP) = F(i,NYmaxP,nf)

!		Forward Elimination

Do 14 j = 2,NYmaxP-1

temp = Ap(i,j) - As(i,j) * P(j-1)

					Spp= Sp(i,j) + Aw(i,j) * F(i-1,j,nf) + &

Ae(i,j) * F(i+1,j,nf)

P(j) = An(i,j) / temp

Q(j) = (Spp - As(i,j)*Q(j-1)) / temp

14 continue

! Back Substitution

Do 22 j = NYmaxP-1,2,-1

!       F(i,j,nf) = P(j)*F(i,j+1,nf) + Q(j)

22 continue

    201 continue 

!--------------------------------------------------------------------------------------------------------------------------------------------------------

!--------------------------------------------------------------------------------------------------------------------------------------------------------

Do 211 I = 2,NXmax

P(1) = 0.

Q(1) = F(i,1,nf)

P(NYmaxP) = 0.

Q(NYmaxP) = F(i,NYmaxP,nf)

!		Forward Elimination

Do 15 j = 2,NYmaxP-1

temp = Ap(i,j) - As(i,j) * P(j-1)

					Spp= Sp(i,j) + Aw(i,j) * F(i-1,j,nf) + &

Ae(i,j) * F(i+1,j,nf)

P(j) = An(i,j) / temp

				Q(j) = (Spp - As(i,j)*Q(j-1)) / temp

15 continue

! Back Substitution

Do 23 j = NYmaxP-1,2,-1

!      F(i,j,nf) = P(j)*F(i,j+1,nf) + Q(j)

23 continue

    211 continue 

!--------------------------------------------------------------------------------------------------------------------------------------------------------

Return

End

My wiki