AYUDA CON CODIGO FORTRAN
Publicado por ascari ROMO (1 intervención) el 29/04/2006 20:10:27
Hola, tengo que codificar este programa a C,C++ ó JAVA y hay algunas cosas que no entiendo. Por ejemplo supongo que TTYIN es una instruccion para meter datos desde el teclado, pero no entiendo por ejemplo esto:
TIN=TTYIN(4HTIN ,2H = )
¿Que quiero decir eso de 4HTIN,2H = ) me imágino que debe ser algun tipo de formato para la entrada de datos, pero si alguien me puede explicar mejor su funcion le estare agradecido.
Por ejemplo otra duda es en WRITE(61,99)DX , supongo que WRITE(61,99) son las coordenadas X,Y donde se va a imprimir el valor de la variable DX, estoy en lo cierto??
Otra duda más, que haria estas instrucciones:
WRITE(61,100)((T(I,J),I=1,N1),J=1,M1)
100 FORMAT(1H ,7(2X,F6.2))
101 FORMAT(1H0,6HTIME =,F9.6)
Si pudieran explicarme como funciona el DO, por que tiene delante un 1 o un 2 etc, tiene algo que ver con eso de 1 CONTINUE, 2 CONTINUE, ETC
Si alguien puede explicarme el funcionamiento de este código a grandes rasgos le estare muy agradecido.
Reciban un cordial saludo!!!
PROGRAMA D2TC
DIMENSION T(50,50),D(50,50)
N=TTYIN(4HN = )
TIN=TTYIN(4HTIN ,2H = )
XL=TTYIN(4HXL =,1H )
DX=XL/N
TC=TTYIN(4HTC =,1H )
DY= DX
YL=TTYIN(4HYL =,1H)
WRITE(61,99)DX
99 FORMAT(1H ,16 ANCHO DEL INTERVALO =,F7.4)
L=TTYIN(4HL = )
M = YL/DY
DT =TTYIN(4HDT =1H)
TMAX=TTYIN(4HTMAX,3H = )
HC=TTYIN(4HHC =,1H )
EPS= TTYIN(4HEPS ,2H = )
DEN=TTYIN(4HDEN ,2H = )
TTB=TTYIN(4HTTB ,2H = )
TBB=TTYIN(4HTBB ,2H = )
TRB=TTYIN(4HTRB ,2H = )
TLB=TTYIN(4HTLB ,2H = )
N1=N+1
M1=M+1
C ASIGNA TEMPERATURAS INICIALES
DO 1 I=1,N1
DO 1 J=1,M1
T(I,J)=TIN
1 CONTINUE
ALM=(DT*TC)/(DX*DX*HC*DEN)
TI=0.0
WRITE(61,101)T1
WRITE(61,100)((T(I,J),I=1,N1),J=1,M1)
C FIJA VALORES DE FRONTERA
DO 2 I=1,N1
T(I,1)=TTB
T(I,M1)=TBB
2 CONTINUE
DO 7 J=1,M1
T(1,J)=TLB
T(N1,J)=TRB
7 CONTINUE
C FIJA COEFICIENTE B,E
B=1.0 + 4.0 * ALM
E=ALM/B
9 IC=0.0
3 TI=TI + DT
IC=IC+1
IF(TI.GE.TMAX)GO TO 6
DO 4 I=1,N1
DO 4 J=1,M1
D(I,J)=T(I,J)/B
4 CONTINUE
5 SEPS=0.0
DO 8 I=2,N
DO8 J=2,M
TEMPT=T(I,J)
T(I,J)=D(I,J)+E*(T(I-1,J)+T(I+1,J)+T(I,J-1)+T(I,J+1))
8 SEPS=SEPS+ABS(TEMPT-T(I,J))
IF(SEPS.GT.EPS) GO TO 5
IF(IC.LT.L)GO TO 3
WRITE(61,101)TI
WRITE(61,100)((T(I,J),I=1,N1),J=1,M1)
100 FORMAT(1H ,7(2X,F6.2))
101 FORMAT(1H0,6HTIME =,F9.6)
GO TO 9
6 END
NOTA: EL PROGRAMA ES UNA APLICACION QUIMICA
TIN=TTYIN(4HTIN ,2H = )
¿Que quiero decir eso de 4HTIN,2H = ) me imágino que debe ser algun tipo de formato para la entrada de datos, pero si alguien me puede explicar mejor su funcion le estare agradecido.
Por ejemplo otra duda es en WRITE(61,99)DX , supongo que WRITE(61,99) son las coordenadas X,Y donde se va a imprimir el valor de la variable DX, estoy en lo cierto??
Otra duda más, que haria estas instrucciones:
WRITE(61,100)((T(I,J),I=1,N1),J=1,M1)
100 FORMAT(1H ,7(2X,F6.2))
101 FORMAT(1H0,6HTIME =,F9.6)
Si pudieran explicarme como funciona el DO, por que tiene delante un 1 o un 2 etc, tiene algo que ver con eso de 1 CONTINUE, 2 CONTINUE, ETC
Si alguien puede explicarme el funcionamiento de este código a grandes rasgos le estare muy agradecido.
Reciban un cordial saludo!!!
PROGRAMA D2TC
DIMENSION T(50,50),D(50,50)
N=TTYIN(4HN = )
TIN=TTYIN(4HTIN ,2H = )
XL=TTYIN(4HXL =,1H )
DX=XL/N
TC=TTYIN(4HTC =,1H )
DY= DX
YL=TTYIN(4HYL =,1H)
WRITE(61,99)DX
99 FORMAT(1H ,16 ANCHO DEL INTERVALO =,F7.4)
L=TTYIN(4HL = )
M = YL/DY
DT =TTYIN(4HDT =1H)
TMAX=TTYIN(4HTMAX,3H = )
HC=TTYIN(4HHC =,1H )
EPS= TTYIN(4HEPS ,2H = )
DEN=TTYIN(4HDEN ,2H = )
TTB=TTYIN(4HTTB ,2H = )
TBB=TTYIN(4HTBB ,2H = )
TRB=TTYIN(4HTRB ,2H = )
TLB=TTYIN(4HTLB ,2H = )
N1=N+1
M1=M+1
C ASIGNA TEMPERATURAS INICIALES
DO 1 I=1,N1
DO 1 J=1,M1
T(I,J)=TIN
1 CONTINUE
ALM=(DT*TC)/(DX*DX*HC*DEN)
TI=0.0
WRITE(61,101)T1
WRITE(61,100)((T(I,J),I=1,N1),J=1,M1)
C FIJA VALORES DE FRONTERA
DO 2 I=1,N1
T(I,1)=TTB
T(I,M1)=TBB
2 CONTINUE
DO 7 J=1,M1
T(1,J)=TLB
T(N1,J)=TRB
7 CONTINUE
C FIJA COEFICIENTE B,E
B=1.0 + 4.0 * ALM
E=ALM/B
9 IC=0.0
3 TI=TI + DT
IC=IC+1
IF(TI.GE.TMAX)GO TO 6
DO 4 I=1,N1
DO 4 J=1,M1
D(I,J)=T(I,J)/B
4 CONTINUE
5 SEPS=0.0
DO 8 I=2,N
DO8 J=2,M
TEMPT=T(I,J)
T(I,J)=D(I,J)+E*(T(I-1,J)+T(I+1,J)+T(I,J-1)+T(I,J+1))
8 SEPS=SEPS+ABS(TEMPT-T(I,J))
IF(SEPS.GT.EPS) GO TO 5
IF(IC.LT.L)GO TO 3
WRITE(61,101)TI
WRITE(61,100)((T(I,J),I=1,N1),J=1,M1)
100 FORMAT(1H ,7(2X,F6.2))
101 FORMAT(1H0,6HTIME =,F9.6)
GO TO 9
6 END
NOTA: EL PROGRAMA ES UNA APLICACION QUIMICA
Valora esta pregunta


0