Визуализация инженерных и научных расчетов
Анализ средств визуализации. Разработка программы-расширения для визуализатора инженерных и научных расчетов Compaq Array Visualizer на языке Фортран. Оценка экономической эффективности и конкурентоспособности созданного программного обеспечения на рынке.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 10.09.2010 |
Размер файла | 335,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Монитор SK-3142 - K1=4 шт. - W1=150 Вт
ЭВМ IBM PC/AT - K2=4 шт. - W2=250 Вт
5. Количество работающих: n = 4.
При расчете будем исходить из требований санитарно-профилактических норм, предъявляемых к помещениям типа дисплейного класса.
Для одного человека необходимо L'=30м3/ч воздуха. Для удаления тепла выделенного аппаратурой тоже необходим воздухообмен.
Исходя из количества работающих, необходим следующий воздухообмен
L1 = n * L' = 4 * 20 = 120 м3/ч.
Для расчета воздухообмена по теплоизбыткам используется следующая формула:
где:
Qя - явно выделяемое тепло в помещении в Дж/ч;
p - плотность воздуха - 1,2 кг/м3;
c - теплоемкость воздуха - 1 кДж/кг К;
tух - температура воздуха, уходящего из помещения;
tпр - температура воздуха, подаваемого в помещение.
tух обычно определяется по следующей формуле:
tух=tрз + t(H-L) ,
где
tрз - температура в рабочей зоне;
H - высота от пола до центра вытяжного отверстия;
t - температурный градиент (0,5 - 1,5 °C/м);
L - высота от пола до рабочей зоны.
Избыточное тепло выделяемое аппаратурой:
Qа = 3600*(W1*K1 + W2*K2) =
= 3600*(4*150+4*250) =
= 3600*1600 Дж/ч = 5760 кДж/ч
Избыточное тепло выделяемое людьми:
Qл = 4 чел * 355 кДж/ч = 1420 кДж/ч.
Явно выделяющееся избыточное тепло:
Qя = Qа + Qл = 5760 + 1420 = 7180 кДж/ч.
Температура удаляемого воздуха:
tух = 22 oC+1.5 ( 2.2-1 ) = 24 °C.
Пусть температура поступающего воздуха
tп=20 °C.
Тогда
Таким образом получаем, что система воздухообмена должна обеспечивать собственную производительность 1496 м3/ч для поддержания нормального микроклимата, при обеспечении кондиционером температура поступающего воздуха не более 20 °С.
Заключение
В данном разделе проведен анализ нормативов по освещенности, защите от шума и вибрации, электро и пожаробезопасности, защите от излучений, психофизиологических факторов при работе с персональными компьютерами, нормативов помещений дисплейных классов. Так же произведен расчет воздухообмена для дисплейного класса кафедры, который показал что при работе четырех человек в помещении объемом 81 кубометр необходим воздухообмен примерно 1500м3/ч.
Выводы по дипломному проекту
В процессе дипломного проектирования была создана программа - расширение для визуализатора инженерных и научных расчетов Compaq Array Visualizer. Эта программа написана на языке Фортран и рассчитана на визуализацию расчетов полупроводниковых приборов, хотя может быть использована для визуализации любых инженерных и научных расчетов. Программа согласуется с инженерными программами на языках C++ и Fortran и может быть использована как на этапе отладки, так и на этапе демонстрации. Режим сценариев (скриптов) позволяет проводить презентации.
Программа, в совокупности с визуализатором Compaq Array Visualizer показала индекс конкурентоспособности по отношению к САПР Cadence в нише визуализации Kкп=20, в основном из-за малой цены.
Литература
1. Братеньев О.В. Современный Фортран. Москва. Диалог-МИФИ, 1998г.
2. Братеньев О.В. Фортран для профессионалов. Математическая библиотека IMSL. Москва. Диалог-МИФИ. 2000г.
3. Шелеств В.Д. Программирование. Санкт-Петербург. BHV. 2001г.
4. Самарский А.А. Введение в численные методы.
5. Боресков А.В. Шикин Е.В. Шикина Г.Е. Компьютерная графика: первое знакомство. Москва. Финансы и статистика. 1996г.
6. Константинова Л.А. Ларионов Н.М. Писеев В.М. Методические указания по выполнению раздела “Охрана Труда” в дипломном проекте для студентов МИЭТ. Москва. МИЭТ. 1988г.
7. Багиев Г.Л., Тарасевич В.М., Х. Анн “Маркетинг: учебник”. Москва. “Экономика”. 2001г.
Приложение 1.
Листинг программы console
program Diplom_console
use AVDef
use DFLib
use AVViewer
!Block_1
implicit none
integer :: lbi=1,ubi,lbj=1,ubj,lbk=1,ubk,i,j,k,status,hav
integer(2) :: plx, ply, vis, pld
integer(4) :: delay
real(4) :: hx,hy,ii,jj
real(4), allocatable :: TDMas(:,:,:)
real(4), allocatable :: VMas(:,:)
!DEC$ATTRIBUTES array_visualizer :: VMas
real(4), allocatable :: PXMas(:)
!DEC$ATTRIBUTES array_visualizer :: PXMas
real(4), allocatable :: PYMas(:)
!DEC$ATTRIBUTES array_visualizer :: PYMas
!Sclaes
real(4), allocatable :: XAxis (:)
!DEC$ATTRIBUTES array_visualizer :: XAxis
real(4), allocatable :: YAxis (:)
!DEC$ATTRIBUTES array_visualizer :: YAxis
character (8) :: com
character (70) :: preFile, txtFile
character (20) :: xname, yname, zname
!Block_2
!reading filenames
call Help()
1 write (*,'(a\)') 'Enter name of file with presets values >'
read *,preFile
write (*,'(a\)') 'Enter name of file with matrix values >'
read *,txtFile
!default values
hx=1
hy=1
xname='X'
yname='Y'
zname='Z'
!reading presets
98 format (E4.2)
open (3,FILE=trim(preFile))
read(3,'(I2)', END=2) ubk,ubi,ubj
read(3,98, END=2) hx,hy
read(3,'(a)', END=2) xname
read(3,'(a)', END=2) yname
read(3,'(a)', END=2) zname
2 close (3)
!allocate arrays
allocate (TDMas(lbk:ubk,lbi:ubi,lbj:ubj))
allocate (VMas(lbi:ubi,lbj:ubj))
allocate (PXMas(lbj:ubj))
allocate (PYMas(lbi:ubi))
allocate (XAxis(lbj:ubj))
allocate (YAxis(lbi:ubi))
!set axis scales
do j=lbj,ubj
XAxis(j) = real(j)*hx
end do
do i=lbi,ubi
YAxis(i) = real(i)*hy
end do
!reading values
99 format (E12.5)
open (3,FILE=trim(txtFile))
do k=lbk,ubk
do i=lbi,ubi
do j=lbj,ubj
read(3,99,END=3) TDMas(k,i,j);
end do
end do
end do
close (3)
!starting state k=1, i=1, j=1
3 k=1
do i=lbi,ubi
do j=lbj,ubj
VMas(i,j)=TDMas(k,i,j)
end do
end do
j=1
do i=lbi,ubi
PYMas(i)=VMas(i,j)
end do
i=1
do j=lbj,ubj
PXMas(j)=VMas(i,j)
end do
delay = 80
!Block_3
!prepare to start AV
call faglStartWatch(VMas, status)
call faglStartWatch(PXMas, status)
call faglStartWatch(PYMas, status)
call faglStartWatch(XAxis, status)
call faglStartWatch(YAxis, status)
!starting graph is 'visual' k=1
plx=0;
ply=0;
pld=0;
vis=1;
call favStartViewer(hav, status)
call favSetArray(hav, VMas, status)
call favSetDimScale(hav, 1, YAxis, status)
call favSetDimScale(hav, 2, XAxis, status)
call favShowWindow(hav, av_true, status)
call favSetUseAxisLabel(hav, X_AXIS, 1, status)
call favSetAxisLabel(hav,X_AXIS, trim(xname), status)
call favSetUseAxisLabel(hav, Y_AXIS, 1, status)
call favSetAxisLabel(hav,Y_AXIS, trim(yname), status)
call favSetUseAxisLabel(hav, Z_AXIS, 1, status)
call favSetAxisLabel(hav,Z_AXIS, trim(zname), status)
call Stat()
!Block_4
4 call favSetArrayName(hav, 'Array Visualizer Extender Shell', status)
write (*,'(a\)') 'Enter comand (help for comand list)> '
read(*,'(a)') com
if (trim(com) == 'status') then
call Stat()
end if
if (trim(com) == 'anim') then
call Animat()
end if
if (trim(com) == 'delay') then
call ChangeDelay()
end if
if (trim(com) == 'k') then
call ChangeK()
end if
if (trim(com) == 'plainx') then
call PlainX()
end if
if (trim(com) == 'plainy') then
call PlainY()
end if
if (trim(com) == 'plain3d') then
call Plain()
end if
if (trim(com) == 'visual') then
call Visu()
end if
if (trim(com) == 'help') then
call Help()
end if
if (trim(com) == 'exit') then
goto 5
end if
if (trim(com) == 'pause') then
call Paus()
end if
if (trim(com) == 'newfile') then
goto 1
end if
goto 4
!Block_5
5 print *, "Ending work"
call faglEndWatch(Vmas, status)
call faglEndWatch(PXMas, status)
call faglEndWatch(PYMas, status)
call faglEndWatch(XAxis, status)
call faglEndWatch(YAxis, status)
deallocate(TDMas)
deallocate(VMas)
deallocate(PXMas)
deallocate(PYMas)
deallocate(XAxis)
deallocate(YAxis)
call favEndViewer(hav, status)
contains
!Block_6
!Subroutins
subroutine Stat()
print *, "Matrix information"
write (*,*) 'min i=',lbi,' max i=',ubi
write (*,*) 'min j=',lbj,' max j=',ubj
write (*,*) 'max k=', ubk
print *, "Current position"
write (*,*) 'k=', k
write (*,*) 'Animate delay is ', delay
end subroutine
subroutine ChangeDelay()
write (*,*) 'Current animate delay is ', delay
write (*,'(a\)') 'Enter new value of delay > '
read *, delay
return
end subroutine
subroutine Animat()
integer :: k1, k2, tmp
if (pld==1) then
print *, "Can't animate in this view type"
return
end if
write (*, '(a\)') 'Current k is '
print *, k
write (*, '(a\)') 'Enter start k > '
read *, k1
if (k1>ubk) then
k1=ubk
end if
if (k1<lbk) then
k1=lbk
end if
write (*, '(a\)') 'Enter end k > '
read *, k2
if (k2>ubk) then
k2=ubk
end if
if (k2<lbk) then
k2=lbk
end if
if (k2<k1) then
tmp=k1
k1=k2
k2=tmp
end if
if (plx==1) then
write(*,'(a\)') 'Enter i > '
read *,ii
i=int(ii/hy)
if (i>ubi) then
i=ubi
end if
if (i<lbi) then
i=lbi
end if
end if
if (ply==1) then
write(*,'(a\)') 'Enter j > '
read *,jj
j=int(jj/hx)
if (j>ubj) then
j=ubj
end if
if (j<lbj) then
j=lbj
end if
end if
print *, "Start animation"
if (vis==1) then
print *, "3D animation"
do k=k1,k2
write (*,*) 'k=', k
do i=lbi,ubi
do j=lbj,ubj
VMas(i,j)=TDMas(k,i,j)
end do
end do
call favUpdate(hav,0,status)
do tmp=1,(delay*1000000)
end do
end do
end if
if (plx==1) then
do k=k1,k2
write (*,*) 'k=', k
do j=lbj,ubj
PXMas(j)=TDMas(k,i,j)
end do
call favUpdate(hav,0,status)
do tmp=1,(delay*1000000)
end do
end do
end if
if (ply==1) then
do k=k1,k2
write (*,*) 'k=', k
do i=lbi,ubi
PYMas(i)=TDMas(k,i,j)
end do
print *, k
call favUpdate(hav,0,status)
do tmp=1,(delay*1000000)
end do
end do
end if
k=k-1
print *, "End animation"
return
end subroutine
subroutine Help()
print *, "Array Visualizer extender v1.01"
print *, "by V. Sidorin (year 2002)"
print *, "View comands:"
print *, "anim, plainx, plainy, plain3d, visual"
print *, "Other comands:"
print *, "newfile, help, k, delay, status, exit"
return
end subroutine
subroutine ChangeK()
write (*,*) 'Current k is: ', k
write(*,'(a\)') 'Enter k > '
read *,k
if (k>ubk) then
k=ubk
end if
if (k<lbk) then
k=lbk
end if
do i=lbi,ubi
do j=lbj,ubj
VMas(i,j)=TDMas(k,i,j)
end do
end do
j=1
do i=lbi,ubi
PYMas(i)=VMas(i,j)
end do
i=1
do j=lbj,ubj
PXMas(j)=VMas(i,j)
end do
call favUpdate(hav, 0, status)
return
end subroutine
subroutine PlainX()
if (plx==0) then
plx=1
ply=0
pld=0
vis=0
call favSetArray(hav, PXMas, status)
call favSetDimScale(hav, 1, XAxis, status)
call favSetUseAxisLabel(hav, X_AXIS, 1, status)
call favSetAxisLabel(hav,X_AXIS, trim(xname), status)
call favSetUseAxisLabel(hav, Z_AXIS, 1, status)
call favSetAxisLabel(hav,Z_AXIS, trim(zname), status)
end if
write(*,'(a\)') 'Enter i > '
read *,ii
i=int(ii/hy)
if (i>ubi) then
i=ubi
end if
if (i<lbi) then
i=lbi
end if
do j=lbj,ubj
PXMas(j)=TDMas(k,i,j)
end do
call favUpdate(hav,0,status)
return
end subroutine
subroutine PlainY()
if (ply==0) then
plx=0
ply=1
pld=0
vis=0
call favSetArray(hav, PYMas, status)
call favSetDimScale(hav, 1, YAxis, status)
call favSetUseAxisLabel(hav, X_AXIS, 1, status)
call favSetAxisLabel(hav,X_AXIS, trim(yname), status)
call favSetUseAxisLabel(hav, Z_AXIS, 1, status)
call favSetAxisLabel(hav,Z_AXIS, trim(zname), status)
end if
write(*,'(a\)') 'Enter j > '
read *,jj
j=int(jj/hx)
if (j>ubi) then
j=ubj
end if
if (j<lbj) then
j=lbj
end if
do i=lbi,ubi
PYMas(i)=TDMas(k,i,j)
end do
call favUpdate(hav,0,status)
return
end subroutine
subroutine Plain()
if (pld==0) then
plx=0
ply=0
pld=1
vis=0
call favSetArray(hav, VMas, status)
call favSetDimScale(hav, 1, YAxis, status)
call favSetDimScale(hav, 2, XAxis, status)
call favSetGraphType(hav, 2, status)
call favSetUseAxisLabel(hav, X_AXIS, 1, status)
call favSetAxisLabel(hav,X_AXIS, trim(xname), status)
call favSetUseAxisLabel(hav, Y_AXIS, 1, status)
call favSetAxisLabel(hav,Y_AXIS, trim(yname), status)
end if
do i=lbi,ubi
do j=lbj,ubj
VMas(i,j)=TDMas(k,i,j)
end do
end do
call favUpdate(hav,0,status)
return
end subroutine
subroutine Visu()
if (vis==0) then
plx=0
ply=0
pld=0
vis=1
call favSetArray(hav, VMas, status)
call favSetDimScale(hav, 1, YAxis, status)
call favSetDimScale(hav, 2, XAxis, status)
call favSetGraphType(hav, 1, status)
call favSetUseAxisLabel(hav, X_AXIS, 1, status)
call favSetAxisLabel(hav,X_AXIS, trim(xname), status)
call favSetUseAxisLabel(hav, Y_AXIS, 1, status)
call favSetAxisLabel(hav,Y_AXIS, trim(yname), status)
call favSetUseAxisLabel(hav, Z_AXIS, 1, status)
call favSetAxisLabel(hav,Z_AXIS, trim(zname), status)
end if
do i=lbi,ubi
do j=lbj,ubj
VMas(i,j)=TDMas(k,i,j)
end do
end do
call favUpdate(hav,0,status)
return
end subroutine
subroutine Paus()
integer(4) :: tmp, a, b
write(*,'(a\)') 'Enter number of delays > '
read *, a
if (a<1) then
a=1
end if
do b=1,a
do tmp=1,(delay*1000000)
end do
end do
end subroutine
end program
Подобные документы
Подбор игрового движка и описание его основных характеристик. Разработка структуры, алгоритма и интерфейса программы. Проектирование иерархии классов. Выделение типового приема визуализации. Тестирование правильности работы программного обеспечения.
курсовая работа [3,1 M], добавлен 19.01.2017Создание автоматизированных приложений по расчету пути на прочность и устойчивость и затрат труда по техническим нормам. Разработка программного обеспечения, базы данных. Расчет тестового задания старой и новой версиями программы и оценка его результатов.
дипломная работа [2,4 M], добавлен 28.08.2017Основные приёмы и возможности алгоритмических языков программирования Fortran. Табуляция функции на языке Fortran, ее графический вид и блок-схема алгоритма. Выполнение расчетов на алгоритмическом языке Фортран. Текст (листинг) Fortran-программы.
курсовая работа [31,9 K], добавлен 15.02.2011Разработка программного обеспечения автоматической системы научных исследований (АСНИ) в интегрированной среде программирования Borland C++ Builder 6.0, работающего в среде ОС Windows, позволяющего осуществлять управление процессом спектрального анализа.
курсовая работа [569,3 K], добавлен 05.03.2009Информатизация России. Рынок программных средств. Основные задачи стандартизации, сертификации и лицензирования в сфере информатизации. Совокупность инженерных методов и средств создания программного обеспечения. Жизненный цикл программного обеспечения.
лекция [352,8 K], добавлен 09.03.2009Matlab как система инженерных и научных вычислений, принцип ее работы и назначение, сферы применения и оценка эффективности, анализ сильных и слабых сторон. Алгоритм создания интерфейса, основные способы и методы создания форм и элементов управления.
контрольная работа [681,9 K], добавлен 13.01.2010Разработка программы, реализующей алгоритм обработки двухмерных и одномерных массивов. Область применения, требования к программным средствам. Язык программирования Turbo Pascal. Арифметические операции и выражения. Используемые модули и операторы.
курсовая работа [439,3 K], добавлен 21.12.2015Особенности разработки и реализации модулей двухмерной и трехмерной визуализации. Основные задачи трехмерного модуля управления. Анализ функций модуля управления ParamColorDrawer. Характерные особенности схемы функционирования программного средства.
реферат [2,2 M], добавлен 07.03.2012Этапы разработки программного приложения, выполняющего синтаксический анализ программы на языке С и форматирование текста программы на языке С. Требования к программному обеспечению и интерфейсу. Конфигурация технических средств и оценка надежности.
курсовая работа [1,6 M], добавлен 22.06.2011Любая вычислительная машина как сложная система, состоящая из множества компонентов на каждом уровне иерархии. Основные особенности внедрения модели виртуального стенда. MATLAB как высокоэффективный язык инженерных и научных вычислений, анализ функций.
дипломная работа [1,6 M], добавлен 24.06.2013