Государственныйкомитет РФ по высшему образованию.
МосковскийГосударственный Институт Электронной Техники (Технический Университет).
ФакультетЭКТ.
КафедраПКИМС.Пояснительная записка кДипломному Проекту
натему
«Визуализацияинженерных и научных расчетов»
Москва2002г.
Оглавление
Введение
Раздел 1. Специальный раздел.Создание средств визуализации научных и инженерных расчетов.
Введение
1.1 Обзор средств визуализации расчетов
1.2 Описание визуализатора Compaq Array Visualizer
1.3 Описание библиотеки Array Visualizer
1.4 Разработка программы визуализации
1.5 Работа программы визуализации
1.6 Описание интерфейса между программойвизуализации и прикладной инженерной программой.
1.7 Тестирование программы и результатытестовых расчетов.
Заключение
Раздел 2. Технологический раздел.Технология создания программного обеспечения для визуализации.
Введение.
2.1 Этапы разработки программногообеспечения для визуализации инженерных расчетов.
2.2 Постановка задачи.
2.3 Создание структуры данных иинтерфейса с расчетной программой.
2.4 Построение математической моделиотображаемой информации.
2.4.1 Использование готовыхбиблиотек.
2.4.2 Построение собственныхматематических моделей.
2.5. Создание интерфейсапользователя.
Заключение.
Раздел 3.Организационно-экономический раздел. Оценка целесообразности создания ПО сприменением методики оценки конкурентоспособности.
Введение
3.1 Понятие конкурентоспособности.
3.2 Оценка конкурентоспособности.
Заключение.
Раздел 4.Производственно-экологическая безопасность и охрана труда. Анализ нормативныхдокументов при работе с ПК.
Введение
4.1 Требования к производственномуосвещению
4.2 Защита от излучений
4.3 Электробезопасность
4.4 Пожарная безопасность
4.5 Защита от шума и вибраций.
4.6 Психофизические опасные и вредныепроизводственные факторы.
4.7 Расчет воздухообмена.
Заключение
Литература ПЭБ
Выводы по дипломному проекту.
Используемая литература.
Приложение 1. Листинг программы console.
Введение
Язык Фортран– является одним из первых языков высокого уровня. Изначально он предназначалсядля инженерных и научных прикладных задач. С его помощью написано множествопрограмм расчетов, решений уравнений и матричных преобразований. Этот языкпредоставляет мощные математические средства не только при работе сдействительными числами, но при работе с комплексными числами. По этой причинемногие инженеры и ученые имеют свои библиотеки программ и подпрограмм наФортране для решения своих задач. Помимо этого Фортран не стоял все эти годы наместе, а развивался (первая версия языка – Фортран-56, далее Фортран-77 ипоследняя Фортран-90 разработанная в 1993 году). Однако не смотря на развитиеязык остается достаточно бедным в планах графического вывода и организацииинтерфейса пользователя. Для решения таких вопросов компании выпускающиекомпиляторы Фортрана создают для него свои графические библиотеки ивизуализаторы. Наиболее современной версией Фортрана является Compaq Visual Fortran v.6.6. А визуализатором этой среды программирования являетсяотдельный пакет Compaq Array Visualizer v1.5.
Напроизводственной и преддипломной практике мне была поставлена задача изучитьязык программирования Фортран и возможности визуализатора Compaq Array Visualizer и написать расширение возможностейэтого пакета, для его настройки под специфические нужды разработчиковинженерных программ для моделирования работы полупроводниковых приборов. Изначальнотакое расширение проектировалось как библиотека подпрограмм Фортрана, но впоследствии я пришел к выводу, что выгоднее и удобнее седлать отдельнуюпрограмму. К тому же отдельная программа проектировалась как способнаявоспринимать не только результаты Фортран-программ, но и результаты C++, Pascal программ.
Второйзадачей на дипломный проект было изучение и составление технологии созданиявизуализаторов. В Разделе 2 представлены этапы разработки программ и ихподробное описание.
Ворганизационно-экономическом разделе будет рассмотрена методика оценкиконкурентоспосбоности и ее применение к системам и программам визуализации включаясозданное программное обеспечение.
В производственно-экологическом разделе рассмотренынормативы и нормативные документы при работе с персональными компьютерами.Рассмотрены вопросы освещения, защиты от излучений, электро- ипожаробезопасности, защиты от шума и вибрации, психофизические опасные ивредные факторы. Произведен расчет воздухообмена производственного помещения.
В приложенииприведен листинг разработанной программы. Комментарии к нему и описание работыс программой приведены в специальном разделе.
Раздел 1.Специальный раздел. Создание средстввизуализации научных и инженерных расчетов.
Введение
В наше время невозможнопредставить себе процесс проектирования без вывода результатов расчетов вграфическом виде. Такой вид отображения гораздо более нагляден и удобен чемалфавитно-цифровой. Последние версии всех САПР имеют такую возможность. Но еслиприбор моделируется не в рамках какой-либо САПР, а собственной программойинженера, то вывод приходится организовывать самому. Работа с графикой, к томуже трехмерной очень сложна и требует специальных навыков, а так же временисоздания таких подпрограмм и их тестирования и отладки.
Разрешить этупроблему помогают различные пакеты для графического отображения данных. Однимиз таких пакетов является Compaq Array Visualizer v1.5.(далее AV)Этот пакет удобен в использовании. К тому же имеет ряд преимуществ побыстродействию на слабых машинах (тестирование производилось на P166 с 32Mb ОЗУ) и, в тоже время может работать и с последнимитехнологиями в графических системах, такими как OpenGL.
Однако AV имеет достаточно сложный и развитый API для передачи данных из программы.Это опять же приводит к задаче изучения дополнительных функций. Целью даннойдипломной работы является создание программы, использующей AV и данные программы инженера,позволяющее более просто, без дополнительного обучения, просматриватьрезультаты в AV, т.е. организация более простогоинтерфейса между рассчитывающей программой и графическим пакетом.
К тому жемоделирование может иметь много шагов и требовать просмотра полученных данных вразных представлениях. Таким образом созданная программа должна уметь запоминатьвсе шаги и представлять графической оболочке те данные, которые в данный моментнеобходимы инженеру.
1.1 Обзор средств визуализацииинженерных и научных расчетов
Использование вычислительной техники длявизуализации и анализа научных данных стало уже традиционным. Это вполнеестественно, ведь с задачей наглядного представления и анализа больших массивовчисловой информации сталкиваются во многих областях. Это моделирование,обработка результатов экспериментов, анализ данных дистанционного зондирования,решении различных инженерных задач. Многим ученым, студентам и инженерам частоприходится иметь дело с двумерными наборами чисел. Такими наборами могутявляться как результаты численного моделирования, так и данные, полученные сразличных приборов. Отдельным практически важным примером таких данных являютсяцифровые изображения. Для получения, обработки и визуализации этих данных накомпьютере требуется специальное программное обеспечение.
На сегодняшний день существует довольнобольшое количество средств обработки и визуализации научных данных,предназначенных для работы под операционными системами семейства UNIX, однако всвоем абсолютном большинстве такие программы имеют весьма недружелюбныйинтерфейс. Несмотря на то, что работа с UNIX – системами очень распространена внаучном сообществе, стремление современных пользователей переходить надружелюбный и интуитивный интерфейс Windows очевидно. Быстрые темпы развитияперсональных компьютеров обуславливают переход все большего числа ученых истудентов именно на эти системы.
Задача обработки двумерных данныхнесомненно шире задачи обработки изображений. Трактуя данные в зависимости отих природы различным способом, например как алгебраические матрицы или z=F(x,y), мы можем применять к ним ряд методовалгебры, анализа, математической статистики, решать дифференциальные иинтегральные уравнения. Для этих целей можно использовать системы инженерныхвычислений. Наиболее мощной из распространенных систем такого рода можноназвать MatLab (http://www.mathworks.com/). У указанных систем есть дваограничения: это низкая скорость, с которой подобные системы ведут своивычисления, и необходимость писать программу на специализированном внутреннемязыке. Написание программы в свою очередь требует не только специальнойподготовки, но и довольно большого времени на ее разработку и отладку. Когда женеобходимо просто проверить возникшую идею, подготовить промежуточный результатили быстро оформить какую либо несложную работу, желательно иметь болееспециализированные и мобильные средства.
Более мобильным, но менее функциональнымсредством является популярный пакет MathCad (http://www.mathsoft.com/).
Он позволяет пользователю проводитьдостаточно сложные математические расчеты, обрабатывать и визуализироватьразличные числовые данные и даже писать простые программы на встроенномалгоритмическом языке. Слабость MatCad, в применении к работе с двумернымиданными состоит в недостаточно удобных средствах визуализации, низкой скорости,а соответственно в плохой приспособленности к работе с большими объемамиинформации.
Визуализация двумерныхэкспериментальных данных часто рассматривается как отдельная задача. Такиеданные обычно представляют в виде изображений или поверхностей в перспективнойпроекции. Описанные выше программы позволяют с определенными ограничениямипроизводить такую визуализацию. Однако для ряда приложений более полезными иудобными оказываются другие системы. Например, во многих науках о Землевозникает задача построения цифровой модели той или иной поверхности, заданнойлишь в нескольких точках. При помощи методов интерполяции такие данныепереводятся в двумерные наборы чисел — строится так называемая цифровая модельповерхности. Визуально такую поверхность часто представляют либо в видетрехмерного изображения, либо в виде линий уровней. Для решения подобных задачнаибольшее распространение получил пакет Surfer(http://www.goldensoftware.com/), который благодаря своей компактности иудобству завоевал симпатии многих исследователей. Основным назначением Surferявляется обработка и визуализация двухмерных наборов данных, описываемыхфункцией типа z=F(x,y) Пакет позволяет строить цифровую модель поверхности, выполнятьряд вспомогательных операций с этой моделью и визуализировать данные различнымиспособами.
Российская программа 3DField (field.hypermart.net)имеет аналогичное предназначение, однако меньший набор доступных средств и приэтом обладает более приятным интерфейсом. Другая система научной графики TecPlot(http://www.amtec.com/), имеет широкие возможности визуализации различных (нетолько двумерных) данных. В частности, система позволяет строить поверхности,векторные поля, визуализировать объекты, заданные в виде конечных элементов. Ксожалению, при всех своих достоинствах она имеет явно перегруженный интерфейс.При всей красоте этих систем, следует заметить, что они более полезны дляподготовки к печати статьи или отчета, нежели для повседневной работыисследователя. Но работу по представлению данных в виде, готовом для печати,эти системы выполняют на высоком уровне. К сожалению, такие программырассчитаны на сравнительно небольшие объемы данных, что ограничивает область ихприменения.
Стоит также упомянуть о такой программе как Origin– онаиспользуется для визуализации различных инженерных расчетов, в том числе ирасчетов в микроэлектронике.
Хотя в области микроэлектронных технологий большуюпопулярность имеют визуализаторы, интегрированные в САПР для ИМС, такие как Cadence,ISE, но все-таки инженеры частоиспользуют свои программы для моделирования приборов и возникает необходимостьв визуализаторах их расчетов. В этом случае можно помимо вышеназванного Originупомянутьо пакете фирмы Compaq– Array Visualizer.Этот пакет хорош тем, что может быть как интегрированным в среду разработкипрограмм VisualStudio и работать с такимиязыками как VisualBasic, VisualC++, CompaqVisual Fortran(CVF), так и быть отдельной программой.Помимо этого он включает ActiveX-компоненты,которые могут быть использованы для WIN32приложений.
Помимо этих – WINDOWS-пакетов,есть еще DOS-пакеты, например Mapple.Так как он является приложением DOS,то имеет недружелюбный интерфейс, однако является достаточно мощным.
Кроме вышеназванных пакетов и программ есть ещемножество других средств для визуализации инженерных и научных расчетов – отсложных и универсальных, до простых, узкоспециальных. Но для своихспецифических применений разработчики отдельных подсистем САПР разрабатываютсвои пакеты или покупают и настраивают уже существующие стандартные пакеты.
1.2 Описаниевизуализатора Compaq Array Visulizer.
Array Visualizer (AV) фирмы Compaqпозволяет наблюдать как данные числовых массивов, так и их графическоепредставление. AV содержит вкачестве ядра графическую библиотеку OpenGL процедуры которой обеспечивают графический вывод. Дополнительно AV позволяет манипулироватьграфическими данными, предоставляя возможности для перемещения, поворота имасштабирования изображения, а также для изменения способа его представления наэкране. AV содержит:
1. автономнозапускаемое приложение, выполняющее отображение данных
2. библиотеку Aview процедур, вызываемых из приложенийФортрана и предназначенных для управления ОМ
3. ActiveX-процедуры библиотек Avis2D и AvisGrid
4. дополнительныевизуальные средства
Массив,переданный AV, отображается в двух видах:
1. в виде числовойтаблицы, выводимой в верхней части окна AV
2. в графическомвиде как трехмерное изображение (3D-вид), или как цветовая карта, или как векторные граф, или как рисунок наплоскости.
Процедурыбиблиотеки Aview позволяют приложениям CVF или Visual C++ отображать (посредством OLE-автоматизации) данные массива, применяя AV. Также данные массива можносохранить в виде файла, который загружается в AV в процессе его автономного использования.
ActiveX-процедуры (OCX) библиотек Avis2D и AvisGrid могут быть использованы любойподдерживающей автоматизацию средой, например Visual C++, Visual Basic или CVF, для отображения массивов вразнообразных графических видах. Процедуры Avis2Dобеспечивают при выполнении графического вывода более 100 свойств, методов исобытий; процедуры AvisGridприменяются для создания представляющих массивы таблиц и предоставляют около 30свойств, методов и событий.
Возможнынесколько вариантов употребления AV.Они, а также присущие им преимущества и недостатки перечислены в следующейтаблице: Вариант Преимущества Недостатки Загрузка agl-файла, созданного ранее выполненным приложением Не требует написания специального кода для вызова AV Нет возможности автоматизировать изменение отображаемых данных Использование отладчика CVF Не требует написания специального кода, работает с проектом любого типа Требует ручного задания свойств массива и настройки AV; не может быть использован в Visual C++ или Visual Basic, а также в Release-режиме CVF. Использование fagl-подпрограмм или в случае С – agl-функций Небольшое число процедур и, следовательно небольшие затраты на программирование, процедуры работают с проектами любого типа и в Debug-, и в Release-режиме. Требует ручного задания свойств массива и настройки AV Использование fagl- и fav- подпрограмм или в случае C++ — agl-функций и функций класса CAViewer. Можно программно задавать свойства массива и выполнять настройки AV; процедуры работают с проектами любого типа; последовательно в одном экземпляре AV можно отображать несколько массивов. Потребуется освоить большое число процедур (более 100); функции класса CAViewer нельзя применять в C (необходим C++). Использование ActiveX-процедур библиотек Avis2D и/или AvisGrid Дает возможность выводить создаваемые AV графические образы и таблицы данных без вызова AV; обеспечивает более быстрое Употребляется только в Windows-приложениях Фортрана или MFC в случае Visual C++. Заметим, что в Visual Basic большинство Воспроизведение образов и больше возможностей для настройки параметров EXE-проектов могут использовать процедуры библиотек Avis2D и AvisGrid; потребуется освоить большое число Avis2D/AvisGrid-процедур; Avis2D и AvisGrid процедуры не могут отображать HDF и текстовые файлы.
Отображениемассивов.
Массивыотображаются в следующих видах:
1) 3-D вид или Height Plot (рис1):
/> />
рис 1.
1. Растровая карта(контрастная заливка) или Image Map(рис 2):
/>
рис 2.
2. /> />
Векторный граф, или Vector Graph. (В данной работе не используется).
рис. 3
3. График или Plane View (рис 3):
Перечисленныережимы могут быть заданы как в AVнепосредственно, так и в программе, из которой AV запускается. В AV переключение режима выполняется либо из меню, либо в результате выборасоответствующей иконки.
Для вращенияизображения достаточно разместить мышь на поле графического вывода, нажатьлевую кнопку мыши и затем, оставаясь на поле вывода, перемещать мышь впроизвольном направлении.
1.3 Описаниебиблиотеки функций Array Visualizer.
Ввидусложности создания Windows-приложений,а также того, что ActiveX-компонентаAvis2D не корректно отображает одномерные массивы было решеноиспользовать непосредственно оболочку Array Viewer всовокупности с программой, расширяющей его возможности, а так же служащей болеепростым интерфейсом между программой инженера и AV. Для создания программы был применен подход с использованиемfagl- и fav- процедур. Программа писалась на языке CVF v6.5.
Опишемпроцедуры API AV, встраивание которых в приложение позволяет запускать AV, передавать ему массив, управлятьизображением.
FAGL- подпрограммы. Синтаксис подпрограммы Описание faglClose(array,status) Закрывает экземпляр AV. Если затем возникает потребность отобразить массив array снова, то достаточно вызвать лишь faglShow; вызова faglStartWatch выполнять не нужно faglEndWatch (array, status) Удаляет массив array из списка отображаемых массивов и освобождает ресурсы, связанные с array и используемые подпрограммами библиотеки. faglGetShareName (array, filename, status) Строка filename, возвращаемая этой подпрограммой, может быть передана процедурам Avis2D и AvisGrid как свойство FileName. faglHide(array, status) Делает экземпляр AV невидимым. Экземпляр AV станет видимым, если затем вызвать faglShow. Однако если экземпляр AV создан посредством favStartViewer, то вместо faglShow следует употреблять favShowWindow faglLBound (array, lbnd, status) Устанавливает левые границы измерений отображаемого массива в видах Data или Graph Views AV. По умолчанию массив отображается с границами, равными единице. faglSaveAsFile (array, filename, status) Сохраняет текущий массив в файле с расширением AGL. Такой файл может быть загружен и отображен в AV. faglShow (array, Создает экземпляр AV и отображает данные status) массива array. Так же делает экземпляр AV видимым. faglStartWatch (array, status) Добавляет массив array в список отображаемых массивов и возвращает дескриптор hv, который используется для доступа к массиву другими подпрограммами библиотеки. Фактически faglStartWatch использует системные ресурсы для приведения array к виду, необходимому для faglShow. Чтобы освободить эти ресурсы, следует вызвать faglEndWatch. FaglUpdate(array, status) Приводит в соответствие изображение с данными, хранящимися в массиве array. Употребляется, если приложение изменило отображаемый массив array с момента последнего вызова faglUpdate или faglShow и если есть необходимость обновить изображение. Если же экземпляр AV ассоциируется с массивом, созданным favStartViewer, а не faglShow, то вместо faglUpdate нужно вызвать favUpdate.
Параметры fagl подпрограмм:Имя Смысл/вид Тип. array Имя отображаемого массива / входной Числовой status Статус вызова fagl-подпрограммы. В случае успеха равен нулю/ выходной integer(4) filename Строка, возвращаемая faglGetShareName/ выходной CHARACTER(*) filename Имя файла без расширения, если файл пишется в директорию, из которой вызвано приложение, либо полное имя файла / входной. CHARACTER(*) lbnd Массив ранга 1, размер которого равен рангу отображаемого массива / выходной INTEGER(4) title Строка, отображаемая в заголовке экземпляра AV / входной CHARACTER(*)
Для вызоваприведенных выше подпрограмм в использующем их программном компоненте следуетвыполнить ссылку:
Use avdef ! Ссылка на модуль avdef.f90
Модуль AVDEF содержит интерфейсы fagl-подпрограмм.
Перечисленныеподпрограммы обычно используются следующим образом:
1. до отображениямассива array вызовите faglStartWatch с параметром array;
2. если необходимоотображать массив, имея нижнюю левую границу, отличную от единицы, примените faglLBound;
3. для отображениясообщения, сопровождающего выводимые данные, вызовите faglName;
4. для запуска AV и отображения массива array вызовите faglShow с первым параметром, равным array. AV будет функционировать до тех пор, пока не выполнена команда faglClose;
5. если хранимыемассивом данные подверглись изменениям, то для их отображения вызовите faglClose;
6. для сохранениямассива array в виде файла с расширением AGL (Array Graphing Language) вызовите faglSaveAsFile, использовав array в качестве первого параметра. Приэтом AV может быть некактивным;
7. при необходимостиможно вызвать faglGetShareName и получить строку filename, позволяющую процедурам Avis2D и AvisGrid осуществлять доступ к памяти, занятой массивом.
8. после завершенияпросмотра массива вызовите faglEndWatch.
Для массивовотображаемых в AV рекомендуетсяиспользовать атрибут !DEC$ATTRIBUTES array_visualizer :: array. Действие этого атрибута таково:память, занимаемая массивом array,используется и AV и приложением.При отсутствии атрибута будут созданы две области данных array и при каждом обновлении массивапосле вызова faglUpdate данные будут копироваться изобласти, принадлежащей приложению, в область, используемую AV.
Заметим, что DEC-атрибут ARRAY_VISUALIZER может быть применен только с динамическими объектами, т.е. объектами,обладающими атрибутом PIONTERили ALLOCATABLE.
FAV — подпрограммы.
Fav – подпрограммы управляют AV и обеспечивают взаимодействие AV с приложением. Как правило, fav- и fagl- подпрограммы используются совместно. Fav – подпрограммы подразделяются нагруппы, имеющие названия:
· запуск AV
· доступ к данным
· зона вывода
· фильтрация данных
· палитра
· оси координат
· выбор
· виды изображений
· 3D вид
· растровая карта
· векторный граф
· отображениеданных
· камера
· маркер
· разное
Работа с fav-подпрограммами станет возможнойпосле выполнения ссылки:
Use avviewer
в котороймодуль AVVIEWER содержит интерфейсы и константыподпрограмм.
Поскольку fav – подпрограмм очень много (более100), приведем описание только тех из них, которые используются в программе.Подпрограмма Что выполняет Запуск AV favStartViewer Запускает экземпляр AV favEndViewer Завершает работу экземпляра AV Доступ к данным favSetArray Загружает в AV заданный массив Фильтрация данных favUpdate Вызывается, когда нужно обновить изображение, созданное AV, чтобы отобразить изменения, произошедшие с момента последнего обновления данных или начальной загрузки. Оси координат favSetDimScale Ассоциирует ось координат с массивом, содержащим разметку оси. favSetUseAxisLabel Включает/отключает вывод заданных пользователем имен осей координат favSetAxisLabel Задает имя указанной оси координат. Виды изображений favSetGraphType Задает видовой режим Разное favSetArrayName Задает текст, выводимый на заголовочной полосе AV favShowWindow Отображает/скрывает окно AV
1.4 Разработкапрограммы визуализации
Задачейставилось создание ПО, позволяющего просматривать результаты расчетов вграфическом виде, использую при этом библиотеки AV и язык Compaq Visual Fortran (CVF).
Интерфейс срассчитывающей программой был выбран файловый, т.е. входными данными дляпрограммы console являются два файла. Один –читающийся первым с начальными установками для массива, осей координат. Второй– непосредственно результаты. Тип файлов – не компрессированные, текстовые.Последнее выбрано исходя из соображений совместимости не только с Fortran-программами, но и с C/C++ и даже Pascal-программами.
Требования квыводу информации.
Для выводабыли поставлены следующие задачи:
· для двумерныхмассивов – вывод в 3D виде свозможностью анимации
· для двумерныхмассивов – вывод в виде растровой карты (контрастной заливки)
· вывод одномерныхслучаев (сечений массива) с возможностью анимации.
Выборпользовательского интерфейса.
Изсоображений простоты программы, ее размеров, а также легкости модификации былвыбран консольный интерфейс. Благодаря этому программа имеет небольшой листинг,простую структуру и легка для понимания. Для добавления новых возможностей,новых команд нет необходимости изменять файлы ресурсов (как было бы в случае WIN32 приложения), и несколько различныхподпрограмм. Достаточно лишь внести в условия проверки команд новую команду инаписать подпрограмму ее обработки. В дополнение к этому следует заметить, чтотакже повышена переносимость программы на различные платформы, т.е. достаточноперекомпилировать код (может быть с небольшими изменениями) на соответствующемкомпиляторе для нужной платформы (естественно для этой платформы должна бытьверсия AV).
Структурапрограммы.
Программуможно логически разбить на 6 блоков, выполняющих каждый свои функции (влистинге (Приложение 1) они помечены комментариями):
1. Block_1: описание переменных и массивов.Все массивы имеют атрибут allocatable, для совместимости с DEC-атрибутомARRAY_VISUALIZER. Рабочие массивы следующие: TDMas – трехмерный массив, в которыйзаносятся все результаты расчетов. VMas – двумерный массив, отображаемый в 3D-виде и в растровой заливке. PXMas и PYMas– одномерные массивы, соответствующие сечениям по координатам. XAxis и YAxis – одномерные массивы, содержащие разбивку шкал.
2. Block_2: считывание служебной информации,результатов расчетов, формирование массивов шкал. Этот блок начинается соператора call Help(), вызывающего соответствующую подпрограмму, показывающую командыпрограммы. Потом задаются значения по умолчанию для имен и масштабов шкал.Далее организовывается ввод имен файлов – сначала файла со служебнойинформацией, потом файла с данными. Имена должны быть не больше 70 символов(включая пути). Далее идет считывание файла со служебной информацией, потом размещениемассивов в памяти, после чего задаются массивы шкал и, наконец считываютсяотображаемые данные, которые распределяются между всеми массивами, участвующимив визуализации (начальное состояние: для PXMas i=1, для PYMas j=1, для всехмассивов k=1)
3. Block_3: задание начальных установок AV с помощью подпрограмм API.
4. Block_4: блок обработки команд. Состоит изоператоров if..then…end if. Если командараспознана, то передается управление соответствующей подпрограмме. При вводекоманды newfile передается управление блоку 2, а привводе команды exit передается управление блоку 5.
5. Block_5: завершение программы.Освобождение ресурсов, задействованных для связи с AV, освобождение памяти, выделенной под массивы и закрытиеоболочки AV.
6. Block_6: блок описания подпрограмм. Всеподпрограммы являются встроенными и содержатся в разделе contains. Все подпрограммы предназначены дляобработки команд. Почти все из них (кроме Animat и Paus)не содержат локальных переменных, для упрощения взаимодействия, структуры,сокращения количества требуемых ресурсов.
Графическиструктуру программы можно изобразить как это сделано на рис 4 (оговоримся сразу– это не блок-схема программы, это только схематичное изображение структуры).
Как легко можно заметить, для модификации программы,добавления в нее новых команд и возможностей достаточно изменять только блоки 4и 6, т. е. добавлять новые условия и подпрограммы. Так же желательно включатьновые команды в подпрограмму Help.Это позволит пользователям в любой момент получить список команд программы.
Почти все подпрограммы, реализующие команды используютглобальные массивы TDMas, VMas, PXMas, PYMas,XAxis, YAxis – это позволяет не передавать их, а также оперироватьими, в случае необходимости в основной программе. Так же подпрограммы используютглобальные переменные plx, ply, pld и vis./> />
Рис 4.
Каждая из них равна единице если соответствующий режимвключен и равна нулю в противоположном случае. Эти переменные используются длятого чтобы не переключаться каждый раз в новый режим. Также они используютсяподпрограммой Animat() для определения, какой массив ей заполнять.
Полный список всех подпрограмм и команд, имсоответствующих:Подпрограмма Команда Помощь Stat() status Help() help Анимация Animat() anim Виды отображения PlainX() plainx PlainY() plainy Plain() plain3d Visu() visual Служебные Paus() pause ChangeDelay() delay ChangeK() k - newfile - exit
Команды newfile и exit не имеют своих подпрограмм – онивыполняются оператором goto n.
Разберем подпрограммы по видам:
1. Подпрограммыпомощи: Help() и Stat(): в реализации этих подпрограмм нетничего сложного – они просто выводят информацию с помощью оператора write.
2. Подпрограммаанимации: Animat(): эта подпрограмма реализована следующим образом – вначалеспрашивается шаг моделирования, с которого необходимо начать анимацию, затемконечный шаг. После этого, если выбран один из одномерных случаев запрашиваетсясоответствующая координата. После этого, в зависимости от текущего видаотображения меняется какой-либо массив, после чего происходит вызовподпрограммы
API AV favUpdate, потом с помощью пустого цикла идетзадержка. Пустой цикл просто перебирает числа от 1 до значения переменной delay*106. Это повторяется циклически для всехнеобходимых значений k.
3. Подпрограммы видаотображения: Visu(), Plain(), PlainX,PlainY(): в них сначала происходит проверка на текущий типотображения. Если он не совпадает с тем, который выбран сейчас, то производитсяподготовка оболочки AV (масштабы шкал,их названия, тип отображения). Потом заполняется необходимый массив ивызывается favUpdate.
4. Служебныеподпрограммы: ChangeK(): изменяет текущий шаг моделирования (переменная k), затем заполняет все массивы новойинформацией, после чего вызывает favUpdate. ChangeDelay(): изменяет значение переменной delay, которая влияет на время задержки при анимации, атакже на время задержки при исполнении команды pause. Paus(): подпрограмма сделана специально дляскриптового режима. Она обеспечивает задержку. Состоит из пустого вложенногоцикла.
Таким образом мы разобрали структуру и принципы работыпрограммы console.exe. Приступим теперь к ее описанию.
1.5 Описание работы программы визуализации
В этом подразделе будут рассмотрены следующие вопросы:
· Терминологияпрограммы
· Формат файла сослужебной информацией (pre-файла).
· Команды программы
· Скриптовый режимпрограммы
· Запуска программы.
Терминология программы.
Прежде чем приступить к описанию работы с программой,необходимо пояснить несколько терминов, которые будут использоваться.
· k – шаг моделирования. Т.е. если у васприбор промоделирован в нескольких режимах (например, при разных потенциалах наконтактах полупроводника), то число k отражает номер этого режима.
· pre-файл – файл со служебной информацией(например, размерности массива)
· скрипт –последовательность команд (сценарий), записанных в текстовый файл, которыепрограмма может интерпретировать.
· i – переменная в трехмерном массиве TDMas. Ее аналог – координата y
· j – переменная в трехмерном массиве TDMas. Ее аналог – координата x.
· Формат данных –формат по которому записываются данные в файл.
Формат pre-файла.
Pre-файл (от preset – предварительные установки)– это файл с установками, необходимыми дляработы программы, а также с оформлением шкал.
Минимальная длина этого файла в строках – три,максимальная не ограничена, но читаться будут только первые восемь. Итакпострочно:
1. Максимальноезначение k. Формат: I2 (integer,две цифры)
2. Максимальноезначение i. Формат: I2
3. Максимальное значениеj. Формат: I2
Очень важно! Эти три строки обязательно должны быть вфайле, иначе работа программы завершится с ошибкой. К тому же их нужнообязательно правильно и точно указать. Согласно этим параметрам формируютсявнутренние массивы программы и потом заполняются данными. Ошибка может повлечьза собой потерю данных или их искажение.
4. Коэффициент пооси X (j). Это позволяет отобразить данные не с теми координатами,которые предлагает AV, а снеобходимыми вам. Т.е. индексы массива будут переведены, например, в микроны.По умолчанию равен 1 (т.е. на шкале отображаются индексы массива). Формат: E4.2 (т.е. вещественный, две цифрыпосле запятой. Например, 0.50)
5. Коэффициент пооси Y (i). По умолчанию равен 1. Формат: E4.2
6. Имя оси X. Это имя отображается как имязаданной оси. Длина – не более 20 символов. По умолчанию: ‘X’.
7. Имя оси Y. Не более 20 символов. По умолчанию:‘Y’.
8. Имя оси Z. (ось результатов). Не более 20символов. По умолчанию: ‘Z’
Далее можно вставлять свои комментарии и пояснения. Программойони не учитываются.
Команды программы.
К сожалению язык Fortran не предоставляет достаточно мощных подпрограммобработки строк. Поэтому все команды имеют вид не команда операнды, а просто команда.Далее, при необходимости, программа требует ввод дополнительных данных, обычно– координат, но помимо этого и различных значений. Внимание: все командыдолжны быть набраны в нижнем регистре.
Команды можно разделить на четыре группы:
1. Команды помощи
2. Виды отображения
3. Анимация
4. Служебные
Рассмотрим все команды (включая их дополнительныйввод) по их видам:
Команды помощи:
· help – эта команда выводит информацию опрограмме, ее версии и список всех доступных команд. Упоминание о ней есть встроке приглашения к вводу (Enter comand (help for comand list)>).
· status – эта команда выводит сообщение отекущих установках: максимальное и минимальное i, максимальное и минимальное j, максимальное k,текущее k, значение delay.
Виды отображения:
· visual – эта команда включает 3D-вид отображения. При запускепрограммы включается именно он. Она не требует дополнительного ввода.
· plain3d – эта команда включает отображение в виде растровой карты(контрастной заливки). В этом виде нельзя проводить анимацию. Не имеетдополнительного ввода.
· plainx – эта команда переключает в режимотображения одномерных массивов. Она позволяет отобразить сечение по Y. (Т.е. будет отображаться массив сизменяющейся координатой X ипостоянной координатой Y).Требует ввод i.
· plainy – эта команда также переключает врежим отображения одномерных массивов. Она позволяет отобразить сечение по X. (Т.е. будет отображаться массив сизменяющейся координатой Y ипостоянной координатой X).Требует ввод j.
Анимация.
· anim – эта команда позволяет провестианимацию при выбранном типе отображения (кроме контрастной заливки). При 3D –виде (команда visual) она требует только ввода начальногозначения k (k1) и конечного значения k (k2). При сечениипо Y (команда plainx) она требует ввода координаты i, при каком значении этой переменнойбудет происходить анимация. При сечении по X (команда plainy)она требует ввода координаты j, прикаком значении этой переменной будет происходить анимация. По окончаниианимации текущее k принимаетзначение k2.
Служебные команды.
· k – эта команда позволяет изменитьтекущее значение k. При наборе kmax k, k становится равным max k.
· delay – эта команда позволяет изменитьзначение переменной delay, котораяопределяет задержку между кадрами анимации. Это значение нисколько не указываетна количество секунд или миллисекунд, на которые происходит задержка. Приравных значениях переменной delay,более быстрые компьютеры будут давать более маленькую задержку. Начальноезначение – 80.
· pause – эта команда предназначена дляскриптового режима работы. Она позволяет приостановить программу. Требуетдополнительного ввода количества задержек.
newfile – эта команда позволяет загрузить новые файлы. Онаперебрасывает в начало работы с программой.
· exit – выход из программы.
Скриптовый режим программы.
Наличие этого режима – прямое следствие консольногоинтерфейса программы. Т.е. для создания такой возможности не было необходимостив дополнительных затратах.
Скрипт (сценарий) состоит из команд программы итребуемого для них дополнительного ввода. Кроме этого, первые две строкискрипта это имена pre-файла и файладанных соответственно. Приведем простой пример скрипта:
out.pre
out.txt
plainx
20
delay
50
anim
2
12
20
pause
2
exit
Его работа заключается в следующем:
· Считывается pre-файл out.pre издиректории где находится программа console.
· Считывается файлданных out.txt из директории где находится программа console.
· Выполняетсякоманда plainx (сечение по Y) с координатой i=20. Координата задается в следующей строке после команды. Любойдополнительный ввод начинается с новой строки скрипта.
· Заменастандартного значения задержки (80) на новое – 50.
· Далее выполняетсяанимация этого вида. После команды anim следуют три строки с ее параметрами – начальное k (2), конечное k (12)и координата i (20), по которой будет происходитьсечение.
· Потом выполняетсякоманда pause с параметром 2. Это дает двойнуюзадержку перед выполнением следующей команды.
· Далее идеткоманда exit, закрывающая экземпляр AV и программу console.
Заметим, что построение командного интерпретаторапозволяет после первых двух строк вставлять любые комментарии. Эти комментариипрограмма попытается обработать как команды, но не найдя таких команд в своемсписке просто их проигнорирует. Однако очень важно помнить, что первые двестроки сценария – это обязательно имена pre-файла и файла данных.
Запуск программы console.
Как видно из предыдущих подразделов программу можнозапустить в двух режимах: командном и скриптовом.
· Запуск вкомандном режиме: при запуске в командном режиме сначала выводится список всехкоманд, затем запрашивается имя файла со служебной информацией (pre-файла), затем имя файла с данными(результатами расчетов).
· Запуск вскриптовом режиме: это можно осуществить только при помощи сеанса MS-DOS (Windows95/98) или программ-оболочек с командной строкой DOS (например Far, Dos Navigator, Norton Commander). Скриптовый режим обеспечиваетсяпри помощи перенаправления ввода. Т.е. в командной строке указывается имяпрограммы, потом символ перенаправления ‘
1.6 Описание интерфейса между программой визуализациии прикладной инженерной программой.
Инженер, собирающийся воспользоваться программой console должен организовать в своейпрограмме вывод результатов в текстовый файл. Каждое новое число с новойстроки. Приведем примеры вывода результатов в файл для Fortran- и C-программ.
Fortran.
Формат выводимых чисел для языка Fortran – E12.5. Т.е. в текстовом файле будет число в виде 1.23456E+02 с пробелом в начале если числоположительное и знаком ‘ — ‘ если отрицательное. Пример кода:
Допустим у нас есть массив, объявленный как
Real(4) M(lbi:ubi, lbj:ubj)
Тогда записывать его значения в файл out.txt мы будем следующим образом.
Объявим формат E12.5:
90 FORMAT(E12.5)
Сначала открываем файл:
open (3,FILE='out.txt',STATUS='UNKNOWN')
Далее на каждом шаге моделирования записываем в негоинформацию из массива следующим образом:
do i=lbi,ubi
do j=lbj,ubj
write(3,90) M(i, j)
end do
end do
После того как пройдены все шаги моделирования, файлнеобходимо закрыть:
close (3)
Таким образом мы можем записать все шаги моделированияв файл данных, чтобы впоследствии им воспользоваться для работы с программой console.
C/C++
Для С/С++ программ необходим формат “%12.5E”. Все числа необходимо приводить встроки. Напомним, что файл должен быть текстовым.
Пример кода с пояснениями.
Для начала объявим переменные массива, файла ивспомогательную строку:
float M[UBI][UBJ];
FILE* f;
char str[12];
Далее в программе необходимо открыть файл:
f=fopen(“out.txt”,”wt”);
Далее на каждом шаге моделирования записываем в негоинформацию из массива следующим образом:
for (i=0;i
for (j=0;j
sprintf(str, "%12.5E",M[i][j]);
fputs(str,f);
fprintf(f,”\n”);
}
После того как пройдены все шаги моделирования, файлнеобходимо закрыть:
fclose(f);
Обратите внимание на использование функции sprintf. Это наиболее простой способпривести float-числа к нужному виду, идентичному сформатом E12.5 используемому в программе console для считывания данных.
1.7 Тестирование программы и результаты тестовыхрасчетов
Проведем тестирование программы на файлах данных созданныхFortran и C++ программами.
Приведем листинг Fortran-программы:
program Sample
IMPLICIT NONE
real(4), allocatable :: M(:,:)
integer(1), parameter :: lbi=1,ubi=20, lbj=1, ubj=20
integer(1) :: i,j
allocate (M(lbi:ubi,lbj:ubj))
do i=lbi,ubi
do j=lbj,ubj
M(i,j)=sin(real(i))+sin(real(j))
end do
end do
90 FORMAT (E12.5)
open(3,FILE='out.txt',STATUS='UNKNOWN')
do i=lbi,ubi
do j=lbj,ubj
write(3,90) M(i,j)
end do
end do
close(3)
end program Sample
Как видим здесь формируется двумерный массив M(1:20,1:20) который заполняетсязначениями M(i,j)=sin(i)+sin(j). Составим pre-файл для него (out.pre):
1
20
20
1.00
1.00
X-scale
Y-scale
Function
Результаты вывода программы:/> />
рис 5.
1. 3D-вид(visual) (рис 5
2. Контрастная заливка (рис 6):
/>
рис 6.
3. Сечение по X (команда plainyс параметром 20) (рис7):/> />
рис 7.
1-30.
Проверим теперь взаимодействие с C++ программой:
#include
#include
#include
#define UBI 20
#define UBJ 20
FILE* f;
char str[12];
float M[UBI][UBJ];
int i,j;
void main()
{
for (i=0;i
for (j=0;j
if (i
else M[i][j]=0;
f=fopen(«out.txt»,«w+t»);
for (i=0;i
for (j=0;j
sprintf(str, "%12.5E",M[i][j]);
fputs(str,f);
fprintf(f,”\n”);
}
fclose(f);
}
Здесь формируется массив M[20]][20] (необходимо помнить, что в C массивы начинаются с 0) и заполняется функцией M[i][j]=i+sin(j). Pre-файл для него такой же как и впредыдущем примере./> />
Результаты вывода программы console:
1. 3D-вид (рис 8):
рис 8.
2. Контрастнаязаливка (рис 9):
/>
рис 9.
3. Сечение по X (команда plainy) (рис 10):
/>
рис 10.
Мы рассмотрели все виды и варианты работы программы,протестировали ее во всех режимах. Программа прекрасно согласуется как с Fortran-программами, так и с C/C++ программами. Помимо этих тестов программа былапротестирована на результатах вычисления параметров полупроводниковых приборови показала хорошие результаты.
Системные требования.
Работа программы тестировалась на системах Windows 98, Windows 2000 и Windows XP. Минимальныесистемные требования – Pentium166 MMX, 32Mb RAM, 1Mb Video. Как видим поддержка OpenGL не обязательна, хотя желательна.Размер программы, вместе с пакетом Compaq Array Visualizer v1.5 – 16Mb.
Заключение
Разработанная программа, использующая AV, является своеобразным гейтвеем (отангл. gateway) с командной оболочкой, позволяющимпередавать данные из рассчитывающей программы инженера в пакет графическогоотображения информации. Она предоставляет более простой интерфейс для передачиданных. К тому же данные сохраняются в файл и нет необходимости в переносепрограммы, достаточно переносить только результаты.
Помимо этого, за счет скриптового режима программапозволяет устраивать презентации и показы. Несложная командная система нетребует длительного изучения и освоения. Программу можно освоить за 30-40минут.
Разработанную программу можно использовать налабораторных работах студентов, для отображения полученных ими результатов. Онаможет использоваться сотрудниками институтов или предприятий для отображениярезультатов моделирования как в процессе программирования и отладкимоделирующей программы, так и в процессе демонстрации результатов. Такимобразом программа console имеетуниверситетский уровень.
Раздел 2.
Технологияразработки программного обеспечения для визуализации инженерных расчетов
Введение
Десять — пятнадцать лет назад ЭВМ либо не имеливозможности графического вывода, либо графические дисплеи были очень слабы и неподходили для качественного вывода информации. Печатающие устройствасуществовали только для символьного вывода. Поэтому все результаты расчетоввыводились в виде числовых распечаток, по которым проводился анализ, строилисьграфики и т.д. Пять – десять лет назад графические системы позволяли выводитьграфики с приемлемым качеством изображения, но только для одномерных случаев.Вывод двухмерных случаев в виде поверхностей требовал огромных вычислительныхзатрат, с которыми не справлялись процессоры тех лет.
В наше время, когда высокого быстродействия достиглине только ЦП и математические сопроцессоры, но и графические сопроцессоры выводрезультатов в графическом виде ускорился в сотни раз, построение трехмерныхизображений и их преобразование заметно упростилось. Поэтому для всехсовременных САПР и инженерных программ необходимо представление результатов ввиде графиков, поверхностей и т.д. Как и всякий процесс, написание программобработки результатов для последующего графического вывода и вывод имеет своютехнологию. В данном разделе и будет рассмотрена такая технология.
2.1 Этапы разработки программного обеспечения длявизуализации инженерных расчетов.
Для начала выделим основные этапы создания ПО длявизуализации инженерных расчетов (далее просто ПО).
1. Постановка задачи. Формированиетребований к выводимой информации.
2. Создание структуры данных иинтерфейса с рассчитывающими программами.
3. Построение математической моделиотображаемой информации (2 подхода):
Использование готовых библиотек OpenGLили DirectX, а также готовых компонент ActiveX.
Построение собственныхматематических моделей.
4. Создание интерфейса пользователя.
Итак, мы видим пять основных этапов, различных посложности и объему работ. К тому же, благодаря большому количествуразработчиков библиотек для графического вывода у нас есть два качественноразных подхода.
Рассмотрим каждый этап в отдельности более подробно.
2.2 Постановка задачи
Очень важно правильно сформулировать задачу итребования к ПО. Это поможет избежать лишних затрат на создание ненужныхподпрограмм вывода, либо переделки готовых программ для дополнения необходимого.Так же при постановке задачи необходимо решить стоит ли использовать подход спостроением собственных математических моделей, или достаточно ограничиться ужеготовыми библиотеками и компонентами, пусть и платными. В дополнении необходимоучесть необходимость вывода числовой информации, а так же создание “твердойкопии”, т. е. распечатки на принтере.
При определении вида графической информации, нужнорешить для каких случаев она будет выводиться – двумерных или же толькоодномерных. При выборе двумерных случаев у нас тоже есть выбор: можно выводитьв виде поверхностей, либо в виде “контрастной заливки”, или же оба этих случая.При постановке задачи на вывод надо учитывать собственные вычислительныересурсы и необходимую скорость создания приложения.
При определении подхода к построению математическоймодели вышеуказанные два фактора так же играют главную роль. Собственная модельможет обойтись дороже, так как на ее создание уйдет время и, к тому же, какправило, такие модели не задействуют вообще или не на полную мощностьвозможности графического сопроцессора, а это шаг назад. В связи с этим впоследнее время создание собственных математических моделей становится всеменее целесообразным и экономически выгодным.
2.3 Создание структуры данных и интерфейса с расчетнойпрограммой
Этот этап очень важен. От структуры данных зависитбыстродействие создаваемого ПО, компактность кода и файлов, в которых хранятсярезультаты расчетов.
Интерфейс с рассчитывающей программой может бытьсовершенно различным. Информация может передаваться через оперативную память(ОЗУ), через файловую систему в виде бинарных файлов или, более объемных,текстовых файлов. Файлы могут быть компрессированы или нет. Какой из способоввыбирать зависит от нескольких факторов:
1. Скорость выполнения расчета – если рассчитывающая программа проводит быстрыйанализ, то, возможно, целесообразнее не создавать лишних файлов на внешнемносителе и использовать ОЗУ.
2. Частота изменения входных данных – при частой смене входных данных для расчетовнамного эффективнее будет применение передачи результатов через ОЗУ, с вызовомпрограммы визуализации как подпрограммы.
По этим двум факторам можно сказать еще следующее:если программа выполняет расчеты долго, или входные данные не меняются(используется итеративный процесс) целесообразней будет использование файловойсистемы для долгосрочного хранения.
3. Объем передаваемой информации – если объем очень большой, то эффективнее будетхранить его в виде файла.
Выбор вида файла (бинарный или текстовый) зависит отязыка программирования. Однако следует учесть, что бинарный файл меньше пообъему.
Компрессировать или нет файл с результатамиопределяется следующим фактором: если вы пишете ПО для большой САПР ипрограммисты, принимающие участие в этом проекте используют одну и ту жеподпрограмму компрессии, то в этом случае следует выбрать сжатый файл. Если жевы пишите университетскую программу или программу для предприятия, на которойбудут смотреть результаты своих программ инженеры вашего коллектива, то в этомслучае, для упрощения процесса написания рассчитывающих программ следуетвыбрать не сжатые файлы.
В структуру данных также включается управляющаяинформация для ПО. Она может включать в себя различные параметры как-то:границы массивов данных, значения или шаги по осям, виды представления. Привыборе файлового интерфейса ее можно хранить либо отдельно от основных данных,либо вместе с ними. Это уже зависит от вкуса программиста.
2.4 Построение математической модели отображаемойинформации.
2.4.1 Использование готовых библиотек
В наше время, как отмечалось выше, большинстворазработчиков программного обеспечения, связанного с графикой, используютстандартные библиотеки от крупных производителей программ (Microsoft, Silicon Graphics, 3Dfx). Этими библиотекамиявляются: OpenGL, DirectX, Direct Draw. Их использование ускоряетпроцесс разработки программы, к тому же они в полной мере задействуютграфический и математический сопроцессоры, что увеличивает производительность.Эти библиотеки включают в себя и аппроксимацию и методы работы с двухмерными итрехмерными объектами, такие как аффинные преобразования и методы скрытияневидимых линий, т. е. Так же исчезает необходимость в затратах на сложныйпроцесс математического моделирования.
Помимо этого, некоторые производители компиляторовпоставляют пакеты обработки результатов математического анализа для отображенияв графическом виде. Обычно эти пакеты поставляются в виде компонентов ActiveX (для Windows-платформ). Реже поставляются готовые универсальные оболочки.Программы, написанные для них не нуждаются в разработке интерфейса пользователябольшой сложности, что, например, для языка VisualFortran, использующего только WIN32 API,заметно сокращает время и затраты на создание ПО для визуализации. Частным примеромтакого пакета является рассматриваемый в данной дипломной работе Compaq Array Visualizer (версия 1.5), включающийв себя компоненты ActiveX: Avis2D (для отображения двумерных массивов данных) и AvisGrid (для отображения числовых данных в виде таблицы).
Использование таких компонент и пакетов еще большеускоряет процесс разработки (хотя, вследствие дороговизны пакетов не дает болееэкономически выгодных результатов). К преимуществам разработки на готовыхуниверсальных оболочках является стандартизация, т.е. пользователю или инженерунет необходимости изучать новые программы и их системы интерфейсов и меню.Таким образом, недостающего экономического эффекта можно достигать путемсокращения расходов на обучение персонала.
Негативная сторона заключается в затратах на обучениепрограммистов, а так же в затратах на оболочки визуализации. Помимо этогобиблиотеки, а тем более оболочки, могут не иметь нужных вам функций (например:неудобно выводить данные в логарифмическом масштабе при использовании Avis2D).Кроме того, для использования данного подхода, так как в этом случае крупныепроизводители ПО не применяют технологию “открытого кода”, практическиневозможно учесть ошибки, содержащиеся в коде скомпилированных библиотек иоболочек. Такие ошибки обнаруживаются только в процессе использованияпрограммы. Но, по сравнению с исправлением программы с собственнойматематической моделью, это занимает гораздо меньшее время, так как там ошибкимогут содержаться не только в коде, но и в модели.
2.5 Построение собственныхматематических моделей
При разработке своей математической модели (далее:модели) необходимо учитывать быстродействие машин, на которых должна исполнятсяпрограмма. Таким образом можно пропустить некоторые из описанных нижематематических и алгоритмических методов.
Интерполяция.
Результаты вычисляемые рассчитывающей программойпредставлены в табличном виде. Для сглаживания графиков и поверхностейнеобходима интерполяция данных. Существует множество алгоритмов и методовинтерполяции. Наиболее быстрым и часто применяемым методом является сплайн-интерполяция,которую мы рассмотрим более подробно.
Кусочно-полиномиальная интерполяция заключается втом, что между любыми соседними узлами сетки функция интерполируется кубическимполиномом (кубическая сплайн-интерполяция). Его коэффициенты на каждоминтервале определяются из условий сопряжения в узлах:
fi=yi
f’(xi-0)=f’(xi+0)
f’’(xi-0)=f’’(xi+0)
Кроме того, на границе, при x=x0и x=xn ставятся условия:
f'’(x0)=0 и f``(xn)=0 (1)
Будем искать кубический полином в виде:/> />
f(x)=ai+bi(x -–xi-1)+ci(x-xi-1)2+di(x-xi-1)3, (2)
Из условия fi=yiимеем:
f(xi-1)=ai=yi-1
f(xi)=ai+bihi+ciIi2+dihi3=yi. (3)
hi=xi-xi-1, i=1,2,…,n-1
Вычислим производные:
f’(x)=bi+2ci(x-xi-1)+3di(x-xi-1),
f’’(x)=2ci+6di(x-xi-1),
И потребуем их непрерывности при x=xi:
bi+1=bi+2cihi+3dihi2,
ci+1=ci+3dihi,i=1,2,…,n-1 (4)
Общее число неизвестных коэффициентов, очевидно, равно4n, число уравнений (3) и (4) равно 4n-2. Недостающие два уравнения получаем из условий (1) при x=x0и x=xn;
ci=0, cn+3dnhn=0./> />
Выражая из (4) di=(ci+1-ci)/3hi, подставляя это значение в (3) и исключая
ai=yi-1,получим:
i=1,2,…,n-1,/> />
Подставив теперь выражения для bi, bi+1 и di в первую формулу (4),
после несложных преобразований получаем дляопределения ci разностное уравнение второго порядка.
i=1,2,…,n-1. (5)
Cкраевыми условиями:
c1=0, cn+1=0. (6)
Условие cn+1=0 эквивалентноусловию cn+3dnhn=0 и уравнению ci+1=ci+dihi. Разностное уравнение (5) с условиями (6) решаетсяметодом прогонки.
Можно ввести понятие сплайна порядка m как функции, которая являетсяполиномом степени m на каждом их отрезков сетки и во всех внутреннихузлах сетки удовлетворяет условиям непрерывности функции и производной порядка m-1 включительно. Обычно для интерполяции используютсяслучаи m=3(рассмотренный выше кубический сплайн) и m=1 (линейный сплайн, соответствующий аппроксимацииграфика функции y(x) ломаной,проходящей через точки (xi,yi)).
Работа с трехмерными изображениями.
После проведения интерполяции уже можно построитьграфики для одномерных случаев. Но двумерные случаи (поверхности) требуютдополнительных математических и алгоритмических методов.
Изображение пространственных объектов на экраннойплоскости не возможно без операции проектирования. Видов такого проектированиясуществует довольно много. Мы остановимся на описании проектирования пучкомпрямолинейных лучей. Различают два типа таких пучков: пучок лучей, исходящих изодной точки и пучок лучей, параллельный заданному направлению. Для полученияпроекции заданного объекта на плоскость необходимо провести через каждую еготочку прямую из проектирующего пучка и затем найти координаты точек пересеченияэтих прямых с плоскостью изображения.
В зависимости от взаимного расположения плоскостиизображения и направления пучка параллельных прямых, осуществляющихпроектирование, различают несколько случаев. Самым простым является тот, когдапрямые перпендикулярны плоскости изображения, а сама эта плоскость являетсяодной из координатных плоскостей или параллельна ей.
/>
Для описания преобразований проектирования такжеудобно пользоваться матрицами. Например, матрица проектирования на плоскость
0yz вдоль оси 0x имеет следующий вид:
Если M(x,y,z) – заданнаяточка, то соответствующая ей точка на плоскости изображения находится так:v
Таким образом, точка M проектируетсяв точку M*(0,y,z).
В случае, если плоскость проектирования параллельнакоординатной
/>
/>
плоскости 0yz, матрица несколько изменяется:
Аналогично записываются матрицы проектирования на дведругие координатные плоскости вдоль соответствующих координатных осей:
Матрицы, соответствующие другим случаям взаимногорасположения проектирующего пучка параллельных лучей и координатной системы,разумеется, также существуют. Рассмотрим, например, случай косоугольногопроектирования, при котором пучок прямых пересекает координатную плоскость 0xy поуглом 45o (кабинетная проекция). Тогда соответствующая матрицабудет иметь следующий вид:
/>
Для просмотра построенной поверхности необходимовключить операции вращения 3D-объекта и, иногда увеличения. Увеличениецелесообразно делать по полученным после процесса интерполяции данным, т.е.пересчитывать функцию снова. А вот вращение, перемещение а также зеркальноеотображение необходимо делать при помощи общего аффинного преобразования:
x*=a1x+b1y+c1z+d1,
y*=a2x+b2y+c2z+d2,
z*=a3x+b3y+c3z+d3.
Любое изменение координат, описываемое этимиформулами, можно представить посредством комбинации (последовательноговыполнения) простейших операций: параллельного переноса, поворота, зеркальногоотражения и растяжения (сжатия)./> />
Следует, однако, заметить, что при составлениипрограмм приведенная выше покоординатная формула записи простейшихпреобразований, как правило, не используется. Ее заменяют другой, более удобнойматричной записью:
/> />
Рассмотрим частный случай для вращения:
- матрица поворота вокруг оси 0x.
/>
- матрица поворота вокруг оси 0y.
- /> />
матрица поворота вокруг оси 0z/> />
Операцию параллельного переноса нельзя записатьпри помощи матрицы используемого размера 3 на 3. Тем не менее, единая матричнаязапись всех упомянутых преобразований возможно, если формально ввести еще однудополнительную координату:
Для построения качественного изображения желательноудалить те линии, которые при проектировании на плоскость экрана оказываютсяневидимыми. Для этого можно использовать различные алгоритмы как-то: алгоритмплавающего горизонта, алгоритм использующий список приоритетов, алгоритмиспользующий трассировку лучей, алгоритм использующий z-буфер. Последний, наиболее простой разберем подробно.
Это один из простейших алгоритмов удаления невидимыхповерхностей. Работает этот алгоритм в пространстве изображения. Идея z-буфераявляется простым обобщением идеи о буфере кадра. Буфер кадра используется длязапоминания атрибутов (интенсивности) каждого пиксела в пространствеизображения, z-буфер — это отдельный буфер глубины, используемый длязапоминания координаты z или глубины каждого видимого пиксела в пространствеизображения. В процессе работы глубина или значение z каждого нового пиксела,который нужно занести в буфер кадра, сравнивается с глубиной того пиксела,который уже занесен в z-буфер. Если это сравнение показывает, что новый пикселрасположен впереди пиксела, находящегося в буфере кадра, то новый пикселзаносится в этот буфер и, кроме того, производится корректировка z-буфера новымзначением z. Если же сравнение дает противоположный результат, то никакихдействий не производится. По сути, алгоритм является поиском по х и унаибольшего значения функции z (х, у).
Главное преимущество алгоритма — его простота. Крометого, этот алгоритм решает задачу об удалении невидимых поверхностей и делаеттривиальной визуализацию пересечений сложных поверхностей. Сцены могут бытьлюбой сложности. Поскольку габариты пространства изображения фиксированы,оценка вычислительной трудоемкости алгоритма не более чем линейна. Посколькуэлементы сцены или картинки можно заносить в буфер кадра или в z-буфер впроизвольном порядке, их не нужно предварительно сортировать по приоритетуглубины. Поэтому экономится вычислительное время, затрачиваемое на сортировкупо глубине.
Основной недостаток алгоритма — большой объемтребуемой памяти. Если сцена подвергается видовому преобразованию и отсекаетсядо фиксированного диапазона координат z значений, то можно использовать z-буферс фиксированной точностью. Информацию о глубине нужно обрабатывать с большей точностью,чем координатную информацию на плоскости (х, y); обычно бывает достаточно 20бит. Буфер кадра размером 512х512х24 бит в комбинации с z-буфером размером512х512х20 бит требует почти 1.5 мегабайт памяти. Однако снижение цен на памятьделает экономически оправданным создание специализированных запоминающихустройств для z-буфера и связанной с ним аппаратуры.
Альтернативой созданию специальной памяти для z-буфераявляется использование для этой цели оперативной или массовой памяти.Уменьшение требуемой памяти достигается разбиением пространства изображения на4, 16 или больше квадратов или полос. В предельном варианте можно использоватьг-буфер размером в одну строку развертки. Для последнего случая имеетсяинтересный алгоритм построчного сканирования. Поскольку каждый элемент сценыобрабатывается много раз, то сегментирование z-буфера, вообще говоря, приводитк увеличению времени, необходимого для обработки сцены. Однако сортировка наплоскости, позволяющая не обрабатывать все многоугольники в каждом из квадратовили полос, может значительно сократить этот рост.
Другой недостаток алгоритма z-буфера состоит втрудоемкости и высокой стоимости устранения лестничного эффекта, а такжереализации эффектов прозрачности и просвечивания. Поскольку алгоритм заносит пикселыв буфер кадра в произвольном порядке, то нелегко получить информацию,необходимую для методов устранения лестничного эффекта, основывающихся напредварительной фильтрации. При реализации эффектов прозрачности ипросвечивания, пикселы могут заноситься в буфер кадра в некорректном порядке,что ведет к локальным ошибкам.
Хотя реализация методов устранения лестничногоэффекта, основывающихся на префильтрации, в принципе возможна, практически этосделать трудно. Однако относительно легко реализуются методы постфильтрации(усреднение подпикселов). Напомним, что в методах устранения лестничногоэффекта, основывающихся на постфильтрации, сцена вычисляется в такомпространстве изображения, разрешающая способность которого выше, чемразрешающая способность экрана. Поэтому возможны два подхода к устранениюлестничного эффекта на основе постфильтрации. В первом используется буферкадра, заданный в пространстве изображения, разрешение которого выше, чем уэкрана, и z-буфер, разрешение которого совпадает с разрешением экрана. Глубинаизображения вычисляется только в центре той группы подпикселов, котораяусредняется. Если для имитации расстояния от наблюдателя используетсямасштабирование интенсивности, то этот метод может оказаться неадекватным.
Во втором методе обабуфера, заданные в пространстве изображения, имеют повышенную разрешающуюспособность. При визуализации изображения.
Как мы видим построение собственных математическихмоделей – процесс трудоемкий и сложный. В моделях могут содержаться ошибки,которые исправить гораздо сложнее, чем ошибки в программах. К тому жеиспользование аппаратных функций видеоадаптеров и графических ускорителейтребует специальных знаний, на обучение которым тратится много времени. А безтаких знаний выполнение графических программ заметно замедляется.
2.6 Создание интерфейса пользователя
Этот этап выделен как заключающий, потому что от видаинтерфейса зависит только удобство работы с программой. Однако любойпользователь достаточно быстро привыкает к любому интерфейсу.
С другой стороны, создание хорошего интерфейсапользователя позволит ему быстрее освоить программу и эффективнее с нейработать.
На данный момент существует 2 вида интерфейсапользователя: интерфейс командной строки (называемый так же DOS-интерфейс,UNIX-интерфейс или консольный интерфейс) и графическийинтерфейс (называемый так же GUI – Graphics Users Interface (графическая среда пользователя) или оконный интерфейс).
Написание консольного интерфейса не трудоемко в планенаписания программы, но весьма сложно в плане разработки системы команд. Еслисистема команд разработана неправильно, то зачастую приходится много разповторять один и тот же ввод, одни и те же команды, что заметно усложняетпроцесс работы с программой. Для создания программ с консольным интерфейсом достаточнознаний обработки строк и перевода данных из строкового типа в различныечисловые.
Написание графического интерфейса наоборот, требуетспециальных знаний графических библиотек и упрощает разработку структурыинтерфейса, так как все GUI стандартизированы и строятся одинаково. Однакопрограммы с графическим интерфейсом занимают больше места, и гораздо большевремени на создания, которое, однако можно сократить используя определенныеязыки программирования и определенные IDE, например: ObjectPascal – Delphi,C++ — C++ Builder с библиотекой OWL, C++ — Visual C++ с библиотекой MFC. Однако невсе современные языки программирования имеют развитые IDE и хорошиебиблиотеки для создания GUI. Частный пример – язык Fortran. Compaq Visual Fortran 6.5 входящий в пакет Visual Studio 6 не поддерживает библиотеку MFC и способенработать только с WIN32 API, что заметно замедляет скорость написания программы,и увеличивает количество строк кода.
Заключение
Итак, мы подробно рассмотрели все 4 этапа созданияпрограммного обеспечения для визуализации инженерных расчетов, а также основныеи наиболее часто используемые алгоритмы и математические методы применяемые втаких программах. Подытоживая все выше сказанное, можно отметить что в нашевремя выгоднее писать программы, в которых модель строится на готовыхбиблиотеках и компонентах. Выгоднее также использовать графический интерфейс,если это позволяет выбранный язык программирования.
Раздел 3.
Организационно-экономическийраздел
Оценка целесообразностисоздания программного продукта с применением методики оценкиконкурентоспособности.
ВведениеСозданная впроцессе дипломного проектирования программа использует пакет Compaq Array Visualizer v1.5 для своейработы. Целью данного раздела является показать целесообразность такого выбора,а так же экономические выгоды от использования данной программы. Созданное ПО имеетмассу конкурентов на рынке. В основном это большие САПР для ИМС такие как,например Cadence имеющие свои, встроенные, программы визуализации.
Оговоримсясразу, что использование созданного ПО предполагается в рамках университетскойпрограммы, к тому же работающей по расчетам программ инженеров. Таким образомосновными техническими характеристиками будут являться системные требованияпрограмм, так как компьютерная техника в России остается достаточно дорогой ипоставить мощные рабочие станции во всех классах и лабораториях института непредставляется возможным. К тому же по всем остальным параметрам очень сложноопределить различия узкоспециализированной программы от САПР более общегоназначения. Можно еще заметить, что алгоритмы визуализации программы Array Visualizerничем не уступают тому же Cadence.
Оценимконкурентоспособность созданного товара с этими условиями (т.е. какуниверситетской программы).
3.1 Понятиеконкурентоспособности
Чтобы товарпредставлял интерес для покупателя, он должен обладать определеннымитехнико-эксплуатационными и экономическими параметрами. Условием приобретениятовара, совершения покупки является соответствие этих параметров основнымхарактеристикам неудовлетворенной потребности потребителя. В процессе покупкипокупатель осуществляет выбор товара, устанавливает отличительные признаки,характеризующие конкурентное превосходство данного товара, устанавливаетотличительные признаки, характеризующие конкурентное превосходство данноготовара над аналогичными по значению товарами конкурентов, находящимися нарынке. Приобретая товар, покупатель там самым оценивает его привлекательность,возможную степень удовлетворения своей конкретной потребности и свою готовностьнести затраты, связанные с приобретением и использованием данного товара.
Совокупностькачественных и стоимостных характеристик товара, способствующих созданиюпревосходства данного товара перед товарами-конкурентами в удовлетворенииконкретной потребности покупателя, определяет конкурентоспособность товара.
По степениконкурентоспособности товара производитель может судить о целесообразностивывода данного товара на рынок. Конкурентоспособность характеризует способностьтовара быть купленным в числе первых на рынке среди товаров-конкурентов. Апокупателю конкурентоспособность товара раскрывает уровень привлекательностиданного товара и степень его конкурентных преимуществ.
Таким образом,конкурентоспособность товара может рассматриваться как степеньпривлекательности товара для потребителей, которая определяет возможностьудовлетворения целого комплекса их требований. Покупатель обосновывает выбортовара, оценивая полезный эффект от его использования и расходы связанные с егопокупкой и эксплуатацией. Поэтому конкурентоспособность товара определяетсяпутем сравнения потребителем цены, качества и уровня сервиса, который ему можетбыть предоставлен до и после покупки товара. Сравнению подлежит также такойпоказатель, как уровень маркетингового окружения (сопровождения) товара, т.е.состояние расширенных характеристик товара (маркетинг-логистика, сервис,гарантии, реклама, имидж, упаковка, брэндинг и т.д.)
Классификационнуюсхему, отражающую факторы привлекательности товара и его конкурентоспособности,можно представить в виде цепочки: цена – качество – сервис – маркетинговоеокружение. Или в виде следующей таблицы:Фактор. Характеристика критериев. Цена
Соотношение уровня цены с ценами основных конкурентов.
Развитость системы дифференциации цен в зависимости от соотношения спроса и предложения, а также политики конкурентов.
Привлекательность для потребителей системы скидок. Качество
Технико-эксплуатационные характеристики продукции (функциональность, надежность, удобство эксплуатации и т.д.).
Престижность, дизайн, экологичность товара. Сервис
Качество поставки товара.
Уровень торгового обслуживания.
Наличие запасных материалов и центров по сервисному обслуживанию. Маркетинговое окружение.
Уровень организации маркетинг-логистики.
Эффективность рекламных мероприятий.
Уровень дизайна и содержательности упаковки.
Разработанность брэндинга товара.
Уровень гарантийного обслуживания покупателей до и после приобретения товара.
Возможность покупки товара с помощью средств мультимедиатехноглогий.
Качественныепоказатели конкурентоспособности характеризуют свойства товара, егохарактеристики с точки зрения готовности товара удовлетворить конкурентнуюпотребность.
Качествотовара – это совокупность свойств, обуславливающих его пригодностьудовлетворять определенные потребности в соответствии с назначением. Качествотовара проявляется в потреблении. Оценивая качество товара, потребительопосредует степень полезности этого товара как потребительской стоимости.
Свойствотовара может проявляться при его создании и при эксплуатации. Свойства могутхарактеризовать товар как объект проектирования (новизна, сложность, патентнаячистота и т.д.), как объект производства (материалоемкость, энергоемкость ит.д.) и как объект потребления, эксплуатации (производительность, мощность,скорость, надежность, безопасность, расход материалов и т.д.).
Качествоуслуги включает следующие факторы: компетентность фирмы; надежностьдеятельности и обязательности фирмы; отзывчивость и внимательность сотрудников;доступность коммуникаций и общения; быстрое понимание потребностей клиента;безопасность обслуживания (в юридическом, финансовом и моральном отношениях);представительность инфраструктуры фирмы и культура обслуживания.
Количественныехарактеристики какого-либо свойства товара, определяющие качество, называются показателямикачества. Показатели качества могут классифицироваться по следующим критериям:характеризуемые свойства, способ измерения, способ использования, стадияопределения и др.
Конкурентоспособностьтовара характеризует не само по себе его качество, а степень соответствиякачества данного товара показаниям аналогичного по назначению товараконкурента. Таким образом, оценка конкурентоспособности товара подразумеваетсопоставление значений показателей качества товара фирмы с показателем качестватовара конкурента. В связи с этим качественные показатели конкурентоспособноститовара подразделяются на классификационные и оценочные.
Классификационныепоказатели раскрывают свойства товара, которые определяют его назначение,область применения и условия использования.
Оценочныепоказатели характеризуют свойства товара, которые определяют его качество.Оценочные показатели используются для анализа соответствия параметров продукциитехнологическим требованиям и стандартам, а также для установления степенисоответствия товара, его свойств конкретной потребности.
Оценкасоответствия параметров продукции технологическим требованиям и стандартам, какправило, осуществляется на стадии производства и аттестации товара. Поэтому этугруппу оценочных показателей можно условно называть нормативно-производственной./> />
Для оценки уровня нормативных параметров используется специальный показатель,который имеет только два значения – 1 или 0.
где qi – частный показатель по i-мунормативному параметру;
m – число нормативных параметров, подлежащих оценке.
Если изделиесоответствует нормам и стандартам, то этот показатель равен 1, если нет, — то0. Общий показатель по нормативным параметрам (Iнп)рассчитывается как произведение частных показателей по каждому параметру:
Как видно,если один из частных показателей будет равен 0, то общий показатель также будетравен 0, а значит изделие или товар в этом случае являютсянеконкурентоспособными.
Экономическиепоказатели конкурентоспособности товара должны оценивать цену потребления, т.е.затраты потребителя, необходимые для удовлетворения его потребности. Онивключают затраты на приобретение товара и затраты по эксплуатации товара. Ценапотребления (Цп) складывается из рыночной цены товара (Цт),а также из расходов, связанных с эксплуатацией (Цэ), использованиемэтого товара в период его жизненного цикла:
Цп=Цт+Цэ.
Оценкасоответствия свойств товара конкретной потребности производится чаще всего впроцессе использования товара. Поэтому эту группу оценочных показателей условноможно называть консументной (от англ. consume –потреблять).
При оценкеконсументных параметров устанавливается, какие свойства товара наиболее ценныдля покупателя, а затем определяется соответствие свойств существующего товараэтой потребности или эталону. В количественном отношении такая оценка можетбыть произведена по формуле:
/>
где Ki – частный консументный показатель по i-му параметру;
Pнi – величина i-го параметра анализируемого изделия;
Pэi –величина i-го параметра эталонного изделия (например,товара–конкурента ).
После расчетачастных консументных показателей определяют общий показатель по консументнымпараметрам (Kкп):
/>
где ai – удельный вес i-гопараметра.
m – число параметров
Рассчитанныйобщий показатель Kкп показывает, на сколькосоздаваемый (или уже созданный) товар соответствует эталонному товару поданному параметру. На практике сопоставление возможно с товаром-конурентом.Поэтому реальное значение Kкп должно бытьпроверено на соответствие конкретной потребности (1):
/>
где Pнi – величинаконсументного параметра создаваемого изделия;
Pкi – величинаконсументного параметра изделия-конкурента.
Оценкаэкономических параметров конкурентоспособности связана с определением ценыпотребления анализируемого (или создаваемого) изделия и сравнением ее с ценойпотребления товара-конкурента. Сравнение цен потребления производится поформуле (2):
/>
где Э – общийпоказатель по экономическим параметрам;
Цпа –цена потребления анализируемого изделия;
Цпк– цена потребления товара-конкурента.
Послеопределения общих показателей конкурентоспособности по качественным,экономическим и маркетинговым параметрам рассчитывается интегральный показательуровня конкурентоспособности изделия (3):
/>
При Kип>=1 изделие считается конкурентоспособным.
Оценкаконкурентоспособности изделия или товара – достаточно сложный процесс.Определенные трудности могут возникнуть при выборе единой размерностисопоставляемых показателей и оценке их значимости, определении коэффициентоввесомости различных свойств изделия для потребителя.
3.2 Оценкаконкурентоспособности
В качестветовара-конкурента возьмем популярную САПР для ИМС Cadence.
Созданное впроцессе дипломного проектирования ПО соответствует минимальным нормативнымтребованиям, предъявляемым к ПО. Поэтому Iнп=1.
Рассчитаемэкономический параметр Э. Цена используемой программы Compaq Array Visualizer 1.5 составляет от $200 до $500 в зависимости отпоставки. Будем брать максимальную. Система Cadence дляПК стоит порядка $5000 (не будем брать в учет затраты на обучение персоналасчитаем что сотрудники уже обучены). В соответствии с формулой (2):
Э =500/5000=0.1.
Выделим теперьконсументные параметры (поскольку системные требования – чем меньше – темлучше, то взята обратная величина, за идеальное принята минимальная величина).Название параметра Array Visualizer + созданное ПО Cadence AV Ki Cadence Ki Мин. рабочая частота процессора, MHz 166 300 1 0.55 Мин. объем ОЗУ, Mb 32 64 1 0.5 Занимаемое место на HDD, Mb 16 1300 1 0.01 Удобство использования - - 0.4 1
Расчет относительныхзначений технических параметров:Название параметра
AV Ki
Cadence Ki
ai
(Pнi/Pкi)*ai Мин. рабочая частота процессора 1 0.55 0.20 0.36 Мин. объем ОЗУ 1 0.5 0.20 0.4 Занимаемое место на HDD 1 0.01 0.01 1 Удобство использования 0.4 1 0.59 0.24
Общий Kкп 2
С учетомэкономического параметра Э=0.1 интегральный показатель
Kин=(Kкп / Э)=(2/ 0.1)=20.
Обоснуемвыбор коэффициентов ai. Наиболее дешевойкомпонентой компьютера из всех системных требований является жесткий диск.Величина в 1.5 Gb уже не является заоблачной. Однакопроцессоры по-прежнему дороги, как и модули ОЗУ. А вот удобство использования — очень важный параметр. Итак общий Kкп всоответствии с формулой (1): Kкп=2. Тогда,исходя из формулы (3) интегральный показатель уровня конкурентоспособностиизделия Kин=20. Это означает чтопроизводимое ПО конкурентоспособно.
Заключение.
Естественно,что мы сравнивали созданное ПО с САПР для ИМС Cadenceтолько в узкой, специализированной нише. Т.е. наша программа ни в коей мере незаменяет полностью такую систему как Cadence. Однакодля выводов инженерных расчетов на уровне университетской программы она может внекоторых случаях оказаться экономически выгоднее, чем большие системы(например: лабораторные работы студентов, проектирование новых приборов снаписанием собственных программ сотрудниками института).
Раздел 4.
Производственно-экологическаябезопасность и охрана труда.
Анализ нормативныхдокументов при работе с ПК.
Введение
Насовременном этапе создание новой техники ставит задачу не только облегчить трудчеловека, но и привести к изменению его роли и места в производственномпроцессе. В условиях технического прогресса увеличивается количество объектов,которыми он должен управлять, возрастают скорости управляемых им процессов,широкое применение получает дистанционное управление. В связи с этим возрастаетроль охраны труда, призванной не только облегчить труд человека, но и сделатьусловия труда комфортными.
Прииспользовании человеком даже самой передовой технологии у него могут возникнутьсоответствующие профессиональные заболевания, если работая, он будетпренебрегать даже элементарными правилами техники безопасности.
Типичнымиощущениями, которые испытывают к концу рабочего дня чрезмерно увлеченные ибеспечные пользователи персональных компьютеров, являются: головная боль, резьв глазах, тянущие боли в мышцах шеи, рук и спины, зуд кожи на лице и т.д.Испытываемые день за днем, они могут привести к мигреням, частичной потерезрения, сколиозу, кожным воспалениям и другим нежелательным явлениям. Все этоне случайно.
Вероятнеевсего, человеку уже никогда не удастся полностью избежать пагубного влиянияпередовых технологий, но, как и во многих других случаях, сами пользователиперсональных компьютеров, по крайней мере, могут свести их к минимуму.Большинство проблем решаются сами собой при правильной организации рабочего места,соблюдении правил техники безопасности и разумном распределении рабочеговремени.
Прирассмотрении вопросов охраны труда большое внимание уделяется производственномуосвещению, оздоровлению воздушной среды, защите от шума, электробезопасности,пожарной безопасности и др.
4.1Требования к производственному освещению
Правильно спроектированное ивыполненное производственное освещение обеспечивает возможность нормальнойпроизводственной деятельности. Сохранность зрения человека, состояние егоцентральной нервной системы и безопасность на производстве в значительной мерезависят от условий освещения.
Производственноеосвещение должно удовлетворять следующим требованиям:
1.Освещенность должна соответствовать характеру труда, который определяетсяобъектом различия, фоном, контрастом объекта с фоном.
2.Необходимо обеспечить достаточно равномерное распределение яркости на рабочейповерхности, а также в пределах окружающего пространства. Светлая окраскапотолка, стен и производственного оборудования способствует созданиюравномерного распределения яркости в поле зрения.
3.На рабочей поверхности должны отсутствовать резкие тени. Особенно вредныдвижущиеся тени, которые могут привести к травмам. Тени необходимо смягчать,применяя, например, светильники со светорассеивающими молочными стеклами. Наокнах необходимо предусматривать солнцезащитные устройства (например жалюзи).
4.В поле зрения должна отсутствовать блескость. Блескость — повышенная яркостьсветящихся поверхностей, вызывающая нарушение зрительных функций(ослепленность), т.е. ухудшение видимости объектов. Блескость снижаютуменьшением яркости источника света или выбором рациональных углов светильника.
5.Величина освещенности должна быть постоянной во времени. Колебанияосвещенности, вызванные резким изменением напряжения в сети, приводят кзначительному утомлению. Пульсация освещенности связана также с особенностямиработы газоразрядной лампы. Снижение коэффициента пульсации с 55 до 5% (притрехфазном включении) приводит к повышению производительности труда на 15%.
6.Следует выбирать оптимальную направленность светового потока. Наибольшаявидимость достигается при падении света под углом 60 градусов к его нормали, анаихудшая при нуле градусов.
7.Следует выбирать необходимый состав спектра освещения. Это существенно приработах, где требуется правильная цветопередача.
8.Все элементы осветительных установок должны быть достаточно долговечными,электро- и взрыво- безопасными.
Обеспечениеэтого условия достигается применением зануления или заземления, ограничениемнапряжения для питания местных или переносных светильников до 42 вольт и ниже.
Анализируяусловия работы программиста получаем следующие требования к производственномуосвещению:
— наименьшая допустимая освещенность от общего освещения составляет 300 лк;
— при работе за компьютером желательно, чтобы освещенность рабочего места непревышала 2/3 нормальной освещенности помещения;
— экран дисплея не должен быть ориентирован в сторону источников света (окон,настольных ламп и т.п.);
приразмещении рабочего места рядом с окном угол между экраном дисплея и плоскостьюокна должен составлять не менее 90 градусов (для исключения бликов),прилегающую часть окна желательно зашторить;
— не следует располагать дисплей непосредственно под источником освещения иливплотную с ним;
— стена позади дисплея должна быть освещена примерно так же, как и его экран;
— яркость для блестящих поверхностей более 0.2 кв.м не должна превышать 500кд/кв.м;
— показатель ослепленности не должен превышать 40 единиц;
- коэффициент пульсаций 10 — 20 %.
Спецификаработы за ПК, состоит в том, что работать приходится с так называемымсамосветящимся объектом.
Свечениесо стороны экрана, а также частая смена заставок на экране при большойпродолжительности трудовой деятельности может отрицательно воздействовать назрение. Такой режим работы утомляет зрительные органы. Поэтому разработчикупрограммного обеспечения следует учитывать этот фактор при проектированиипрограммного обеспечения и его отладке за компьютером.
4.2Защита от излучений
Основнымисточником эргономических проблем, связанных с охраной здоровья людей,использующих в своей работе персональные компьютеры, являются дисплеи(мониторы), особенно дисплеи с электронно-лучевыми трубками. Они представляютсобой источники наиболее вредных излучений, неблагоприятно влияющих на здоровьеоператоров.
Историяисследования этого вопроса достаточно длительная и непростая, но полученныерезультаты носят пока еще преимущественно статистический характер и не имеютадекватного объяснения. Частотный состав (спектр) излучения мониторахарактеризуется наличием рентгеновских, ультрафиолетовых, инфракрасных и другихэлектромагнитных колебаний. Опасность рентгеновского и части других излученийбольшинством ученых признается пренебрежимо малой, поскольку их уровеньдостаточно невелик и в основном поглощается покрытием экрана. Наиболее тяжелаяситуация связана, по-видимому, с полями излучений очень низких частот (ОНЧ) икрайне низких частот (КНЧ), которые, как выяснилось, способны вызыватьбиологические эффекты при воздействии на живые организмы. Было обнаружено, чтоэлектромагнитные поля с частотой порядка 60 Гц могут инициировать изменения вклетках животных (вплоть до нарушения синтеза ДНК). Особенно поразительным дляисследователей оказался тот факт, что, в отличие, например, от рентгеновскогоизлучения, электромагнитные волны обладают необычным свойством: опасность ихвоздействия при снижении интенсивности излучения не уменьшается, мало того,некоторые поля действуют на клетки тела только при малых интенсивностях или наконкретных частотах.
Специальныеизмерения показали, что мониторы действительно излучают магнитные волны, поинтенсивности не уступающие уровням магнитных полей, способных обусловливатьвозникновение опухолей у людей. Более серьезные результаты были получены приобследовании беременных женщин. Оказалось, что для тех женщин, которыепроводили за дисплеем компьютеров не менее 20 часов в неделю, вероятностьпреждевременного прерывания беременности (выкидыша) на 80% выше, чем длявыполняющих аналогичные работы без применения компьютера.
Исследователииз Macworld обнаружили, что если на расстоянии 10 см перед мониторами, обычноиспользуемыми с компьютерами Macintosh, напряженность магнитного полясоставляет примерно от 5 до 23 мГс, то на расстоянии 70 см от экрана ни уодного из обследованных мониторов напряженность поля не превышала величины 1мГс. (Интенсивность поля вне указанных пределов составляла 0.1 — 0.5 мГс.)
Какэто ни странно, но до сих пор нет нормативов для излучений КНЧ-магнитных полей,хотя в некоторых странах (в том числе в Швеции и Канаде) разработаны стандартыдля излучений ОНЧ-магнитных полей. Большое число поставщиков — например, фирмыIBM, DEC и Philips — продают мониторы, удовлетворяющие указанным стандартам.Кроме того, любой монитор, работающий не на ЭЛТ, имеет то преимущество, что неизлучает переменных компонент, связанных с наличием систем вертикального игоризонтального отклонения электронного луча.
Пользователямперсональных компьютеров, желающим снизить уровень облучения переменнымимагнитными полями, следует расположить мониторы так, чтобы расстояние до нихсоставляло величину, равную расстоянию вытянутой руки (с вытянутыми пальцами).Поскольку магнитные поля сзади и по бокам большинства мониторов значительносильнее, чем перед экраном, пользователи должны располагать свои рабочие местана расстоянии не менее 1.22 м от боковых и задних стенок других компьютеров.Следует иметь в виду, что магнитное излучение ни чем не задерживается.
4.3Электробезопасность
Электроэнергияполучила широкое применение во всех отраслях промышленности. С электроэнергиейсвязаны в той или иной степени все работающие. При неумелом обращении илинесоблюдении установленных требований электрический ток представляет серьезнуюопасность.
Сприменением ПК эта проблема встает особенно остро, поскольку системуэлектропитания нужно проложить по всему помещению, где расположены ПЭВМ.
Основнымипричинами воздействия тока на человека являются: случайное прикосновение илиприближение на опасное расстояние к токоведущим частям; появление напряжения наметаллических частях оборудования в результате повреждения изоляции илиошибочных действий персонала; шаговое напряжение на поверхности Земли врезультате замыкания провода и др.
ГОСТ12.4.011-75 в разделе «Средства коллективной защиты» определяетследующий перечень основных видов средств защиты от поражения электрическимтоком: устройства оградительные, автоматического контроля и сигнализации,защитного заземления и зануления, автоматического отключения, выравниванияпотенциалов и понижения напряжения, дистанционного управления; изолирующиеустройства и покрытия; предохранительные устройства; молниеотводы и разрядники;знаки безопасности.
ГОСТ12.2.007-75 устанавливает требования безопасности, предотвращающие или уменьшающиедо допустимого уровня воздействие на человека электрического тока;электрической искры или дуги; движущихся частей изделия; частей изделия,нагревающихся до высоких температур; опасных и вредных материалов, используемыхв конструкции изделия, а также опасных и вредных веществ, выделяющихся приэксплуатации.
Основнымисредствами защиты от поражения электрическим током при работе на компьютереявляются защитное заземление и зануление.
Защитноезаземление — это преднамеренное электрическое соединение с землей или ееэквивалентом металлических нетоковедущих частей электрического итехнологического оборудования, которые могут оказаться под напряжением.
Защитноезаземление является простым, эффективным и широко распространенным способомзащиты человека от поражения электрическим током при прикосновении кметаллическим поверхностям, оказавшимся под напряжением. Обеспечивается этоснижением напряжения между оборудованием, оказавшимся под напряжением, и землейдо безопасной величины.
Приустановке ПК типа IBM PC с использованием защитного заземления наибольшеедопустимое сопротивление защитных заземляющих устройств составляет 4 Ома.
Занулениеявляется одним из средств, обеспечивающих безопасную эксплуатациюэлектроустановок. Оно выполняется присоединением к неоднократно заземленномунулевому проводу корпусов и других конструктивных металлических частейэлектрооборудования, которые нормально не находятся под напряжением, но могутоказаться под ним при повреждении изоляции.
Наибольшеедопустимое сопротивление заземляющих устройств и заземлителей в системезануления при подключении ПК типа IBM PC составляет 30 Ом.
Изоляцияимеет важное значение в электроустановках, она защищает их от чрезмерной утечкитоков, предохраняет людей от поражения током и исключает возникновение пожаров.
Правиламиустройства электроустановок определено, что сопротивление изоляции сети научастке между двумя смежными предохранителями или за последнимипредохранителями между любыми проводами должно быть не менее 0.5 МОм.
Проводкав производственных помещениях выполняется изолированными проводами иликабелями, которые в местах, где возможны их механические повреждения,укладываются в металлические трубы.
Помещения,в которых устанавливаются персональные компьютеры должны соответствовать всемвышеуказанным требованиям.
4.4Пожарная безопасность
Очень важныморганизационным мероприятием является также проведение обязательного ипериодически повторяемого инструктажа по электро — и пожаробезопасности всехлиц, которые допускаются к работе на ПК. При проведении периодическиповторяемых противопожарных инструктажей необходимо обязательно добиваться,чтобы персонал практически умел пользоваться первичными средствами тушенияпожара и средствами связи
Для тушенияпожара должны применяться ручные огнетушители и переносные установки.Электросети и электроустановки, которые находятся под напряжением, тушить водойнельзя ни в коем случае, т.к. через струю воды может произойти поражениеэлектрическим током. Именно поэтому для тушения пожара, который возник из-занеисправности электроприборов, применяют только пенные огнетушители.
Возможностьбыстрой ликвидации пожара во многом зависит от своевременного оповещения опожаре. Обычно на предприятиях электронной промышленности весьмараспространенным средством оповещения является телефонная связь.
4.5Защита от шума и вибрации
Шум- это беспорядочное сочетание звуков различной частоты и интенсивности.
Шумна рабочих местах в помещениях, где приходится работать программистам,создается внутренними источниками: техническими средствами, установкамикондиционирования воздуха и другим оборудованием.
Допустимыешумовые характеристики рабочих мест регламентируются ГОСТ 12.1.003-83.
Мероприятия,проводимые для снижения уровня шума определяются ГОСТ 12.1.029-80 «ССБТ.Средства и методы защиты от шума. Классификация».
Снижениеуровня производственных шумов в машинных залах достигается ослаблением шумовсамих источников и специальными архитектурно-планировочными мероприятиями,такими как:
— облицовка стен и колонн звукопоглощающими перфорированными плитами с прокладкойиз пористых поглотителей шума;
— уменьшение площади стеклянных ограждений и оконных проемов;
— установка особо шумящих устройств на упругие (резиновые, войлочные и т.п.)прокладки;
— применение на рабочих местах звукогасящих экранов;
— отделение помещений с высоким уровнем шума от других помещенийзвукоизолирующими перегородками.
Колебаниятел с частотой, меньшей 16 Гц, воспринимаются организмом человека только каквибрация. Сопровождающие шум механические вибрации не только вредновоздействуют на организм, но и мешают человеку выполнять как мыслительные, таки двигательные операции. Зрительное восприятие также ухудшается подвоздействием вибрации.
Нормируютсяпараметры вибрации в соответствии с требованиями ГОСТ 12.1.012-78 «ССБТ.Вибрация. Общие требования безопасности».
Дляограничения распространения вибрации по материалу жестких конструкцийрекомендуется применение изолирующих прокладок (резина, иногда войлок), илипружин, на которые опираются вибрирующие механизмы или их узлы.
4.6Психофизиологические опасные и вредные производственные факторы
Психофизиологическиефакторы в зависимости от характера действия делятся на следующие группы:физические перегрузки (статические, динамические) и нервно-психические перегрузки(умственное перенапряжение, перенапряжение анализаторов, монотонность труда,эмоциональные перегрузки).
Монотонностьили монотония — психическое состояние человека, вызванное однообразиемвосприятий или действий.
Подутомлением понимается процесс понижения работоспособности, временный упадоксил, возникающий при выполнении определенной физической или умственной работы.
Дляуменьшения влияния этих факторов необходимо применять оптимальные режимы трудаи отдыха в течении рабочего дня:
— общее время работы за дисплеем не должно превышать 50% всего рабочего временипрограммиста;
— при обычной работе за компьютером необходимо делать 15-минутные перерывы черезкаждые два часа, а при интенсивной работе — через каждый час;
— не следует превышать темп работы порядка 10 тысяч нажатий клавиш в час(примерно 1500 слов);
— предпочтительнее использовать дисплеи с высокой разрешающей способностью(разрешением) и удобным размером экрана (лучше не применять CGA и EGA-мониторы ималоразмерные, менее 15" по диагонали, экраны);
— лучше выбирать видеоадаптеры с высоким разрешением и, по возможности (если естьна рынке и цена приемлемая), частотой обновления экранного изображения не менее70-72 Гц;
— обязательно ставить на дисплеи экранные, в частности, поляризационные, фильтры,в несколько раз снижающие утомляемость глаз;
— наконец, при вводе данных с клавиатуры рекомендуется не зажимать телефоннуютрубку между плечом и ухом.
Рабочаяпоза оказывает значительное влияние на эффективность работы человека. Основныетребования к рабочим местам при выполнении работы сидя приведены в ГОСТ12.2.033-78 «ССБТ. Рабочее место при выполнении работ сидя. Общиеэргономические требования».
Приорганизации рабочего места программиста необходимо придерживаться следующихрекомендаций:
— рабочее место должно быть оборудовано так, чтобы исключать неудобные позы идлительные статические напряжения тела;
— поскольку найти такое идеальное положение для тела, в котором можно было быпребывать в течении всего дня, вряд ли возможно, для большинства людейкомфортабельным может быть рабочее место, которое можно приспособить, какминимум, для двух позиций (при этом положение оборудования должносоответствовать выполняемой работе и привычкам пользователя).
Кобслуживанию и работе на ПК допускаются лица прошедшие медосмотр припоступлении на работу. Последующий медосмотр проводится раз в два года.
Такженеобходимо соблюдать ограничения на работу с персональными компьютерами дляслужащих, страдающих заболеваниями опорно-двигательного аппарата, глаз (или нарушениямизрения), кожи, а также для беременных женщин (во всех случаях лучше получитьконсультацию у врача).
4.7Расчет воздухообмена
Однимиз основных параметров по оптимизации микроклимата и состава воздуха впомещении является обеспечение надлежащего воздухообмена.
Санитарныминормами установлено, что объем производственных помещений на одного работающегодолжен составлять не менее 15 кубометров, а площадь помещения — не менее 4.5кв.м.
Впроизводственных помещениях объемом до 20 кубометров на одного работающего приотсутствии загрязнения воздуха производственными вредностями вентиляция должнаобеспечивать подачу наружного воздуха в количестве не менее 30 куб.м/час наодного работника, а в помещениях объемом 20 — 40 кубометров на одногоработающего — не менее 20 куб.м/час. Во всех указанных случаях при этом должныбыть выдержаны нормы по температуре и влажности воздуха.
Помещение,где располагается рабочее место программиста, имеет площадь 24.5 кв.м и объем81 кубометр. Учитывая вышеприведенные
требованиянайдем допустимое количество одновременно работающих человек:
а)N
б)N
Получаем,что для выполнения указанных требований в данном помещении могут работать неболее пяти человек.
Произведем расчет воздухообмена.
Исходныеданные:
1.норма температуры в рабочей зоне для помещений, характеризуемых избытком[>23 Вт/м3] теплоты для легкой работы t = 20 — 22 °C ;
2.Объем помещения: 81 кубометр.
3.Количество аппаратуры и выделяемая ей мощность:
Монитор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
programDiplom_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$ATTRIBUTESarray_visualizer :: VMas
real(4),allocatable :: PXMas(:)
!DEC$ATTRIBUTESarray_visualizer :: PXMas
real(4),allocatable :: PYMas(:)
!DEC$ATTRIBUTESarray_visualizer :: PYMas
!Sclaes
real(4),allocatable :: XAxis (:)
!DEC$ATTRIBUTESarray_visualizer :: XAxis
real(4),allocatable :: YAxis (:)
!DEC$ATTRIBUTESarray_visualizer :: YAxis
character (8):: com
character (70):: preFile, txtFile
character (20):: xname, yname, zname
!Block_2
!readingfilenames
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
!defaultvalues
hx=1
hy=1
xname='X'
yname='Y'
zname='Z'
!readingpresets
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)
!allocatearrays
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 axisscales
do j=lbj,ubj
XAxis(j) =real(j)*hx
end do
do i=lbi,ubi
YAxis(i) =real(i)*hy
end do
!readingvalues
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)
!startingstate 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 tostart AV
callfaglStartWatch(VMas, status)
callfaglStartWatch(PXMas, status)
callfaglStartWatch(PYMas, status)
callfaglStartWatch(XAxis, status)
callfaglStartWatch(YAxis, status)
!startinggraph is 'visual' k=1
plx=0;
ply=0;
pld=0;
vis=1;
callfavStartViewer(hav, status)
callfavSetArray(hav, VMas, status)
callfavSetDimScale(hav, 1, YAxis, status)
callfavSetDimScale(hav, 2, XAxis, status)
callfavShowWindow(hav, av_true, status)
callfavSetUseAxisLabel(hav, X_AXIS, 1, status)
callfavSetAxisLabel(hav,X_AXIS, trim(xname), status)
callfavSetUseAxisLabel(hav, Y_AXIS, 1, status)
callfavSetAxisLabel(hav,Y_AXIS, trim(yname), status)
callfavSetUseAxisLabel(hav, Z_AXIS, 1, status)
callfavSetAxisLabel(hav,Z_AXIS, trim(zname), status)
call Stat()
!Block_4
4 callfavSetArrayName(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
callChangeDelay()
end if
if (trim(com)== 'k') then
callChangeK()
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»
callfaglEndWatch(Vmas, status)
callfaglEndWatch(PXMas, status)
callfaglEndWatch(PYMas, status)
callfaglEndWatch(XAxis, status)
callfaglEndWatch(YAxis, status)
deallocate(TDMas)
deallocate(VMas)
deallocate(PXMas)
deallocate(PYMas)
deallocate(XAxis)
deallocate(YAxis)
callfavEndViewer(hav, status)
contains
!Block_6
!Subroutins
subroutineStat()
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
subroutineChangeDelay()
write (*,*)'Current animate delay is ', delay
write(*,'(a\)') 'Enter new value of delay > '
read *, delay
return
end subroutine
subroutineAnimat()
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
k1=lbk
end if
write (*,'(a\)') 'Enter end k > '
read *, k2
if(k2>ubk) then
k2=ubk
end if
if(k2
k2=lbk
end if
if (k2
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
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
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
callfavUpdate(hav,0,status)
dotmp=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
callfavUpdate(hav,0,status)
dotmp=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
callfavUpdate(hav,0,status)
dotmp=1,(delay*1000000)
end do
end do
end if
k=k-1
print *,«End animation»
return
end subroutine
subroutineHelp()
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
subroutineChangeK()
write (*,*)'Current k is: ', k
write(*,'(a\)')'Enter k > '
read *,k
if (k>ubk)then
k=ubk
end if
if (k
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
callfavUpdate(hav, 0, status)
return
end subroutine
subroutinePlainX()
if (plx==0)then
plx=1
ply=0
pld=0
vis=0
callfavSetArray(hav, PXMas, status)
callfavSetDimScale(hav, 1, XAxis, status)
callfavSetUseAxisLabel(hav, X_AXIS, 1, status)
callfavSetAxisLabel(hav,X_AXIS, trim(xname), status)
callfavSetUseAxisLabel(hav, Z_AXIS, 1, status)
callfavSetAxisLabel(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
i=lbi
end if
do j=lbj,ubj
PXMas(j)=TDMas(k,i,j)
end do
callfavUpdate(hav,0,status)
return
end subroutine
subroutinePlainY()
if (ply==0)then
plx=0
ply=1
pld=0
vis=0
callfavSetArray(hav, PYMas, status)
callfavSetDimScale(hav, 1, YAxis, status)
callfavSetUseAxisLabel(hav, X_AXIS, 1, status)
callfavSetAxisLabel(hav,X_AXIS, trim(yname), status)
callfavSetUseAxisLabel(hav, Z_AXIS, 1, status)
callfavSetAxisLabel(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
j=lbj
end if
do i=lbi,ubi
PYMas(i)=TDMas(k,i,j)
end do
callfavUpdate(hav,0,status)
return
end subroutine
subroutinePlain()
if (pld==0)then
plx=0
ply=0
pld=1
vis=0
callfavSetArray(hav, VMas, status)
callfavSetDimScale(hav, 1, YAxis, status)
callfavSetDimScale(hav, 2, XAxis, status)
callfavSetGraphType(hav, 2, status)
callfavSetUseAxisLabel(hav, X_AXIS, 1, status)
callfavSetAxisLabel(hav,X_AXIS, trim(xname), status)
callfavSetUseAxisLabel(hav, Y_AXIS, 1, status)
callfavSetAxisLabel(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
callfavUpdate(hav,0,status)
return
end subroutine
subroutineVisu()
if (vis==0)then
plx=0
ply=0
pld=0
vis=1
callfavSetArray(hav, VMas, status)
callfavSetDimScale(hav, 1, YAxis, status)
callfavSetDimScale(hav, 2, XAxis, status)
callfavSetGraphType(hav, 1, status)
callfavSetUseAxisLabel(hav, X_AXIS, 1, status)
callfavSetAxisLabel(hav,X_AXIS, trim(xname), status)
callfavSetUseAxisLabel(hav, Y_AXIS, 1, status)
callfavSetAxisLabel(hav,Y_AXIS, trim(yname), status)
call favSetUseAxisLabel(hav,Z_AXIS, 1, status)
callfavSetAxisLabel(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
callfavUpdate(hav,0,status)
return
end subroutine
subroutinePaus()
integer(4) ::tmp, a, b
write(*,'(a\)')'Enter number of delays > '
read *, a
if (a
a=1
end if
do b=1,a
dotmp=1,(delay*1000000)
end do
end do
end subroutine
end program