Редактор прямоугольных сеток
|
На слое 1 расположены не
заштрихованные прямоугольники. Внутренняя граница слоя 1 совпадает с внешней
границей прямоугольника, заполненного точками. Он расположен на слое 2.
Внутренней границей слоя 2 является граница прямоугольника, заполненного
пунктирными квадратиками. Этот прямоугольник расположен на слое 3.
Чертеж модели в системы AutoCad
необходимо создавать с помощью команд “Рисование”–>”Поверхности”. Если в
процессе создания чертежа модели создавались блоки (в частности, они возникают
при копировании нескольких графических примитивов), перед сохранением чертежа в
формате DXF следует применить ко всем блокам команду «Расчленить».
В некоторых версиях Autocad есть специальная опция для сохранения чертежей в
формате DXF, при выборе которой в файле сохраняется только блок
ENTITIES. Для ускорения работы программы рекомендуется
использовать эту возможность.
Номер (имя) слоя (например, k)
задает команда «Layer k».
Имена слоев должны быть натуральными числами от 0 до 9. Имя «0» зарезервировано
для наружного слоя. Области, не принадлежащие ни к какому слою, считаются отнесенными
к слою «0».
Далее следует описание k-го
слоя. Оно состоит из отдельных строк, в которых указываются значения
проводимости, диэлектрической проницаемости и магнитной проницаемости.
Описания разных слоев могут
совпадать. Каждый слой может быть описан в проекте только один раз. Описание
слоев заканчивается командой «EOL».
2.Модуль
создания сеток
Сетка создается отдельно для
каждой из четырех осей: X, Y, Z и T. Под осью здесь следует
понимается некоторый отрезок на оси координат для которого создается сетка.
Каждая ось разбивается на отрезки. Внутри каждого отрезка размеры ячеек сетки
образуют геометрическую прогрессию со знаменателем, не превышающим некоторый
задаваемый пользователем коэффициент.
Отрезок имеет следующий
набор параметров: границы, размеры ячеек на границах отрезка и коэффициент
отрезка. Есть три способа задания сетки внутри отрезка:
-
равномерный – задается желаемый шаг, отрезок разбивается на
одинаковые ячейки, по длине примерно равные заданному шагу;
-
по размерам ячеек – задаются размеры ячеек у левой (шаг
слева) и правой (шаг справа) границы отрезка. Отрезок разбивается так, чтобы
размеры ячеек образовывали геометрическую прогрессию;
-
по размеру ячейки и коэффициенту – задается размер одной из
граничных ячеек. Размеры остальных ячеек образуют геометрическую прогрессию со
знаменателем, близким к заданному коэффициенту.
Программа GridMaker
может работать не только со стандартным файлом проекта. Входными данными может
служить файл с описанием сетки (grd).
Основными единицами
измерения в программе являются сантиметры (для осей X, Y, Z) и секунды (для оси T). Во время работы программы можно использовать
другие единицы измерения: миллиметры и метры для линейных размеров, наносекунды
и микросекунды для времени, но при сохранении сетки все размеры по осям X, Y и Z будут
переведены в сантиметры, а время (ось T) в секунды.
Рассмотрим порядок работы
модуля GridMaker. При загрузке на экране монитора появляется
стандартное Windows-окно программы.
В начале работы главное меню
содержит следующие пункты:
-
File
– работа с файлами, открытие существующих проектов и создание новых.
-
View
– включение/выключение панели инструментов и строки состояния
-
Help
– информация о программе
После того, как открыт какой-либо файл или создан новый проект, на экране появляется информационный диалог проекта (рисунок 2).
Рисунок
2 – Информационный диалог
В информационном диалоге
приведена общая для всех осей информация: единицы измерения, левая и правая
границы, количество отрезков и точек на каждой оси. Если был открыт файл проекта,
в заголовке окна указывается его имя.
Кнопка «Редактировать»
напротив описания каждой из осей позволяет перейти в режим редактирования оси
(рисунок 3).
Рисунок
3 – Редактирование оси
На экране изображена ось.
Длинные вертикальные штрихи с числами над ними – границы отрезков, короткие
штрихи – границы ячеек сетки. Кнопки «Увеличить», «Уменьшить», и «Нормальное
увеличение» позволяют изменять масштаб изображения.
При нажатии левой кнопки
мыши выделяется ближайшая точка и в строке состояния программы появляется ее
координата. Если выделена одна из точек, то, нажимая клавиши ¬ (налево) и ® (направо), можно переходить
на соседние точки сетки.
Правая кнопка мыши в окне
редактирования оси (или соответствующая кнопка на панели управления) запускает
диалог редактирования оси (рисунок 4).
Рисунок 5 – Диалог
редактирования оси
Слева находится список всех
отрезков данной оси.
Для выбранного отрезка в
диалоге показаны его параметры: тип отрезка, левая и правая границы отрезка,
шаги слева и справа, значение коэффициента отрезка. Тип отрезка может быть
одним из следующих:
-
Равномерный – задается шаг слева и
отрезок заполняется одинаковыми шагами, наиболее близкими к заданному.
-
Шаг слева ¬ Шаг справа – задаются размеры ячеек у левой и правой границ. Отрезок разбивается
на ячейки так, что их длины образуют геометрическую прогрессию. При этом шаг
справа точно соответствует заданному, а шаг слева может незначительно отличаться
от заданного.
-
Шаг слева ® Шаг справа – аналогично предыдущему, но фиксируется шаг слева, а шаг справа может
быть изменен.
-
Коэффициент, шаг слева – указываются шаг слева и
коэффициент. Отрезок заполняется так, что размеры ячеек образуют геометрическую
прогрессию с шагом, близким к заданному коэффициенту и первым членом в точности
равным заданному шагу.
-
Коэффициент, шаг справа – аналогично предыдущему,
но фиксирован шаг справа.
Кнопка «Обсчитать отрезок» запускает генерацию ячеек на выбранном отрезке в
соответствии с заданными параметрами. В зависимости от типа отрезка, используется
один из представленных ниже алгоритмов генерации.
Если выбран тип отрезка Равномерный,
то число ячеек сетки на отрезке N определяется по формуле N=[L/Dx], где L –
длина отрезка, а Dx – заданный
шаг. Шаг уточняется по формуле Dx=L/N .
Равномерная сетка на отрезке строится с уточненным шагом.
Неравномерная сетка на
отрезках типов Коэффициент, шаг слева и Коэффициент, шаг справа
строится следующим образом. Количество ячеек сетки вычисляется по формуле:
(1)
где – коэффициент (знаменатель геометрической
прогрессии).
Затем знаменатель
геометрической прогрессии уточняется. Для этого методом Ньютона решается
уравнение
.
Это уравнение имеет
единственное положительное решение. Метод Ньютона применим, поскольку левая
часть уравнения есть выпуклая функция на интервале (0, +¥).
После этого на отрезке
строится неравномерная сетка с заданным начальным шагом и уточненным
знаменателем прогрессии.
Для типов отрезка Шаг слева ® Шаг справа и
Шаг слева ¬ Шаг справа знаменатель прогрессии
вычисляется по формуле:
.
где Dx1 и Dx2 – заданные шаги на концах отрезка.
Затем по формуле (1) находится количество
ячеек, методом Ньютона уточняется знаменатель прогрессии и строится
неравномерная сетка как в предыдущем случае.
Если сетку создать не
удается, выдается сообщение об ошибке.
Эффективность численного алгоритма может существенно зависеть от отношения размеров соседних ячеек разностной сетки. Поэтому модуль GridMaker использует параметр, который называется максимальный коэффициент оси. Он является общим для всех отрезков и выражает наибольшее допустимое отношение размеров соседних ячеек. Коэффициент оси должен быть больше единицы. Если, например, коэффициент равен K, то отношение размеров соседних ячеек сетки должно быть меньше чем K и больше чем 1/K.
Кнопка «Обсчитать ось» запускает создание сетки на всей оси и проверку
отношение шагов у соседних отрезков. В случае ошибки при генерации сетки,
выдается соответствующее сообщение (таблица 1).
Таблица 1 – Возможные сообщения об ошибке
Сообщение об ошибке |
Причина |
Ошибка в отрезке k: Сумма шагов превышает длину отрезка
|
Сумма шагов слева и справа
больше, чем длина отрезка. Следует уменьшить шаги или увеличить длину отрезка. |
Ошибка в отрезке k: Слишком большая разница
между шагами слева и справа |
При заданных шагах
коэффициент получается больше, чем максимальный коэффициент для оси. Следует
либо изменить шаги, либо повысить максимальный коэффициент. |
Слишком большая разница
шагов между отрезками i и i+1 |
Отношение шагов превышает
максимальный коэффициент. Следует либо изменить шаги, либо увеличить коэффициент. |
Редактировать разбиение оси
на отрезки можно путем запуска следующего набора процедур соответствующими
кнопками:
-
Разбить отрезок на два – на месте выбранного
отрезка появляются два отрезка одинаковой длины.
-
Объединить отрезок со
следующим –
выбранный отрезок и следующий за ним становятся одним отрезком. Эта команда не
применима к последнему отрезку оси.
-
Добавить отрезок – добавляет отрезок, не
затрагивая существующие.
-
Удалить отрезок – позволяет удалить первый
или последний отрезок оси.
После успешного открытия файла или создания нового проекта изменяется меню, и становятся доступными новые кнопки на панели инструментов.
Меню File содержит два новых пункта:
- Save – сохранение сетки и создание/изменение
файла проекта;
- Measure – запуск диалога изменения размерностей (рисунок 6).
Рисунок 6 – Диалог
изменения размерностей
Диалог изменения
размерностей позволяет изменить единицы измерения. Реальные размеры осей при
этом не изменяются, то есть если длина отрезка составляла 10 (см), то после
выбора в качестве единицы измерения длина станет равной 0.1 (м).
В меню View
добавляются следующие пункты:
- Overview – запуск информационного
диалога.
-
Zoom in, zoom out, No zoom
– изменение масштабов в текущем окне. Эти пункты активны только при
редактировании одной из осей.
В меню программы появляется дополнительный пункт Windows, содержащий следующие
подпункты:
- Tile – размещение открытых окон
«мозаикой»;
-
X, Y, Z, T – открытие окна
редактирования соответствующей оси или, если окно уже открыто, его активация.
Команда «Сохранить» вызывает стандартный диалог
сохранения файла сетки.
3.Модуль
привязки геометрической модели к сетке
Модуль Cells
имеет входными данными геометрическую модель и описание сетки. По этим данным
модуль определяет, какой области принадлежит каждая ячейка сетки.
Входным файлом для модуля Cells
является файл проекта. Работа
должна начинаться с загрузки нового проекта. Если в файле проекта или в файле
модели содержатся ошибки, проект не будет загружен и программа выдаст
предупреждение, в котором будет указано, где именно допущена ошибка (таблица
2).
Таблица 2 – Возможные сообщения об ошибке
Текст сообщения |
Возможная причина ошибки |
Не
удается открыть файл сетки |
Файл
с описанием сетки не найден. |
Не
найдена ось Х (Y,
Z) |
Ошибка
в файле описания сетки. Убедитесь,
что между именем файла модели и символом "Х" (Y, Z)
нет других символов |
Координаты
по X (Y,
Z)
не возрастают или введены не все координаты |
Ошибка в файле с описанием сетки. Координаты введены не в порядке возрастания или описание
оси не соответствует числу ячеек. |
Слишком
много слоев |
В
файле модели присутствует слой со слишком большим номером. |
Не
удается открыть файл модели |
Неверно
указан путь к файлу, либо файл занят другим приложением. |
Ошибка
в файле модели |
Допущена синтаксическая ошибка в файле DXF. Возможна, если файл модели исправлялся вручную. |
Ошибка
в описании слоев |
В файле проекта в разделе описания слоев допущена ошибка. |
После запуска графической программы на
экране монитора появляется первоначальное стандартное Windows-окно программы:
Главное меню программы содержит следующие разделы:
-
File
– работа
с файлами, открытие существующих проектов;
-
View
– включение/выключение
панели инструментов и строки состояния;
-
Help –
информация о программе.
После открытия проекта появляется основное диалоговое окно:
Рисунок 7 – Основное окно
программы Cells
«Проект»
и «Модель» - имена файла проекта и
модели соответственно;
«Сетка»
– информация о сетке: количество ячеек вдоль каждой оси и координаты границ
ячеек.
«Слои»
- количество графических примитивов AutoCad на этом слое, количество ячеек,
относящихся к этому слою и описание этого слоя.
Кнопка команды «Обсчитать модель» предназначена для того, чтобы запустить выполнение
расчетов, не сохраняя результаты на жесткий диск. После выполнения этой команды
в разделе описания слоев можно посмотреть, сколько ячеек сетки отнесено к каждому
слою. На этапе обсчета данных могут быть выданы предупреждения о том, что
какие-либо области модели не замкнуты или объект выходит за границы сетки.
Обычно такое сообщение означает, что сетка задана неправильно или есть ошибки в
файле геометрической модели.
Алгоритм привязки модели
объекта к сетке состоит в следующем. Напомним, что под моделью объекта понимается
чертеж, созданный AutoCad и представляющий собой изображение границ между
областями с различными электрофизическими характеристиками. Чертеж состоит из
отдельных слоев (Layer), к каждому из которых отнесены графические
примитивы, описывающие границу области.
Поверхности отображаются
двумя графическими примитивами двух типов: «пространственными
четырехугольниками» (3Dface) и их наборами –
«поверхностями» (Polyline). «Пространственный четырехугольник» характеризуется
координатами четырех вершин (A, B, C, D). Вершины могут не лежать в
одной плоскости. В этом случае он рассматривается как два плоских треугольника
(ABC и ABD). Совокупность всех треугольников, отнесенных к данному
слою, образует границу слоя.
Первоначально все ячейки
отнесены к слою «0». Рассмотрим, как для каждого слоя определяется, какие
ячейки ему принадлежат.
Для каждой пары индексов (i,
j) проверим все ячейки сетки, лежащие в области (xi<x<xi+1; yj<y<yj+1; zmin<z<zmax). Через центры этих ячеек
проведем прямую, параллельную оси Z (x=½(xi+xi+1), y=
½(yj+yj+1)). Найдем все точки пересечения этой прямой с
границей данного слоя. Количество этих точек должно быть четным числом.
Нечетное количество точек пересечения означает, что граница слоя была не
замкнутой. В этом случае программа выдаст предупреждение об ошибке в файле
модели.
Затем для каждой точки z=½(zk+zk+1) (середина ячейки)
определяется количество точек пересечения, лежащих между ней и границей области
z=zmin. Если это нечетное число,
то ячейка (xi<x<xi+1; yj<y<yj+1; zk<z<zk+1) считается отнесенной к данному слою.
Рассмотрим ситуацию, когда
прямая пересекает сторону треугольника, составляющего границу слоя. В этом
случае ранее описанный метод не дает возможность определить, произошел ли
переход на другой слой. На рисунке 8а представлен случай, когда переход не
произошел, а на рисунке 8б – произошел. Для алгоритма эти случаи не различимы.
В этих случаях прямая
сдвигается по X и Y так, чтобы по-прежнему пересекать
все рассматриваемые ячейки, но не пересекать сторон треугольников, составляющих
границы слоев.
Слои анализируются в порядке
возрастания номеров. Если ячейка принадлежит нескольким слоям, то она будет
отнесена к слою с наибольшим номером.
Алгоритм, позволяющий
определить, пересекает ли прямая треугольник, состоит в следующем.
Пусть рассматривается прямая
l, определенная уравнениями x=xl, y=yl и треугольника ABC. Рассмотрим проекцию
треугольника на плоскость Oxy. Определим барицентрические
координаты (l, m) точки (xl, yl) в системе ABC.
Принадлежность точки (xl, yl) треугольнику ABC равносильна следующей системе
неравенств:
Пересечение с границей
треугольника имеет место при выполнении следующей совокупности условий:
Если прямая l
пересекает треугольник, координата z точки пересечения определяется
по формуле .
Программа Cells может сохранять данные в файлах трех
типов.
CEL – в сжатом формате представлена
информация о том, каким материалом заполнена каждая ячейка. Ячейки составляют
одномерный список в порядке возрастания координат x, y, z. Файл типа Cells имеет следующий формат:
<номер
слоя>
<количество
ячеек слоя, идущих подряд>
. . .
DXF – файл AutoСad, в котором
изображено разбиение модели. Каждой ячейке соответствует отдельный кубик. Этот
файл, как правило, имеет очень большой размер, поэтому его создание
рекомендуется только для простых объектов.
ILH –в текстовом формате представлены
проекции сетки на плоскости OXY, OXZ и OYZ.
Кнопка «Сохранить данные» запускает сохранение выбранных файлов на жесткий
диск. Каждый файл можно сохранить независимо от остальных. Имена создаваемых файлов
совпадают с именем проекта. Если файлы с такими именами уже существуют,
выдается запрос на их перезапись.
Заключение
Разработан редактор, позволяющий строить прямоугольные сетки на основе геометрической модели расчетной области, сохраненной в виде DXF-файла. Предполагается использование редактора для построения разностных сеток в областях со сложной идеально проводящей границей, содержащих подобласти с различными диэлектрическими и магнитными проницаемостями.