Jak włączyć warunki brzegowe do metody Galerkina?


21

Czytałem w Internecie niektóre zasoby na temat metod Galerkina do rozwiązywania PDE, ale nie mam pojęcia o czymś. Oto mój własny opis tego, co zrozumiałem.

Rozważ następujący problem wartości granicznej (BVP):

L[u(x,y)]=0on(x,y)Ω,S[u]=0on(x,y)Ω

gdzie L jest 2-go rzędu liniowy operatora różnicowania ΩR2 jest domeną BVP, Ω jest granica domeny, a S jest 1 stopnia liniowy operator różnicowy. Wyrażenie u(x,y) jako przybliżenie postaci:

u(x,y)i=1Naigi(x,y)

gdzie gi są zbiorem funkcji, których użyjemy do przybliżenia u . Zastępowanie w BVP:

iaiL[gi(x,y)]=R(a1,...,aN,x,y)

Ponieważ nasze przybliżenie nie jest dokładne, reszta nie jest dokładnie zerowa. W sposobie Galerkina-Ritz, Raleigh zminimalizować R w stosunku do zestawu zbliżone funkcje wymagając R , g i= 0 . W związku z tymRRR,gi=0

R,gi=j=1NajL[gj],gi=0

Dlatego, aby znaleźć współczynniki , musimy rozwiązać równanie macierzowe:ai

(L[g1],g1L[gN],g1L[g1],gNL[gN],gN)(a1aN)=0

Moje pytanie brzmi: jak włączyć w to warunki brzegowe?

EDYCJA: Pierwotnie pytanie brzmiało, że był liniowym operatorem różnicowym drugiego rzędu. Zmieniłem go na liniowy operator różnicowy 1. rzędu.S[u]


1
becko, witamy w scicomp! Nasze zasady dotyczące przesyłania postów są zgodne z zasadami innych witryn Stack Exchange . Dozwolone jest przesyłanie pocztą, jeśli dostosujesz to samo pytanie (mniej więcej) do różnych odbiorców. Dopiero po pewnym czasie możesz poprosić o migrację pytania na inną stronę, jeśli uważasz, że na twoje pytanie nie ma zadowalającej odpowiedzi (lub wcale) w witrynie, w której zostało pierwotnie opublikowane.
Geoff Oxberry

Jednak ogólnie uważa się za obelżywe zachowanie na post-post. Jeśli spojrzysz na listę stron beta w Strefie 51, wiele z nich nadal jest w publicznej wersji beta po roku. Będziemy jeszcze przez jakiś czas (przynajmniej w dłuższym okresie czasu, niż odpowiedź na większość pytań na tej stronie). Ponadto, chyba że mathużytkownicy, którzy odpowiedzą na twoje pytanie, są również scicompużytkownikami, nie otrzymają odpowiedniego uznania ani uznania za swoją odpowiedź tutaj, scicompjeśli skopiujesz ją i wkleisz math, i odwrotnie.
Geoff Oxberry

1
Czy jesteś pewien, że jest również operatorem drugiego rzędu? Zasadniczo nie jest to dobrze postawiony problem. Na przykład, jeśli S = L , to pytasz o L u = 0 w ˉ Ω, które ma okropnie nie unikalne rozwiązania (np. Rozwiązanie PDE w dowolnej większej domenie z dowolnymi warunkami brzegowymi jest również rozwiązaniem). Zwykle prosimy oSS=LLu=0Ω¯ był (być może nieliniowym) operatorem pierwszego rzędu. S
Jed Brown

2
Nawet jeśli , nadal szukasz niecodziennych rozwiązań. Zastanów się, czy L jest operatorem laplace, a S jest dowolnym operatorem liniowym drugiego rzędu. Następnie każdy u takich, które u = k dla pewnej stałej wektorzeSLLSuu=k można dodawać do roztworu z wytworzeniem kolejnego rozwiązania. k
Dan

1
@GeoffOxberry Dla Twojego spokoju zduplikowane pytanie mathzostało usunięte. Oczywiście miałeś rację, utrzymując pytanie tutaj. Otrzymałem bardzo pomocne odpowiedzi.
becko

