Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Расчетное задание / Пример отчета

.pdf
Скачиваний:
5
Добавлен:
16.05.2024
Размер:
999.23 Кб
Скачать

C

Решение исходного уравнения

CALL FPS2H (PRHS1, BRHS, COEFU, NX, NY, AX, BX, AY, BY, IBCTY,

&

IORDER, U, NX)

C Подготовка к квадратичной интерполяции

DO 100 I=1, NX

 

XDATA(I) = AX + (BX-AX)*FLOAT(I-1)/FLOAT(NX-1)

100

CONTINUE

DO 110 J=1, NY

 

YDATA(J) = AY + (BY-AY)*FLOAT(J-1)/FLOAT(NY-1)

110

CONTINUE

C

Вывод решения

 

IF (M .EQ. 300) THEN

 

IF (N .EQ. 300) THEN

 

CALL UMACH (2, NOUT)

 

WRITE(*,*)

 

WRITE (NOUT,'(32X,A)') 'Programm FPS2H'

 

WRITE(*,*)

 

WRITE (NOUT,'(8X,A,11X,A,11X,A,10X,A)') 'X', 'Y', 'U', 'Error'

 

DO 130 J=1, NYTABL

 

 

DO 120 I=1, NXTABL

 

 

X = AX + (BX-AX)*FLOAT(I-1)/FLOAT(NXTABL-1)

 

 

Y = AY + (BY-AY)*FLOAT(J-1)/FLOAT(NYTABL-1)

 

 

UTABL = QD2VL(X,Y,NX,XDATA,NY,YDATA,U,NX,.FALSE.)

 

 

TRUE = SIN(X+2.*Y) + EXP(2.*X+3.*Y)

 

 

ERROR = TRUE - UTABL

 

 

WRITE (NOUT,'(4F12.4)') X, Y, UTABL, ERROR

120

 

CONTINUE

130

 

CONTINUE

 

END IF

 

END IF

 

END

 

C

 

 

 

REAL FUNCTION PRHS1 (X, Y)

 

REAL

X, Y

C

 

 

 

REAL

EXP, SIN

 

INTRINSIC EXP, SIN

C

Правая часть уравнения

 

PRHS1 = -2.*SIN(X+2.*Y) + 16.*EXP(2.*X+3.*Y)

 

RETURN

 

 

END

 

C

 

 

 

REAL FUNCTION BRHS (ISIDE, X, Y)

 

INTEGER

ISIDE

 

REAL

X, Y

C

 

 

 

REAL

COS, EXP, SIN

 

INTRINSIC COS, EXP, SIN

C

Граничные условия

 

IF (ISIDE .EQ. 2) THEN

 

BRHS = 2.*COS(X+2.*Y) + 3.*EXP(2.*X+3.*Y)

ELSE

BRHS = SIN(X+2.*Y) + EXP(2.*X+3.*Y)

END IF

RETURN

END

11

7. Листинг программы с двойной точностью

INTEGER

LDU, MDU, NX, NXTABL, NY, NYTABL, NZ, NZTABL

PARAMETER (NX=5, NXTABL=4, NY=9, NYTABL=3, NZ=9,

&

NZTABL=3, LDU=NX, MDU=NY)

C

 

INTEGER

I, IBCTY(6), IORDER, J, K, NOUT, M, N

REAL(8)

AX, AY, AZ, BRHS2, BX, BY, BZ, COEFU, DFLOAT,

&PRHS, DQD3VL, U(LDU,MDU,NZ), UTABL, X, ERROR,

&TRUE, XDATA(NX), Y, YDATA(NY), Z, ZDATA(NZ),

&A(7000,70000), B(7000,7000)

REAL(8) T, Timef

INTRINSIC DFLOAT

EXTERNAL BRHS2, DFPS3H, PRHS, DQD3VL, UMACH

C

Задаем область интегрирования (прямоугольный параллелепипед)

 

T=Timef()

 

CALL RANDOM_NUMBER(A)

 

CALL RANDOM_NUMBER(B)

 

DO 30 M=1, 300

 

DO 140 N=1, 300

 

AX = 0.0D0

 

BX = 0.125D0

 

AY = 0.0D0

 

BY = 0.25D0

 

AZ = 0.0D0

 

BZ = 0.25D0

C

Устанавливает тип граничных условий

 

IBCTY(1) = 1

 

