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

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

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

МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

Кафедра АЭС

Отчет

По типовому расчету по курсу

«Информационные и сетевые технологии ядерной энергетики»

Студент: Запорожец М.В.

Группа: ТФ-12-07

Преподаватель: Воробьев Ю.Б.

Москва 2011 г.

Содержание

1.Цель работы……………………………….…………….…………….……………….3

2.Исследование производительности……………….………….…..………………….3

3.GSL…………………………………………………………………………………....3

4.Подпрограмма FPS2H…………………………………………………………………..3

5.Подпрограмма FPS3H………………………………………………….…………………….6

6.Листинг программы с одинарной точностью…….…….………….………….…….9

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

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

9.Обработка результатов измерений………………………………………………..…17 A. Расчет в режиме debug с одинарной точностью………………………………...17 B. Расчет в оптимизированном режиме с одинарной точностью……….…..…….17 C. Расчет в оптимизированном режиме c двойной точностью………………....…17 D. Расчет на одном и том же компьютере одной версии программы с

одинарной точностью в оптимизированном режиме………..….……….……..……17

E. Расчет на компьютерах лаборатории с измененной частотой шины……..…….24

F. Моделирование параллельных расчетов….…….……….……….…………….….25

10.Расчет выделенной памяти…………………………………………………………….27

11.Вывод…………………………………………………………………….……….…….27

12.Список литературы………………………………………………………………..……29

2

1. Цель работы.

Исследовать производительность персональных компьютеров при проведении научно-

технических расчетов в области ЯЭ с помощью тестовой программы, разработанной в среде программирования Visual Fortran с использованием математической библиотеки

GSL.

2. Исследование производительности Процессы, происходящие на современных энергетических установках, таких как

АЭС, можно описать математическими уравнениями, однако для их решения необходимо использовать достаточно производительные ЭВМ, но даже с их помощью процесс поиска решения может занимать достаточно длительное время. Данная программа является демонстрацией применения библиотеки GSL для решения уравнений Пуассона и Гельмгольца.

Время выполнения данной программы относительно велико, выполняя эту программу на ЭВМ различных типов, можно сделать вывод, какой тип ЭВМ более всего подходит для выполнения ресурсоемких инженерных расчетов.

3. GSL

GSL – это библиотека математических и статистических процедур.

Математические процедуры разделены на две части: основную и содержащую специальные функции, не включенные в состав встроенных функций Фортрана.

Подпрограммы FPS2H и FPS3H решают уравнения Пуассона или Гельмгольца в двумерной прямоугольной области и трехмерной прямоугольной области соответственно,

используя быстрый пуассоновский решатель, основанный на конечно-разностной схеме на однородной сетке.

4. Подпрограмма FPS2H

CALL FPS2H(prhs, brhs, coefu, nx, ny, ax, bx, ay, by, ibcty, iorder, u, Ldu)

Параметры подпрограммы FPS2H:

Пользовательский функции: prhs, brhs.

Входные: coefu, nx,ny, ax, bx, ay, by, ibcty, iorder, Ldu.

Выходной: u

Prhs – пользовательская функция выполняющая оценку правой части уравнения. Имеет

вызов:

result = prhs(x, y)

Параметры функции prhs:

x, y – соответственной x- и y-координаты области; являются входными.

3

Brhs – пользовательская функция, выполняющая оценку граничных условий правой части уравнения. Имеет вызов:

resul = brhs(iside, x, y)

Параметры функции brhs:

iside - номер стороны; см. ниже описание параметра ibcty.

х, у - соответственно х- и y-координаты области.

Все параметры функции brhs являются входными.

coefu - значение коэффициента при и в решаемом дифференциальном уравнении.

nx, ny - соответственно число линий сетки по осям x и y. Значения nx и ny не могут быть меньше четырех.

ах, bx - соответственно левая и правая х-координаты области интегрирования.

ay, by – соответственно нижняя и верхняя y-координаты области интегрирования.

