Загрузка данных
2.1. Формулировка задачи
Требуется выполнить моделирование поведения молекул в прямоугольном сосуде, разделенном подвижной вертикальной перегородкой с отверстием. Сосуд состоит из поля, ограниченного четырьмя стенками. Внутри сосуда расположена вертикальная перегородка, разделяющая его на две части. В перегородке имеется отверстие, через которое молекулы могут переходить из одной части сосуда в другую. По полю двигаются молекулы. При столкновении молекул энергия в равных долях перераспределяется между ними. При столкновении молекулы со стенкой или перегородкой отражение происходит без потери энергии. Молекулы отражаются друг от друга без потери энергии. Пользователь может изменять величину отверстия в перегородке и перемещать перегородку в горизонтальном направлении. Первоначально молекулы равномерно распределены по всему объему сосуда. Началом моделирования является придание молекулам начальной энергии и произвольного направления движения. Молекулы могут быть приведены в начальное состояние в любой момент времени.
2.2. Системный анализ
Составление словаря предметной области и идентификация классов и объектов могут быть выполнены в соответствии со следующей формальной процедурой:
Перечислить факты, которые характеризуют предметную область, выделяя их из постановки задачи.
Перечислить все объекты (существительные) и приписать им те факты, в которых они упоминаются.
Разделить факты для каждого объекта на три группы: первая - "атрибуты", вторая - "поведение", третья - “сообщения другим объектам”. Группа “атрибуты” - это перечень абстракций сущности данного объекта. В группу “поведение” добавляются действия, которые можно сформулировать как "сделать что-то" с данным объектом, при этом указывается, какие атрибуты изменяются. При формировании группы "поведение" может возникнуть необходимость пополнения группы "атрибуты". В группу “сообщения другим объектам” включаются те действия, которые описывают взаимодействие данного объекта с другими объектами.
В результате выполнения указанной процедуры получаем следующий словарь предметной области:
• Сосуд (TVessel) ♦ Атрибуты: Четыре стенки Перегородка Молекулы ♦ Действия: Начать моделирование (Start) Выполнить начальную расстановку (Initiate)
• Стенка (TWall) ♦ Атрибуты: Длина (theLength) Угол (theAngle)
• Перегородка (TPartition) ♦ Атрибуты: Положение (theX) Высота (theHeight) Отверстие (theHole) ♦ Действия: Переместить перегородку (Move) Изменить величину отверстия (SetHoleSize) ♦ Сообщения другим объектам: Отразить молекулу (ReflectMolecule) Пропустить молекулу через отверстие (PassMolecule)
• Отверстие (THole) ♦ Атрибуты: Величина (theSize) Положение по вертикали (theY)
• Молекула (TMolecule) ♦ Атрибуты: Направление движения молекулы (theDirection) Энергия молекулы (theEnergy) Радиус (theRadius) ♦ Действия: Двигать молекулу (Move) Установить значение энергии (SetEnergy) Установить направление (SetDirection) ♦ Сообщения другим объектам: Ударить молекулу в другую молекулу (HitOnMolecule) Ударить молекулу в стенку (HitOnWall) Ударить молекулу в перегородку (HitOnPartition) Пройти через отверстие (PassThroughHole)
• Моделируемая действительность (TReality) ♦ Атрибуты: Сосуд Пользователь ♦ Действия: Выполнить моделирование (Run)
К полученному словарю предметной области следует сделать следующие замечания. Все молекулы имеют одноименные характеристики поведения, поэтому отдельные подклассы не вводятся, используется единый класс TMolecule. Строго говоря, моделируемый сосуд не является замкнутой системой, он входит в состав более широкого понятия - моделируемая действительность. Это проявляется в том, что по условиям задачи на моделируемый сосуд оказывается воздействие в форме сообщений Initiate, Start, Move и SetHoleSize от внешнего источника. Поэтому вводится понятие "моделируемая действительность" как объект theReality класса TReality. Об этом объекте известно лишь то, что он генерирует внешние события и воздействует на моделируемый сосуд в процессе моделирования (Run).
Понятие "начальная энергия молекулы" является некоторой физической величиной, которую следовало бы предварительно определить из натурного эксперимента, но, упрощая задачу, примем ее как константу cMaxEnergy = 200.0 условных единиц. При изучении движения молекулы следовало бы рассмотреть физику трения, но, учитывая учебный характер примера, примем грубое допущение, что за единичный интервал времени энергия молекулы уменьшается на cDeltaEnergy = 0.05 условных единиц независимо от скорости. Если в некоторый момент времени энергия оказывается меньше порогового значения cThresholdEnergy = 0.5, то молекула далее двигаться не может. В реальном мире скорость движения молекулы зависит от ее кинетической энергии, но в рассматриваемом примере будем считать, что молекула движется с постоянной скоростью cVelocity = 2.0 условных единиц в единицу времени, если ее энергия превышает cThresholdEnergy.
Будем определять направление движения как угол между некоторым базовым направлением и прямой, по которой движется молекула. При столкновении молекулы, имеющей направление Alpha, со стенкой, имеющей угол theAngle, угол отражения Beta определяется формулой Beta = 2 * theAngle - Alpha. Это означает, что необходимым атрибутом класса TWall является угол стенки theAngle к базовому направлению.
Для столкновения двух молекул примем приближенную модель, в которой форма молекул, их размеры и другие особенности взаимодействия физических тел не учитываются. Будем считать, что каждая из сталкивающихся молекул изменяет направление таким образом, как будто она столкнулась со стенкой, расположенной посередине между направлениями их движения, при этом суммарная энергия молекул перераспределяется между ними поровну.
При столкновении молекулы с перегородкой возможны два случая: если молекула пересекает перегородку в пределах отверстия, она проходит через него без изменения направления движения; в противном случае молекула отражается от перегородки по закону отражения, как от вертикальной стенки с углом theAngle = 90 градусов.
Абстракция поведения "выполнить начальную расстановку" предполагает размещение молекул на поле по следующему алгоритму. Молекулы располагаются случайным образом по всему объему сосуда. Каждой молекуле сообщается начальная энергия и случайное направление. Из этого взаимодействия следует, что для класса TMolecule определены операции: "установить значение энергии" (SetEnergy) и "установить направление" (SetDirection).
Для решаемой задачи важным является отображение формы моделируемых объектов, при этом соотношение размеров следовало бы получить экспериментальным путем. Примем следующие константы в условных единицах измерения: радиус молекул cMoleculeRadius = 3, ширина сосуда cVesselWidth = 400, высота сосуда cVesselHeight = 300, толщина перегородки cPartitionWidth = 4, величина отверстия по умолчанию cDefaultHoleSize = 40, стенки расположены под прямым углом друг к другу.
Необходимость графического отображения влечет расширение словаря предметной области. В класс TMolecule вводим атрибут "радиус" (theRadius), в класс THole - атрибут "величина" (theSize), в класс TWall - "длина" (theLength).
Результатом системного анализа является техническое задание на проектирование, составленное с использованием словаря предметной области и сопровождаемое диаграммой классов, диаграммой объектов, обобщенными алгоритмами абстракций поведения. Техническое задание содержит следующие требования.
Функции системы (здесь приводятся кратко, чтобы не повторять вышеизложенные рассуждения, но в курсовой работе они должны быть приведены полностью):
· управление моделированием осуществляется при помощи команд, подаваемых с клавиатуры: начать моделирование (клавиша “S”), выполнить начальную расстановку (клавиша “I”), завершить работу программы (клавиша “Q”), переместить перегородку влево (клавиша “Left”), переместить перегородку вправо (клавиша “Right”), увеличить величину отверстия (клавиша “+”), уменьшить величину отверстия (клавиша “-”); · отображение на экране дисплея перемещения молекул, результатов их столкновения между собой, со стенками и перегородкой.
Эксплуатационные требования:
· технические средства - ПЭВМ IBM PC; · операционная система - MSDOS; · процесс моделирования управляется одним оператором.
Ограничения на процесс разработки:
· сроки выполнения проекта определены в разделе “порядок выполнения работы” данных методических указаний; · порядок сдачи системы определен в разделе “порядок выполнения работы” данных методических указаний.