IBCTY(2) = 1

 

IBCTY(3) = 1

 

IBCTY(4) = 1

 

IBCTY(5) = 2

 

IBCTY(6) = 1

C

Коэффициент перед U

 

COEFU = 10000.0D0*A(M,N)*B(M,N)

C

Порядок точности аппроксимации

 

IORDER = 4

C

Решение исходного уравнения

 

CALL DFPS3H (PRHS, BRHS2, COEFU, NX, NY, NZ, AX, BX, AY, BY,

&

AZ, BZ, IBCTY, IORDER, U, LDU, MDU)

C

Подготовка к квадратичной интерполяции

 

DO 40 I=1, NX

 

XDATA(I) = AX + (BX-AX)*DFLOAT(I-1)/DFLOAT(NX-1)

40

CONTINUE

 

DO 50 J=1, NY

 

YDATA(J) = AY + (BY-AY)*DFLOAT(J-1)/DFLOAT(NY-1)

50

CONTINUE

 

DO 60 K=1, NZ

 

ZDATA(K) = AZ + (BZ-AZ)*DFLOAT(K-1)/DFLOAT(NZ-1)

60

CONTINUE

 

CALL PRIM(A,B,M,N)

140

CONTINUE

30

CONTINUE

C

Вывод решения

 

CALL UMACH (2, NOUT)

 

WRITE (NOUT,'(32X,A)') 'Programm DFPS3H'

WRITE(*,*)

WRITE (NOUT,'(8X,5(A,11X))') 'X', 'Y', 'Z', 'U', 'Error' DO 90 K=1, NZTABL

DO 80 J=1, NYTABL

DO 70 I=1, NXTABL

X = AX + (BX-AX)*DFLOAT(I-1)/DFLOAT(NXTABL-1)

Y = AY + (BY-AY)*DFLOAT(J-1)/DFLOAT(NYTABL-1)

12

 

 

Z = AZ + (BZ-AZ)*DFLOAT(K-1)/DFLOAT(NZTABL-1)

 

 

UTABL = DQD3VL(X,Y,Z,NX,XDATA,NY,YDATA,NZ,ZDATA,U,

 

&

LDU,MDU,.FALSE.)

 

 

TRUE = DCOS(3.0D0*X+Y-2.0D0*Z) + DEXP(X-Z) + 1.0D0

 

 

ERROR = UTABL - TRUE

 

 

WRITE (NOUT,'(5F12.4)') X, Y, Z, UTABL, ERROR

70

 

CONTINUE

80

 

CONTINUE

90

 

CONTINUE

 

T=Timef()

 

Print *, 'Time: ', T

 

END

 

C

 

 

 

REAL(8) FUNCTION PRHS (X, Y, Z)

 

REAL(8)

X, Y, Z

C

 

 

 

REAL(8)

DCOS, DEXP

 

INTRINSIC DCOS, DEXP

C

Правая часть уравнения

 

PRHS = -4.0D0*DCOS(3.0D0*X+Y-2.0D0*Z) + 12D0*DEXP(X-Z) + 10.0D0

 

RETURN

 

 

END

 

C

 

 

 

REAL(8) FUNCTION BRHS2 (ISIDE, X, Y, Z)

 

INTEGER

ISIDE

 

REAL(8)

X, Y, Z

C

 

 

 

REAL(8)

DCOS, DEXP, DSIN

 

INTRINSIC DCOS, DEXP, DSIN

C

Граничные условия

 

IF (ISIDE .EQ. 5) THEN

 

BRHS2 = -2.0D0*DSIN(3.0D0*X+Y-2.0D0*Z) - DEXP(X-Z)

 

ELSE

 

 

BRHS2 = DCOS(3.0D0*X+Y-2.0D0*Z) + DEXP(X-Z) + 1.0D0

 

END IF

 

 

RETURN

 

 

END

 

C

Функция реализующая решение DFPS2H

 

REAL(8) FUNCTION PRIM(A,B,M,N)

 

INTEGER

NCVAL, NX, NXTABL, NY, NYTABL

 

PARAMETER (NCVAL=11, NX=17, NXTABL=5, NY=33, NYTABL=5)

C

 

 

 

INTEGER

I, IBCTY(4), IORDER, J, NOUT, M, N

 

REAL(8)

AX, AY, BRHS, BX, BY, COEFU, ERROR, DFLOAT, PRHS1,DQD2VL,

 