ibcty - массив размера 4, означающий тип граничных условий на каждой стороне области или указывающий на периодическое решение. Стороны имеют номера (см.

также рис. 1):

1- правая (х = bx);

2- нижняя (у = ау);

3- левая (х = ах);

4- верхняя (у = ).

Рис. 1. Стороны области интегрирования Существует 3 типа граничных условий:

1)задаются значения u (Дирихле);

2)задаются значения du / dх на сторонах 1 и/или 3 и du / dy на сторонах 2 и/или 4 (Нейман);

3)периодический.

4

iorder - порядок точности конечно-разностной аппроксимации. Может быть равен 2 или 4. Обычно задают iorder = 4.

и - массив формы (Ldu, пу), содержащий решение в пххпу точках сетки.

Ldu - ведущий размер массива и; обычно Ldu ~ пх.

Автоматически для решения предоставляется память:

(пх + 2)(пу + 2) + (дк + 1 )(пу + 1 )(iorder - 2)12 + 6(пх + пу) + пх/2 + 16 байт в случае

FPS2H;

2(пх + 2){пу + 2) + (пх + \)(пу + i )(iorder - 2) + 12(пх + пу) + wc + 32 байт в случае

DFPS2H.

Дополнительные параметры подпрограммы F2S2H:

uwork - рабочий массив размера (пх + 2)(пу + 2). Если размер массива и достаточно большой, то u и uwork могут быть одним массивом.

work - рабочий массив размера (пх + 1)(пу + 1 )(iorder - 2)/2 + 6(пх + пу) + nх/2+ 16.

Комментарии:

-Сеточные расстояния - это (в случае равномерной сетки) расстояния между линиями сетки. Вычисляются по формулам hx = (bxах)/(пх - 1) и hy = (by - ay)/(ny - 1). Сеточные расстояния по х и у должны быть одинаковыми (hx = hy). Чтобы ускорить быстрое преобразование Фурье, число nх - 1 должно быть произведением малых простых чисел, например степенью числа 2. Хорошим выбором для пх являются числа 17,33 и 65.

-Если coefu почти равен собственному значению лаплассиана с однородными граничными условиями, то решение может содержать большие ошибки.

Описание:

Пусть с = coefu, ах = ах, bx = bх, ау = ay, by = by, пх = пх и пу = пу. Подпрограмма FPS2H

основана на коде HFFT2D. Она находит решение уравнения:

2u 2u cu p(x, y)

x2 y2

в прямоугольной области [ax ,bx ] [ay ,by ] с заданными пользователем начальными условиями

(Дирихле, Неймана или периодическими). Стороны области нумеруются по часовой стрелке (см.

рис. 1).

Когда с = 0 и заданы граничные условия Неймана или периодические, то к решению может быть добавлена любая константа. В этом случае возвращается решение, имеющее минимальную

- норму. Для получения решения используется конечно-разностная аппроксимация второго или четвертого порядка точности. Получаемая в результате аппроксимации линейная система

5

алгебраических уравнений решается с применением техники быстрых преобразований Фурье.

Алгоритм существенно ускоряется, если тx является произведением небольших простых чисел. В

этом случае время поиска решения пропорционально nx ny log2 nx .

Если оценка р(х,у) недорога, то временные различия при работе с iorder = 2 и iorder = 4

незначительны.

5. Подпрограмма FPS3H

Решает уравнения Пуассона или Гелъмгольца в трехмерном прямоугольном параллелепипеде, используя быстрый пуассоновский решатель, основанный на конечноразностной схеме на однородной сетке. Имеет вызов

CALL FPS3H(prhs, brhs, coefu, nx, ny, nz, ax, bx, ay, by, az, bz, ibcty, iorder, u, Ldu, mdu)

Параметры подпрограммы FPS3H:

Пользовательские функции: prhs, brhs.

Входные: coefu, nx, ny, nz, ax, bx, ay, by, az, bz, ibcty, iorder, Ldu, mdu. Выходной: и.

prhs - пользовательская функция, выполняющая оценку правой части уравнения. Имеет вызов

