수치해석/Deal.II

Lecture 2: A real brief overview of deal.II

KAU 2020. 8. 17. 19:32

https://www.youtube.com/watch?v=oAkjum6ZyFo&t=1068s

내가 하고 싶은 것은 이 강의의 주제라고 불리는 이 라이브러리에 대한 아주 간략한 개요를 제공하는 것이다.

그래서 다루는 것은 본질적으로 유한요소법으로 당신이 하고 싶은 모든 것을 제공하는 라이브러리이다.

 

특히 유한요소법에 필요한 것은 당신이 원하는 모든 것을 제공하는 라이브러리이다.

그물망(mesh)을 가지고 있어야 한다는 것은,

형상함수라고 말할 수 있는 유한한 요소들을 가지고 있어야 한다는 것이고, 물론 맵핑도 필요하다.

 

예를 들어, 선형대수학에 필요한 모든 것들을 하고, 또한 엄청난 양의 도구를 당신에게 제공할 필요가 있다.

이것과 저것, 그리고 일반적으로 유한요소 코드에서 일어나는 일들, 그리고 나는 당신에게 이 모든 것들과 관련하여 제공하기로 한 Deal에 대한 아주 간략한 개요를 줄 것이다.

 

그래서 당신이 다운로드하기를 원하거나 당신이 그것을 온라인에서 보고자 한다면 거기에는 빌드 오스트 드 al I orgrum이라고 불리는 웹 페이지가 있다. 

 

그래서 del 2는 한정된 요소 방법을 구현하는 문학 도서관의 한 종류에 속하는 도서관이다.

그것은 아마도 이것들 중 가장 큰 것이기도 하다. 아마도 가장 널리 사용되는 도서관일 것이다.

그래서 당신에게 그것이 60만줄의 C++ 코드에서 실제로 얼마나 큰지를 알려주기 위해 그것은 아마도 30년 간의 작업일 것이다. 이 일에 한 사람만이 아니라 전 집단의 사람들이 투자했다.

 10,000페이지에 달하는 문서와 오늘 45개의 튜토리얼 프로그램이 있고 이번 학기에 내가 할 일은 내가 너에게 어떻게 할 수 있는지 보여주는 튜토리얼로 안내하는 것이다.

 

문제 X를 구현합니다 14단계는 매우 간단한 프로그램부터 매우 복잡한 프로그램까지 이 튜토리얼 프로그램을 한 번 보여드리고 o2가 상당히 널리 퍼져있는 이 라이브러리의 다른 부분을 보여드릴 겁니다.

 

 매년 2만 건의 다운로드가 있고, 우리는 그것을 기반으로 한 많은 출판물을 알고 있다.

그래서 예를 들어 우리는 작년에 deal을  설명하는 주요 논문을 인용하는 65개의 출판물을 알고 있다.

하지만 아마도 더 많은 군인들(?)이 이 deal에 대해 말하고 있을 것이다.

 

모든 것을 나열하는 페이지 링크도 있다.

출판물들 특히 만약 당신이 특정한 문제를 해결하기를 원한다면,

이 페이지로 가서 다른 사람들이 무엇을 했는지 살펴보는 것이 매우 가치 있을 것이다.

그리고 당신이 이미 여기 텍사스 A&M에서 수학 676에서 가르치는 데 사용될 수 있는 유사한 것이 있는지 볼 수 있다. 그리고 그것은 또한 다양한 다른 대학에서도 사용된다.

유한요소법을 가르치는 도구로 세상을 떠났고 마침내 나와 나의 공동저자는 2007년에 윌킨슨 상을 받았다.

이것은 고품질의 수학 소프트웨어에 주어지는 상이다.

예를 들어, 유한요소법을 하고 싶을 때, 메쉬에 관한 것들의 목록을 살펴보기만 하면 된다.그들이 당연히 1D 2d 3d 버전으로 나와야 하는 것을 용이하게 해주기 때문에 물론 현실은 그렇다.

 3차원적이지만 종종 우리는 2차원적인 일을 함으로써 벗어날 수 있다.

 특히, 만약 여러분이 이것을 하는 것이 훨씬 더 저렴하기 때문에, 만약 여러분이 이 수업을 여기서 녹화했을 때조차도, 3D 계산은 항상

 그리고 만약 당신이 소프트웨어 개발이나 심지어 2D로 하고 싶은 진짜 문제의 해결책이라고 말한다면, 예를 들어 어떤 회전 대칭을 이용함으로써 당신은 정말로 당신의 문제가 될 수 있다.

 

 2차원적으로 보면, 여러분은 이것을 더 빨리 하는 것이 훨씬 더 쉽고 저렴하다는 것을 알게 될 것이다.