&

TRUE, U(NX,NY), UTABL, X, XDATA(NX), Y, YDATA(NY),

 

&

A(M,N), B(M,N)

 

INTRINSIC DFLOAT

 

EXTERNAL BRHS, DFPS2H, PRHS1, DQD2VL, UMACH

C

Задаем размеры прямоугольной области

 

AX = 0.0D0

 

BX = 0.25D0

 

AY = 0.0D0

 

BY = 0.50D0

C

Задаем тип граничных условий

 

IBCTY(1) = 1

 

IBCTY(2) = 2

 

IBCTY(3) = 1

 

IBCTY(4) = 1

C

Коэффициент перед U

 

COEFU = 1000.0D0/(A(M,N)*B(M,N))

C

Порядок точности аппроксимации

 

IORDER = 4

 

 

13

C

Решение исходного уравнения

CALL DFPS2H (PRHS1, BRHS, COEFU, NX, NY, AX, BX, AY, BY, IBCTY,

&

IORDER, U, NX)

C

Подготовка к квадратичной интерполяции

DO 100 I=1, NX

 

XDATA(I) = AX + (BX-AX)*DFLOAT(I-1)/DFLOAT(NX-1)

100

CONTINUE

DO 110 J=1, NY

 

YDATA(J) = AY + (BY-AY)*DFLOAT(J-1)/DFLOAT(NY-1)

110

CONTINUE

CВывод решения

IF (M .EQ. 300) THEN IF (N .EQ. 300) THEN

CALL UMACH (2, NOUT) WRITE(*,*)

WRITE (NOUT,'(32X,A)') 'Programm DFPS2H' WRITE(*,*)

 

 

WRITE (NOUT,'(8X,A,11X,A,11X,A,10X,A)') 'X', 'Y', 'U', 'Error'

 

 

DO 130 J=1, NYTABL

 

 

DO 120 I=1, NXTABL

 

 

X = AX + (BX-AX)*DFLOAT(I-1)/DFLOAT(NXTABL-1)

 

 

Y = AY + (BY-AY)*DFLOAT(J-1)/DFLOAT(NYTABL-1)

 

 

UTABL = DQD2VL(X,Y,NX,XDATA,NY,YDATA,U,NX,.FALSE.)

 

 

TRUE = DSIN(X+2.0D0*Y) + DEXP(2.0D0*X+3.0D0*Y)

 

 

ERROR = TRUE - UTABL

 

 

WRITE (NOUT,'(4F12.4)') X, Y, UTABL, ERROR

120

 

CONTINUE

130

 

CONTINUE

 

END IF

 

END IF

 

END

 

C

 

 

 

REAL(8) FUNCTION PRHS1 (X, Y)

 

REAL(8)

X, Y

C

 

 

 

REAL(8)

DEXP, DSIN

 

INTRINSIC DEXP, DSIN

C

Правая часть уравнения

 

PRHS1 = -2.0D0*DSIN(X+2.0D0*Y) + 16.0D0*DEXP(2.0D0*X+3.0D0*Y)

 

RETURN

 

 

END

 

C

 

 

 

REAL(8) FUNCTION BRHS (ISIDE, X, Y)

 

INTEGER

ISIDE

 

REAL(8)

X, Y

C

 

 

 

REAL(8)

DCOS, DEXP, DSIN

 

INTRINSIC DCOS, DEXP, DSIN

C

Граничные условия

 

IF (ISIDE .EQ. 2) THEN

 

BRHS = 2.0D0*DCOS(X+2.0D0*Y) + 3.D0*DEXP(2.0D0*X+3.0D0*Y)

ELSE

BRHS = DSIN(X+2.0D0*Y) + DEXP(2.0D0*X+3.0D0*Y)

END IF

RETURN

END

14

8. Результаты измерений

Расчет

Описание

 

Время, с

A

Расчет в режиме debug с одинарн

 

44.422

ой точностью

 

 

 

 

 

Расчет в оптимизированном режи

 

 

B

ме с одинарной точностью

 

43.687

 

 

 

 

 

 

 

 

Расчет в оптимизированном режи

 

 

C

ме c двойной точностью

 

48.797

 

 

 

 

 

 

 

43.750

 

 

 

43.688

 

 

 

43.672

 

 

 

43.734

 

 

 

43.672

 

 

 