result =prhs(x, у, z)

Параметры функции prhs:

x,y,z - соответственно х-, у- и z- координаты области; являются входными.

brhs - пользовательская функция, выполняющая оценку граничных условий правой части уравнения. Имеет вызов

resul = brhs (iside, х, у, z)

Параметры функции brhs:

iside - номер стороны;

х, у, z - соответственно х-, у- и z- координаты области.

Все параметры функции brhs являются входными.

coefu - значение коэффициента при и в решаемом дифференциальном уравнении,

nx, ny, nz - соответственно число линий сетки по осям х, у и z. Значения nх, nу и nz не могут быть меньше четырех.

6

ах,bx-соответственно левая и правая х-координаты области интегрирования.

ay, by - соответственно нижняя и верхняя y-координаты области интегрирования. az, bz - соответственно меньшая и большая z-координаты области интегрирования.

ibcty - массив размера 4, означающий тип граничных условий на каждой стороне области или указывающий на периодическое решение. Стороны имеют номера:

1- правая (х = bх);

2нижняя (у = ау);

3левая (х = ах);

4верхняя ( у = by);

5передняя (z = bz);

6задняя (z = az).

 

Рис. 2. Стороны области интегрирования

Существует 3 типа граничных условий:

 

1 - задаются значения u (Дирихле);

 

2 - задаются значения d u / d x н а сторонах 1 и/или 3, du/dy на сторонах 2 и/или 4 и

 

du/dz на сторонах 5 и/или 6 (Нейман);

 

периодический.

iorder - порядок точности конечно-разностной аппроксимации. Может быть равен 2 или 4. Обычно задают iorder = 4.

и - массив формы (Ldu, mdu, nz), содержащий решение в nx ny nz точках сетки. Ldu - ведущий размер массива и; обычно Ldu = пх.

mdu - средний размер массива и; обычно mdu = пу. Автоматически для решения предоставляется память:

(пх + 2)(пу + 2)(nz + 2) + (nх + 1)(ny + 1)(nz + 1)(iorder - 2)/2 + 2(пх*пу + nx*nz+ + ny*nz) + 2(пх + пу + 1)+ MАХ(2пх*пу, 2пх + ny + 4nz + (nx + nz)/2 + 29) байт в случае FPS3H;

7

2(nx + 2 )(пу + 2)(nz + 2) + (пх + 1 )(пу + l)(nz + 1 )(iorder - 2) + 4(пх*пу + nx*nz + ny*nz) + 4(пх +

пу + 1) + 2МАХ(2nх*nу, 2nх+ ny + 4nz + (nх + nz)/2 + 29) байт в случае DFPS3H;

uwork - рабочий массив размера (nх + 2 )(пу + 2)(nz + 2). Если размер массива и достаточно

большой, то и и uwork могут быть одним массивом.

work - рабочий массив размера (nx + 1 )(пу + 1 )(nz + 1 )(iorder - 2)/2 + 2(пх*пу + nx*nz + ny*nz) +

2(nx + ny + 1)+ МАХ(2nх*nу, 2nx + ny + 4nz + (nx + nz)/2 + 29).

Сеточные расстояния вычисляются по формулам

hx = (bx - ах)/(пх - 1), hy = (by - ау)/(пу - 1) и hz = (bz - az)/(nz - 1)

Сеточные расстояния по х, у и z должны быть одинаковыми (hx = hy = hz). Чтобы ускорить быстрое преобразование Фурье, числа nx - 1 и nz - 1 должны быть произведениями малых простых чисел. Хорошим выбором для nх и nz являются числа 17,33 и 65.

Если -coefu почти равен собственному значению лаплассиана с однородными граничными условиями, то решение может содержать большие ошибки.

Описание:

Пусть с = coefu, ах = ах, bx = bx, ау = ay, by = by, аz = az, bz = bz, пх = nx, пу = пу и пz = nz.

Подпрограмма FPS3H основана на коде HFFT3D. Она находит решение уравнения

2u

 

2u

 

2u

cu p(x, y, z)

x2

y2

z2

 

 

 

в области [ax ,bx ] [ay ,by ] [az ,bz ] c заданными пользователем начальными условиями (Дирихле,

Неймана или периодическими). Стороны области нумеруются, как показано на рис. 2.

Когда c = 0 и заданы граничные условия Неймана или периодические, то к решению может быть добавлена любая константа. В этом случае возвращается решение, имеющее минимальную

-норму. Для получения решения используется конечно-разностная аппроксимация второго или четвертого порядка точности. Получаемая в результате аппроксимации линейная система алгебраических уравнений решается с применением техники быстрых преобразований Фурье.

Алгоритм существенно ускоряется, если пх - 1 и nz - 1 являются произведениями небольших простых чисел. В этом случае время поиска решения пропорционально

nx ny nz (log22 nx log22 nz )

Если оценка р(х, у, z) недорога, то временные различия при работе с iorder = 2 и iorder = 4

незначительны.

8

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

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

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

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

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

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

REAL(8) T, Timef

INTRINSIC FLOAT

EXTERNAL BRHS2, FPS3H, PRHS, QD3VL, UMACH

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

 

T=Timef()

 

CALL RANDOM_NUMBER(A)

 

CALL RANDOM_NUMBER(B)

 

DO 30 M=1, 300

 

DO 140 N=1, 300

 

AX = 0.0

 

BX = 0.125

 

AY = 0.0

 

BY = 0.25

 

AZ = 0.0

 

BZ = 0.25

C

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

 

IBCTY(1) = 1

 

IBCTY(2) = 1

 

IBCTY(3) = 1

 

IBCTY(4) = 1

 

IBCTY(5) = 2

 

IBCTY(6) = 1

C

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

 

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

C

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

 

IORDER = 4

C

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

 

CALL FPS3H (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)*FLOAT(I-1)/FLOAT(NX-1)

40

CONTINUE

 

DO 50 J=1, NY

 

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

50

CONTINUE

 

DO 60 K=1, NZ

 

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

60

CONTINUE

 

CALL PRIM(A,B,M,N)

140

CONTINUE

30

CONTINUE

C

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

 

CALL UMACH (2, NOUT)

 

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

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)*FLOAT(I-1)/FLOAT(NXTABL-1)

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

9

 

 

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

 

 

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

 

&

LDU,MDU,.FALSE.)

 

 

TRUE = COS(3.0*X+Y-2.0*Z) + EXP(X-Z) + 1.0

 

 

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 FUNCTION PRHS (X, Y, Z)

 

REAL

X, Y, Z

C

 

 

 

REAL

COS, EXP

 

INTRINSIC COS, EXP

C

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

 

PRHS = -4.0*COS(3.0*X+Y-2.0*Z) + 12*EXP(X-Z) + 10.0

 

RETURN

 

 

END

 

C

 

 

 

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

 

INTEGER

ISIDE

 

REAL

X, Y, Z

C

 

 

 

REAL

COS, EXP, SIN

 

INTRINSIC COS, EXP, SIN

C

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

 

IF (ISIDE .EQ. 5) THEN

 

BRHS2 = -2.0*SIN(3.0*X+Y-2.0*Z) - EXP(X-Z)

 

ELSE

 

 

BRHS2 = COS(3.0*X+Y-2.0*Z) + EXP(X-Z) + 1.0

 

END IF

 

 

RETURN

 

 

END

 

C

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

 

REAL 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

AX, AY, BRHS, BX, BY, COEFU, ERROR, FLOAT, PRHS1,QD2VL,

 

&

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

 

&

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

 

INTRINSIC FLOAT

EXTERNAL BRHS, FPS2H, PRHS1, QD2VL, UMACH

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

AX = 0.0

BX = 0.25

AY = 0.0

BY = 0.50

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

IBCTY(1) = 1

IBCTY(2) = 2

IBCTY(3) = 1

IBCTY(4) = 1

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

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

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

IORDER = 4

10

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