그러면 우리가 이 메쉬로 그들을 적응적으로 찾고자 하는 것이다. 그래서 이것이 의미하는 것은 우리가 부분적인 것을 해결한다는 것이다.

 미분방정식과 우리는 예를 들어 해결책이 도메인의 일부분에서 매우 매끄러운 반면, 해결책이 급증하거나 거칠거나 도메인의 다른 부분에서 진동하는 경우, 우리는 거기에 미세한 망사를 가져야 하기 때문에 적응형 망사 교양이 그 사실을 언급한다. 우리는 메쉬를 정교하게 다듬어서 도메인의 일부에서는 정교하게 만들고 싶었지만 다른 부분에서는 정교하게 만들고 싶어했다. 그래서 우리는 물론 많은 다른 것들과 마찬가지로 1d 2d 3d로 이것을 하고 싶다. 만약 당신이 이것을 스스로 실행해야만 한다면 그것은 매우 어려울 것이다. 그러나 zo2는 가장 일반적인 적응 방법을 두어 가지 클래스와 함께 한다.이미 내장된 메쉬를 정제하여 이 작업을 수행하는 것이 꽤 쉬우며, 6단계 튜토리얼 프로그램에서 이 작업을 수행하는 방법을 보여드리면 적응형 메쉬 정교화를 사용하는 데 약 20~30줄의 실제 코드가 소요된다는 것을 알 수 있으며, 여기에는 물론 사람들이 유한 요소를 위해 사용하는 다양한 유한 요소들이 있다.

많은 지원과 4D 종류의 다중 구성요소 문제들이 있고 우리는 자습서 프로그램들 중 하나에서 이러한 종류의 지원을 어떻게 사용하는지 되돌아갈 것이다.

4D의 다성분 문제에 대한 많은 지원과 deal이 있고, 우리는 이러한 종류의 지원을 튜토리얼 프로그램 중 하나에서 어떻게 사용할 것인지 다시 생각해것이다. 그리고 일단 당신이 메쉬를 가지고 있고 유한요소를 가지고 있다면, 다음 단계는 선형 대수를 해야 하기 때문에 예를 들어 선형 시스템을 해결해야 하고, 이 가지는 희박한 선형 대수학에서자체의 공급 간략하거나 밀도가 높은 것을 가지고 있다. 예를 들어 행렬과 벡터를 저장할 수 있는 클래스와 공액 구배 방법 CG나 GMS 같은 선형 해결자를 구현하는 클래스를 가지고 있지만, 병렬 계산의 경우, 특히 병렬 계산은 이러한 종류의 클래스를 직접 구현하는 매우 비싼 제안이며 병렬 계산을 위해 Petzi라고 불리는 라이브러리에 구축되었고 Trilly는 인간이 우리가 스스로 수 있는 것보다 훨씬 낫다는 것을 알고 있다. 시카고의 오리건 주에 있는 미국 국립 연구소 피티에 의해 개발된 도서관이며, 주로 알고 있는 도서관과 앨버커키 뉴멕시코의 산디아는 수십만 프로세서로 확장된 병렬 계산을 위해 방대한 양의 선형 대수학 클래스를 구현하여 오늘날 우리가 가지고 있는 가장 기계에 대해서도 현재 충격이라고 불리는 패키지에 인터페이스를 가지고 있다.직접 해결사 일반적으로 단일 프로세서에서 부분적으로 가까운 시스템에 대한 선형 시스템의 번째 해결자입니다. 만약 여러분이 그것을 해결하고 싶다면, 그것은 직접적인 해결자이기 때문에 일반적으로 많은 메모리가 필요하지만 항상 작동하기 때문에, 나는 여러분에게 이것을 하는 방법을 보여줄 것입니다. 그리고 나서 가지 과정을 하는 것은 대량 생성을 하지 않도록 사전과 사후 처리를 위한 수업을 가지고 있지만, 그것은 많은 표준 형식으로 메쉬를 읽을있고, 특히 그럴 수 있다. 우리가 직접 시각화를 하는 것이 아니라 고품질의 시각화 소프트웨어가 사용할 수 있는 형식을 사용할 수 있습니다. 그리고 다시 한번 여러분에게 이것을 어떻게 하는지 보여드리고자 합니다. 노트북에서 병렬화를 지원하는 방법을 보여드리고자 합니다.여기 노트북이 수천개 또는 수만개의 프로세서를 가진 클러스터를 가지고 있다면 위협과 작업을 사용할 수 있다고 합시다.MPI를 통해 우리는 이것을 할 수 있습니다 수만개의 프로세서를 계산해서 이것을 상당히 문제 크기로 확장할 수 있도록 지금 여러분께 스틸과 함께 했던 일들에 대한 간단한 개요를 말씀드리겠습니다.

 

