Способ и система для создания с помощью компьютера собственных операторов и файла для устройства моделирования потока жидкости в пористых средах

Номер патента: 4383

Опубликовано: 29.04.2004

Авторы: Вагнер Дэвид Б., Дай Лестер У.

Скачать PDF файл.

Формула / Реферат

1. Способ создания с помощью компьютера собственных операторов и файла для устройства моделирования потока жидкости в пористых средах на основе конечных элементов, содержащий следующие стадии:

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

создание одного или нескольких модельных объектов из одного или нескольких уравнений и параметров;

создание символического представления для одного или нескольких остаточных и касательных матричных операторов одного или нескольких модельных объектов;

создание правил оптимизации для геометрических инвариантных величин остаточных и касательных матричных операторов;

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

форматирование и оптимизация численного основного кода, используя символический языковый транслятор;

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

2. Способ по п.1, в котором стадия ввода включает введение одного или нескольких уравнений и параметров, используя графический интерфейс пользователя для символического языкового транслятора, причем графический интерфейс пользователя включает палитру обозначений для ввода математических символов.

3. Способ по п.1, в котором пористые среды включают нефтяной пласт.

4. Способ по п.1, дополнительно включающий стадию создания одной или нескольких моделей ошибки объектов и граничное условие Дирихле для модельных объектов из одного или нескольких модельных объектов для оценки ошибки в одном или нескольких уравнениях и в котором создание символического представления осуществляют, используя одну или несколько моделей ошибки объектов.

5. Способ по п.4, в котором модельные объекты и модели ошибки объектов являются промежуточными объектами, видимыми пользователем, что может быть использовано для проверки хода вычисления.

6. Способ по п.1, в котором указанная стадия создания правил оптимизации включает предварительное вычисление геометрических инвариантных величин симплекса.

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

8. Способ по п.1, в котором правила оптимизации представляют собой правила семантической оптимизации.

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

10. Способ по п.1, дополнительно включающий стадию создания набора испытательных входов для одного или нескольких символических остаточных и касательных матричных операторов и вычисление выходов одного или нескольких символических остаточных и касательных матричных операторов, основанных на созданных входах, для исправления ошибок.

11. Способ по п.1, в котором символический языковый транслятор представляет собой программу "Математика".

12. Способ по п.11, дополнительно включающий стадию решения одного или нескольких уравнений без использования функции интегрирования программы "Математика".

13. Способ по п.1, в котором одно или несколько уравнений представляют собой дифференциальные уравнения в частных производных.

14. Способ по п.13, в котором одно или несколько уравнений описывает четырехмерную физическую систему.

15. Способ по п.1, в котором стадия ввода выполняется вручную, а все другие стадии выполняются компьютером автоматически.

16. Способ по п.1, в котором моделирующее устройство включает решающее устройство, интерфейс пользователя, собственные операторы и файл тест-кода.

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

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

команды для формирования одного или нескольких модельных объектов из одного или нескольких уравнений и параметров;

команды для создания символического представления для одного или нескольких остаточных и касательных матричных операторов одного или нескольких модельных объектов;

команды для создания правил оптимизации для геометрических инвариантных величин остаточных и касательных матричных операторов;

команды для формирования численного основного кода и структуры данных, инициализирующей основной код на языке программирования высокого уровня из языка символического языкового транслятора;

команды для форматирования и оптимизации численного основного кода, используя символический языковый транслятор; и

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

18. Система по п.17, в которой команды ввода дополнительно включают команды для ввода одного или нескольких уравнений и параметров, используя графический интерфейс пользователя, в символический языковый транслятор, при этом графический интерфейс пользователя включает палитру обозначений для ввода математических символов.

19. Система по п.17, в которой пористые среды включает нефтяной пласт.

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

21. Система по п.20, в которой модельные объекты и модели ошибки объектов представляют собой промежуточные объекты, видимые пользователем, что может быть использовано для проверки хода вычисления.

22. Система по п.17, в которой указанные команды для создания правил оптимизации включают предварительное вычисление геометрических инвариантных величин.

23. Система по п.22, в которой указанное предварительное вычисление включает использование способа симплекса и матричных операций, чтобы вычислить геометрические инвариантные величины и сортировку одного или нескольких итоговых уравнений для надлежащего размещения в численном основном коде.

24. Система по п.17, в которой правила оптимизации представляют собой семантические правила оптимизации.

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

26. Система по п.17, дополнительно включающая команды для создания набора испытательных входов для одного или нескольких символических остаточных и касательных матричных операторов и для вычисления выходов одного или нескольких символических остаточных и касательных матричных операторов, основанных на созданных входах для проверки на ошибки.

27. Система по п.17, в которой символический языковый транслятор представляет собой программу "Математика".

28. Система по п.27, дополнительно включающая команды для решения одного или нескольких уравнений без использования функции интегрирования "Математики".

29. Система по п.17, в которой одно или несколько уравнений представляют собой дифференциальные уравнения в частных производных.

30. Система по п.29, в которой одно или несколько уравнений описывает четырехмерную физическую систему.

31. Система по п.17, в которой средства ввода представляют собой компьютерный интерфейс и в которой одно или несколько уравнений и параметров вводятся вручную, а все другие операции выполняются компьютером автоматически.

32. Система по п.17, в которой языком программирования высокого уровня является язык ЯВА шыш ФОРТРАН.

33. Система по п.17, в которой моделирующее устройство включает решающее устройство, интерфейс пользователя и собственные операторы и файл тест-кода.

Рисунок 1

 

Текст

Смотреть все