43.625

 

 

 

43.719

 

 

 

43.765

 

Расчет на одном и том же

 

43.766

D

компьютере одной версии

 

43.750

программы с одинарной

 

43.719

 

 

 

точностью в оптимизированном

 

43.640

 

режиме

 

43.671

 

 

 

43.844

 

 

 

43.828

 

 

 

43.657

 

 

 

43.593

 

 

 

43.703

 

 

 

43.641

 

 

 

43.594

 

 

Частота

Время, с

Расчет

Описание

CPU,

 

 

 

ГГц*100

 

 

 

 

 

 

 

 

43.593

 

 

 

43.703

 

 

266

43.641

 

Расчет на компьютерах лаборато

 

43.594

 

 

43.672

 

рии с измененной частотой шины

 

 

 

42.594

 

276, 286, 296 соответственно

 

E

 

42.359

компьютеры с номерами 22, 23, 2

 

276

42.297

 

4. Рассчитывается

 

 

42.266

 

оптимизированная

 

 

 

42.188

 

версия программы одинарной

 

 

 

40.890

 

точности.

 

 

286

41.031

 

 

 

 

40.953

 

 

 

 

 

 

40.875

 

15

 

 

 

 

 

40.859

 

 

 

39.422

 

 

 

39.500

 

 

296

39.391

 

 

 

39.484

 

 

 

39.344

 

 

Число

 

Расчет

Описание

про-

Время, с

 

 

грамм

 

 

 

 

 

 

 

 

 

2

43.031

 

 

42.984

 

 

 

 

 

 

43.062

 

 

3

43.062

 

 

 

43.078

 

 

 

43.140

 

 

4

43.140

 

 

43.172

 

 

 

 

Моделирование параллельных

 

43.141

 

 

43.172

 

расчетов для Win для

 

 

 

43.109

 

оптимизированной версии

 

 

5

43.141

 

программы одинарной точности

F

 

63.235

 

 

 

 

63.250

 

 

 

 

 

 

43.157

 

 

 

43.172

 

 

 

63.360

 

 

6

63.313

 

 

 

63.344

 

 

 

63.234

 

 

 

 

 

Моделирование параллельных

 

82.531

 

расчетов для Win под Linux для

 

 

2

 

 

 

 

оптимизированной версии програ

 

 

 

90.766

 

ммы одинарной точности

 

 

 

 

16

9.Обработка результатов измерений.

Впроцессе работы была написана расчетная программа на языке высокого уровня

Fortran. Программа моделирует работу реальной расчетной программы ЯЭ. Она удовлетворяет задаче существенного заполнения RAM компьютера. Занимаемая оперативная память компьютера находится в диапазоне 300 400 Мб. Для правильной оптимизации расчетного оборудования и отражения специфики работы программ ЯЭ учебная программа считает не менее 40 сек.

Для определения времени работы, в программу был встроен счетчик, который включается перед началом основного расчета, и выключается после того, как будет найдено решение заданной системы процедур и расчет будет окончен. В конце программы организуется вывод на экран результатов и времени счета.

Тестирование Результаты:

A.Расчет в режиме debug с одинарной точностью. tdeb = 44.422 c

B.Расчет в оптимизированном режиме с одинарной точностью t1 = 43.687 с

C.Расчет в оптимизированном режиме c двойной точностью

t2 = 48.797 с

 

 

 

 

 

 

 

D. Расчет на одном и том же компьютере одной версии программы с

одинарной

точностью в оптимизированном режиме

 

 

 

 

T1 = 43.750 c

T7

= 43.719 c

T13 =43.671 c

T19 =43.641 c

T2 = 43.688 c

T8

=43.765 c

T14 =43.844 c

T20 =43.594 c

T3

= 43.672 c

T9

=43.766 c

T15

=43.828 c

 

 

T4

= 43.734 c

T10

=43.750 c

T16

=43.657 c

 

 

T5

= 43.672 c

T11

=43.719 c

T17

=43.593 c

 

 

T6

= 43.625 c

T12

=43.640 c

T18

=43.703 c

 

 

17

Статистические оценки:

 

 

 

 

yi - измерения времени, с

 

 

 

xi - номер измерения

 

 

 

 

 

 

 

 

 

 

43.

750

 

 

1

 

 

 

 

 

 

 

 

43.

688

 

 

2

 

 

 

43.

672

 

 

