Você está na página 1de 2

D:\DOC'S\1.UEM-LICENCIATURA-CIVIL\1.IV YEAR\VIII SEMESTER\A.M.E.F\ultimo traballho\Nova pasta (2)\teste.

f95
Program Escoamento_atraves_da_Barragem_de_Terra_Homogenea_de_Fundacao_Impermeavel

Implicit None
Integer::e,Nnos,Ne,no,i,j,Ai,Bi,c,n
Integer,Dimension(22)::no1,no2,no3,cod
Real,Dimension(20)::y,z,a,b,F,h
Real,Dimension(3,3)::K
Real,Dimension(20,20)::Kg
Real::y1,y2,y3,z1,z2,z3,Area,m,soma

!xxx Abre o File de Entrada xxx

Open(10,file='novo.txt',status='Old')
Read(10,*)Ne,Nnos

!xxx Le a matriz de conectividade xxx

Read(10,*)
Do i=1,Ne
Read(10,*)e,no1(e),no2(e),no3(e)
end do

!xxx Le as coordenadas dos no's dos elementos xxx

Read(10,*)
Do i=1,Nnos
Read(10,*)No,y(no),z(no)
end do

!xxx Zera a matriz global e o vector global dos termos independentes xxx

do i=1,nnos
F(i)=0.0
do j=1,nnos
kg(i,j)=0.0
end do
end do

!xxx Determina a area dos elementos, a matriz do elemento, e espalha a matriz do elemento na matriz global xxx

do n=1,Ne
y1=y(no1(n))
y2=y(no2(n))
y3=y(no3(n))
z1=z(no1(n))
z2=z(no2(n))
z3=z(no3(n))

Area=0.5*abs(y2*z3+y1*z2+z1*y3-y2*z1+y3*z2+y1*z3)

do i=1,3
if(i.eq.1) then
!j=2
!k=3
a(i)=y3-y2
b(i)=z2-z3
else
if (i.eq.2) then
!j=3
!k=1
a(i)=y1-y3
b(i)=z3-z1
else
!j=1
!k=2
a(i)=y2-y1
b(i)=z1-z2
end if
end if
end do

do i=1,3
Ai=a(i)
Bi=b(i)
do j=1,3
K(i,j)=(1.0/(4.0*Area**2))*(Ai*a(j)+Bi*b(j))
end do
end do

do i=1,3
!Write(*,*)(K(i,j),j=1,3)
end do

Kg(No1(n),No1(n))=Kg(No1(n),No1(n))+k(1,1)
Kg(No1(n),No2(n))=Kg(No1(n),No2(n))+k(1,2)
Kg(No1(n),No3(n))=Kg(No1(n),No3(n))+k(1,3)
Kg(No2(n),No1(n))=Kg(No2(n),No1(n))+k(2,1)
Kg(No2(n),No2(n))=Kg(No2(n),No2(n))+k(2,2)
Kg(No2(n),No3(n))=Kg(No2(n),No3(n))+k(2,3)
Kg(No3(n),No1(n))=Kg(No3(n),No1(n))+k(3,1)
Kg(No3(n),No2(n))=Kg(No3(n),No2(n))+k(3,2)
Kg(No3(n),No3(n))=Kg(No3(n),No3(n))+k(3,3)
end do

Page 1
D:\DOC'S\1.UEM-LICENCIATURA-CIVIL\1.IV YEAR\VIII SEMESTER\A.M.E.F\ultimo traballho\Nova pasta (2)\teste.f95

!xxx Le as condicoes de fronteira xxx


Read(10,*)
Do i=1,nnos
Read(10,*)no,cod(i),h(i)
end do

!xxx Introduz as condicoes de fronteira essenciais no vector dos termos independentes xxx

Do i=1,NNos
if (cod(i).eq.1) then
KG(i,i)=1
F(i)=h(i)
Do j=1,NNos
If(j.ne.i) then
KG(i,j)=0.0
F(j)=F(j)-h(i)*KG(j,i)
KG(j,i)=0
end if
end do
end if
end do

!xxx Faz a eliminacao de Gauss xxx

Do c = 1,(NNos-1)
Do i = (c + 1),Nnos
m = KG(i,c)/KG(c,c)
KG(i,c) = 0
Do j = (c + 1), Nnos
KG(i,j) = KG(i,j)-m*KG(c,j)
end do
F(i) = F(i)-m*F(c)
end do
end do

!xxx Resolve o sistema de equacoes xxx

h(NNos)=F(NNos)/KG(NNos,NNos)
Do i=NNos-1,1,-1
soma=0
Do j=i+1,NNos
soma=soma+KG(i,j)*F(j)
end do
h(i)=(F(i)-soma)/KG(i,i)
end do

!XXX IMPRIME O VALOR DO POTENCIAL NAS COORDENADAS yi e zi xxx

do i=1,nnos
Write(*,*)i,y(i),z(i),h(i)
end do

END

Page 2