1 Область техники Настоящее изобретение относится, в основном, к способам и системам для моделирования физических систем, используя анализ задачи конечных элементов и, более конкретно, к способам и системам для создания моделирующего устройства на основе конечных элементов для моделирования потока жидкости в пористых средах. Конкретно, настоящее изобретение относится к способам и системам для формирования программного кода, используя символический языковый транслятор. Предпосылки создания изобретения Создание математических моделей, моделирующих поведение физических систем, требует значительного времени и является достаточно сложным делом. В частности, задачи конечных элементов во множественных измерениях (например, четыре измерения пространства и времени) почти невыполнимы для человека. Эти типы задач настолько сложны, что анализ становится слишком трудным для математиков,чтобы решать их без ошибок. Поскольку число измерений при расширении задачи увеличивается, сложность самой задачи возрастает по экспоненте в отношении трудности физически выполняемых вычислений. Одним из способов,относящихся к трудноразрешимой задаче, является решение задач конечных элементов с множественной размерностью с символической манипуляцией. Символическая манипуляция включает в себя перевод математических формул в символическое представление, которое может быть использовано для формирования кода программирования для его использования в устройстве моделирования и получения модели физической системы. Однако ныне используемые способы символической манипуляции связаны с возникновением ошибок из-за их зависимости от формулировки оператором необходимых математических уравнений и перевода этих уравнений в программный код. Человеческие ошибки могут иметь место по меньшей мере в двух областях. Одна область - алгебраические вычисления, где могут происходить ошибки: опускание знаков или ошибки транскрипции. Другая область, где может иметь место человеческая ошибка, лежит в области перевода алгебры в код на языке программирования типа ФОРТРАН, C, или какого-либо другого языка программирования высокого уровня. Кроме того, даже принимая во внимание,что математик, выполняющий перевод алгебраических формул в код языка программирования выполняет этот перевод на 100% правильно,конечный код все еще может быть не столь эффективен или краток, как это желательно. Например, код может быть связан с медленной операцией вычисления, или он может быть слишком большим и сложным, или он может 2 содержать большее количество операций с плавающей запятой, чем это необходимо. Еще более важно, что известные способы и системы для создания моделирующих устройств для формирования моделей физических систем требуют больших человеческих ресурсов в виде квалифицированных аналитиков,которые должны знать и математику высокого уровня,чтобы решать требуемые сложные уравнения, и которые также должны быть квалифицированными программистами, чтобы разработать необходимый код из математических формулировок. Альтернативно, можно привлечь коллектив специализированных математиков и программистов, чтобы анализировать задачи, формулировать математические уравнения и записывать соответствующий код. Это является дорогим и требующим много времени мероприятием, в частности, требуется либо найти людей, которые являются квалифицированными в обоих этих направлениях, либо увеличить количество персонала, чтобы решить такие задачи при наличии отдельных аналитиков и программистов. Точно так же исследование в области анализа задачи конечных элементов является сложным и медленным процессом, поскольку требуются месяцы или даже годы, чтобы разработать новый метод конечных элементов или новую физику и выполнить работу, необходимую, чтобы доказать, что данный способ или физика жизнеспособны. В результате, это было очень дорого и не всегда выполнимо в экономическом смысле по количеству времени для разработки новых моделирующих устройств для создания моделей физических систем. Краткое описание изобретения Следовательно, существует потребность в создании способа и системы для формирования программного кода, используя символический языковый транслятор, который может эффективно решить многомерные задачи конечных элементов, которые являются слишком трудными для операторов, типа создания моделирующих устройств для моделирования потока жидкости в пористых средах, и которые требуют значительного машинного времени для решения таких задач. Существует также потребность в разработке способа и системы для формирования программного кода, используя символический языковый транслятор, который значительно уменьшает или устраняет возможность ошибки оператора при обработке сложных математических формул и при переводе этих математических формул в код языка программирования. Существует также потребность в создании способа и системы для разработки программного кода, используя символический языковый транслятор, который значительно улучшает процесс формирования кода программирования,разработанного на основе символического языкового транслятора математических формул, 3 которые решаются, чтобы создать модель физической системы. Работа кода, созданного таким способом, и сама система могут увеличить скорость обработки формул, уменьшить ее сложность и сократить число операций с плавающей запятой. Существует еще большая потребность в создании способа и системы для разработки программного кода, используя символический языковый транслятор, который обеспечивает быстрое макетирование, улучшая процесс развития моделирующего устройства для разработки математической модели физической системы типа жидкого потока в пористых средах. Такой способ и система делали бы возможным разработать моделирующее устройство в течение экономически оправданного периода времени. Кроме того, существует потребность в способе и системе для формирования программного кода, используя символический языковый транслятор, который значительно уменьшает зависимость предыдущих систем такого рода от специализированного персонала типа аналитиков и программистов, которые должны хорошо разбираться в математике физического моделирования и иметь навыки программирования, необходимые для перевода математики в программный код. Далее, существует потребность в способе и системе для формирования программного кода,используя символический языковый транслятор,который обеспечивает возможность снижения времени исследований и обеспечивает средства для разработки нового моделирующего устройства или нового метода конечных элементов благодаря использованию новой физики в более короткий период времени, чем в ныне существующих способах и системах. В соответствии с настоящим изобретением, способ и система для формирования программного кода, используя символический языковый транслятор, обеспечиваются, в основном,за счет устранения недостатков и проблем, которые связанны с известными системами и способами. В частности, настоящее изобретение обеспечивает улучшенный способ и систему для разработки на компьютере обычными операторами с помощью файла тест-кода для моделирующего устройства конечного элемента для создания модели жидкого потока в пористых средах. Способ по настоящему изобретению включает стадии ввода в символический языковый транслятор уравнений и параметров, описывающих модель, которая будет создана моделирующим устройством и создание одного или нескольких модельных объектов из указанных уравнений и параметров. Способ по настоящему изобретению дополнительно включает стадии создания символического представления остаточных и касательных матричных операторов модельных объектов и создания правил оптимизации для любых геометрических инвариантных 4 величин. Численный основной код и структура данных, инициализирующая основной код, создаются для моделирующего устройства на языке программирования высокого уровня из языка символического языкового транслятора. Численный основной код форматируется и оптимизируется, и создается файл, содержащий отформатированный и оптимизированный численный основной код и структуру данных, инициализирующую основной код. Настоящее изобретение обеспечивает важное техническое преимущество, формируя программный код и используя символический языковый транслятор, который может эффективно решать многомерные задачи конечных элементов, которые являются слишком сложными для операторов, такие как создание моделирующих устройств для моделирования потока жидкости в пористых средах и которые требуют длительного машинного времени для решения этих задач. Настоящее изобретение обеспечивает другое техническое преимущество, заключающееся в создании программного кода, используя символический языковый транслятор, который значительно уменьшает или устраняет возможность ошибки оператора, возникающей при обработке сложных математических формул и при переводе этих математических формул в код языка программирования. Настоящее изобретение обеспечивает еще одно техническое заключающееся в создании программного кода, используя символический языковый транслятор, который значительно улучшает работу кода программирования, полученного из символического языкового транслятора математических формул, которые решаются для создания модели физической системы. Работа кода и системы, созданных таким способом может обеспечить высокую скорость вычислений, уменьшить их сложность и число операций с плавающей запятой. Настоящее изобретение обеспечивает еще одно техническое преимущество, заключающееся в создании программного кода, используя символический языковый транслятор, который обеспечивает быстрое макетирование, улучшая процесс развития моделирующего устройства для разработки математической модели физической системы типа жидкого потока в пористых средах. Такой способ и система делают возможным разработку моделирующего устройства в течение экономически обоснованного периода времени. Настоящее изобретение обеспечивает еще одно техническое преимущество, заключающееся в создании программного кода, используя символический языковый транслятор, который значительно уменьшает зависимость известных систем такого типа от специализированного персонала типа аналитиков и программистов,которые должны хорошо разбираться в матема 5 тике физического моделирования и иметь навыки программирования, необходимые для перевода математики в программный код. Настоящее изобретение имеет еще одно техническое преимущество, заключающееся в создании программного кода, используя символический языковый транслятор, который обеспечивает возможность сокращения времени исследования, обеспечивая средства для разработки нового моделирующего устройства или нового метода конечных элементов или использования новой физики в более короткий период времени, чем известные способы и системы. Краткое описание чертежей Для лучшего понимания настоящего изобретения и его преимуществ ниже приводится подробное описание изобретения со ссылками на сопровождающие чертежи, на которых фиг. 1 представляет собой типичное математическое уравнение, которое может быть использовано как ввод для настоящего изобретения; фиг. 2 - пример символического остаточного представления уравнения фиг. 1; фиг. 3 А и 3 В показывают пример исходного кода, созданного в соответствии с настоящим изобретением из символического представления фиг. 2; фиг. 4 - моментальный снимок экрана палитры системы обозначений улучшенного математического интерфейса пользователя в соответствии с настоящим изобретением; фиг. 5 - схема потока данных, иллюстрирующая взаимосвязь и работу различных модулей в соответствии с настоящим изобретением; фиг. 6 иллюстрирует дискретизацию модели прототипа; фиг. 7 - решение конечных элементов модели, показанной на фиг. 6; и фиг. 8 представляет блок-схему полного дискретного моделирующего устройства. Подробное описание изобретения Предпочтительные варианты настоящего изобретения показаны на фигурах, причем одинаковые цифровые обозначения относятся ко всем аналогичным частям, используемым на различных фигурах. Настоящее изобретение обеспечивает способ и систему для формирования программного кода, используя символический языковый транслятор, который является более гибким,более эффективным, менее склонным к ошибкам и гораздо менее зависящим от операторов с узко специализированной квалификацией, чем любой другой известный способ и система. Настоящее изобретение решает проблему труднообрабатываемых многомерных задач конечных элементов, обеспечивая простой интерфейс для математических уравнений, описывающих физическую систему, и обеспечивает улучшенный автоматизированный символический языковый транслятор и создание кода моделирования. 6 Точно так же настоящее изобретение устраняет возможность ошибки оператора в переводе алгебраических уравнений, автоматизируя алгебраическую функцию уравнения. Кроме того,обеспечивается улучшенный автоматический перевод символов из алгебраических уравнений в программный код, при этом способ и система по настоящему изобретению значительно улучшают работу конечного кода и упрощают процесс развития моделирующих устройств для моделирования физических систем. Поэтому в экономически обоснованный период времени можно разработать новые моделирующие устройства для новой физики для моделей таких физических систем. Таким образом, способ и система по настоящему изобретению обеспечивают быстрое макетирование для новых методов конечных элементов или новой физики, которые могут быть использованы для создания новых моделирующих устройств для моделирования физических систем. Настоящее изобретение обеспечивает простой интерфейс для математических формулировок, описывающих физику, которые должны быть решены моделирующим устройством для создания модели физической системы типа моделирующего устройства конечных элементов для моделирования потока жидкости в пористых средах. Настоящее изобретение основано на языке программирования Математика, который описан в труде С. Волфрама (S. Wolfram),"Справочник по языку Математика), 3-е издание, издательство (wilfram Media, CambridgeUniversity Press 1996). Математика включена в настоящее изобретение как средство символической обработки алгебраических формул для формирования кода на языке программирования типа ЯВА, C или ФОРТРАН. На фиг. 1 представлено типичное математическое уравнение,очень похожее на уравнения, которые могут быть найдены в любом обычном математическом тексте. Математические уравнения типа показанных на фиг. 1 содержат вводы, сформированные обычным аналитиком, и которые могут быть использованы для ввода в программу Математика. Фиг. 2 - пример символического остаточного представления, соответствующего уравнению, показанному на фиг. 1. Чтобы применить метод конечных элементов к математическим уравнениям типа, показанного на этой фигуре,символические представления, показанные на фиг. 2, как правило, создаются аналитиком, который обработал соответствующие математические уравнения. В прототипе способа и системы перевода символов требуются квалифицированные аналитики, как для создания начальных математических формулировок, так и символических представлений, показанных на фиг. 2 из этих математических формулировок, как показано на фиг. 2. Символические изображения 7 фиг. 2 представляют собой типичный выход программы Математика. На фиг. 3 А и 3 В представлены примеры исходного кода, созданного программой Математика из символических представлений(фиг. 2) математических формулировок, показанных на фиг. 1. В прототипе системы перевода символов в виде трех стадий, представленных на фиг. 1, 2 и 3, выполняются, используя высокие уровни человеческого взаимодействия с машиной с соответствующей склонностью к ошибкам. Настоящее изобретение выполняет большую часть этих функций автоматически. В частности, перевод в символические представления математических формулировок,созданных аналитиком, и соответствующее создание кода объекта выполняется автоматически пакетами Математики (модули кода) по настоящему изобретению, разработанному конкретно для этой цели. Настоящее изобретение также обеспечивает систему обозначений, которая позволяет аналитику, создающему начальные математические формулировки, вводить математическую систему обозначений точно в тот формат, который в противном случае аналитик писал бы в эти системы обозначений вручную. Аналитик может просто нажимать на кнопки графического интерфейса пользователя (GUI) на экране компьютера, чтобы ввести производные интегралы и другую математическую символику. Хотя интерфейс по настоящему изобретению не полностью управляется кнопками, аналитик освобожден от ограничений синтаксиса, которые в противном случае Математика потребовала бы при отсутствии дополнительных модулей кода по настоящему изобретению. Иными словами,аналитик не только освобождается от обязанности быть опытным программистом на языке, на котором сформированный код будет, в конечном счете, выведен, но также и освобождается от необходимости быть квалифицированным программистом также и на языке Математика. Таким образом, настоящее изобретение обеспечивает знакомый интерфейс для ввода математических формулировок непосредственно в Математику. Фиг. 4 представляет собой моментальный снимок палитры обозначений 10 улучшенного интерфейса пользователя Математики по настоящему изобретению. Синтаксис Математики был расширен, чтобы включить широко известную систему обозначений вариационного исчисления. Палитра обозначений 10 дает пользователю возможность использовать способ ввода сложных математических обозначений выбором объекта на экране и нажатием кнопки мыши, так что пользователь не должен быть экспертом языка Математики, чтобы использовать систему. Отметим, что в целом палитры являются встроенной частью системы программирования на языке Математика. Отметим, 004383 8 что улучшенная палитра обозначений 10 фиг. 4 является заказным программным модулем, который значительно улучшает функциональные возможности Математики. Палитры обозначений 10 фиг. 4 дают аналитику возможность легко вводить сложные математические формулировки таким же образом, что он или записывает их вручную или как они, как правило, изложены в учебнике. Таким образом, аналитик получает дополнительное удобство в работе и осваивает работу со сложными математическими формулами. Аналитики также освобождаются от необходимости быть опытными программистами и могут без помощи программиста эффективно разрабатывать моделирующее устройство для модели физической системы. Таким образом, настоящее изобретение обеспечивает лучший интерфейс для аналитика с программой Математика. Например, палитры обозначений 10 включают кнопки 12 с тем, что аналитик мог бы нажатием кнопки вводить сложные системы обозначений подобно знакам интеграла и производным, специальные операции и т.д. Такие сложные системы обозначений больше не должны быть написаны аналитиком вручную. Способ и система для формирования программного кода, используя символический языковый транслятор по настоящему изобретению, выполняются в коде Математика и, таким образом, основаны на Математике для его основных функциональных возможностей, но только в той степени, в которой любой программный код основан на языке программирования, на котором он написан. Для целей настоящего изобретения Математика - просто язык программирования, который выполняет обработку символов по настоящему изобретению. Таким образом, может быть создано математическое описание высокого уровня, метод конечных элементов прилагается к этому математическому описанию высокого уровня, чтобы в итоге получить программный код. Способ и система для формирования программного кода, используя символический языковый транслятор по настоящему изобретению,включают множество уникальных пакетов программ (модули кода) написанных на языке Математика. Эти уникальные модули связывают с помощью интерфейса с различными другими уже существующими модулями Математики,чтобы выполнить обработку символов, необходимую для создания моделирующего устройства для моделирования, например, жидкого потока в пористых средах. Программный код, используемый в настоящем изобретении модульный и включает различные файлы Математики, содержащие ортогональные части функциональных возможностей. Фиг. 5 - схема потока данных, иллюстрирующая взаимосвязь и работу различных моду 9 лей Математики по настоящему изобретению,которые являются уникальными по отношению к настоящему изобретению, а также уже существующими в рамках Математики. Модуль системы обозначений 16, модуль модели 20,модуль модели изготовителя 24, модуль оператора 28, модуль формирования кода 32, симплексный модуль 34, модуль матричных операций 36, модуль правила сортировки 38, модуль полезности 42 и тест-модуль 44 - это некоторые из новых аспектов по настоящему изобретению. Уравнения 14 и параметры модели 18 фиг. 5 представляют собой вводы, обеспечиваемые пользователем (аналитиком). Уравнения 14 и параметры модели 18 представляют собой переменные, которые находятся аналитиком. Пример уравнений 14 представлен на фиг. 1. Модуль обозначений 16 - функциональный элемент по настоящему изобретению (основной код для палитры обозначений 10 фиг. 4), который позволяет аналитику вводить свои уравнения и параметры модели в компьютер в надлежащей математической символике со значительно меньшим количеством времени и сил,чем в известной системе. Аналитик выполняет это с помощью палитры обозначений 10, ранее описанной как часть фиг. 4. Модуль обозначений 16 позволяет аналитику вводить уравнения 14 в программу Математика. Модуль модели (пакет) 20 выполняет своего рода вспомогательную функцию. Модуль модели 20 создает объекты, называемые моделями, из параметров аналитика и уравнений. Модель представляет собой набор переменных,уравнений и другой информации, которые необходимы для создания остаточных и касательных матричных операторов для данных уравнений 14. Все, с чем имеет дело конечный созданный код, дается в виде моделей или больших объектов. Кроме того, модуль создания моделей 24 обеспечивает выход решений других возможных подсистем, состоящих из уравнений, чтобы аналитик мог бы оценить возможную ошибку в решении уравнений 14. Модуль создания моделей 24 может включать функцию, называемую"создание модели Лагранжа", которая используется как вход модельного объекта 22, а выходы как другая модель или условия границы Дирихле 26 для первоначальной модели. Точно так же,модуль создания моделей 24 может включать функцию, называемую "создание модели ошибки", которая используется как вход модельного объекта 22, а выходы, как новый модельный объект для оценки ошибки в первоначальной модели. Эти функции выполняются автоматически с одной функцией вызова; аналитику не требуется кодировать все различные модели. Поэтому, как только аналитик построил основную модель, система по настоящему изобретению может автоматически создавать другие требуемые модели. 10 Структура моделирующего модуля 20 Эта структура необходима для достижения нескольких целей при использовании модуля для моделирования конечных элементов 20 фиг. 5. Желательно, чтобы аналитик мог видеть промежуточные, считываемые вручную результаты процесса моделирования прежде, чем будет создан код транслируемого языка. Настоящее изобретение позволяет аналитику видеть промежуточные результаты процесса в виде модельных объектов 22, 26 и 27. Кроме того, соединительный файл Математики может быть также отнесен к этим промежуточным результатам для повышения эффективности. Соединительный файл обсужден ниже. Чтобы достигнуть этих целей, представляется, что некоторые результаты должны храниться в глобальных переменных. Однако это потребовало бы одновременной работы с несколькими моделями, что является весьма сложным делом и приводит к ошибкам. Поэтому, способ и система по настоящему изобретению выделяют набор переменных для каждой модели. Это может быть сделано, сохраняя значения модели как некие опущенные величины(функция, встроенная в Математику), например, модель [R], модель [PU] и т.д. Специальные символы R, PU и т.д. защищены в Математике и не могут быть установлены пользователем. Например, попытка установить R = 5 приведет к установке 5 в модели Model [R], гдеModel является текущей моделью. При расчетах с помощью Математики выявляются два дополнительных преимущества. Во-первых,расчетный блок [Model = другая модель] эффективно изменяет текущую модель только для продолжительности этого блока. Это конструкция используется пакетом конечного элемента Оператор (более подробно обсуждено ниже), чтобы выполнить вычисления с переменными модели. Во-вторых, перехват всех попыток установить переменные модели позволяет исправить ошибки на ранней стадии создания модели. Переменные модели В каждой модели хранятся следующие переменные: вводыR - система дифференциальных уравнений в частных производных для модели конечных элементов.PU - список первичных неизвестных для модели конечных элементов. Модель должна иметь систему пространственного объекта(SystemSpaceObject) или (SYS), прежде чем может быть установлен список первичных неизвестных.SU - список вторичных неизвестных, с явными зависимостями, для модели конечных элементов. Эта модель должна иметь систему объекта SystemSpaceObject (SYS) прежде, чем 11 может быть установлен список вторичных неизвестных. ЕА - список усредненных элементом переменных группы, с явными зависимостями, для модели конечных элементов.CF - список постоянных полей для модели конечных элементов. Модель должна иметь систему объекта SystemSpaceObject (SYS) прежде, чем может быть установлен список постоянных полей. К - список глобальных постоянных правил инициализации для модели конечных элементов.GC - список глобальных координат для модели конечных элементов. Эта модель представляет собой переменную только для чтения(GS устанавливается косвенным образом при выборе пространства системы).PHY - ряд, идентифицирующий тип физики для модели конечных элементов. Эта модель представляет собой переменную только для чтения (PNY устанавливается косвенным образом при выборе пространства узла).(SystemSpaceObject) для модели конечных элементов.TOPDIM - топологическая размерность для модели конечных элементов. ОР - строка, идентифицирующая имя оператора для модели конечных элементов. Она определяет сформированное название созданного каталога оператора.OPTYPE должен быть установлен либо вOpInterior или OpBoundary (Значение по умолчанию: Oplnterior). Оно используется модулем формирования кода (CodeGen) 32, чтобы выбрать соединительный файл.Oplnterior и OpBoundary представляют собой возможные величины для OPTYPE модели переменной OPTYPE.(обычные символы или символы или записи с нижним индексом) уравнений для модели конечных элементов.OBJ - список объектов [название типа, название объекта, основной класс] для объектов ЯВА, которые появляются в правилах зависимости SU. Объект [t, о, "be"] определяет объект ЯВА типа t (созданное название имя интерфейса),выведенное из основного класса bc (строка, содержащая полный маршрут класса) в модели переменной OBJ. Объект [t, о, bc, "init"] инициализирует объект, используя код компилированного языка, найденный в init (значение по умолчанию: "нуль").MAP - список правил глобальная координата(globalcoordinate[pointCoordinates]. Координаты точки определены как точка 0(PointfO), точка 1 (Pointfl) и т.д. в модели отображении пространства системы.INITCF, INITPU, FINCF, FINPU и UPDATE содержат список вызовов способа и/или правил назначения для внешней инициализации объекта, модификации или завершения.BUILDER (компоновщик программ) определяет параметры компоновщика программ для модели. Он представляет собой строку или список строк той же самой глубины. Примеры: строки "Operator", "WellPostCondition","DirichletCondition". Значение по умолчаниюOPGEN определяет операторы для формирования кода. Он может быть нулевым списком или списком ключевых слов ResidualVcctor,TangentMatrix,TangentAdjointMatrix,Tangentlmage и TangentAdjointlmage или ключевое слово All (все). Значение по умолчанию - All.CACHE (КЭШ) - модель переменной, определяющая максимальное число геометрий элемента, чтобы кэшировать в каждом объекте элемент системы (ElementSystem). КЭШ может быть установлен в любое неотрицательное целое число или в символ бесконечности. ВыходыSSU - список вторичных неизвестных и производных вторичных неизвестных, которые хранятся в памяти NodeSpace. Это модель переменной только для чтения.CSU - список вычисленных вторичных неизвестных (вторичные неизвестные или производные вторичных неизвестных, которые не хранятся в NodeSpace). Это модель переменной только для чтения.ZSU - список вторичных неизвестных (или их производных), которые тождественны нулю. Это модель переменной только для чтения.RI - кэшируемая величина внутренней составляющей дискретной разности. Это модель переменной только для чтения.RB - кэшируемая величина граничной составляющей дискретной разности. Это модель переменной только для чтения.TI - кэшируемая величина внутренней составляющей дискретного тангенса. Это модель переменной только для чтения. TI очищается каждый раз при вызове Residual[ ]. Если TI не определен во время создании кода, не создается никакого касательного оператора. ТВ - кэшируемая величина граничной составляющей дискретного тангенса. Это модель переменной только для чтения. ТВ очищается каждый раз при вызове Residual [ ], называется. Если величина ТВ не определена во время формирования кода, не создается никакого касательного оператора.DIM[model] возвращает пространственную размерность модели конечных элементов. DIM[ ] эквивалентен модели DIM[Model].NS - объект пространственного узла (NodeSpaceObject) для модели конечных элементов. Это модель переменной только для чтения, косвенно определяемая системой SYS.ObjectTypes [ ] возвращает список типов внешнего объекта, относящихся к текущей модели конечных элементов.Objectlnstances[partcrn] возвращает список примеров всех внешних объектов в текущей модели конечных элементов Finite ElementModel, название класса которого соответствует образцу. Функции для создания, разрушения и запроса свойств моделей Функция BeginModel [model] делает модель активной моделью, так что ссылки на модель [R], model [PU] и т.д. могут быть сокращены до ссылок на R, PU и т.д. Эта функция передает набор значений модели для новой активной модели. Функция EndModel [ ] дезактивирует активную модель, активирует ранее активную модель и передает набор значений модели для новой активной модели. К дезактивированной модели все еще можно обращаться, используя модель синтаксиса [R], model [PU] и т.д. Функция Model оценивает активную модель. Функция DefaultModel представляет собой заданную по умолчанию модель конечных элементов и активна, когда нет никакой определяемой пользователем активной модели. Функция ClearModel [fmodel] возвращает величины всех моделей к их значениям по умолчанию. Функция CopyModel [mode],model2] очищает модель 2, копирует вводы модели 1 в модель 2 и устанавливает текущую модель в модель 2. Функция ModelStack возвращает стек моделей. Функция ModelValues[model] возвращает величины, определенные для модели, выраженной как список правил. ModelValues[ ] возвращает величины для активной модели. Функция ModelQ[x] устанавливает флажок Правильно, если х - модель конечных элементов, и Ошибка в противном случае. Функция ModelValueQ[x] устанавливает флажок Правильно, если х - модель переменной, и Ошибка в противном случае. На фиг. 5 модельные объекты 22, объект модели Дирихле ВС 26 и модели ошибки объектов 27 (все модели) передаются в модуль оператора 28, который выполняет большинство математических операций. Модуль оператора 28 используется как модельный объект (или модельный объект 22, модельный объект Дирихле ВС 26 или модели ошибки объекта 27) и как выходы символического вычисления остаточных и касательных матричных операторов, остаточных символов и касательных операторов 30. 14 Для вывода остаточных символов и касательных операторов 30 модуль оператора 28 на основном уровне вычисляет интегралы математических уравнений 14, которые могут быть функциями нескольких переменных. Сама программа Математика имеет встроенную функцию "интегрировать", которая может интегрировать уравнение. Однако задача анализа конечных элементов множественной размерности может иметь такой уровень сложности, что Математика не сможет получить решение в течение достаточно короткого периода времени,который сделал бы этот процесс экономически оправданным. Кроме того, можно вводить различные упрощения математических выражений в Математику частями. Если использовать такое упрощение, можно получить решение уравнений без использования математической функции "интегрировать". Чтобы выполнить такое упрощение уравнения, элементы уравнений, которые являются константами, нужно отделить от элементов, которые не являются константами. Последующее вычисление выполняется на различном уровне команд. Таким образом, могут быть использованы различные свойства математических выражений, чтобы получить ответ различным способом. Модуль оператора 28 может также использоваться, как средства избежать явного интегрирования. Модуль оператора конечных элементов 28 выполняет решение системы дифференциальных уравнений в частных производных (ДУЧП) по домену, разделяя домен на симплексэлементы и объединяя решения в систему по каждому из отдельных симплекс-элементов. Симплекс Симплекс представляет собой пространственный элемент Евклидовой геометрии, имеющий минимальное число граничных точек типа линейного сегмента в одномерном пространстве(3D). Таким образом, симплекс в размерности n имеет n+1 вершин, которые обозначены как вершина 1, , вершина n+. Каждая поверхность напротив вершины i обозначается как поверхность i (face i). Каждая поверхность nD симплекса представляет собой симплекс (n-l)D. Основные функции, основной элемент Основные функции образуют систему координат для определения любой точки симплекса следующим образом. Основная функция i-th,Nb, определяет расстояние точки от плоской поверхности i-th симплекса, по линии от плоской поверхности i-th до вершины i-th. Имеетсяi-th основных функций для симплекса с размерностью n. Ni определяется как 1 на вершине i и как 0 в любой точке плоской поверхности i. Основной элемент в nD определяется как симплекс nD с одной вершиной в начале системы декартовых координат, а другие вершины n 15 находятся в координатных точках (1, 0, 0,0),(0, 1, 0 0) (0,0,0). Например, в 2D основной элемент (треугольник) имеет вершины (0, 0), (1, 0) и (0, 1). Обозначая вершины по методике против часовой стрелки, мы можем начать с вершины 1 в точке (х=1, у=0), тогда поверхность 1 представляет собой линию х=0, поверхность 2 - линию у=0, поверхность 3 - линию х+у=1. Для этого элемента основные функции выглядят следующим образом: Любая точка внутри симплекса может быть выражена в виде основных функций. Например, центроид треугольника в точке (N1, N2,N3) = (1/3, 1/3, 1/3). Метод конечных элементов Предполагается, что переменные системы дифференциальных уравнений в частных производных изменяются линейно в пределах каждого отдельного симплекса. Иными словами, на конкретном симплексе nD переменная р (х, у, ) может быть записана как где pi представляет собой величину р на вершине i симплекса. Сумма в правой части уравнения(2) представлена как цифровая форма или дискретная величина левой части уравнения, pi называются составляющими р. Задача может быть выражена другим уравнением Интеграл в левой части уравнения (3) называется непрерывным остатком. Цель заключается в нахождении решения для величин р, q, (первичные неизвестные), которые сделают остаток равным нулю. Имеются два способа вычислить величину остатка: 1. Числовая квадратура. Эта методика аппроксимирует величину интеграла на каждом симплексе с взвешенной суммой подынтегрального выражения, оцененного в тщательно выбранных точках на симплексе. Недостаток этого способа заключается в необходимости вычисления величины подынтегрального выражения в нужной квадратуре, чтобы получить желательную численную точность. 2. Точное символическое интегрирование. Как только интеграл был рассчитан символически, стоимость оценки интеграла в цифровой форме может быть намного ниже, чем при использовании квадратуры. Однако символическое вычисление, включенное в точное интегрирование уравнения (3) на высокоразмерных симплексах выполнить вручную очень трудно. Цель модуля конечных элементов оператор 28 состоит в том, чтобы выполнить это символическое вычисление автоматически. 16 Вычисление дискретного остатка Дискретный остаток вычисляется путем дискретизации каждого неизвестного в уравнении (3), используя соотношения уравнения (2). Это может быть выполнено в Математике,используя встроенную функцию ReplaceAll (заменить все). Эта операция преобразует левую часть уравнения (3) в Теоретически, этот интеграл может быть оценен, заменяя основные функции их эквивалентными выражениями в смысле декартовых(как в уравнении (1), но для произвольных измерений) и выполняя преобразование переменных к декартовым координатам, чтобы получить где J - симплекс Якоби. Однако для четных задач среднего уровня вычисление уравнения (5) в системе компьютерной алгебры на автоматизированном рабочем месте с современным компьютером потребует нескольких дней работы и сотни и тысячи мегабайт оперативной памяти. Модуль оператора 28 по настоящему изобретению использует другой подход. Начиная с составляющих р; q; и т.д. при постоянных производных основных функций по любому конкретному симплексу, уравнение (4) может быть переписано в виде Это преобразование фактически невозможно выполнить без компьютера. Отметим,что даже для больших задач в четырех измерениях современный компьютер на автоматизированном рабочем месте может выполнить эту работу в течение всего несколько минут. В способе по настоящему изобретению, это преобразование может быть выполнено, используя встроенную функцию ExpandAll (раскрыть все) и несколько приложений встроенной функцииCollect (собрать), чтобы упростить конечное выражение. Интегралы в уравнении (6) могут быть эффективно оценены, используя формулу Заменяя уравнение (7) уравнением (6), мы получим формулу для точного интеграла дискретного приближения к непрерывному остатку по симплексу, называемому дискретным остатком. Обратите внимание, что величина уравнения (7) инвариантна при перестановке показателей степени на функциях основания, поэтому,каждый из интегралов в уравнении (6) может быть заменен эквивалентным интегралом, показатели степени которых появляются в сортируемом порядке. Это значительно уменьшает число требуемых оценок уравнения (7). Если непрерывный остаток содержит интеграл по границе симплекса, то одиночный непрерывный остаток выдает n+1 дискретных остатков, 17 по одному для каждой плоской поверхности симплекса. Тот факт, что Ni является нулевым на поверхности Ni, предоставляет возможность упростить поверхностно-определенные дискретные остатки. Класс поддерживаемых операций и операнды в модуле оператора 28 Модуль оператора конечных элементов 28 позволяет выразить непрерывные остатки в любом из следующих видов: 1. Первичные неизвестные, вторичные неизвестные (т.е. функции первичных неизвестных) и постоянные поля, которые предположительно имеют величины, определенные в каждой из вершин симплекса и могут быть расширены, используя уравнение (2). Эти величины могут быть определены пользователем. 2. Усредненные по элементам неизвестные, которые представляют собой функцию любого из значений, перечисленных выше в параграфе 1, оцененные в центроиде симплекса. Эти величины могут быть определены пользователем. 3. Декартовы координаты х, у,могут быть определены пользователем. 4. Первая и вторая производные первичных, вторичных или усредненных элементом,неизвестных по отношению к любой из декартовых координат. Поскольку дифференциальные операторы в Математике, как правило,оцениваются немедленно, необходимо выполнить аналогичные операторы, которые представляют эти операторы, но которые не оцениваются с тем, чтобы они могли быть обработаны преобразованиями высокого уровня типа теоремы Остроградского о дивергенции Гаусса. Функция Dh определена, чтобы представить эти производные. 5. Другие координатно-базисные дифференциальные операторы неизвестного типа дивергенции и градиента. Эти же замечания применимы к этим операторам как они использованы в пункте 4 выше. Эти операции представлены функциями GradS, GradST, Gradh, GradST,DivST и Divh. 6. Изменение выражения по отношению к произвольной переменной или набор переменных. Эта операция представлена функциейVariationh. 7. Основные функции и производные основных функций по отношению к декартовым координатам. Эти величины представлены функциями BasisFunction и BasisDerivative. 8. Нормальный вектор к любой поверхности симплекса. Эти величины представлены функцией FaceNormal. 9. Интегрирование по внутренней области или границе симплекса. Эти операции представлены функциями Integratelnterior и Jntegrateboundary. 10. Применение теоремы Остроградского о дивергенции Гаусса к интегралам, содержащим 18 дифференциальные операторы. Эта операция представлена функцией GDT. Хотя любая из величин и операций, перечисленных в пп.4-9, может быть введена непосредственно пользователем, например, Integrateinterior [Variationh [wDh [p, x], w, это не является обычным путем ввода этих величин пользователями, нацеленными на использование настоящего изобретения. Может быть использован специальный синтаксис для ввода по пунктам 4-9, который знаком пользователям (например,w[wxp] для данного примера), используя модуль системы обозначений 16, обсужденный выше. Оптимизация дискретных операторов для численных расчетов Хотя теоретически, заменяя уравнение (7) уравнением (6), мы получаем формулу для дискретного остатка, практически, мы не можем выполнить такую замену до тех пор, пока уравнение (7) не будет оценено в цифровой форме(один раз для каждого уникального сортируемого набора показателей степени) в генерируемом коде. Это сводит к минимуму число повторений оценки уравнения (7), делая формирование кода намного более эффективным. Другие обычно появляющиеся выражения, которые оптимизированы таким образом, представляют собой производные основных функций и нормальных векторов к плоской поверхности симплекса. Эти величины рассчитываются модулем симплекса конечных элементов 34, как показано на фиг. 5. Эти вычисления включают матричные детерминанты и инверсию симметричных матриц,и они оба имеют высокую степень избыточности. Чтобы идентифицировать максимальное возможное число общих подвыражений, матричные исчисления выполняются модулем матрицы оператора конечных элементов быстрее,чем при использовании встроенных функций Математики типа Det и Inverse. Кроме того, величины вторичных неизвестных или усредненных элементов неизвестных и их производные не могут быть заменены до тех пор, пока не будет выполнена численная оценка в сформатированном коде. Пользователь определяет только функциональные формы этих неизвестных, а модуль оператора 28 автоматически вычисляет любые производные этих функциональных форм, которые возникают во время вычислений оператора. Функция IntegralRules (правил интегрирования) модуля оператора 28 сканирует выражение оператора на наличие этих типов выражений и создает объекты Rule (правило), содержащие их символические величины. ФункцияIntegralRules называется модулем формирования кода 32 конечных элементов, в котором правила преобразуются в формирование распределения временных переменных и тест-модулем конечных элементов 44, где правила используются вместе с функцией Математики ReplaceAll(заменить все), чтобы оценить оператор в цифровой форме. На фиг. 5 символический остаток и касательные операторы 30, которые являются выходом модуля оператора 28, передаются в модуль формирования кода 32. Модуль формирования кода 32 может выполнить перевод уравнений 14 и параметры модели 18 из языка Математика в код программы ЯВА, C или ФОРТРАН или в другой машинный язык высокого уровня. Кроме того, симплексный модуль 34, модуль матричных операций 36 и модуль правила сортировки 38 могут вычислить оптимизацию правил для различных величин, которые являются инвариантными, за исключением геометрии. Иными словами, учитывая координаты, например, треугольника, симплексный модуль 34,модуль матричных операций 36 и модуль правила сортировки 38 могут вместе вычислять различные геометрические величины, такие как объем, различные скорости изменения по поперек поверхности конструкции и т.д. Эти виды величин возникают неоднократно и могут привести к увеличению времени вычислений и расходу машинной мощности. Чтобы избежать этого, способ и система для формирования программного кода, используя символический языковый транслятор по настоящему изобретению,предварительно вычисляет эти различные параметры, как обсуждено выше, с тем, чтобы после формирования кода каждый из них должен быть рассчитан только один раз. Модуль формирования кода конечных элементов 32, показанный на фиг. 5, определяет множество функций, которые создают "сегменты" формируемого кода, которые сами по себе не составляют компилируемый модуль программы. Вместо этого, эти части кода вставляются в текстовый файл, который содержит все необходимые объявления, синтаксис и т.д. для формирования компилируемого модуля программы. Это выполняется, используя команду Математики вставить и множество внешних файлов называемых соединительных файлами. Как объяснено в документации Математики:"Соединительный файл" соединяет выход Математики с внешним файлом. Он забирает текст, расположенный между символамиив файле, оценивает текст как Математики и заменяет текст соответствующим выходом Математики. Текст во входном файле, не заключенный между символамиикопируется без изменения выходного файла. Соединительный файл берет файлы с именами видаname.mx и записывает выход в файлах с именами name.x." Например, простой соединительный файл на языке ЯВА представлен ниже: 20 Если этому файлу дается имя SpliceExampIe.mЯВА и Математика выдает командуSplice["SpliceExample.mЯВА"], будет создан файл SpliceExampIe.ЯВА, содержание которого представлено ниже: Этот файл может быть скомпелирован компилятором байт-кода, чтобы создать исполняемый файл класса ЯВА. Пакеты форматирования и оптимизации(прототип) Модуль форматирования 46 и модуль оптимизации 47 Математики, показанные на фиг. 5,могут быть получены по Интернету по следующим адресам: Модуль форматирования 46 переводит ограниченный класс выражений Математики в С, ФОРТРАН или МЕЙПЛ (с помощью небольшой дополнительной обработки можно преобразовать выход С функции Cassign модуля форматирования в синтаксически правильный код ЯВА). Класс выражений, которые обрабатывает модуль 46, включает арифметические операции, большинство элементарных функций и присваивание переменных. Главные ограничения модуля формата 46 заключаются в том,что он не вырабатывает описания переменных или команды управления потоками данных (например, команды условного оператора, циклы и т.д.). Модуль оптимизации 47 предпринимает попытку устранить общие подвыражения из выражения Математики синтаксическим анализом. Модуль оптимизации 47 и модуль форматирования 46 работают "рука об руку" с тем,чтобы код, созданный форматом CAssign содержал бы назначения переменных оптимизации, которые вычислены модулем оптимизации 47. Ниже приведен простой пример: Как отмечено выше, формат CAssign не создает описания этих переменных оптимизации. Следующий пример иллюстрирует важное ограничение оптимизации: Хотя a+b - подвыражение a+b+c1, модуль оптимизации 47 этого не обнаруживает. Проблема заключается не в ограничении конкретного применения модуля оптимизации 47, а скорее в фундаментальном ограничении управляемой синтаксисом оптимизации выражения. Имеются четыре различных нетривиальных подвыражения а+b+с: a+b, а+с, b+с, а+b+с. Для любого ассоциативного оператора с n параметрами (на 21 пример, сложение, умножение) имеется 2n-n-1 возможных подвыражений, не считая тривиальных подвыражений, состоящих из отдельного параметра. Таким образом, число подвыражений становится слишком большим для ограниченных четных величины n. Модуль формирования кода 32 В настоящем изобретении используется модуль форматирования 46 для трансляции последовательного числового вычисления без ветвления типа дискретного остаточного оператора. Этот модуль также используется для формирования кода для правил оптимизации, которые вычислены модулем оператора 28 функцииIntegralRules (правила интегрирования). В обоих этих случаев формируемый код состоит просто из списка операторов присваивания с простыми арифметическими операциями в их правых частях. Модуль формирования кода 32 добавляет объявления для соответствующих временных переменных к сформированному коду. В отличие от такого формирования кода оптимизации, настоящее изобретение может также формировать код " начиная с нуля", чтобы инициализировать различные структуры данных, которые используются механизмом моделирования и интерфейсом пользователя моделирующего устройства. Оно также может формировать код, чтобы позволить сформированным операторам использовать функции в других рукописных модулях кода. Модуль формирования кода 32 для создания оператора Как описано выше, дискретный остаток и касательные матричные операторы содержат много общих подвыражений, которые известны заранее, типа геометрических инвариантов(симплексные объемы, производные основных функций, интегралы основных функций, нормальные векторы к плоской поверхности симплекса) и определенные пользователем неизвестные (вторичные неизвестные, усредненные элементами неизвестные). Модуль формирования кода 32 вызывает модуль оператора 28 функции IntegralRules (правила интеграла), чтобы создать перечень правил оптимизации для геометрических инвариантов. По желанию, стоимость вычисления этих подвыражений можно рассчитать и создать правила, чтобы кэшировать наиболее трудоемкие подвыражения в структуре данных. Модуль формирования кода 32 может вычислять набор определенных пользователем неизвестных и их производных, которые являются необходимыми для оценки рассматриваемого оператора. Два набора правил объединяются и используются в модуле оптимизации 47, чтобы выполнить общую оптимизацию. Модуль форматирования 46 используется для формирования кода с последующей оценкой правил оптимизации и самого оператора. Наконец, впереди кода устанавливаются соответствующие объявления временных 22 переменных и код вводится в соединительный файл, чтобы создать выходной файл 52. Имеются некоторые общие подвыражения,которые возникают в течение процесса вычисления производных неизвестных, определенных пользователем, которые оптимизатор неспособен обнаружить. Как обсуждено выше, это является основным ограничением управляемой синтаксисом оптимизации выражения. К счастью,зная кое-что о свойствах производных, эти выражения могут быть оптимизированы. Эти выражения возникают при дифференцировании произведения нескольких членов, используя известное цепное правило дифференцирования. В выражении типа мы видим, что перед расчетом производных подвыражение ab будет иметь место в каждом члене каждой производной, так как оно не зависит от всех переменных; что abf(x) будет иметь место в каждом члене всех производных по отношению к у, поскольку оно независимо от у и так далее. Таким образом, выражения в правых частях уравнения (8) могут быть оптимизированы путем анализа гораздо более простых выражений в левых частях уравнения. Это является примером семантической, а не синтаксической оптимизации, поскольку она опирается на семантику дифференциального оператора. Если использовать формирование испытательного кода, модуль формирования кода 32 может создавать несколько наборов входных испытательных величин для оператора (некоторые из них будут заданы заранее, а другие случайные) и вызывать тест-модуль для испытания конечных элементов 44, чтобы вычислить численные величины оператора, на основании этих входных величин. И входные величины, и расчетные величины выхода объединяются в другой части соединительного файла. Фактический код, который выполняет тест - статическая (неизменная) часть соединительного файла. После того как файл 52 составлен и введен в действие,статический испытательный код передает сформированные входные величины в сформированный кода оператора, чтобы вычислить выходы и сравнить их с созданными величинами выхода. Модуль полезности 42 фиг. 5 переводит действительное название символа Математики в действительные названия символа на языке программирования, в котором будет сформирован код типа ЯВА, C или ФОРТРАН. Понятие действительного названия символа в Математике может отличаться от того, что считается действительным названием символа на языке программирования типа ЯВА или C. Модуль полезности 42 осуществляет перевод между Математикой и конечным продуктом языка программирования и возвращает эти названия символов в модуль формирования кода 32. 23 Как подробно обсуждено выше, после модуля формирования кода 32, модуль форматирования 46 и модуль оптимизации 47 выполняют часть перевода кода. Модуль форматирования 46 и модуль оптимизации 47 представляют собой уже известные модули, написанные Марком Софронио (Mark Sofroniou), как упомянуто выше. Часть кода, созданного модулем формирования кода 32, не проходит через модуль форматирования 46 или модуль оптимизации 47. Вместо этого, код проходит через соединительный файл 50. Часть кода, выходящего из модуля формирования кода 32 и входящая в соединительный файл, представлена стрелкой 62. Код 62 формируется для инициализации различных структур данных, в отличие от выполнения фактического числового вычисления. Таким образом, как обсуждено выше, численный код может быть сформирован модулем форматирования 46 и модулем оптимизации 47, а код для инициализации структуры данных может быть сформирован непосредственно модулем формирования кода 32. Выход модуля формирования кода 32 может также быть подан в тест-модуль 44. Тестмодуль 44 может использовать символический оператор и набор входов для этого оператора,чтобы вычислить, каковы должны быть выходы для этого оператора. Как входы, так и выходы написаны в конечном коде языка программирования, как обсуждено выше. Тест-модуль 44 получает код от модуля формирования кода 32,который выдает команду на вызов оператора,подачу его на определенный вход и проверяет,соответствуют ли входы ожидаемому входу и если они этому не соответствуют, выдает сообщение об ошибках. Тест-модуль 44 может служить как испытательный аппарат для способа и системы для формирования программного кода,используя символический языковый транслятор по настоящему изобретению. Соединительный файл является входом механизма соединения, созданного проектировщиками Математики. Его функция была описана выше. Результатом применения соединительного файла в программе Математика является создание файла с тем же самым именем файла, но без добавления "m" к суффиксу. Этот файл представлен на фиг. 5 в виде собственных операторов и испытательного кода 52. Собственные операторы и испытательный код 52 представляют собой конечный программный код, сформированный по способу и системе для формирования программного кода, используя символический языковый транслятор по настоящему изобретению. Вернемся теперь к симплексному модулю 34, модулю матричных операторов (MatrixOps) 36 и модулю правила сортировки (RuleSort) 38. Эти модули основаны на математическом построении симплекса, как описано выше. Долж 004383 24 ны быть выполнены различные виды матричных операций, чтобы вычислить геометрические переменные конструкции типа, например, тетраэдра. Выход модуля симплекса 34 и матричных операций 36 представляют собой уравнения для вычисления объемов и других параметров геометрической конструкции. Эти уравнения сортируются таким образом, что, когда они написаны в конечном коде и выдана команда на выполнение программы, они оцениваются в правильном порядке. Например, если код содержит уравнение типа А = В+С и следующее уравнение D = А 2, эти уравнения должны быть представлены в правильном порядке. Эта функция выполняется модулем правила сортировки 38. Модуль правила сортировки 38 может включать алгоритм, называемый топологической сортировкой, известной из литературы. Модуль формирования кода 32 из фиг. 5 может также формировать код для оценки операторов, введенных в систему. Структуры данных, которые создаются, как часть способа по настоящему изобретению, используются для формирования кода модулем формирования кода 32, который затем передается в модуль форматирования 46 и в модуль оптимизации 47. Модуль формирования кода 32 использует в качестве входа символический остаток и касательные операторы 30 и вырабатывает код, чтобы оценить эти операторы. С этой целью, модуль формирования кода 32 вызывает симплексный модуль 34, модуль матричных операций 36 и модуль правила сортировки 38 для предварительной оптимизации величин, которые появляются неоднократно в символических остаточных и касательных операторах. В этом смысле, модуль формирования кода 32 также может служить как контроллер трафика различных модулей по способу и в системе для формирования программного кода, используя символический языковый транслятор по настоящему изобретению. Кроме того, модуль формирования кода 32 может устанавливать различные назначения для модуля форматирования 46 и модуля оптимизации 47. В модуле форматирования 46 и модуле оптимизации 47 оптимизированные величины могут затеряться в ходе других алгебраических операций. По этой причине предварительная оптимизация выполняется модулем формирования кода 32 совместно с симплексным модулем 34, модулем матричных операций 36 и модулем правила сортировки 38. Собственные операторы и испытательный код 52 фиг. 5 представляют собой выход способа и системы для формирования программного кода, используя символический языковый транслятор по настоящему изобретению. Это код, который может использовать вторая группа аналитиков, чтобы создать модель физической системы типа жидкого потока через пористые среды. Собственные операторы и испытательный код 52 фиг. 5 показаны как отдельный 25 файл, однако, могут быть созданы и множественные файлы, включающие большую структуру, например, можно использовать совместно до 500 файлов ЯВА для моделирования жидкого потока в пористых средах типа нефтяного пласта. Собственные операторы и файл испытательного кода могут быть использованы вместе с интерфейсом пользователя по настоящему изобретению и с дополнительным файлом, который называется решающим устройством, чтобы создать модели физических систем. Собственные операторы и испытательный код 52 представляют собой код решения общего вида в очень большой системе линейной алгебры, используемой для представления модели жидкого потока через пористые среды (или некой другой физической системы). Однако это решение общего вида может быть использовано,чтобы получить лучшее приближение с помощью итерационного решающего устройства. Путем непрерывной оценки операторов в наилучшей последней оценке, могут быть сделаны новые оценки решения и результат подан назад в каждое предыдущее решение таким образом,что другие величины являются также более приближенными. Эти новые величины могут быть поданы назад в операторы, чтобы разработать новые решения, которые, в свою очередь,могут снова подаваться на вход. Собственные операторы и испытательный файл кода 52 можно, таким образом, использовать, как основной код, который может переоцениваться непрерывно итерационным решающим устройством,чтобы получать более и более близкое приближение к истинному решению в модели физической системы. Таким образом, будущему аналитику может быть представлен конечный продукт, который состоит из созданного основного кода и файла решающего устройства, в котором используется сформированный основной код. Кроме того, может быть использован интерфейс пользователя для обращения к решающему устройству и формирования основного кода. Вместе они формируют моделирующее устройство для создания моделей физических систем. Следовательно, способ и система для формирования программного кода, используя символический языковый транслятор по настоящему изобретению, обеспечивают аналитика инструментальными средствами для создания моделирующего устройства методом конечных элементов, включая модель физической системы типа жидкого потока через пористые среды,более эффективным, свободным от ошибок и автоматизированным способом. Алгебраические ошибки и ошибки перевода уменьшаются с помощью письменной палитры, обеспечивающей простой ввод данных в программу Математика. Кроме того, при обеспечении весьма упрощенной и интуитивной модели сложных математических формулировок, аналитику не требуется быть квалифицированным программистом. 26 Способ и система для формирования программного кода, используя символический языковый транслятор по настоящему изобретению,могут быть использованы, чтобы решить физическую задачу моделирования нефтяного пласта. Это четырехмерная задача, потому для полного описания нефтяного пласта необходимы три измерения пространства и измерение времени. Нефтяной пласт - реальный пример четырехмерной задачи, в которой дифференциальные уравнения в частных производных, используемые для описания системы, настолько усложнены, что вероятность ошибки становится очевидной. Способ и система для формирования программного кода, используя символический языковый транслятор по настоящему изобретению, учитывают создание моделирующего устройства для моделирования этого типа системы в экономически обоснованный период времени. Емкость нефтяного пласта может, таким образом, эксплуатироваться более эффективно, потому что компания, которая извлекает нефть из нефтяного пласта, может более быстро и более экономно создавать моделирующее устройство и более точную модель жидкого потока в виде нефтяного пласта. Способ и система для формирования программного кода, используя символический языковый транслятор по настоящему изобретению,становятся необходимыми для аналитика, который, как правило, является специалистом по гидродинамике и чьей задачей является разработка моделирующего устройства для моделирования физической системы с рабочей моделью конкретной физики, т.е. конкретного набора уравнений, которые аналитик хочет моделировать. Таким образом, аналитик имеет в своем распоряжении работоспособное дискретное моделирующее устройство. Работоспособное дискретное моделирующее устройство включает интерфейс пользователя, решающее устройство (система, которая обеспечивает набор уравнений для дискретной модели, модели соответствия или модели цифрового типа) и собственные операторы и испытательный код 52 по настоящему изобретению. Например, на фиг. 6 показана известная дискретизация модели. Модель, показанная на фиг. 6,представляет собой однофазную трехмерную модель скважины в центре круглогопласта. На фиг. 7 показано решение по методу конечных элементов той же самой скважины, используя способ и систему для формирования программного кода, используя символический языковый транслятор. Модель на фиг. 7 - модель, представленная в виде дискретных значений, и в ней имеются величины для каждого из узлов треугольников,которые составляют модель. Способ и система для формирования программного кода, используя символический языковый транслятор по настоящему изобретению, 27 позволяют одному аналитику создавать из дифференциального уравнения в частных производных описание уравнения и описание физики,которую необходимо смоделировать с помощью дискретного моделирующего устройства для решения системы уравнений для конкретной дискретной модели физической системы. Это дискретное моделирующее устройство может затем использоваться вторым аналитиком, например, геохимической компанией, которая не заинтересована в создании самого моделирующего устройства, но весьма заинтересована в создании модели, используя такое моделирующее устройство, и которая знает, как его использовать. Упомянутый выше второй аналитик может быть членом группы специалистов по механике жидкостей и газов и инженеров, задачей которых является решение определенной задачи моделирования с использованием этого моделирующего устройства. Второй аналитик конечного пользователя в этом случае заинтересован в получении различных физических величин в моделирующем устройстве, которые обеспечиваются способом и системой для формирования программного кода с помощью символического языкового транслятора по настоящему изобретению. Например, эти аналитики могут желать получить физическую модель, которая может обрабатывать поток через пористые или смешанные среды. Это как раз та сфера, в которой известная из литературы система является очень дорогой и трудоемкой при разработке моделирующего устройства, потому что для каждого дополнительного физического параметра требуется разработать новый цикл работы системы и новый пакет формируемого кода. Известные системы требуют создания этого нового кода по большей части вручную с помощью высоко квалифицированных аналитиков и программистов, которые вводят и преобразуют данные. Способ и система для формирования программного кода, используя символический языковый транслятор по настоящему изобретению, автоматизируют этот процесс и делают экономически оправданным создание нового поколения физики для дискретного моделирующего устройства для аналитика в качестве конечного пользователя. Таким образом, новая физика может быть очень быстро добавлена к системе для создания нового моделирующего устройства. В этом смысле, заглавие настоящего изобретения является своего рода описанием системы создания нового продукта. Конечный пользователь способа и системы для формирования программного кода с использованием символического языкового транслятора по настоящему изобретению может изменять параметры уравнений используемых моделирующим устройством для создания, например,модели нефтяного пласта. Конечный пользователь может также математически описывать 28 скважины, которые служат для выкачивания нефти из этого пласта, и применить граничное условие к дифференциальным уравнениям в частных производных, как описание системы, и решать эти уравнения, используя моделирующее устройство. Способ и система для формирования программного кода, используя символический языковый транслятор по настоящему изобретению, обеспечивают конкретный набор уравнений моделирующего устройства, которое предоставляет конечному пользователюаналитику модель конкретной физической системы путем ввода границ этой физической системы в моделирующее устройство. Таким образом, способ и система для формирования программного кода, используя символический языковый транслятор по настоящему изобретению,обеспечивают улучшенный способ и систему для разработки моделирующего устройства для решения задачи конечных элементов в модели физической системой типа жидкого потока в пористых средах. На фиг. 8 представлена блок-схема полного моделирующего устройства, которое может быть создано, используя способ и систему для формирования программного кода и символический языковый транслятор по настоящему изобретению. Дифференциальное уравнение в частных производных (ВУЧП) и описание физики 70 на фиг. 8 является входом аналитика, который должен создать модель физической системы в моделирующем устройстве 76. Система создания математической физики 72 использует ВУЧП и описание физики как входы и выходы созданной физики 52 (см. фиг. 5), как описано выше. Созданная физика 52 может состоять из множества сформированных физических систем 52 и может быть подключена к моделирующему устройству 76, как показано на фиг. 5. Созданная физика 52 может быть динамически доступна аналитикам конечного пользователя для моделирования (не для ввода данных). Например,на фиг. 8 показаны три созданных физики 52,которые обеспечивают аналитиков конечного пользователя возможностью выбора нужной физики. Таким образом, можно использовать одно моделирующее устройство 76 с различными "подключенными" моделями созданной физики 52. Используя несколько созданных физик 52 для моделирующего устройства 76, можно получить более эффективный и быстрый оборот в экономически обоснованный промежуток времени, когда изменение в физической системе требует создания нового описания. Таким образом, например, если встретится нефтяной пласт,который еще не был изучен, новая физика может быть создана в течение относительно короткого периода времени. Конечный пользователь может пользоваться дифференциальными уравнениями, которые должны быть смоделированы, и после этого они могут быть введены в 29 систему Математика для создания физики 72,чтобы быстро сформировать моделирующее устройство, которое нужно применить к моделям этих уравнений. Хотя настоящее изобретение было подробно описано в отношении конкретных вариантов, специалистам ясно, что данное описание приведено только в качестве примера и что оно не ограничивается описанными вариантами. Понятно, что специалисты средней квалификации могут внести многочисленные изменения в варианты настоящего изобретения и дополнительных вариантов, используя данное описание изобретения. Предполагается,что все такие изменения и дополнительные варианты не выходят из духа и объема настоящего изобретения, изложенного ниже в формуле изобретения. ФОРМУЛА ИЗОБРЕТЕНИЯ 1. Способ создания с помощью компьютера собственных операторов и файла для устройства моделирования потока жидкости в пористых средах на основе конечных элементов, содержащий следующие стадии: ввод в символический языковый транслятор одного или нескольких уравнений и параметров,описывающих модель, которая должна быть создана моделирующим устройством; создание одного или нескольких модельных объектов из одного или нескольких уравнений и параметров; создание символического представления для одного или нескольких остаточных и касательных матричных операторов одного или нескольких модельных объектов; создание правил оптимизации для геометрических инвариантных величин остаточных и касательных матричных операторов; создание основного численного кода и структуры данных, инициализирующей основной код на предопределенном языке программирования из языка символического языкового транслятора; форматирование и оптимизация численного основного кода, используя символический языковый транслятор; создание собственных операторов и файла тест-кода путем обработки соединительного файла через символический языковый транслятор, чтобы получить собственные операторы и файл тест-кода. 2. Способ по п.1, в котором стадия ввода включает введение одного или нескольких уравнений и параметров, используя графический интерфейс пользователя для символического языкового транслятора, причем графический интерфейс пользователя включает палитру обозначений для ввода математических символов. 3. Способ по п.1, в котором пористые среды включают нефтяной пласт. 4. Способ по п.1, дополнительно включающий стадию создания одной или нескольких моделей ошибки объектов и граничное условие Дирихле для модельных объектов из одного или нескольких 30 модельных объектов для оценки ошибки в одном или нескольких уравнениях и в котором создание символического представления осуществляют, используя одну или несколько моделей ошибки объектов. 5. Способ по п.4, в котором модельные объекты и модели ошибки объектов являются промежуточными объектами, видимыми пользователем, что может быть использовано для проверки хода вычисления. 6. Способ по п.1, в котором указанная стадия создания правил оптимизации включает предварительное вычисление геометрических инвариантных величин симплекса. 7. Способ по п.6, в котором указанное предварительное вычисление включает сортировку одного или нескольких итоговых уравнений для надлежащего размещения в численном основном коде. 8. Способ по п.1, в котором правила оптимизации представляют собой правила семантической оптимизации. 9. Способ по п.1, дополнительно включающий стадию преобразования названий символов из языка символического языкового транслятора в язык программирования высокого уровня. 10. Способ по п.1, дополнительно включающий стадию создания набора испытательных входов для одного или нескольких символических остаточных и касательных матричных операторов и вычисление выходов одного или нескольких символических остаточных и касательных матричных операторов, основанных на созданных входах, для исправления ошибок. 11. Способ по п.1, в котором символический языковый транслятор представляет собой программу Математика. 12. Способ по п.11, дополнительно включающий стадию решения одного или нескольких уравнений без использования функции интегрирования программы Математика. 13. Способ по п.1, в котором одно или несколько уравнений представляют собой дифференциальные уравнения в частных производных. 14. Способ по п.13, в котором одно или несколько уравнений описывает четырехмерную физическую систему. 15. Способ по п.1, в котором стадия ввода выполняется вручную, а все другие стадии выполняются компьютером автоматически. 16. Способ по п.1, в котором моделирующее устройство включает решающее устройство, интерфейс пользователя, собственные операторы и файл тест-кода. 17. Система для создания на компьютере собственных операторов и файла тест-кода для устройства моделирования на основе конечных элементов жидкого потока в пористых средах, содержащая средства для ввода в символический языковый транслятор одного или нескольких уравнений и параметров, описывающих модель, которая должна быть создана моделирующим устройством; 31 команды для формирования одного или нескольких модельных объектов из одного или нескольких уравнений и параметров; команды для создания символического представления для одного или нескольких остаточных и касательных матричных операторов одного или нескольких модельных объектов; команды для создания правил оптимизации для геометрических инвариантных величин остаточных и касательных матричных операторов; команды для формирования численного основного кода и структуры данных, инициализирующей основной код на языке программирования высокого уровня из языка символического языкового транслятора; команды для форматирования и оптимизации численного основного кода, используя символический языковый транслятор; и команды для создания собственных операторов и файла тест-кода, обрабатывая соединительный файл через символический языковый транслятор, чтобы создать собственные операторы и файл тест-кода. 18. Система по п.17, в которой команды ввода дополнительно включают команды для ввода одного или нескольких уравнений и параметров, используя графический интерфейс пользователя, в символический языковый транслятор, при этом графический интерфейс пользователя включает палитру обозначений для ввода математических символов. 19. Система по п.17, в которой пористые среды включают нефтяной пласт. 20. Система по п.17, дополнительно включающая команды для создания одной или нескольких моделей ошибки объекта из одного или нескольких модельных объектов для оценки ошибок в одном или нескольких уравнениях и в которой команды для создания символического представления формируют, используя один или несколько моделей ошибки объектов. 21. Система по п.20, в которой модельные объекты и модели ошибки объектов представляют собой промежуточные объекты, видимые пользователем, что может быть использовано для проверки хода вычисления. 22. Система по п.17, в которой указанные команды для создания правил оптимизации включают предварительное вычисление геометрических инвариантных величин. 32 23. Система по п.22, в которой указанное предварительное вычисление включает использование способа симплекса и матричных операций,чтобы вычислить геометрические инвариантные величины и сортировку одного или нескольких итоговых уравнений для надлежащего размещения в численном основном коде. 24. Система по п.17, в которой правила оптимизации представляют собой семантические правила оптимизации. 25. Система по п.17, дополнительно включающая команды для преобразования названий символов из языка символического языкового транслятора в язык программирования высокого уровня. 26. Система по п.17, дополнительно включающая команды для создания набора испытательных входов для одного или нескольких символических остаточных и касательных матричных операторов и для вычисления выходов одного или нескольких символических остаточных и касательных матричных операторов, основанных на созданных входах для проверки на ошибки. 27. Система по п.17, в которой символический языковый транслятор представляет собой программу Математика. 28. Система по п.27, дополнительно включающая команды для решения одного или нескольких уравнений без использования функции интегрирования Математики. 29. Система по п.17, в которой одно или несколько уравнений представляют собой дифференциальные уравнения в частных производных. 30. Система по п.29, в которой одно или несколько уравнений описывает четырехмерную физическую систему. 31. Система по п.17, в которой средства ввода представляют собой компьютерный интерфейс и в которой одно или несколько уравнений и параметров вводятся вручную, а все другие операции выполняются компьютером автоматически. 32. Система по п.17, в которой языком программирования высокого уровня является язык ЯВА или ФОРТРАН. 33. Система по п.17, в которой моделирующее устройство включает решающее устройство, интерфейс пользователя и собственные операторы и файл тест-кода.

МПК / Метки

МПК: G06F 9/44

Метки: система, компьютера, файла, создания, собственных, способ, средах, пористых, жидкости, моделирования, операторов, помощью, потока, устройства

Код ссылки

<a href="https://eas.patents.su/18-4383-sposob-i-sistema-dlya-sozdaniya-s-pomoshhyu-kompyutera-sobstvennyh-operatorov-i-fajjla-dlya-ustrojjstva-modelirovaniya-potoka-zhidkosti-v-poristyh-sredah.html" rel="bookmark" title="База патентов Евразийского Союза">Способ и система для создания с помощью компьютера собственных операторов и файла для устройства моделирования потока жидкости в пористых средах</a>

Похожие патенты