우리가 deal ll를 시작했을 때 - 1998년 또는 1997년에 우리는 정말로 우리가 우리의 수학 연구에서 하고 싶었던 문제를 해결할 수 있는 도구를 원했지만, 결국 우리는 사람들이 실질적으로 모든 것을 위해 그것을 사용하는 훨씬 더 광범위한 도구를 고안했다는 것이 밝혀졌다.생각나는 PDE 그래서 나는 2008년과 2010년 사이에 사람들이 사용하는 것에 대한 이 작은 조사를 했다. 그래서 예를 들어 심장 근육 섬유 시뮬레이션에 바이오메디컬 영상촬영을 하고 유체역학 유체역학 유체역학 시뮬레이션 연료전지 시뮬레이션 공기역학 사람들은 이것을 양자역학에서 물리 연구에 사용한다.물론 우트론 운송은 나 자신의 배경과 연구소의 배경인 수치적 방법에 사용하지만, 고형 정비사가 파괴 역학 모델을 손상시키고 생물역학 경로의 성장을 당신이 무엇을 하든 간에 합금 빙하 역학의 계획수립을 증가시킨다고 말하자. 내가 발견한 중요한 흥미로운 연구 중 하나는 누군가가 어떻게 로마의 동상이 공기 오염으로 인해 부패하는지를 시뮬레이션했다는 것이다. 그래서 당신은 사람들이 이 소프트웨어로 해결하는 광범위한 문제들을 볼 수 있고, 나는 당신이 다음 몇 클래스에서 볼 수 있길 바란다. 이것이 어떻게 당신에게 모든 것을 해결할 수 있는 유연함을 주기 위해 강철은 어떻게 작용하는가 하는 것이다.

우리가 예전에 만들었던 멋진 사진의 한 가지 예와 당신이 할 수 있는 여러 가지 종류의 것들을 보여 주기 위해 다양한 분야의 eesproblems에서 올 수 있는 eesproblems와 Timo의 postdoc은 sorwwwe라고 불리는 코드를 썼고, 당신은 그 코드를 웹사이트의 시련에서 찾을 수 있으며, 당신은 불확실한 문제를 해결하는 Dorich의 시련에서 그것을 찾을 수 있다.지구의 맨틀에 있는 티온은 지구의 중심부에 있는 지역인데, 이 아래 지구의 표면은 지구의 바깥 가장자리에 있고 사람들이 시뮬레이션 하고 싶은 것은 물질의 대류다. 왜냐하면 지금 일어나고 있는 일은 지구의 스코어가 매우 뜨겁기 때문에 그 바닥은 지구의 맨틀에 있기 때문이다.'위쪽보다 훨씬 더 뜨겁다' 그리고 그 사이에 정확히 이 물질의 행동양식을 얻게 된다. 즉, 난로 위에서 위로 솟아오르는 뜨거운 물질과 위에서 아래로 떨어지는 차가운 물질을 가졌다고 합시다. 그래서 사람들은 예를 들어 탠더드 스탠드를 원하기 때문에 이것을 모방하고 싶어 한다. 대륙 판을 움직이게 하는 것은 무엇이냐? 왜 우리가 지진과 이런 종류의 것들을 가지고 있는가? 그래서 우리가 이 코드 측면의 동기가 되고자 하는 것은 우리가 2D와 3D로 문제를 해결하기를 원하기 때문이다. 그리고 여기 솟아오른 이 플럼들을 보면 그것이 바로 당신이 가지고 있는 특징들이다. 지구 맨틀의 전체 크기에 비해 상당히 작은 크기인데, 만약 여러분이 시간을 너무 많이 투자하지 않고 정확하게 해결하려면, 여러분은 필요한 곳에 정제된 적응적인 조치를 취해야 하고, 거친 메쉬가 잘 진행되고 있기 때문에 우리는 이런 종류의 아코드가 필요하다는 것을 발견했다. 우리가 더 높은 순서의 최종 요소를 사용하면 효율적이다. 왜냐하면 우리는 아모레 정확한 솔루션을 얻을 수 있기 때문이다. 그리고 2D와 3D로 이 문제를 해결하기 위해서는 수백 개의 프로세서에서 이것을 실행해야 한다. 그래서 그것은 여러분이 그것을 만들 수 있는 코드의 예들 중 하나일 뿐이고, 그래서 여러분은 이 곳에서 매우 복잡한 물리학을 볼 수 있다.당신이 해결하고 설명하고 처리할 필요가 있는 것은 이러한 종류의 기본적인 모든 구성 요소를 제공하는 툴이다. 그래서 실제 측면 코드는 그리 크지 않다. 그것은 물리학의 3천줄이나 3천줄의 코드를 다룰 수 있는 측면의 일부지만 우리는 이것을 작은 것으로 만들 수 있다.60만 줄의 코드를 가진 소프트웨어에 구축되었으니 간단히 말해 두 번째 Deal II는 개발되었다고 합시다.

