Волновое ур-е: граничное условие для соединённых упругих нитей

STELLS

Есть несколько упругих нитей, соединённых в форме плоской звезды одним концом (если их 3, то в форме буквы Y, если 4, то X и так далее). Их параметры одинаковы, за исключением длины и граничных условий на свободных концах. Колебания всех нитей перпендикулярны плоскости, в которой лежит эта звезда.
Как посчитать колебания такой системы?
Каждая нить в отдельности считается разностным методом и, если я правильно понимаю, достаточно составить хитрое граничное условие для соединённых концов.
Беглым гуглением не нашёл. Прочитал про Digital Waveguide Networks, но это немного не оно, там не разностный метод используется.
Буду благодарен за подсказку или отсылку к нужной литературе.

marina1206

Условие того, что все нити связаны казалось бы легко записать. Нужно просто приравнять координаты отклонений от равновесного положения каждой из нитей в точке где они связаны. Этого не достаточно?
То есть записывается волновое уравнение для каждой нити. Записываются граничные условия для каждой нити на свободных концах + уравнение, где приравниваются координаты всех нитей на другом конце. Дальше составляется разностная схема для численного решения системы дифференциальных уравнений любым стандартным методом.

STELLS

Условие того, что все нити связаны казалось бы легко записать. Нужно просто приравнять координаты отклонений от равновесного положения каждой из нитей в точке где они связаны. Этого не достаточно?
Попробую объяснить, что не получается. Вот вычисление следующего значения отклонения элемента нити по одной из явных схем:

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

marina1206

Кроме равенства самих координат в точке скрепления равны должны быть и скорости тоже. То есть можно приравнять
еще и производные по времени в этой точке.
Кроме того можно приравнять еще и производные по координате. Это будет соответствовать "гладкому" скреплению. Если же нужно скрепление какое-нибудь другое, то можно его явно уже смоделировать тогда.

STELLS

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

sunni

Физично будет приравнять суммарную силу, действующие на точку сцепления со всех сторон, нулю. Раз есть две компоненты у силы в каждой точке, - одна направлена вдоль нити, другая же из плоскости - то сумма сил натяжения Тi , учитывая взаимное расположение, нулевая, а также сумма "вертикальных" сил нулевая. Вертикальные силы суть первые производные по пространству от отклонений.
Граничные условия в случае N реберной звезды: N-1 для попарных равенств отклонений концов нитей, плюс 1 условие вида "сумма производных вдоль направления своей нити равна нулю". Итого N, как если бы мы просто задали в явном виде отклонения концов.

STELLS

Граничные условия в случае N реберной звезды: N-1 для попарных равенств отклонений концов нитей, плюс 1 условие вида "сумма производных вдоль направления своей нити равна нулю". Итого N, как если бы мы просто задали в явном виде отклонения концов.
Если записать это в разностном виде, то получается, что отклонение соединительного элемента равно среднему арифметическому соседних элементов нитей (или соседей этих соседних, смотря какие разности использовать, центральные или смещённые).
2 соединённые нити должны вести себя как одна целая. Однако, если считать отклонение соединительного элемента предложенным способом, это не так. Волна частично отражается от такого элемента:

На концах неотражающие граничные условия.

Sergey79

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

sunni

Как Вы говорили, из равенства отклонений в каждый момент времени следует равенство скоростей.
Поэтому u_t+a u_x = v_t - a v_x, что соответствует "неотражающим" условиям, только тут "сколько отсюда вышло, столько туда вошло". Попробуйте именно это условие применять вместо u_x+v_x=0, вдруг оно более робастное c вычислительной точки зрения.

sunni

Ошибся я.
Условие "сумма сил равна нулю" будет выглядеть как раз u_x - v_x =0.
Условие "что слева(от граничного условия) вышло в правую сторону, то равно тому, что вошло в левую сторону", которое можно записать как u_t - a u_x = v_t - a v_x. Опять же ,это условие следует их предыдущего, но попробовать его можно.
Другое дело, если у Вас есть звезда. Вопрос в том, ЧТО вы хотите получить от математической модели. Можно применять условие "сумма сил равна нулю", а можно "неотражающее". Например, если есть звезда буквой Y, и волна идёт только с одного конца, что Вы хотели бы получить при прохождении центра? Волна делиться пополам и распространяется по двух другим рёбрам, или же треть волны всё-таки отражается обратно?

STELLS

Спасибо большое, работает!

Проверил для двух нитей в своей тестовой программе. Для нескольких не проверял, но пока не вижу причины этим условиям не работать для нескольких нитей. Если что, обновлю тред.
Условие "что слева(от граничного условия) вышло в правую сторону, то равно тому, что вошло в левую сторону", которое можно записать как u_t - a u_x = v_t - a v_x
Тут разве не u_t + a u_x = v_t - a v_x должно быть?
Например, если есть звезда буквой Y, и волна идёт только с одного конца, что Вы хотели бы получить при прохождении центра? Волна делиться пополам и распространяется по двух другим рёбрам, или же треть волны всё-таки отражается обратно?
Для моей задачи скорее первое лучше подходит. Попробую и так, и так.

sunni

Так. Классические условия неотражения для правого конца: y_t +a y_x = 0 , т.е. ничего не входит в область с правой стороны. У нас же входит то, что из другой области, с её левого конца, выходит. Классические условия неотражения для левого конца: y_t - a y_x =0, т.е. ничего не входит слева, а вот выходит как раз y_t + a y_x.
Поэтому условие должно быть u_t + a u_x = v_t + a v_x, которое должно приводить к отсутствию изломов функции отклонений (u_x = v_x). Получается, что это условие пропуска справа-налево, а условие слева-направо: u_t - a u_x = v_t - a v_x.
Или я что-то сильно недопонимаю. У Вас с каким условием получилось красиво?

STELLS

Поэтому условие должно быть u_t + a u_x = v_t + a v_x, которое должно приводить к отсутствию изломов функции отклонений (u_x = v_x). Получается, что это условие пропуска справа-налево, а условие слева-направо: u_t - a u_x = v_t - a v_x.
Или я что-то сильно недопонимаю. У Вас с каким условием получилось красиво?
Всё правильно, у меня в посте ошибка. Работает с условием u_t + a u_x = v_t + a v_x. Из-за особенности реализации программы (для второй нити координатная ось направлена в обратную сторону) перепутал знак.

sunni

С условием u_t + a u_x = v_t + a v_x волна должна свободно проходить справа-налево. А у вас в гифке волна идёт слева-направо, но тоже проходит неотражённой. Можете попробовать повыпускать с волны с разным направлением движения.

sunni

Самое главное: попробуйте условие u_x - v_x =0. Мне кажется, что его Вы не проверяли ещё по моей вине. В этом случае и гладкость есть, и пропускание без отражения в обе стороны автоматически.
 
Оставить комментарий
Имя или ник:
Комментарий: