Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2010, 22:03   #1
Bezo
Пользователь
 
Регистрация: 12.06.2010
Сообщений: 16
По умолчанию

Здраствуйте напишите пожалуйста текст программы в fortran по теме "Метод Якоби" или "метод релаксации".За рание спосибо.

Вот нашел листинг но он почемуто незапускаеться,Подскажите как правельно етот текст вводить
Код:
1               PROGRAM EXAMPLE

2               INCLUDE 'mpif.h'

3               PARAMETER(NDIM=1500)

4               COMMON/main/ A(NDIM,NDIM)      

5               COMMON/first/ b(NDIM)      

6               REAL*8   A,b

7               INTEGER  my_id,np,ierr,comm

8               INTEGER  n

9               OPEN(UNIT=19,FILE='iter.dat',ACCESS='APPEND')

10              OPEN(UNIT=20,FILE='iter.rez')

11              CALL MPI_Init(ierr)

12              comm=MPI_COMM_WORLD

13              CALL MPI_Comm_rank(comm,my_id,ierr)

14              CALL MPI_Comm_size(comm,np,ierr)

15              IF (my_id.eq.0) THEN 

16                Write (*,*) 'Process ',my_id,' of ',np

17                Write (19,*) 'Process ',my_id,' of ',np

18              END IF

19       2002   FORMAT('Dimension ','|','Iteration ','|',

20            *        'Time      ','|','EPS       ','|','MFLOPS')

21              DO n=100,1500,100

22                CALL matgen(n)

23                CALL iteration(n,np,my_id,comm)

24              END DO

25              CALL MPI_Finalize(ierr)

26              CLOSE(19)       

27              CLOSE(20)              

28              STOP

29              END

30              SUBROUTINE iteration(n,np,my_id,comm)

31              IMPLICIT REAL*8 (A-D)

32              INCLUDE 'mpif.h'

33              PARAMETER(NDIM=1500)

34              COMMON/BLK 10/ x(NDIM)

35              COMMON/BLK 11/ xn(NDIM)      

36              COMMON/BLK 12/ xn_temp(NDIM)      

37              COMMON/main/ A (NDIM,NDIM)      

38              COMMON/first/ b (NDIM)      

39              INTEGER  my_id,np,ierr,comm

40              INTEGER  n,i,j,k,iter,shag

41              REAL*8   A, b

42              REAL*8   x,xn,xn_temp

43              REAL*8   summa,e,eps,ar,epsmax,mflops

44              DOUBLE PRECISION t

45       2001   FORMAT(I10,'|',I10,'|',F10.5,'|',F10.8,'|',F10.6)

46              e=0.0000001d0

47              shag=n/np

48              DO i=1,n

49                ar=A(i,i)

50                b(i)=b(i)/ar

51                xn(i)=b(i)

52                xn_temp(i)=0

53              END DO

54              ii=shag*my_id

55              DO i=1,shag

56                ar=A(ii+i,ii+i)

57                DO j=1,n       

58                  A(ii+i,j)=-A(ii+i,j)/ar

59                END DO        

60                A(ii+i,ii+i)=1

61              END DO

62              t=MPI_Wtime()

63              iter=0

64       13     CONTINUE

65              iter=iter+1

66              DO i=1,shag

67                summa=b(ii+i)

68                DO j=1,ii+i-1

69                  summa=summa+xn(j)*A(ii+i,j)

70                END DO

71                DO j=ii+i+1,n

72                  summa=summa+xn(j)*A(ii+i,j)

73                END DO

74                x(i)=summa

75              END DO

76              CALL MPI_Allgather(x(1),shag,MPI_REAL8,xn(1),shag,

77            *      MPI_REAL8,comm,ierr)

78              eps=0         

79              DO i=1,shag

80                IF(DABS(xn(ii+i)-xn_temp(ii+i)).gt.eps) THEN

81                  eps=DABS(xn(ii+i)-xn_temp(ii+i))

82                END IF 

83              END DO

84              DO i=1,n

85                xn_temp(i)=xn(i)

86              END DO

87              CALL MPI_Allreduce(eps,epsmax,1,MPI_REAL8,

88            *      MPI_MAX,comm,ierr)

89              IF (e.le.epsmax) GOTO 13

90              t=MPI_Wtime()-t

91              IF (my_id.eq.0) THEN 

92                DO i=1,n

93                  write (20,*) 'x',i,'= ',xn(i)   

94                  b(i)=xn(i)      

95                END DO

96                mflops=(3*n*(n-1)*iter)/(t*1000000)

97                Write (*,2001) n,iter,t,epsmax,mflops

98                Write (19,2001) n,iter,t,epsmax,mflops

99              END IF

100         RETURN

101         END

Последний раз редактировалось Stilet; 14.06.2010 в 10:19.
Bezo вне форума Ответить с цитированием
Старый 13.06.2010, 18:59   #2
Serebro
FORTRAN programmer
Форумчанин
 
Регистрация: 08.12.2009
Сообщений: 153
По умолчанию

Это не вся программа.
Serebro вне форума Ответить с цитированием
Старый 14.06.2010, 13:01   #3
Bezo
Пользователь
 
Регистрация: 12.06.2010
Сообщений: 16
По умолчанию

Напишите кто знает продолжение
Bezo вне форума Ответить с цитированием
Старый 15.06.2010, 15:47   #4
Bezo
Пользователь
 
Регистрация: 12.06.2010
Сообщений: 16
По умолчанию

UP)))))))))))))))))))))
Bezo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Fortran Alexcool Помощь студентам 12 07.01.2010 21:47
fortran Aivar Помощь студентам 1 07.10.2008 22:13