간단히 Deal ll 어떻게 개발되는지에 대해 이야기해보자. 미국과 독일의 남아공에는 4~6개의 핵심 개발자들이 있고, 다음에 들어오는 수많은 사람들이 있다.아마도 전세계에서 10명의 순서에 따라 코드를 기증할 것이다. 기본적으로 사람들은 이런 종류의 프로젝트를 위해 왔다 갔다 한다. 그것은 지난 10 동안 우리는 100 이상의 사람들로부터 기부를 받았다. 그리고 공동 프로젝트에 모든 사람들과 함께 코드는 대략 3,000 리에서 자란다.매달 nes 그리고 이것은 지난 10 이상 동안 꾸준히 지속되어온 매달 3,000줄의 코드 입니다. zo2 전형적인 오픈소스 프로젝트 입니다. 그래서 프로젝트를 진행한다고 말할 있는 소수의 사람들이 있지만, 지금 당장 무엇을 하든지 기본적으로 기능성을 필요로 하는 다른 많은 사람들이 있습니다,만약 당신이 일반적인 것을 구현해야 한다면 지금 당장 해결하고자 하는 것이 있다면 당신이 다른 사람들이 그것을 종종 그들에게 Deal II하는데 기여하고 그리고 그것은 소프트웨어 라이브러리의 일부가 된다고 생각하는 이것은 본질적으로 오픈소스 소프트웨어가 어떻게 작동하는지 그리고 그들은 그것을 긁어내고 그리고 이것의 일부로 생산되는 코드는 프로젝트의 일부가 것이다 내가 말하듯이 그것은 오타적인 것이다.al 오픈 소스 프로젝트 모든 오픈 소스 프로젝트가 본질적으로 자원 봉사 활동에 의존하는 것과 내가 정말로 당신에게 권장하고 싶은 하나는 만약 당신이 그것을 사용한다면 - 그리고 당신이 그것을 실행한다면 당신이 다른 누군가에게 어떤 영향을 미칠지 당신이 우리에게 연락하십시오 당신이 다른 누군가에게 결코 코드를 실행하지 않지만 아무도 우리를 없다.그래서 우리가 정말 열심히 노력하는 것은 여러분이 알고 있는 친근한 사람들의 공동체가 되는 것인데, 공동체는 다른 사람들이 테이블로 가져온 기여에 기인한다. 그래서 우리는 정말로 이곳과 유럽 그리고 남아공에서 주요 개발자들뿐만 아니라 공동체가 되기 위해 노력한다.나는 프로젝트에 함께 일하기 때문에 만약 당신이 기여하는 동안 가치가 있다고 생각되는 것이 있다면 우리에게 직접 이메일을 보낼 있는 메일 목록이 있다는 것을 고려해 보십시오. 그리고 우리는 당신에게 전문적인 킨더라고 말하는 것에 대한 아이디어를 주기 위해 당신과 함께 일하게 되어 매우 기쁘다.소프트웨어 개발은 우리가 프로젝트를 운영하는 사람들에게 전문적으로 관리되도록 한다

