2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3, 4  След.
 
 Численное моделирование волн в неограниченных областях
Сообщение12.03.2012, 16:27 


12/08/09
30
Здраствуйте.
Мне необходимо моделировать прохождение плоской волны сжатия внутри упругой полубесконечной области. Так как решение ищется численно, то область решения обязана быть конечного размера. Однако, в этом случае, когда волна доходит до границ области решения, она отражается от них обратно в область и искажает всю картину решения. Для того, чтобы этого не происходило я использую на тех границах области, сквозь которые волна должна уходить проч, специальные зоны поглащения - Pml-слои (содержащие другие уравнения, нежели в области решения), которые улавливают волны и не дают им распространятся обратно в область.
Но отсюда возникает проблема. Если бы поглощающих границ не было, то я бы мог просто приложить нагрузку (изменяющуюся во времени) к одной из границ области и в итоге по области решения стала бы распространятся нужная мне плоская волна. Но если границы области - поглощающие, то как тогда генерировать саму волну? Если прикладывать нагрузку к границе зоны поглощения, то волна сразу в ней затухнет. Если прикладывать нагрузку к границе между Pml-слоем и областью решения, то получится какая-то ахинея с большим количеством численных ошибок. Я могу задать дополнительную полость в области решения, и приложить нагрузку к ее границе, но тогда не получится плоской волны.
Есть у кого-нибудь идеи что делать в таком случае?
Задача решается двумерная, дискретизация по пространственным переменным производится методом конечных элементов, по временной переменной - методом конечных разностей.

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение12.03.2012, 17:54 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Раз у вас область полубесконечная, то и поглощающую границу надо делать только с одной стороны, а с другой прикладывать нагрузку. И пожалуйста, не пишите "поглащения".

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение12.03.2012, 18:00 


12/08/09
30
Моя область решения - прямоугольник. Поглощающие границы слева, справа и снизу. Если я сделаю поглощающую границу только с правой стороны, то отражения от объектов , расположенных внутри области решения (в дальнейшем планируется эти плоские волны сталкивать с объектами) будут попадать на границы слева и снизу, и отражаться от них.

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение12.03.2012, 18:11 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Rangok в сообщении #547754 писал(а):
Моя область решения - прямоугольник. Поглощающие границы слева, справа и снизу.

Тогда вы неправильно область решения нарисовали. Как ваша исходная задача ставится? Если вам нужны плоские волны, параллельные границе области, ваша задача сводится к одномерной. Если не параллельные - чуть посложнее, надо переписать дифур, и всё равно сделать его одномерным.

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение12.03.2012, 18:23 


12/08/09
30
Волна должна двигаться слева-направо, встречая препятствия на своем пути (полости, материалы других характеристик) и воздействуя на них. В результате воздействия с препятствиями и верхней границой получатся отраженные волны, которые, однако, не должны отражаться от левой, правой и нижней границ. Как будто идет взрывная волна в грунте в плоской постановке (у грунта ведь нет никаких границ кроме поверхности Земли).

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение12.03.2012, 18:42 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Понятно. То есть вам нужна волна, падающая из бесконечности.

Я так понимаю, вам нужно взять плоскость, параллельную левой границе, прямо на границе pml-слоя или чуть-чуть отступив от него, и задать на этой плоскости источник волн внутри области решения - ненулевую правую часть ДУЧП. В горизонтальном направлении дельта-подобный. Волны от него побегут направо и налево, но те, которые побегут налево, поглотятся, и волновать вас не будут.

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение12.03.2012, 19:06 


12/08/09
30
Так пробовал уже - не получается ничего. Если силы прикладываются к узлам на границе pml-слоя (если отступить чуть-чуть впарво, то самый нижний узел плоскости, к которой прикладывается нагрузка, будет касаться нижнего pml-слоя) и расчетной области, то волны получаются не гладкие, а в своеобразных пиках как на осциллограммах. Плюс ко всему, когда все волны затухнут, то на все решение накладываются большие ошибки. Если же выбирать узлы, не граничащие с pml-слоями, то плоской волны не получается.

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение12.03.2012, 22:35 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Rangok в сообщении #547790 писал(а):
если отступить чуть-чуть впарво, то самый нижний узел плоскости, к которой прикладывается нагрузка, будет касаться нижнего pml-слоя

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

Rangok в сообщении #547790 писал(а):
волны получаются не гладкие, а в своеобразных пиках как на осциллограммах.

Это как? Ничего не понял. Приведите картинку.

Rangok в сообщении #547790 писал(а):
Плюс ко всему, когда все волны затухнут, то на все решение накладываются большие ошибки.

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

Rangok в сообщении #547790 писал(а):
Если же выбирать узлы, не граничащие с pml-слоями, то плоской волны не получается.

Почему? У вас эти узлы не лежат в плоскости, и нельзя заставить их в ней лежать?

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение13.03.2012, 15:55 


12/08/09
30
Я тут еще поэкспериментировал чутка и пришел к такому выводу: если нагрузку прикладывать к внешней границе регулярной области, которая не граничит с зоной pml (как здесьhttp://savepic.su/1559058.jpg), то решение в принципе приемлемое получается, но ошибки все-равно накладываются когда волна достигает зоны pml, хоть и незначительные. Уменьшение шага по времени не уменьшает ошибки, но сгущение сетки их уменьшает (как в этом случае http://savepic.su/1509911.jpg).
Но если нагрузку попытаться приложить к любым внутренним точкам области, то получается какая-то белиберда как здесь http://savepic.su/1533458.jpg и здесь http://savepic.su/1553938.jpg
Не знаю в чем дело: при одних условиях решение вроде бы адекватное, но при других совершенно неадекватное. Может быть где-то ошибка в численной схеме, только вот сто раз перепроверял все и ничего не нашел...

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение13.03.2012, 17:52 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Ну вот. Начать с того, что я совсем не ожидал, что у вас вообще область такая маленькая, по сравнению с длиной волны и толщиной pml-слоёв. Соображения, которые я говорил, логичны для случая, когда размеры области в разы больше.

"Ошибки", которые вам не нравятся (имхо - и так уже пренебрежимо малые, уже на первом рисунке), думаю, станут ещё меньше, если вы область pml-слоя зададите столь же регулярной сеткой, что и основную область задачи. По-моему, очевидно, что они возникают из-за отражения на неоднородностях сетки.

Заменять левый pml-слой на излучающее граничное условие можно, если вас не волнуют волны, идущие справа налево. Вы же собираетесь всякие препятствия в область добавлять? Ваша падающая волна будет от них отражаться, пойдёт справа налево, дойдёт до границы, и что с нею будет? Если там будет граничное условие, волна от него опять отразится. А если там будет прозрачная для волны правая часть, и за ней pml-слой, то волна пройдёт излучатель, и поглотится, что вам и нужно (в смысле "волна уйдёт влево на бесконечность").

То, что вы привели на последних двух картинках - по-моему, не белиберда, а вполне нормальное излучение ограниченной плоскости, демонстрирующее краевой эффект - диффракцию. Увеличьте область решения по вертикали в десять, или хотя бы в три раза, и у вас будет достаточно много почти хорошей плоской волны. Из мелких советов, нижний край излучающей плоскости можно смело погрузить в нижний pml-слой, и довести до края расчётной области, от этого картинка тоже должна слегка улучшиться.

Мнэ, и у меня вопрос такой возник, у вас научрук есть? А то у меня такое впечатление, что я его роль начинаю играть :-)

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение13.03.2012, 23:25 


12/08/09
30
Цитата:
"Ошибки", которые вам не нравятся (имхо - и так уже пренебрежимо малые, уже на первом рисунке), думаю, станут ещё меньше, если вы область pml-слоя зададите столь же регулярной сеткой, что и основную область задачи. По-моему, очевидно, что они возникают из-за отражения на неоднородностях сетки.

Не думаю, что регулярная сетка в pml слоях привнесет хоть-какой-либо эффект (я бы проверил на всякий случай, но придется тогда программу генерации немного переделывать). Все-таки в МКЭ искомые функции апроксимируются внутри каждого элемента (треугольника), линейными(в моем случае) интерполяционными полиномами. То есть в каждом треугольничке подбирается свое уравнение плоскости, которое будет аппроксимировать решение. И если треугольники будут не прямоугольными а равносторонними, то качество решения даже лучше будет. Тем более раньше я задавал область решения тоже нерегулярной сеткой как в pml-слоях и эффекта никакого от этого не было.
Цитата:
Заменять левый pml-слой на излучающее граничное условие можно

А что это такое и как его задавать?
Цитата:
Увеличьте область решения по вертикали в десять, или хотя бы в три раза, и у вас будет достаточно много почти хорошей плоской волны. Из мелких советов, нижний край излучающей плоскости можно смело погрузить в нижний pml-слой, и довести до края расчётной области, от этого картинка тоже должна слегка улучшиться.

Увеличил расчетную область по вертикали в 10 раз и по горизонтали в 2 раза, также нижний край излучающей плоскости поместил в в нижний pml-слой. Вот результат http://savepic.su/1529438.jpg.
Как видите, почему-то стало только-хуже. Не знаю в чем дело, но если прикладывать нагрузку к внешней границе как здесь http://savepic.su/1508958.jpg то решение вроде бы нормальное. Если сделать внутреннюю полость в области решения, и приложить нагрузку к ее границе, то тоже будет все нормально. А если прикладывать нагрузку в любом месте внутри расчетной области например здесь http://savepic.su/1572433.jpg так же, то решение получается все в "иголках" каких-то. Из-за чего вообще такое может быть? Ведь если я эту же задачу в стандартной постановке без pml-слоев, то такого нету, просто волны получаются кривые, но никаких "иголок" нет http://savepic.su/1567314.jpg.

Цитата:
Мнэ, и у меня вопрос такой возник, у вас научрук есть?

Формально-то он есть, но в научных вопросах мне не помогает совсем, даже спрашивать у него смысла нет никакого.
Цитата:
А то у меня такое впечатление, что я его роль начинаю играть :-)

Спасибо Вам больше за это, а то мне и обратится больше не к кому, кроме как на форумах спрашивать.

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение14.03.2012, 01:15 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Rangok в сообщении #548109 писал(а):
Не думаю, что регулярная сетка в pml слоях привнесет хоть-какой-либо эффект

Хм. Ну, может, ошибки не исчезнут, но станут регулярнее :-)

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

Rangok в сообщении #548109 писал(а):
А что это такое и как его задавать?

Я, видимо, неправильно выразился, я потом увидел в книжке, что "излучающая граница" - это тоже другое название для неотражающей границы. Я имел в виду просто условия Неймана или Дирихле, в которых $u$ или $u_{\mathbf{n}}$ равны не нулю, а заданной функции. Ровно то, что вы здесь показали: http://savepic.su/1559058.jpg . Давайте, что ли, о терминологии договариваться.

Rangok в сообщении #548109 писал(а):
решение получается все в "иголках" каких-то. Из-за чего вообще такое может быть? Ведь если я эту же задачу в стандартной постановке без pml-слоев, то такого нету, просто волны получаются кривые, но никаких "иголок" нет

Действительно, странно, особенно то, что "иголки" появляются ещё до того, как волна успела фактически дойти до pml-слоя. Боюсь, ответ в каких-то нюансах численной схемы, как основной, так и для реализации pml-слоя. Что-то на что-то "незаконно" влияет. Подобные "иголки" типичны для несходящихся численных методов, но ничего конкретнее сказать не могу.

В какой степени солвер вам подконтролен? Вы его целиком написали сами, используете написанный коллегой, используете готовый продукт? Отдельно тот же вопрос по генерации сетки. И чуть поподробнее, как вы pml-слой задаёте?

Rangok в сообщении #548109 писал(а):
Формально-то он есть, но в научных вопросах мне не помогает совсем, даже спрашивать у него смысла нет никакого.

Это тяжко. Но может быть, он хотя бы порекомендует своего коллегу, к которому вы могли бы обратиться?

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение14.03.2012, 19:38 


01/03/12
36
А если задавать источники волны не в близи поглащающего слоя, а в середине КЭМ. Каков будет результат?
По идее должны побежать две хорошие волны одна влево, другая - вправо.

Первую вы можите просто проигнорировать, а под вторую поставить исследуемый объект.

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение14.03.2012, 23:07 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Кажется, это уже было проделано на рис. http://savepic.su/1572433.jpg , и результаты неудовлетворительны.

 Профиль  
                  
 
 Re: Численное моделирование волн в неограниченных областях
Сообщение15.03.2012, 06:52 


01/03/12
36
Munin в сообщении #548435 писал(а):
Кажется, это уже было проделано на рис. http://savepic.su/1572433.jpg , и результаты неудовлетворительны.


Здесь я вижу три проблемы:

1. Исходная волна не той формы какой должна быть (а значит конфигурация источников, ее генерирующих не правильно расчитана).
2. Присутствует взаимодействие двух волн: Исходной и отраженной от верхней границы расчетной области (Это интерференция. Так и должно быть. Это физике не противоречит)
3. PML слой не полностью абсорбирует волну, а частично отражает ее обратно в расчетную область. (Либо его толщины не хватает, либо он с ошибками реализован)

Предлагаю исключить первые две:
1. Полностью окружить расчетную область одинаковыми по толщине PML слоями (в идеале интерференции волн вообще не должно быть)
2. Поставить в центр расчетной области точечный источник (чтобы исключить 1 проблему)

Далее:
Посмотреть как будут работать PML слои в зависимости от их толщины.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу 1, 2, 3, 4  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group