Odpowiedzi:


15

Szybkie i ogólne odpowiedzi bez abstrakcji matematycznych. Istnieje kilka opcji nałożenia warunków brzegowych, np

Ściśle rzecz biorąc metoda galerkina wymaga, aby wybrać zestaw funkcji bazowych, które spełniają BC problemu (np poprzez Podstawa rekombinacji i / lub rozszczepiania zbliżanie wit u 0uh=u0+uNu0 odpowiedzialny za niejednorodnych roztworów i częściowa suma, która opiera się na funkcjach bazowych, spełniających jednorodne warunki)uN

  • Metody kar / Lagrange mnoży się, gdy w zasadzie dodaje się karę, która uwzględnia warunek brzegowy, np. A + gdzie B jest macierzą odpowiedzialną za dyskretny warunek brzegowy, a b p odpowiada za niejednorodne warunki. W granicach τ warunki są silnie narzucone, a w przeciwnym razie są narzucone słabo. Wybór τ wpływa na warunkowanie systemu.τB=b+τbpBbpττ

  • Metoda Tau, w której szereg równań jest wymienianych (modyfikacja wierszy w systemie Galerkina) z dyskretnymi wersjami warunków brzegowych, które są następnie egzekwowane jawnie. Uwaga: jedną z opcji jest również przekroczenie granic systemu przez dodatkowe warunki brzegowe.

  • Przed dyskretyzacją (metoda Ritza) przepisz formułę Galerkina za pomocą twierdzenia o dywergencji Gaussa, aby przekształcić całki objętościowe w całki brzegowe, a następnie włącz (warunki dokładne lub w przybliżeniu) warunki brzegowe bezpośrednio do formulacji przed dyskretyzacją.

  • Wreszcie, wykorzystując połączenie między rozszerzeniami węzłowymi / modalnymi, możliwe jest również uzyskanie węzłowej metody Galerkina, w której rozwiązaniem systemu są współczynniki podstawy Lagrange'a, a nie podstawy modalne.


1
Chyba jest λ , prawda? τλ
shuhalo

Tak. poprawione.
Allan P. Engsig-Karup

1
Czy powinien on brzmieć „Metoda Galerkina wymaga wybrania zestawu podstawowych funkcji, które spełniają BC problemu”?
knl

@knl: Też tak myślę, podczas gdy drugie zdanie nie ma sensu. Zrobię edycję.
davidhigh

7

Jedną z możliwości jest złożenie macierzy systemowej i wektora b po prawej stronie , z określonymi stopniami swobody jako nieznane, jak każdy inny stopień swobody. Następnie A i b są modyfikowane przez wyzerowanie wierszy i kolumn związanych z zalecanymi dof i wstawienie jednego do odpowiedniego wpisu po przekątnej oraz odpowiednią modyfikację wektora rhs b .AbAbb

Kiedy wyzerujesz rzędy, umieść jeden w przekątnej i zmień rhs, aby wymusić przepisaną wartość, system nie będzie już symetryczny. Dlatego zerujesz kolumny i modyfikujesz wektor rhs b aby uwzględnić zalecaną wartość.

Inną możliwością jest dodanie bardzo dużej liczby (zwykle 1e10) do przekątnej przepisanego dof, a następnie ustawienie wpisu rhs na p * ˉ u , gdzie ˉ u jest zalecaną wartością tego dof.pu¯u¯


6

Ogólny problem radzenia sobie z warunkami brzegowymi metodą elementów skończonych może być dość skomplikowany. Ale jeśli:

  • S(u) is such that the only imposition S(u)=0 makes on the form of u is that it is equal to some f(x,y) on δΩ.

  • You can finagle your elements so that δΩ is entirely on the boundaries of various elements

it's actually very simple. Your equation:

(L[g1],g1L[gN],g1L[g1],gNL[gN],gN)(a1aN)=0
needs to be replaced with
(L[g1],g1L[gN],g1L[g1],gNL[gN],gN)(a1aN)=b