예를 들어, 우리는 모든 사람들이 공개적으로 접근할 수 있는 소스 코드 저장소를 가지고 있다. 우리는 사용자 질문과 하루에 많은 이메일이 있는 개발자 토론을 위해 두 개의 메일링 리스트를 가지고 있다.그리고 나서 우리는 이것을 상업적 프로젝트가 아닌 전문적 소프트웨어 프로젝트로서 정말로 이것을 만들려고 노력한다. 그래서 예를 들어 우리는 우리가 하는 모든 것이 우연히 이전에 작동했던 것을 깨뜨리지 않는다는 점에서 현재의 기능을 유지하도록 하기 위해 매번의 변화 후에 실행하는 많은 테스트를 한다.지금은 모든 변경 후에 실행될 2,700개의 테스트가 진행되지만, 그 다음에는 비교적 전문적인 설치 지침과 툴이 있습니다, 예를 들어, Mac에서 구축할 수 있고, 이 프로젝트에 대한 모든 종류의 정보를 추적할 수 있는 다양한 웹사이트와 재치와 윈도우를 만들 수 있고, 이것이 우리가 개발하는데 도움을 주었다. 이 과정에서 내가 말하고자 하는 이 소프트웨어는 Linux에서 2가지 작업을 어떻게 사용하는가에 관한 것이다. 그래서 여기 있는 내 노트북은 Linux를 운영한다. 만약 당신이 프로그램 공간을 설치하고 실행하기를 원한다면, Linux에서 시각화 및 개발 도구를 어떻게 사용하는지에 대해 다룰 수 있다면, 당신이 해야 할 모든 단계를 보여줄 것이다. Linux에서는 그렇게 많은 차이점이 없다.e 예를 들어 Macintosh에서 이 작업을 수행하려면 기본적으로 Macintosh가 Unix와 같은 운영 체제라는 후드 아래에 있기 때문에 Unix에서 명령줄을 사용하는 방법에 대해 조금 알고 있다면 Macintosh에서도 동일한 방식으로 작동하는 창은 하나이고 약간 다른 창은 다음과 같은 환경을 가지고 있다. 병풍이라 불리는 병풍은 윈도우에 유닉스 같은 환경을 제공하고 당신은 이 문제에 대해서도 Deal II를 할 수 있다. 또한 우리는 윈도우에 대한 기본적인 지원도 하고 있다. 또한 우리는 조금 더 복잡하다. 우리는 우리가 가까운 미래에 그곳에 도착하기를 희망한다.

그래서 만약 당신이 이것을 위해 웹사이트에 Deal II에 대한 더 많은 정보를 원한다면 두 개의 조직과 하나의 조직이라고 한다. 이 과정을 통해 이 웹사이트의 측면을 여러 번 보여드릴 겁니다. 이 웹사이트를 탐색하는 방법을 알려드리죠. Deal II-도둑질을 설명하는 첫 페이지가 있는 이 특정 페이지에 나온다면 여기 왼쪽에 단열재를 다운로드한 후readme에 다양한 버전의 DL에 대한 설명서가 있기 때문에, 지금 우리는 7.2까지입니다만, 학기말까지 8시까지는 여기 현재 개발 버전에 대한 설명서가 있고, 이 프로제크에서 무슨 일이 일어나고 있는지 자주 묻는 페이지가 있습니다,메일링 리스트나 위키 더 버그 추적기 등이 있다. 

그래서 이번 학기 동안 우리는 이 개별적인 링크들을 많이 살펴볼 것이다. 그리고 이 부분을 결론짓기 위해 2의 임무는 유한요소 계산에 필요한 모든 것을 제공하는 것이고 물론 우리는 결코 그렇게 하지 않을 것이다.e 많은 유한요소 코드가 사용하는 대부분의 것들을 제공 할 수 있고, 당신은 이것과 관련된 특정한 문제에 특정되지 않는 당신의 코드에 필요한 거의 모든 것들이 거기에 있는 유한요소 설명과 관련이 있다는 것을 발견하게 될 것이다 - 그리고 나서 개발 방법론은 오픈소스 프로젝트라서 당신을 초대하는 커뮤니티가 있다는 것이다.

만약 당신이 참여하고 싶다면, 또한 당신에게 자원을 제공하는 커뮤니티를 원한다면, 만약 당신이 커뮤니티가 당신을 돕는데 있어서 매우 진척되고 있는 이런 종류의 질문들을 가지고 있다면, 나는 당신에게 예를 들어 소프트웨어가 전문적으로 개발되어 있다는 것을 보여 줬으면 한다. 그래서 그것은 확실히 우리가 알고 있는 것이다.w는 비교적 벌레가 없다. 이것으로 2강좌를 마치면 우리는 미래에 돌아올 것이다.