Разработка модуля обработки данных физического эксперимента

Формирование требований к модулю обработки данных физического эксперимента. Объект, в котором используют программу. Требования к исходным кодам, языкам программирования. Функции, реализуемые модулем. Средства, расширяющие возможности операционной системы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 16.12.2013
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Входными данными для расчета является массив значений, полученных из файла оговоренного выше формата. При этом каждый элемент массива - есть объект уровня dto, вида, указанного на рисунке 20:

Рисунок 20 - объект Data.dto

Входной массив объектов передается фабрике процессов в виде динамического списка, реализующего интерфейс IList<Data>.

Полученный список значений непригоден для вычислений, так как содержит не абсолютные показатели, а относительные значения интенсивности, полученные из-за специфики измерительного прибора. Поэтому следующим этапом является поиск «нулевого» значения в массиве данных и приведению всего списка значений к абсолютным показателям. Стоит заметить, что подтверждение найденного значение (хотя это и не отражено на рисунке 21) производит пользователь и в случае, если найденный программно показатель его не устраивает - задает базис в ручную.

Поиск базисного значения в программе реализован методом полного перебора, с применением коллекции интерфейса IDictionary. (Более подробно см. рис. 5)

После того, как значение базиса было найдено - оно вычитается из значений интенсивностей для всех объектов, составляющих коллекцию IList<Data>, таким образом образовывая новую рабочую коллекцию этого же типа.

Именно к этой коллекции применяется перевод температуры из показаний, считанных с термопары к единицам системы СИ при помощи таблицы и формулы линейной интерполяции (8).

Так как в общем случае поиск энтальпии может осуществляться не для единственного пика, то в системе предусматривается поиск пиков (подробнее см рис. 6) В дальнейшем применительно к этому алгоритму речь будет вестись о скомпонованных для каждого из пиков значения. Сложность реализации этой задачи позволяет решить конструкция :

IDictionary<int, IList<object>> … = new Dictionary<int, IList<object>>();

В данном случае ключом словаря будет являться масса молекулы/иона.

Дальнейшие расчеты производятся для определения коэффициентов линейного МНК и описываются формулами (5) и (6), кроме того, хотя, это и не показано на рисунке 21 (в целях экономии места), рассчитывают значения невязки для каждого из пиков по формуле (7).

Значение энтальпии рассчитывается по формуле (3).

Протокол взаимодействия классов контроллера и модели описывает диаграмма на рисунке 21:

Рисунок 21 - протокол взаимодействия для поиска значения энтальпии

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

5. Рабочая документация

5.1 Руководство пользователя

5.1.1 Введение

5.1.1.1 Область применения

Областью применения модуля являются высокотемпературные масспектрометрические исследования, производимые на масспектрометрах МИ-1201 и АПДМ-1 с использованием разработанной АСНИ для этих приборов.

5.1.1.2 Краткое описание возможностей

- Разработанный модуль предоставляет пользователю следующие возможности:

- расчет энтальпии сублимации;

- сохранение данных эксперимента в виде отчета для дальнейшего использования в качестве справочника

5.1.1.3 Уровень подготовки пользователя

Пользователь системы должен:

- уметь работать с приложениями-windows, предоставляющим графический интерфейс пользователя;

- обладать знаниями в рассматриваемой предметной области;

Администратор системы должен:

- иметь навыки работы с операционной системой Debian Linux;

- иметь представление об устройстве системы;

- уметь пользоваться программным обеспечением, используемым в системе;

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

- иметь навыки работы с операционной системой Microsoft Windows XP;

5.1.1.4 Перечень эксплуатационной документации

В состав эксплуатационной документации входит:

- настоящая рабочая документация к системе;

- рабочая документация к программному обеспечению, обеспечивающему функционирование системы

- Debian Linux 6.0 x86;

- СУБД MySQL 5.3;

- .Net Framework;

- Windows XP.

5.2 Назначение и условия применения

5.2.1 Программные и аппаратные требования к системе

Требования к аппаратному обеспечению сервера системы:

- процессор с тактовой частотой не менее 2 ГГц;

- объем оперативной памяти не менее 4 Гб;

- дисковая подсистема объемом не менее 500 Гб;

- сетевой адаптер с пропускной способностью не менее 100 Мбит/с.

Требования к программному обеспечению сервера системы:

- операционная система Debian Linux x86 версии 6.0;