where the right hand side vector b represents the boundary conditions.

To determine b, set the elements of your basis that determine the value of u on δΩ to whatever values they need to be to satisfy the boundary conditions. In L[gj],gi, you should exclude them from the gj but not the gi (the elements of a that correspond to these functions have already been determined, so they shouldn't be included in the matrix equation) . Then, set up

R,gi=j=1NajL[gj],gi=0
as a matrix equation, and the values of the elements of b should pop right out as the inner products of L operating on your your interior basis with elements of your boundary basis.

Thanks for the answer Dan. I don't understand the paragraph that begins "To determine b ..." (which is the essential part, I think). Could you make it a little more explicit?
becko

On the other hand, the problem I'm trying to solve only satisfies the second condition you set: The boundary is a rectangle. As for the first condition, the boundary conditions do not specify the values of the function at the boundary. The boundary conditions specify the values of linear combinations of the second order derivatives of the function (something like a2u/xy+b2u/x2=0), where a,b are constants. Also the boundary conditions are homogeneous.
becko

@becko: Możesz chcieć wyrazić się bardziej precyzyjnie L and S are in your question. Different types of boundary conditions can be handled in different ways.
Dan

1
I edited the question a little to make it clearer, I think. I don't want to post the exact problem I'm trying to solve because I want to keep the question as general as I can. I think I can understand the method better that way.
becko

@becko: We might want to move this to chat, as it's getting kind of long.
Dan

2

Here is a method known as basis recombination, which has not been mentioned in the present thread. I'm citing from the book of J.P. Boyd, "Chebyshev and Fourier Spectral Methods", 2nd Ed., Chapter 6.5.:

If the problem

Lu=f
has inhomogeneous boundary conditions, then it may always be replaced by an equivalent problem with homogeneous boundary conditions, so long as the boundary conditions are linear. The first step is to choose a simple function B(x) which satisfies the inhomogeneous boundary conditions. One may then define a new variable v(x) and new forcing function g(x) via
u(x)v(x)+B(x)g(x)f(x)LB(x)
so that the modified problem is
Lv=g
where v(x) satisfies homogeneous boundary conditions. ...

The shift function B(x) is arbitrary except for the constraint that it must satisfy all the inhomogeneous boundary conditions. However, the simplest choice is the best: polynomial interpolation of the lowest order that works.

Next comes my own explanation:

  • "Inhomogeneous boundary condition" means a condition which contains a constant, e.g.

    xu(x,y)|x=x0=1.

    According to the above program, by choosing a convenient function B(x), you get that down to

    xu(x,y)|x=x0=0.
  • Once you made all boundary conditions homogeneous in this way, you can turn to your basis expansion (which I assume is done in terms of a product basis):

    u(x,y) = ijaijϕi(x)φj(y)
    By applying the corresponding BC operator, one obtains
    xu(x,y) = ijaijϕi(x)φj(y)
    and this should be zero for x=x0 according to the above example.
  • Now comes the crucial step: by using a basis ϕi(x) which already satisfies the BC by itself, i.e. ϕi(x)|x=x0=0 for all i, the BC of the (transformed) two-dimensional problem are satisfied automatically! Basis sets of this and similar kind can be found, e.g., by a procedure called "basis recombination" (that is often used in combination with collocation methods).

  • Note that this is the point where homogeneous boundary conditions really matter, because otherwise one would need to impose further constraints. For example, suppose we would be working with the "=1" condition above, and, correspondingly, let's try to use a basis with ϕi(x)|x=x0=1. Then

    xu(x,y)|x=x0 = ijaijφj(y)
    and in order to make this expression equal to 1 for all y, one would have to constrain the expansion coeffcients aij as well. Thus, for inhomogeneous BCs, there is a general way to apply the constraints to the one-dimensional parts but use it for to the full problem.

The nice thing about this whole approach is that it is working on a relatively abstract level. Necessary ingredients are only linearity of the BC operator and an ansatz in terms of product basis functions. As such, it is also applicable to approximate methods.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.