Practica 5

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

PROGRAM PVF1D_interface

USE PVF1D_module
IMPLICIT NONE
REAL*8::H,DOM(2),GAMMA(2)
INTEGER::N
WRITE(*,'(A6)',ADVANCE = 'NO') 'NP = '
READ (*,*) NP
SELECT CASE (NP)
CASE (1)
DOM(1)=0.0D0
DOM(2)=PI
GAMMA(1)=0.0D0
GAMMA(2)=0.0D0
H=0.1D0
N=NINT(PI/H)
CALL PVF1D_DabF3PC(SUB_Q,SUB_R,DOM,GAMMA,H,N)
END SELECT
CONTAINS
SUBROUTINE SUB_Q(Q,X)
IMPLICIT NONE
REAL*8,INTENT(IN)::X
REAL*8,INTENT(OUT)::Q
SELECT CASE (NP)
CASE (1)
Q=1.0D0
END SELECT
END SUBROUTINE
SUBROUTINE SUB_R(R,X)
IMPLICIT NONE
REAL*8,INTENT(IN)::X
REAL*8,INTENT(OUT)::R
SELECT CASE(NP)
CASE (1)
R=SIN(X)
END SELECT
END SUBROUTINE
END PROGRAM PVF1D_interface

MODULE PVF1D_module
INTEGER::NP
REAL*8::PI=DACOS(-1.0D0)
CONTAINS
SUBROUTINE PVF1D_DabF3PC(SUB_Q,SUB_R,DOM,GAMMA,H,N)
IMPLICIT NONE
EXTERNAL SUB_Q
EXTERNAL SUB_R
REAL*8,INTENT(IN)::DOM(2),H
REAL*8,INTENT(IN)::GAMMA(2)
INTEGER,INTENT(IN)::N
REAL*8::A(N+1,N+1),B(N+1,1),XV(N+1,1),X0,XF,X,Q,R
INTEGER I,J
X0=DOM(1)
XF=DOM(2)
OPEN(10,FILE='data_A.dat',FORM='formatted')
OPEN(11,FILE='data_b.dat',FORM='formatted')
OPEN(12,FILE='data_x.dat',FORM='formatted')
A(1,1)=1.0D0
B(1,1)=GAMMA(1)
X=X0
XV(1,1)=X
WRITE(12,'(F25.15)') XV(1,1)
DO I=2,N
X=X+H
XV(I,1)=X
WRITE(12,'(F25.15)') XV(I,1)
A(I,I-1)=1.0D0
CALL SUB_Q(Q,X)
A(I,I)=Q
A(I,I+1)=1.0D0
CALL SUB_R(R,X)
B(I,1)=H*H*R
END DO
A(N+1,N+1)=1
B(N+1,1)=GAMMA(2)

DO I=1,N+1
DO J=1,N+1
WRITE(10,'(I8,I8,F25.15)')I,J,A(I,J)
END DO
WRITE(11,'(I8,I8,F25.15)')I,1,B(I,1)
END DO
CLOSE(10)
CLOSE(11)
CLOSE(12)
END SUBROUTINE
END MODULE PVF1D_module

You might also like