- СУБД MySQL версии 5.3;

Требования к техническим характеристикам ЭВМ экспериментатора:

- процессор с тактовой частотой не менее 2 ГГц;

- объем оперативной памяти не менее 2 Гб;

- дисковая подсистема объемом не менее 160 Гб;

- сетевой адаптер с пропускной способностью не менее 100 Мбит/с.

Требования к программному обеспечению сервера системы:

- операционная система Windows 7;

- .Net Framework версии 3.5 или выше.

5.3 Подготовка к работе

5.3.1 Состав дистрибутива

В состав дистрибутива системы входят:

- программные компоненты системы;

- SQL-скрипт создания базы данных системы;

- дистрибутив операционной системы Debian Linux 6.0 x86;

- дистрибутив СУБД MySQL версии 5.3;

- дистрибутив платформы .Net Framework 3.5;

- конфигурационный файл СУБД MySQL;

- конфигурационный файл компонентов системы;

- настоящая рабочая документация системы;

5.3.2 Запуск системы

Для запуска функционирования системы необходимо:

- установить на сервер БД операционную систему Debian Linux 6.0 x86;

- обеспечить к каждому из серверов доступ по протоколу tcp/ip;

- установить на сервер баз данных СУБД MySQL 5.3. Допускается установка как с диска с дистрибутивом, так и из специального сетевого репозитория операционной системы;

- установить на ЭВМ экспериментатора платформу Microsoft .Net Framework;

- установить на ЭВМ экспериментатора программное обеспечение, разработанное в ходе текущей работы;

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

5.4 Контрольный пример

Для корректной работы приложения, как уже неоднократно говорилось выше, необходим файл с данными, снятыми при помощи системы регистрации и первичной обработки данных. Внешний вид содержимого файла можно увидеть на рисунке 22:

Рисунок 22 - содержимое файла зарегистрированных значений

Этот файл загружается пользователем в систему при помощи кнопки верхнего меню «Загрузить данные». Процесс выбора загрузки показан на рисунке 23:

Рисунок 23- Выбор варианта загрузки

В этом же диалоговом окне модуль позволяет пользователю выбрать вариант загрузки из БД, либо ввести данные вручную. Форма ввода данных вручную показана на рисунке 24, а форма создания соединения с БД предлагает пользователю заполнить 4 поля: имя сервера, название БД , дату эксперимента и название исследованного вещества.

Рисунок 24 - внешний вид форму ручного ввода результатов эксперимента

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

После ввода данных в память модуля пользователь получает возможность для поиска базового значения для интенсивности. Главное окно программы при этом отображает гистограмму для каждого из значений интенсивности. По нажатию кнопки «рассчитать» модуль производит расчеты и выводит полученное значение экспериментатору, раскадровка экранных форм для этого процесса показана на рисунках 25 и 26:

Рисунок 25 - вывод гистограммы значений

Рисунок 26 - вывод значения базиса

После этих манипуляций пользователь может принять значение базиса, или ввести свое в соответствующее поле и выбрать количество рассматриваемых пиков. Запуск расчета энтальпии производится по нажатию на кнопку «запустить расчет». Результатом являются:

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

- вывод прямой, построенной при помощи аппроксимации МНК в соответствующую область;

- вывод значения энтальпии сублимации в соответствующее поле;

- вывод суммарной невязки в соответствующем поле.

Вид модуля, завершившую свою работу представлен на рисунке 27:

Рисунок 27 - результат работы модуля

Сохранение результатов по требованию пользователя возможно только при успешно завершенных модулем расчетах. Для реализации этого требования необходимо нажать кнопку «сохранить результаты» верхнего меню приложения, выбирается хранилище данных и если в качестве хранилища выбран файл - указывается место, где он должен быть создан. В случае же если выбрана база данных эксперимента пользователю необходимо указать некоторые дополнительные параметры:

- название исследуемого вещества;

- дату опыта.

После производства этих действий происходит сохранение информации.

Заключение

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

Разработка модуля осуществлялась с использованием GRASP - общих образцов распределения обязанностей и архитектурного шаблона MVC на основе объектно-ориентированного подхода к программированию и проектированию.

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

Список использованных источников

1. Сидоров, Л. Н. Масс-спектральные термодинамические исследования / Л. Н. Сидоров, М. В. Коробов, Л. В. Журавлева. - М.: Изд-во Моск. ун-та, - 1985 г. - 208c.

