Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program gauss_seidel_iterative
- implicit double precision (a-h,o-z)
- parameter (kdim=20)
- dimension T(11,11), C(11,11), R(11,11), roi(11)
- agog(X)=A0+A1*X+A2*(X**2)+A3*(X**3)
- olok(i)=(2/10)*(roi(i)+4*roi(i+1)+roi(i+2))*(1/6)
- write(*,*)' Enter Relaxation Factor'
- read(*,*)omega
- write(*,*)' Enter epsilon(sfalma)'
- read(*,*)eps
- c
- do i=1,11
- do j=1,11
- T(i,j)=400
- ENDDO
- ENDDO
- do i=1,11
- do j=1,11
- C(i,j)=0
- ENDDO
- ENDDO
- do i=1,11
- T(i,1)=220
- enddo
- c GRAMMIKH PAREMVOLH 1
- T(11,11)=615
- T(1,11)=650
- remold=0
- DIFF1=(T(11,11)-T(11,1))/10
- do j=2,10
- T(11,j)=T(11,j-1)+DIFF1
- ENDDO
- c grammikh paremvolh1 telos
- c GRAMMIKH PAREMVOLH 2
- DIFF2=(T(1,11)-T(1,1))/10
- do j=2,10
- T(1,j)=T(1,j-1)+DIFF2
- enddo
- c grammikh paremvolh2 telos
- do K=1,10**6-1
- do i=2,10
- do j=2,10
- IF(j.lt.10) THEN
- T(i,j)=0.25*(T(i+1,j)+T(i-1,j)+T(i,j+1)+T(i,j-1))
- ELSEIF(j.eq.10) THEN !IF(j.eq.10) THEN
- T(i,j)=(1.d0/3.d0)*( T(i+1,j)+T(i-1,j)+T(i,j-1) )
- ENDIF
- T(i,j) = omega*T(i,j) + (1.d0-omega)*C(i,j)
- q=(T(i,j)-C(i,j))/C(i,j)
- R(i,j)=abs(q)
- !=err
- C(i,j)=T(i,j)
- ENDDO
- ENDDO
- !err0=1e-6
- !sum=0
- !do i=2,10
- ! do j=2,10
- ! sum=R(i,j)+sum
- ! enddo
- !enddo
- !avgsf=sum/90 !90=(N-2)*(N-1)
- !if (avgsf.le.eps) THEN
- !exit
- !endif
- err0=R(2,2)
- do i=2,10
- do j=2,9
- if (R(i,j).gt.err0) THEN
- err0=R(i,j)
- endif
- enddo
- enddo
- if (err0.le.eps) THEN
- EXIT
- endif
- ENDDO
- do i=2,10
- T(i,11)=T(i,10)
- enddo
- open(1,file='solution12.dat')
- do j=1,11
- write(1,21) (T(i,j), i=1,11)
- 21 format(50(f10.5,3x))
- enddo
- write (1,*) K, omega
- open (2,file='timesAD.txt')
- do i=1,11
- write(2,*) T(11,i)
- enddo
- close(2)
- !roh
- open(3,file='COEF.TXT')
- READ (3,*) A0,A1,A2,A3
- CLOSE (3)
- do X=1,11
- !write(3,*) agog(x)
- roi(X) = -agog(X)*(T(11,X)-T(10,X))/10
- write(*,*) roi(X)
- write(1,*) roi(X)
- enddo
- !integraltion
- sum=0
- !dh=2/(N-1) !2/(N-1)
- do i=1,9,2
- sum = sum + olok(i)
- enddo
- write(1,*) sum
- write(1,*) 'THERMIKI ROH =',sum,' W/m'
- close(1)
- !stop
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement