선형 탄성에서 강체 운동을 제거하는 방법?


9

나는 해결하고 싶다 Ku=b 어디 K강성 매트릭스입니다. 그러나 일부 제약 조건이 누락되어 시스템에 일부 강체 운동이 여전히 존재할 수 있습니다 (고유 값 0으로 인해). 선형 시스템을 해결하기 위해 CG를 사용하고 있기 때문에 때로는 CG가 반 양성 문제에 수렴하지 않지만 때로는 수렴 할 수 있으므로 허용되지 않습니다.

실제로 나는 형벌을 추가한다는 점에서 처벌 변위 접근법을 사용하고 있습니다. α||u||2탄성 에너지에. 에너지는

W(u):=12uT(K+αI)ubtu
어디 α강성 매트릭스의 일부 대각선 입구에 비례합니다. 그러나 실제로 이것은 내가 갖고 싶은 변형 모드를 약화시키는 효과가 있습니다.

내 질문은 :

a) 원래 시스템을 변환 할 수 있습니까? 그래서 특이성 및 양의 명확한 (좌표 변환 또는 합동 변환 또는 기타)이 없어야합니까? 내 생각은 그런 변환을 사용하여 변환 된 문제에 CG를 계속 사용하는 것입니다.

b) 이러한 특이성을 다루는 표준적인 방법이 있습니까?

대단히 감사합니다!

친절하다,

답변:


6

표준 방법은 구속 조건을 추가하는 것입니다 u(x0)=0 임의로 선택된 노드 x0. 이것은 당신의 몸이 번역하거나 회전 할 수없고 따라서 0의 고유 값을 빼앗아갑니다. 이 제약 조건을 가진 결과 시스템은 페널티 기간이 없어도 양의 명확한 시스템입니다.


1
감사합니다! 그러나 나는 필자의 경우 여러 부동 하위 구조를 가지고 있으며 수정할 노드 (3D의 3 개의 비선형 노드)를 알 수 없습니다. 내 경우에는 null 공간이 잘 알려져 있기 때문에 더 높은 수준의 솔루션이 없는지 궁금합니다.
Tom

여러 구조가있는 경우 각 구조마다 하나의 노드를 수정해야합니다. 어느 것이 중요하지는 않지만 구조 당 하나만 선택하면됩니다.
Wolfgang Bangerth

3
@WolfgangBangerth 이것은 3D 탄성입니다. 따라서 차원 6의 널 공간을 제어하기 위해 3 개의 비선형 점을 고정해야합니다.이 3 개의 변위를 고정하는 것은 9 번 섭동이며 3 번 이상의 수정을 보장하기는 쉽지 않습니다. 널 공간은 솔루션을 변경하지 않습니다. 고정 할 점과 값을 선택하려면 고정 된 문제로 인해 한 명의 회원에게만 정확한 답을 제공하는 오른쪽의 3 차원 패밀리가 있습니다.
Jed Brown

아니요, 9 개의 구속 조건에 대해 3 점을 고정 할 수 없으며 상대 거리도 고정해야합니다. 경계 조건이 실제로 다른 구속 조건을 제공하지 않는 경우 (예 : 원에서 정규 변위가없는 경우) 총 6 개의 구속 조건에 대해 2 개의 다른 점에 1 점 + 다양한 회전 각도를 고정해야합니다.
Wolfgang Bangerth

6

널 공간을 알고있는 경우 오른쪽을 호환 가능하게하고 Krylov 방법을 사용하여 사전 조건자가 오염을 유발하지 않도록 할 수 있습니다. 왜 널 공간을 제거하기 위해 점을 고정시키는 것이 나쁜가?를 참조하십시오 . 추가 토론. PETSc에서는 MatNullSpace개체를 사용하여이 작업을 수행 합니다. 널 공간을 투영하는 고유 한 기능제공 할 수 있습니다 . 이는 부동 구조가 많은 경우 투영 비용을 줄이는 데 유용합니다.

널 공간을 모르고 호환되지 않는 오른쪽을 피할 수없는 경우 에도 최소 표준 솔루션을 찾을 수있는 MINRES-QLP 와 같은 특수한 Krylov 방법 이 있습니다. 이 방법은 일부 모드 만 연결하는 경첩과 단일 지점 연결이있는 경우 유용 할 수 있습니다. 사전 컨디셔너가 오염을 일으키는 지주의해야합니다 (예를 들어, LU 분해로 인해 피벗이 0 인 경우, 아마도 거친 멀티 그리드 수준 일 수 있음).


제드 감사합니다! 반복 방법으로 null 공간을 직접 투영하여 제거하는 것에 대해 생각했습니다. 그러나 비용이 너무 많이 들지 않는지 궁금했습니다 (널 공간이 탄력적이기 때문에 null 공간을 투영하는 연산자를 만들 수 있습니다). 또한 잔차도 투영해야한다고 생각합니까?
Tom

2
많은 전제 조건이 널 (null) 공간을 오염시키기 때문에 각 전제 조건 적용 후 오른쪽이 호환 가능하고 널 공간을 투사하십시오. 이것은 Krylov 연산자를 산출합니다K=(IN)P1A 그런 {b,Kb,K2b,}널 공간에 직교합니다. 문제가 대칭이므로 왼쪽과 오른쪽 널 공백에 대해 다른 루틴이 필요하지 않습니다. 전화하면 PETSc가하는 일 MatSetNullSpace()입니다.
Jed Brown
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.