3

 

 

 

43.

 

 

 

4

 

 

 

734

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

43.

672

 

 

5

 

 

 

43.

 

 

 

6

 

 

 

625

 

 

 

 

43.

 

 

7

 

 

719

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

43.

765

 

 

8

 

 

 

43.

 

 

 

9

 

 

 

766

 

 

 

 

43.

 

 

 

 

 

 

 

 

 

 

yi

 

750

xi

 

10

 

43.

719 с

 

11

 

 

 

 

43.

 

 

 

 

 

 

 

640

 

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

43.

671

 

 

13

 

 

43.

 

 

 

 

 

 

 

844

 

 

14

 

43.

 

 

 

 

 

 

828

 

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

43.

657

 

 

16

 

 

43.

 

 

 

 

 

 

 

593

 

 

17

 

43.

 

 

 

 

 

 

 

 

 

 

 

 

 

703

 

 

18

 

 

43.

641

 

 

19

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

43.

594

 

 

20

Обработка результатов измерений

1. Проверим наличие линейного изменения не ранжированных данных. Проведем аппроксимацию по методу наименьших квадратов.

x - обозначение оси, по которой откладываются номера измерений

Коэффициенты линейного уравнения

A intercept (xi yi) 43.729

 

B slope(xi yi) 2.611 10 3

Аппроксимирующая прямая

y(x) A B x

 

x 0 20

i 0 19

18

45

44.8

44.6

44.4

44.2

44

4

3.8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y(x) 43.6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yii 43.4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

43.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сек

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

43

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

42.8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

42.6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

42.4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

42.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

420

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

 

 

 

 

 

 

 

 

 

 

 

x xii

 

 

 

 

 

 

 

 

 

 

Рис. 3 Аппроксимация по МНК

2. Проведем Ранжирование статистических данный в порядке возрастания

n 20

 

 

 

 

sor (y x)

for j

1 n 1

 

 

for

i 1 n

j

 

 

if

yi 1 yi

xi sor (yi xi)

 

 

 

 

 

 

b yi

 

yi sort(yi)

 

 

yi yi 1

 

 

 

 

 

yi 1 b

 

 

 

c xi

 

 

 

 

xi xi 1

 

 

 

xi 1 c

 

 

x

 

 

 

 

 

 

 

19

 

 

0

 

 

 

0

 

 

0

43.593

 

 

0

17

 

 

1

43.594

 

 

1

20

 

 

2

43.625

 

 

2

6

 

 

3

43.64

 

 

3

12

 

 

4

43.641

 

 

4

19

 

 

5

43.657

 

 

5

16

 

 

6

43.671

 

 

6

13

 

 

7

43.672

 

 

7

3

 

 

8

43.672

 

 

8

5

 

yi

9

43.688

с

xi

9

2

 

 

 

 

 

10

43.703

 

 

10

18

 

 

11

43.719

 

 

11

7

 

 

12

43.719

 

 

12

11

 

 

13

43.734

 

 

13

4

 

 

14

43.75

 

 

14

1

 

 

15

43.75

 

 

15

10

 

 

16

43.765

 

 

16

8

 

 

17

43.766

 

 

17

9

 

 

18

43.828

 

 

18

15

 

 

19

43.844

 

 

19

14

 

 

 

 

 

 

 

 

 

3. Определение основных характеристик выборок: среднего арифметического, середины размаха, медианы, моды.

- Среднее арифметическое

yiср mean(yi)

43.702

 

с

 

 

 

 

- Середина размаха

yiразм

max(yi) min(yi)

43.719

с

 

2

 

 

 

 

 

 

 

 

 

 

 

 

- Медиана

 

yi9 yi10

 

 

 

 

 

 

 

 

 

 

 

 

 

yiмед

2

 

 

43.696

с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. Построим относительные частотные распределения (гистограммы) для всех выборок, соблюдая принцип разбиения на интервалы:

-Число интервалов

-Число интервалов (округлили до целого)

-Расстояние между интервалами

 

 

 

s(yi )

for j

0 5

 

 

sj

min(yi) if j

 

0

 

 

 

 

 

 

 

sj

sj 1 otherwise

 

 

 

s

 

 

 

 

 

 

 

m 1 3.2log(20) 5.163 m round (m) 5

yi max(yi) min(yi) 0.05 m

20

Соседние файлы в папке Расчетное задание