2. Шлыков, С.А. Масс-спектрометр на службе у физиков и химиков / Шлыков С.А. Соросовский образовательный журнал - 2001. -Т.7. - № 7. - С. 60 - 65

3. Фомичев, Н.И. Автоматизированные системы научных исследований/ Фомичев Н.И, Учеб. Пособие. Ярославский государственный университет - 2001 г. - 112с.

4. Маклафлин Б. Объектно-ориентированный анализ и проектирование / Б.Маклафлин, Г. Поллайс, Д. Уэст. -М: Питер, - 2013 г. - 602с.

Приложение А. «Фрагмент программного кода, разработанного программного обеспечения»

using System;

using System.Collections.Generic;

using Entalpy.dto;

using Entalpy.Model;

namespace Entalpy.Controller

{

public class ProcessFactory

{

/// <summary>

/// Чтение данных из файла

/// </summary>

/// <param name="path">путь к файлу</param>

/// <returns> Список с данными для гистограммы</returns>

public static IList<Data> ReadData(string path)

{

IDataReader DataReader = new DataReader();

IList<Data> MyData = DataReader.ReadData(path);

return MyData;

}

/// <summary>

/// Нахождение линии базиса

/// </summary>

/// <param name="Data">Данные эксперимента</param>

/// <returns> значение базиса</returns>

public static double GetBasis(IList<Data> Data)

{

IBasisSetter BasisSetter = new BasisSetter();

double basis = BasisSetter.GetBasis(Data);

return basis;

}

public static IDictionary<double,int> GetGistogram(IList<Data> Data)

{

IBasisSetter basisSetter = new BasisSetter();

return basisSetter.GetGistogramData(Data);

}

/// <summary>

/// Возвращает данные эксперимента приведенные к базисному

/// значению

/// </summary>

/// <param name="Data">Данные эксперимента</param>

/// <returns>Приведенные к базису данные.</returns>

private static IList<Data> GetNewData(IList<Data> Data)

{

IBasisSetter BasisSetter = new BasisSetter();

return BasisSetter.GetNewData(Data);

}

public static IDictionary<double, double> GetRelation(IList<Data> Data)

{

IDataPreparer DataPreparer = new DataPreparer();

return DataPreparer.GetRelation(GetNewData(Data));

}

public static double GetEntalpy(IDictionary<double, double> results)

{

IDataPreparer DataPreparer = new DataPreparer();

double[] constant = DataPreparer.GetLeastSquaresConstants(results);

IEntalpyCalculator calc = new EntalpyCalculator();

return calc.EntalpyGet(constant[0]);

}

public static IDictionary<double, double> GetLeastSquaresPoints(IDictionary<double, double> results)

{

IDataPreparer DataPreparer = new DataPreparer();

return DataPreparer.GetLeastSquaresPoints(results);

}

public static double GetDelta(IDictionary<double, double> points, IDictionary<double, double> result)

{

IDataPreparer DataPreparer = new DataPreparer();

return DataPreparer.GetDelta(points, result);

}

}

}

using System;

namespace Entalpy.Model

{

public class EntalpyCalculator : IEntalpyCalculator

{

const double R = 8.31;

public double EntalpyGet(double c)

{

return c * R;

}

}

}

using System;

using System.Collections.Generic;

using System.Linq;

using Entalpy.dto;

namespace Entalpy.Model

{

public class BasisSetter : IBasisSetter

{

public double GetBasis(IList<Data> Data)

{

IDictionary<double, int> Gis = GetGistogramData(Data);

int maxEntriesCount = Gis.Max((pair) => { return pair.Value; });

double basis = Gis.First((kpair) => { return kpair.Value == maxEntriesCount; }).Key;

return basis;

}

public IDictionary<double, int> GetGistogramData(IList<Data> Data)

{

IDictionary<double, int> Gis = new Dictionary<double, int>();

foreach (var D in Data)

{

if (Gis.ContainsKey(D.Intensity))

{

Gis[D.Intensity]++;

}

else

{

Gis.Add(D.Intensity, 1);

}

}

return Gis;

}

public IList<Data> GetNewData(IList<Data> Data)

{

double Basis = GetBasis(Data);

foreach (Data d in Data)

{

d.Intensity -= Basis;

}

return Data;

}

}

}

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.