수치해석/Deal.II

Lecture 1: Course overview; why consider existing software libraries

KAU 2020. 8. 17. 18:16

https://www.youtube.com/watch?v=WAKD8hBVIE4&list=PLT_nFX1kYtB6EGcbHtge1ph3-8UDN-Zyk

 환영합니다 이것은 수학입니다 676 제 이름은 Wolfgang bangers입니다. 

 제가 이야기하고 싶은 것은  유한 요소 방법에 관한 것입니다 

 

 과학 컴퓨팅 과학 컴퓨팅은 매우 광범위한 분야입니다 

 그것은 컴퓨터 프로그램의 관점에서 세계를 모델링하고 표현하는 것을 포함합니다. 

 우리가 말할 수 없는 것들을 예측하고 직관적으로 예측하고 

과학 컴퓨팅에서 가장 큰 방법 중 하나는 요소 방법을 찾는 것입니다. 

 

 그래서 이번 학기에 제가 하고 싶은 것은 

 과학 컴퓨팅 유한 요소를 소개하고 싶습니다. 

 방법을 소개하는 데 사용하는 도구를 소개하고 싶습니다. 

 

 컴퓨터의 유한 요소 방법을 소개합니다. 

 유한 요소를 이산화하는 일반적인 접근 방식을 가정해 봅시다. 

 이산화 편미분 방정식은 최종 요소 방법이었습니다. 

 이것에서 나오는 선형 시스템으로 무엇을 할 것인가 등등 등등 

 상당히 광범위한 클래스가 될 것입니다.

 

 많은 프로그래밍을 포함하는 이론 분야에 대한 더 큰 시야를 제공하고 

 특히 제가하고 싶은 일 중 하나는 외부에 존재하는 기존 소프트웨어 패키지 중 일부를 소개하는 것입니다. 

 

 그래서 과학 컴퓨팅에서  당신이 문제를 해결해야 하는 상황이 생길것 입니다. 

 

예를 들어 단위 제곱에 방정식을 적용하지만  3D에서 복잡하지 않은 형상을 해결하거나 

 

 다중 그리드 솔버가 필요하거나 더 높은 water rethod가 필요합니다.

 이 모든것을 구현하는 것이 다소 어려울 것입니다. 

 

이 수업의 목표는  당신이 라이브러리를 이용할 수 있게 되는것이고 

특히 중요한것은 유한 요소 메서드를 구현하는 라이브러리입니다.

 

 전 세계적으로 거래 조정이라 고하는 구현 또는 개발을 수행하므로 

 이 수업에 대한 개요와 이론적 근거로 시작하겠습니다. 

 

 왜 우리가 당신의 도서관으로 생각하고 싶을까요? 

 내가 말했듯이 수업은 미분 방정식을 푸는 방법을 배우는 것입니다. 

 특히 유한 요소 방법을 예로 사용하는 컴퓨터 

 다른 방법을 찾거나 

 볼륨 방법을 찾기 위해 이것은 부분에 대한 두 가지 다른 큰 방법입니다 

 

 유한 요소 방법과 본질적으로 동일한 미분 방정식 

 대부분의 미세한 차이는 일반적으로 사실이라고 생각합니다. 

 오늘날 유한 체적 방법은 분산 또는 섭동으로 쓸 수 있습니다. 

 유한 요소 방법이 있으므로이 유한 요소 방법을 

 

 태도를 포함하는 광범위한 클래스의 개요 

 

 편미분의 실용적인 관점 편미분 

 

 컴퓨터의 방정식은 매우 실용적인 분야입니다. 

 

 방정식을 작성하고 매우 신중하게 분석하는 데 관심이 있습니다. 

 

 종이 조각이지만 사람들과 상호 작용하는 것과 많은 관련이 있습니다. 

 

 응용 분야를 통해 원자력 공학 또는 

 

 항공 우주 또는 생물 의학 영상 또는 지구과학에서 

 

 어떤 식 으로든 풀어야 하는 방정식이 있다는 것입니다. 

 

 계산 과학 또는 과학 컴퓨팅의 역할은 종종 

 

 그들이 푸는 것이 즐거운 지 아닌지에 관계없이 방정식을 취하십시오. 

 

 쉽거나 어렵다는 것은 그다지 중요하지 않습니다. 

 

 응용 프로그램이 있기 때문에 문제를 해결하십시오. 

 

 이것은 매우 광범위한 분야에 대한 지식이 필요하므로 

 

 편미분 방정식에 대해 알고 행동하는 방법 

 

 viii 이산화에 대해 많이 알아야 하므로 

 

 무한 차원 편미분 방정식을 유한으로 

 

 선형 솔버에 대해 알아야 할 차원 문제와 

 

 여기에 관련된 전제 조건이 있지만 

 

 프로그래밍에 대한 배경 지식 및 종종 매우 큰 소프트웨어로 프로그래밍 

 

 조각은 종종 신맛이 나고 수만, 수십만 

 

 따라서이를 위해 적절한 도구를 알아야 합니다. 

 

 더 이상이 정도 규모의 소프트웨어를 다룰 수 있습니다. 

 

 예를 들어 간단한 편집기와 이런 종류의 작업을위한 아주 좋은 도구가 있습니다. 

 

 그래서이 과정 수학 676 은이 모든 것을 어느 정도 다룰 것입니다. 

 

 미분의 성격에 대해 이야기하는 강의가 없습니다. 

 

 다른 종류의 이산화에 대해 이야기하고 우리는 

 

 솔버와 프리 컨디셔너에 대해 프로그래밍하는 방법에 대해 

 

 버그를 피하기 위해 디버깅하는 방법에 대한 몇 가지 강의가 있을 것입니다. 

 

 적절한 도구이므로 통합 개발이라고 부르는 것을 소개하겠습니다. 

 

 환경 ID는 가치가 있습니다. 

 

 도구를 소개 할 시각화 도구를 소개합니다. 

 

 예제 코드를 문서화하여 이것이 과학 컴퓨팅 분야입니다. 

 

 광범위하게 해석되고 이것이 제가 소개하는이 수업의 목표입니다. 

 이 모든 측면을 광범위하게 말하면이 수업의 목표는 

 

 특히 이것을 사용하여 과학 컴퓨팅에서 널리 사용되는 방법에 대해 

 

 DL이라는 소프트웨어-요소 찾기를 지원하는 소프트웨어 라이브러리입니다. 

 

 계산을 통해 지리를 사용하는 방법을 자세히 보여 드리겠습니다. 

 

 어떻게 프로그램을 작성하는지 코드를 작성하는 방법을 소개하겠습니다. 

 

 DL 기반-어떻게 내부적으로 이런 종류의 

 

 표시되지만 최신 소프트웨어 개발도 보여 드리겠습니다. 

 

 도구를 사용하고 개발 실습에서 이에 대해 조금 가르쳐 드릴 것입니다. 

 

 나는 이것들이 단지 관련이없는 매우 적용 가능한 주제라고 생각합니다. 

 

 학자 나 저처럼 교수로 일하지만 이것들은 

 

 국가의 산업 분야에서 실제 응용 분야에도 매우 중요합니다. 

 

 다른 많은 분야의 실험실도이 수업의 목표가 아닙니다. 

 

 유한 요소 방법 자체를 소개하지 않을 것입니다. 특히 저는 

 

 그것에 대한 수학적 근거에 대해 이야기하지 않을 것입니다. 

 

 전에 수업에서 들었거나 습득했다고 기대하십시오. 

 

 비슷하게 문학을 읽는 것 외에는 보여주지 않겠습니다. 

 

 하나의 강의에서 제가 보여주지 않을 템플릿에 대해 이야기할 것입니다. 

 

 C ++로 프로그래밍하는 방법은 이미 C ++로 프로그래밍하는 방법을 알고 있다고 예상합니다

 

 그렇지 않으면 이것에 대한 짧은 코스를 듣거나 

 

 이러한 종류의 개념으로 어려움을 겪고 있다면 C ++에 대한 기존 책 중 하나를 선택하십시오. 

 

 다음은 제가 일반적으로 추천하는 여러 책입니다. 

 

 Zhu Brenner와 Ridgway Scott의 책에 대한 수학적 관점에서 

 

 유한 요소 방법의 수학적 이론은 일종의 표준 책입니다 

 

 수학자에게는 확실히 엔지니어를위한 것이 아니라 

 

 유한 요소 이론을 분석에 제시합니다. DJ의 책이 있습니다. 

 

 원래 독일어로 연주되었지만 영어로 번역되어 

 

 당신에게 제공하는 유한 한 요소가 약간 더 적용되었다고 합시다. 

 

 유한 요소 방법의 이것에 대한 개요 

 

 그리고 이것에 대한 엔지니어링 소개가 조금 더 있다고 생각합니다. 

 

 C ++에 관한 한 수학자가 아니라면 접근 가능하다고 말하십시오. 

 

 표준 작업은 솔직히 C ++ 프로그래밍이라고합니다. 

 

 우리가 스트라스부르에있는 언어는 우연히 

 

 우리는 텍사스 A & M에있는 같은 대학의 컴퓨터 과학과에 있습니다. 

 

 바로 저기 있고 캠퍼스에있는 건물 중 하나에서 그는 

 

 C ++의 발명가 또는 C ++에서 처음 고안 한 사람을 가정해 봅시다. 

 

 1970 년대 말과 1980 년대 초, 그리고 당연히 30 년 동안 

 

 그 이후로 많은 사람들이 기여했지만 그는 여전히 

 

 책이 C ++에 대한 표준 참조이고 잘 쓰여진 책은 

 

 아직 C ++에 익숙하지 않다면 읽을만한 가치가있는 책 

 

 이 수업의 큰 주제 중 하나 인 

 

 기존 접근 방식, 특히 기존 소프트웨어를 사용하고 싶습니다. 

 

 응용 과학에서 나오는 문제를 해결하기 위해 

 

 물론 편미분 방정식으로 시작하면 PDE는 모두 

 

 일종의 응용 프로그램이 있습니다. 물론 고전적인 응용 프로그램과 

 

 예를 들어 구조적 정적 및 역학을 조사하려는 경우 

 

 트럭이 그 위로 운전할 때 다리의 변형 또는 도로가 

 

 트럭이 그 위에 있으면 자동차가 자동차로 충돌할 때 자동차가 어떻게 변형되는지 변형합니다. 

 

 수화물이 공기의 부하를받을 때 어떻게 변형되는지 

 

 통과하면 모두 PDE로 설명됩니다. 

 

 유사하게 유체 역학에서 예를 들어 질문을 할 수 있습니다. 

 

 선박 주변의 물 흐름 자동차 또는 자동차 내부의 공기 흐름은 

 

 에어 포일 유체 역학은 예를 들어 파이프 네트워크에서 역할을 합니다. 

 

 송유관에서 PDE는 자동차 주변의 공기 역학 흐름에도 사용됩니다. 

 

 비행기 로켓 등등 등등 그래서 이제 나는 당신에게 세 가지 

 

 물질의 기본 상태, 즉 고체 유체 

 

 물론 PDS는 플라즈마에서 물질의 네 번째 상태에서 역할을 합니다. 

 

 예를 들어 천체 물리학이나 융합을 조사하고 싶을 때 역학 

 

 에너지는 일반적으로 PDE에 의해 설명됩니다. 

 

 편미분 방정식의 고전적 적용이지만 PDE가 나타납니다. 

 

 예를 들어 즉시 생각하지 않는 다른 많은 영역에서 

 

 생물 학자들은 PDE를 사용하여 박테리아가 식품 공급원으로 이동하는 방법을 모델링합니다. 

 

 예를 들어 이미 박테리아가 너무 많은 지역에서 멀리 떨어져 있거나 

 

 사람들은 또한 PD를 사용하여 예를 들어 1990 년대에 금융 상품을 모델링합니다. 

 

 노벨 경제학상은 흑인과 숄즈라는 두 사람에게 

 

 요청해야하는 비용이나 가격을 설명할 수 있음을 알게 되었습니다. 

 

 오늘날 우리는 블랙 스코어 방정식이라고 부르는 방정식을 사용하는 스톡 옵션 

 

 이것은 편미분 방정식이고 PDE를 다음에 적용 할 수 있습니다. 

 

 생각할 수있는 거의 모든 영역에 역학을 적용하여 PDE가 

 

 정말 다양한 분야와 컴퓨터 과학의 역할은 

 

 이 방정식을 가져와서 

 

 Applied Sciences는 이것이 여러분이 해결하고 싶은 것이므로 목표는 

 

 이 클래스의 개요는 여러분에게 소개하는 것입니다. 

 

 

 PDS 및 해결 방법 

 

이 문제를 해결하는 소프트웨어에는 기본적으로 두 가지 접근 방식이 있습니다. 

 

 이 문제를 이미 해결 한 소프트웨어를 사용하거나 직접 작성할 수 있습니다. 

 

 특히 여기 상단에 나열된 많은 응용 프로그램이 있습니다. 

 문제를 해결하는 상용화 된 표준 소프트웨어 

 이런 종류의 문제 때문에 소프트웨어가 

 

 구조의 탄성 변형을 확실히 해결합니다. 

 확실히 공기와 물의 흐름을위한 소프트웨어 등등 

 당신이 할 일이 많지 않은 경우는 물론 사용해야 합니다 

 

 모든 응용 프로그램을 해결하는 전문적으로 작성된 소프트웨어 

 소프트웨어를 직접 작성해야하는 두 가지 경우가 있습니다. 

 당신은 저와 같은 계산 방법을 개발하는 사람입니다. 

 

 예를 들어 정의상 상용 소프트웨어가 없습니다. 

 이미 내 목표는보다 나은 수치 방법을 개발하는 것입니다. 

 과거에 사용 된사용된 것 또는 과거에 사용된 것 등 

 

 결과적으로 상용 소프트웨어를 사용할 수 없습니다. 

 제가 관심있는 다른 분야에서 현대적인 방법을 사용하지 마십시오. 

 

 자신의 소프트웨어를 작성해야 하는 것은 비표준 문제가 있을 때입니다. 

 

 생물학자가 당신에게 와서 박테리아가 내 

 

 페트리 접시는 찾을 수없는 일종의 응용 프로그램이 될 것입니다. 

 

 상용 소프트웨어는 너무 작은 틈새 시장에 아무도 관심이 없습니다 

 

 더 많은 것을 개발하는 데 백만 달러가들 수 있는 프로그램을 작성하기에 충분합니다. 

 

 세상에이 특별한 것을 걱정하는 사람이 10 명 밖에 없을 때 

 

 응용 프로그램 또는 누가 이것을 컴퓨터에서 시뮬레이션하는 데 관심이 있는지 

 

 따라서 이러한 종류의 경우에는 작성해야하는 비표준 문제가 있습니다. 

 

 이 두 가지 경우 중 하나가 발생하면 새로운 방법이나 

 

 비표준 문제는 세 가지 선택이 있습니다. 

 

 처음부터 무언가를 만들거나 기존 구성 요소로 무언가를 구축합니다. 

 

 예를 들어 빌딩 블록을 제공하는 라이브러리를 가져와서 

 

 세 번째는 응용 프로그램으로 시작하는 것입니다. 

 

 비슷한 것을 해결하고 당신은 내가 만들고 싶은 요점을 수정했습니다. 

 

 이 강의의 나머지 부분은 기본적으로 옵션 1을 선택해서는 안된다는 것입니다. 

 

 매우 어렵거나 시간이 많이 걸릴 수 있기 때문에 

 

 또는 비싸고 적어도 수학에서 저 같은 사람들에게는 우리가 자주 

 

 여전히 옵션 번호를 사용하는 경향이 있습니다. 

 

 하나는 우리가 원하는 모든 가능한 변수를 제어하기를 원하기 때문입니다. 

 

 무슨 일이 일어나고 있는지 정말 이해하지만 내가 원한다고 생각하는 주장은 

 

 이 수업의 일부가되어야한다는 것입니다. 

 

 본질적으로 우리가 대학원생으로 수년간을 보낸다는 것을 의미합니다. 

 

 또는 휠을 너무 많이 재발 명하는 연구원으로서 

 

 오히려 우리가해야 할 일은 기존 구성 요소를 기반으로 구축하거나 

 이미 비슷한 일을하는 것이 있다면 우리는 

 

 너무 추상적이기 때문에 조정해 보겠습니다. 

 

 무언가를 구축하는 것이 가치가 있다고 생각하는 이유의 예 

 

 세 가지 표준 도구를 살펴보면 

 

 PDE의 솔루션은 유한 요소가 볼륨을 찾거나 

 

 차이 방법은 기본적으로 모두 여러 단계를 거쳐야 하므로 

 

 먼저이 문제를 해결하려는 도메인을 교체해야 합니다. 

 

 메쉬에 의한 PDE에 메쉬 또는 

 

 삼각 측량 측정은 상당히 복잡 할 수 있습니다. 

 

 예를 들어 종종 지하 저수지 측정의 예입니다. 

 

 이러한 측정은 수만 개의 세포를 가질 수 있습니다. 

 

 수백만 또는 그 이상일 수도 있고 매우 복잡한 형상을 가질 수 있습니다. 

 

 메시를 표현하고 이러한 메시를 생성하는 것은 확실히 간단한 작업이 아닙니다. 

 사실적인 응용 프로그램을 통해 부분 차분을 볼 수 있습니다. 

 

 방정식은 메시의 디스코 시간 편미분 방정식이거나 

 

 균형 관계를 정의해야한다는 것입니다. 

 

 예를 들어 균형 관계와 같은 흐름 문제를 생각하십시오. 

 

 세포에서 흘러 나오는 모든 것이 다른 쪽에서 흘러야 하므로 대부분의 PDE는 

 

 우리가 쓰는 것은 본질적으로 이러한 균형 잡힌 관계에서 비롯됩니다. 

 

 그런 다음 세포 간의 균형 잡힌 관계를 가질 때 

 

 일반적으로 매우 크거나 비선형 시스템입니다. 

 

 숫자 또는 문제 해결과 관련된 모든 코드를 저장하고 해결하세요. 

 

 수치 적으로 PDE를 풀려면 다음 단계를 수행해야합니다. 

 

 그리고이 작업을 수행하는 코드를 작성해야하는 경우 

 

 

 

 이 작업을 수행하는 데 하루에 너무 많은 시간이 소요되며 실제로 

 

 너무 많은 전문 지식 만 알고 있는 애플리케이션 과학자 일 수 있습니다. 

 

 모든 것이 지하 흐름에 대한 모든 것을 알고 있지만 당신은 

 

 대수적 멀티 그리드 또는 

 

 원하는 경우 고차 모양 함수 등을 정의합니다. 

 

 현대의 수치 적 방법을 사용하는 것은 매우 가파른 학습 곡선이 될 것입니다. 

 

 이 모든 것을 보여주는 코드를 작성했습니다. 

 오늘날의 복잡성 때문에 제가 주장하고 싶은 것은 

 

 기존 라이브러리를 살펴볼 가치가있는 제한 사항 

 

 특히 30 년 동안 사용 된 방법을 사용하고 싶지 않기 때문에 

 

 예를 들어, 우리는 최첨단 기술을 사용하고 싶습니다. 

 

 일반적으로 내가 수치 PD에서 최첨단이라고 생각하는 것 

 예를 들어 원하는 적응 측정을 사용하려는 어제 

 

 사실적이고 복잡한 기하학 고차 요소를 사용하는 다중 그리드 솔버 

 

 이 모든 것은 현대의 수천 개의 프로세서로 확장되어야 합니다. 

 

 하드웨어와 고품질에 적합한 출력을 얻고 자합니다. 

 

 물론이 목록을 본다면 어떻게 

 

 확실히 하나의 코드로 만들 수 있습니까? 

 

 이를 구현하는 데 수년이 걸리며 구현하려는 경우 

 이것은 처음부터 예 그것은 몇 년이 걸릴 것입니다 

 

 나에게 가능한 한 질문이 아닌지에 대한 질문 

 

 타당성은 우리가 소프트웨어를 개발하는 방법에 대한 질문입니다. 

 

 예를 들어 모든 학생이 자신의 유한 요소를 개발해야 하는가하는 질문 

 

 해결사 우리는 다른 사람들을 재사용하고 

 

 과거에 우리는 처음부터 구현을 고집하거나 

 

 우리는 기존 라이브러리를 구축하고 이미 내 

 

 이에 대한 대답은 다른 사람들이 한 일을 재사용해야한다고 생각하고 

 

 사실 지난 10 년 또는 15 년 동안 상당한 변화가있었습니다. 

 

 과거에 우리는 확실히 발전하는 커뮤니티에서 

 우리는 모델 문제를 살펴보고 

 

 처음부터 구현이 변경되었습니다. 오늘 우리는 

 

 다른 사람들이 한 일을 재사용해야한다는 것입니다. 

 

 이산화 만 다루고 싶었지만 

 

 다른 사람들이 가지고있는 선형 시스템에 대한 최신 수치 솔버를 여전히 재사용합니다. 

 

 그럼에도 불구하고 상당한 저항이 있습니다. 

 라이브러리 재사용에 대한 아이디어와 다음 몇 개에서 제가 하고 싶은 것은 

 

 슬라이드는 사람들이 만든 몇 가지 주장을 

 

 다른 사람들이 한 일을 재사용하는 것에 반대하는 과거에 대해 이야기하고 싶습니다. 

 

 이것에 대한 이유 그래서 음 내가 너무 말하기 전에 

 

 기존 소프트웨어에 대한 소개를 할 수있는 많은 라이브러리가 있습니다. 

 

 이 클래스에서 반복적으로 가져 오므로 기본 선형 대수를 위해 라이브러리는 

 

 기본 선형 대수 하위 시스템 또는 서브 루틴이고 

 

 lapack for 컴퓨팅 고유 벡터 및 

 

 밀도가 높은 행렬의 고유 값이있는 경우 다음 상위 수준이 

 

 벡터를 나타내는 Petzi 및 rellenos라는 두 개의 라이브러리 

 

 이 두 가지의 희소 행렬 솔버는 병렬을 지원합니다. 

 

 계산 한 다음이를 기반으로 라이브러리를 처리하는 것과 같은 라이브러리를 구축합니다. 

 

 이 수업에서 모든 메싱을 수행하는 것에 대해 이야기할 것입니다. 

 

 그리고 이것의 유한 요소 부분은 괜찮습니다. 

 

 사람들이 기존 라이브러리를 사용하는 것에 반대하는 것입니다. 

 

 다른 사람의 소프트웨어를 사용하려면 당연히 

 

 어떻게 작동하는지 거기에서 사용되는 규칙을 배워야합니다. 

 

 문서를 읽고 사람들은 내가 그냥 

 

 정말 라플라스 만 풀고 싶기 때문에이 모든 것을 직접 작성했습니다. 

 

 단위 제곱에 대한 방정식이고 첫 번째 부분은 확실히 사실이라고 생각합니다. 

 

 우리 뒤에있는 철학을 배우기 위해 필요한 소프트웨어를 배우십시오. 

 

 하지만 두 번째 부분은 코드를 작성하는 것이 더 빠르다는 사실이 아닙니다. 

 

 오늘 소개 된이 라이브러리에서 

 

 이전 슬라이드에서 여러분은 거기에 많은 기능이 있다는 것입니다. 

 

 당신이 사용할 수 있는 수십만 줄의 코드를 알고 있습니다. 

 

 자신을 구현해야하며 생각한다면 이것의 예를 들어야 합니다. 

 

 오늘날 우리가 플러그 앤 플레이 방식으로 MATLAB을 사용하는 방법에 대해 

 

 함께 작동하면 오늘날 MATLAB에서 매우 빠르게 코드를 작성할 수 있으므로 

 

 조금 느릴 수도 있지만 실제로 

 

 프로그램은 기본적으로 내가 가지고 있던 라이브러리보다 훨씬 빠릅니다. 

 

 이전 슬라이드에서는 복잡한 유한에 대해 이러한 작업을 수행 할 수 있습니다. 

 

 요소 솔버는 구성 요소를 제공하며 

 

 그냥 연결하면됩니다. 물론 궁극적으로 원하는 결과를 얻을 수 있습니다. 

 시간이 지남에 따라 진행 상황을 플롯 하면 스스로 수행하고 

 

 기존 소프트웨어에 대한 직선 빨간색 선과 같은 것을 그릴 수 있습니다. 

 

 당신은 당신의 속도를 알기 때문에 당신이 자신을 쓰는 것은 당신은 몇 시에 알고 

 

 거기에 다른 사람의 코드를 사용한다면 

 

 처음에는 학습 곡선이있을 것입니다. 

 

 느리고이 전체 시스템이 어떻게 작동하는지 배워야 했기 때문에 

 

 당신이 무엇을 사용할 수 있기 때문에 당신이 훨씬 빨라지는 지점이 온다 

 

 이해는 이미 거기에 있고 물론 문제는 

 

 교차점은이 분야에서 충분히 오랫동안 일 해왔고 이것을 가르쳤습니다. 

 클래스를 여러 번 반복해서 말씀드리면 크로스 오버 포인트가 

 

 학생으로서 앉아서하는 모든 일이 약 2-4 주 

 

 앉아있는 것이 아니라 소프트웨어를 배우려고 노력하는 것입니다. 

 

 자신의 소프트웨어를 사용하면 속도가 빨라지기까지 2 ~ 4 주가 걸립니다. 

 

 생각하면 지금 직접 작성해야 하는 것보다 다른 것을 사용합니다. 

 

 박사 과정에 3 년에서 4 년이 걸린다는 사실을 알 수 있습니다. 

 

 사용하면 더 빨라지거나 사용하면 더 많은 것을 얻을 수 있습니다. 

 

 다른 사람들이 그렇게 한 것은 우리의 경험입니다. 

 기존 도서관은 예를 들어 박사 학위 논문을 가지고 있는 것은 매우 현실적입니다. 

 

 2d 및 3d에서 작동하는 프로그램을 기반으로하거나 포함 

 

 복잡한 지오메트리 사용 고차 요소 사용 다중 그리드 솔버 사용 

 

 및 전제 조건 등 

 

 처음부터이 작업을 수행했다면 확실히 10 년 이상 걸릴 것입니다. 

 교수의 관점에서이 작업을 수행하면 동료들이 

 

 학생들이 자신이하는 일을 이해하기를 원한다는 것입니다. 

 

 그들은 그들이 모든 것을 처음부터 쓰도록 했고 저는 가치가 있다고 생각합니다. 

 

 이것은 어느 정도는하지만 구적법이 2D에서 어떻게 작동하는지 안다면 

 

 3D로 다시하는 법을 배워야 하는 이유가 없어서 답이 

 

 어떻게 작동하는지 이해하는 장난감 코드를 작성하고 

 

 그들이 어떻게 작동하는지 알면 3 개월이 지나면 버리고 

 

 기존 소프트웨어와 유사한 주장을 기반으로 다시 시작하면 

 사람들은이 소프트웨어에 버그가 있는 패키지가 있는지 모르겠습니다. 

 

 내가 내 소프트웨어를 신뢰할 수 있다는 것을 알고 있습니다. 나는 내 버그가 없습니다. 

 

 이것에 대한 대답은 확실히 당신이 진지 할 수는 없지만 내 말은 

 

 우리는 모두 버그를 만듭니다. 물론 소프트웨어에는 버그가 있습니다. 

 

 당신이 믿지 않는다고 믿지만 물론 진짜 대답은 패키지 

 나는 그것에 대해 이야기하고있는 동안 내가 이야기할 

 

 이 수업은 우리가 해본 경험이 많은 사람들이 작성했습니다. 

 

 이 소프트웨어 패키지는 수년 동안 광범위한 테스트 슈트를 가지고 있습니다. 

 

 예를 들어 매번 변경 한 후 약 2,700 2,700 테스트를 두 번 실행하십시오. 

 

 코드베이스에 더 많은 것이 있다고 믿을 수 있습니다. 

 

 소프트웨어에 버그가 적다는 것을 다시 한번 확인하십시오. 

 

 소프트웨어를 구현해야 할 때 결론을 내릴 수 있습니다. 

 예를 들어 새로운 방법을 개발하고 싶기 때문에 특정 문제에 대해 

 

 또는 비표준 문제가 있기 때문에 다른 사람을 재사용하려고 

 

 이미 많은 고품질 오픈 소스 라이브러리가 있습니다. 

 

 과학 컴퓨팅에서 거의 모든 것을 수행하고 있습니다. 

 

 최첨단 방법을 사용할 수 있는 것보다 훨씬 더 생산적입니다. 

 

 그리고 당신의 코드는 당신이 직접 해야 하는 것보다 훨씬 적은 버그를 가질 것입니다. 

 

 최종 피치로 아마 대학원생이고보고 계시다면 

 

 이 수업은 계속해서 본 것 중 하나는 

 

 코드의 첫 번째 버전을 만드는 시간이 너무 짧아서 

 

 직접 작성해야하는 것보다 훨씬 짧습니다. 

 

 당신은 매우 빠르고 변함없이 사진을 얻을 것입니다. 

 

 이것의 긍정적 인 측면 중 하나로 생각합니다. 

 

 여러분이 알고있는 수업이 나이 강의를 통해 지금까지 이야기 한 모든 것을 다룰 것입니다. 

 

 이 과정의 나머지 학기 동안 훨씬 더 자세히 

 

 나중에 이러한 많은 문제에 대해 다시 살펴보겠습니다. 

특정 문제에 대해 소프트웨어를 구현해야 할 때, 다른 사람이 이미 완료해둔 것을 이용하라 

scientific 컴퓨팅 분야에서는 다양한 목적의 높은 퀄리티의 오픈 소스 소프트웨어 라이브러리가 존재한다.

라이브러리를 잘 활용한다면 

더 생산적일것이고 최첨단방법을 사용할것이며 너의 코드에 버그나 에러가 없을것이다.

 

 

더보기

환영해, 내 이름은 볼프강 뱅거스야. 나는 텍사스 A&M의 수학과 교수야. 그리고 내가 이 수업에서 말하고 싶은 것은 과학 컴퓨팅에서 유한 요소 방법에 관한 것이고, 한 학기 동안 과학 컴퓨팅은 모델링과 세계를 대표하는 것을 포함하는 매우 넓은 분야야. 컴퓨터 프로그램들과 우리가 직관적으로 예측할 수 없는 것들을 예측하는 것 그리고 과학 컴퓨팅에서 가장 큰 방법들 중 하나는 요소 방법을 찾는 것이다 그래서 내가 이번 학기에 하고 싶은 것은 과학 컴퓨팅에 대한 넓은 시야를 갖는 것이다 나는 당신에게 내가 소개하고 싶은 유한 요소 방법을 소개하고자 한다.u 컴퓨터에서 유한요소법을 나타내기 위해 사용하는 도구들에 대해 소개하고자 한다. 그러나 유한요소 탈소화 부분 미분 방정식의 분리를 위한 일반적인 접근법이 이것 저것에서 나오는 선형계통으로 무엇을 할 것인가에 대한 최종요소법이었다고 말하자. be 이 분야에 대한 많은 지식을 포함하는 약간의 이론이 포함된 상당히 광범위한 수업. 특히 내가 하고 싶은 것 중 하나는 그들의 아이디로 존재하는 기존의 소프트웨어 패키지에 대해 소개하고자 하는 것이다.ea 과학적인 계산에서 자주 접하게 되는 것은 예를 들어 단위 사각형에 방정식을 적용하는 모델 문제뿐만 아니라 복잡한 기하학적 구조를 3d로 적용하거나 다중 그리드 솔버를 필요로 하거나 더 높은 수법을 필요로 하는 문제 등을 해결하고자 하는 실제 문제를 해결할 필요가 있다는 것이다. 그리고 이 모든 것들을 처음부터 코드로 구현하는 것은 다소 어려울 것이다. 그래서 이 수업에서 나의 목표는 다른 것들 중 하나로서, 이것을 위해 사용할 수 있는 도서관, 특히 유한 요소 방법을 구현하는 도서관 중 하나에 당신을 이용하는 것이다. 그리고 그것은 나로서 그리고 나로서도 도서관이다.전 세계적으로 거래 조정이라고 불리는 것을 구현하거나 개발하기 때문에 이 클래스에 대한 약간의 개요와 왜 우리가 당신의 도서관으로 간주하고 싶은지에 대한 근거부터 시작합시다. 그래서 이 클래스의 주제는 내가 말한 것과 같은 이 클래스의 주제는 특히 유한 요소 방법을 사용하여 컴퓨터의 미분 방정식을 해결하는 방법을 배우는 것이었습니다. 예를 들어, 당신은 때때로 내가 차이 방법을 찾거나 부피 방법을 찾는 것을 고려한다고 말하는 것을 들을 것이다. 이것들은 본질적으로 유한요소법과 동등한 부분 미분방정식에 대한 다른 두 가지 큰 방법이며, 나는 그것이 대부분의 유한 부피 방법에서 더 미세한 차이들의 대부분이 일반적으로 사실이라고 생각한다.oday는 분산 또는 유한 요소 방법의 섭동으로 쓰일 수 있으므로, 나는 이 유한 요소 방법을 그 태도를 포함하는 더 넓은 클래스의 개요처럼 간주한다. 따라서 실용적인 관점에서 컴퓨터의 부분 미분 방정식의 부분 미분식은 매우 실용적인 분야로서 wri에 그다지 관심이 없다.팅다운 방정식을 매우 조심스럽게 종이에 분석한다. 그러나 그것은 응용 분야의 사람들과 상호 작용하는 것과 많은 관련이 있다. 그래서 당신은 핵 공학이나 항공우주, 생물 의학 영상이나 지질 과학에서 온 사람들과 함께 일한다. 그들이 흔히 가지는 것은 그들이 어떻게든 해결해야 할 방정식을 가지고 있다는 것이다.d 그래서 종종 계산 과학이나 과학 컴퓨팅의 역할은 그들이 풀기에 즐거운지 그렇지 않은지 그들이 오는 대로 방정식을 가져가는 것이다. 왜냐하면 우리는 응용 프로그램이 있기 때문에 그것들을 해결해야 하기 때문에, 그리고 만약 당신이 이것을 하기를 원한다면 당신은 매우 넓은 클라에서 지식을 가질 필요가 있기 때문이다.ss 부분 미분 방정식과 8의 행동 방법에 대해 알아야 하기 때문에 탈색에 대해 많이 알아야 한다. 즉, 무한 차원 부분 미분 방정식을 유한 치수 문제로 변환하는 것을 의미하며, t에 관련된 선형 해결사 및 전제조건에 대해 알아야 한다.하지만 그 때 당신은 또한 프로그래밍의 배경과 종종 매우 큰 소프트웨어 조각들을 가지고 프로그래밍을 할 필요가 있다. 그리고 종종 수 만개의 코드들을 가지고 있다. 그래서 당신은 이것을 위해 당신이 아는 모든 것이 이 정도 크기의 소프트웨어를 더 이상 다룰 수 없는 적절한 도구들을 알아야 한다. 만약 당신이 아는 것이 단지 simp라고 하자.le 편집자, 그리고 이런 종류의 것들을 위한 아주 좋은 도구들이 있기 때문에 이 과정 676은 이 모든 것들을 어느 정도 다룰 것이다. 나는 다른 종류의 탈색에 대해 이야기하는 미분방정식의 성격을 말하고 우리는 해결자와 선결조건에 대해 이야기 할 것이다. 버그를 피하는 방법을 프로그래밍하는 방법에 관한 많은 것들이 디버깅을 할 것이고 몇 가지 강의가 있을 것이다.

적절한 도구에 대해 소개하자면, 우리가 통합 개발 환경 ID라고 부르는 것에 대해 소개하겠다. 예를 들어 코드를 문서화하는 도구를 소개할 수 있는 시각화 도구를 소개할 프로그래밍 환경이라고 하자. 이것이 광범위하게 해석된 과학 컴퓨팅 분야고 그것이 목표다. 이 클래스의 모든 측면을 폭넓게 말하자면, 이 클래스의 목표는 특히 DL이라는 소프트웨어를 사용하여 과학 컴퓨팅에 널리 사용되는 방법을 소개하는 것이다. 이 소프트웨어는 요소 계산을 지원하는 소프트웨어 라이브러리로서, 나는 지역 - 을 사용하는 방법을 매우 자세히 알려 줄 것이다.ctice 나는 어떻게 당신이 DL을 기반으로 프로그램을 작성하는지, 그리고 어떻게 내부적으로 이런 것들이 어떻게 표현되는지를 말해주도록 소개할 것이다. 그리고 나는 또한 당신에게 현대적인 소프트웨어 개발 도구를 보여줄 것이다. 그리고 나는 개발 관행으로부터 그것에 대해 조금 가르쳐 줄 것이다. 나는 이것이 매우 적용 가능하다고 생각한다.e 확실히 학계나 교수로서 일하는 나와 같은 주제들뿐만 아니라 이것들 모두가 다른 많은 분야의 국립 연구소의 산업에서 실용적인 적용에도 매우 중요한 것들이며 또한 이 수업의 목표는 아니지만, 나는 여러분에게 유한 요소 방법 그 자체를 동등한 수준으로 소개하지 않을 것이다.특히 나는 수학적인 기초에 대해 이야기하지 않을 것이다. 그것은 내가 전에 수업에서 듣거나 문학 읽기를 통해 습득한 것이다. 비슷하게 나는 당신에게 C++ ex에서 프로그래밍하는 방법을 보여주지 않을 템플릿에 대해 이야기 할 단 하나의 강의만 제외하고 당신에게 보여주지 않을 것이다.만약 당신이 C++로 프로그램을 짜는 방법을 이미 알고 있다면, 만약 그렇지 않다면, C++에 관한 짧은 강좌를 듣거나, 만약 당신이 여기에 있는 이런 종류의 개념들과 씨++에 관한 기존의 책들 중 하나를 듣는 것이 가치 있을 것이라고 생각한다면, 내가 일반적으로 추천하는 많은 책들은 수학적인 관점에서 주브레너와 리지웨이 스콧의 책에 관한 것이다.유한요소법의 수학 이론은 수학자들의 표준 책의 일종이다. 그것은 확실히 기술자들을 위해 쓰여진 것은 아니지만 그들의 분석에서 유한요소 이론을 제시한다. 거기에는 단지 독일어에서 온 DJ 희곡에 의한 책이 있다. 그러나 영어로 번역된 것은 단지 유한요소라고 말할 수 있다.이 유한요소법에 대한 개요를 약간 더 적용하면 그것은 이것에 대한 어떤 스트레칭과 공학적인 소개에 의해서가 아니라, 이 표준적인 작업이 정직한 드로크 스트로크에 의해 이루어지며 스트라스에서 우리가 있는 C++ 프로그래밍 언어라고 불린다.Bourg는 우연히도 우리가 여기 텍사스 A&M에 있는 같은 대학교의 컴퓨터 과학과에서 일하고 있고, 여기 캠퍼스에 있는 한 건물에서 그는 C++의 발명가 또는 1970년대 후반에서 1980년대 초반에 그리고 그 이후로 30년 동안 물론 많은 사람들이 그것을 생각해냈다고 합시다.ople은 그것에 기여했지만 그는 여전히 C++에 대한 표준 참고문헌이라고 말하자 그리고 잘 쓰여진 책은 확실히 읽을 가치가 있는 책이다 만약 당신이 C++에 대해 잘 알지 못한다면, 그래서 나는 이 클래스의 큰 주제들 중 하나인 즉 우리가 기존의 접근법과 특히 기존의 접근법을 사용하기를 원한다는 것에 대해 약간의 동기를 부여하겠다.응용 과학에서 나오는 문제를 해결하기 위해 이 수업에서 나온 제품들을 풀 수 있도록 하기 위해 먼저 부분적인 미분방정식부터 모든 종류의 응용 분야에 PDE가 나타나도록 합시다. 예를 들어, 교량의 변형을 조사하려면 고전적 응용과 구조적 통계학, 역학 등이 있다고 합시다.트럭이 그 위를 달린다거나, 트럭이 그 위를 달리면 어떻게 변한다거나, 자동차가 자동차로 충돌하면 어떻게 변한다거나, 그것을 통과하는 공기로부터의 부하에 따라 카뷰레가 어떻게 변한다거나, 이것들은 모두 유체 역학에서 유사하게 PSE라고 묘사된다. 예를 들어, 배 주위로 물이 어떻게 흐르는지 질문을 던질 수 있다. 예를 들어, 송유관에서 pipe networks에서 pipe networks의 역할도 한다. pDE는 또한 비행기 로켓 주위의 공기역학 흐름에서 사용된다. 그래서 이제 나는 당신에게 물질의 세 가지 기본 상태, 즉 고체 유체와 기체들 또한 그 역할을 한다. 예를 들어, 천체물리학에서 또는 핵융합 에너지를 조사하고자 할 때 이러한 물질 상태는 일반적으로 PDE에 의해 설명된다. 이러한 것들은 부분 미분 방정식의 고전적인 적용의 일종이지만, 예를 들어 생물학에서 사람들이 즉시 PSE를 사용하지 않는 많은 다른 영역에서 나타난다. 예를 들어, 박테리아가 어떻게 음식 공급원을 향해 이동하는지 또는 그들이 사는 지역에서 어떻게 떨어져 있는지를 모델링한다.

이미 사람들이 PD를 사용하고 있는 박테리아가 너무 많아서 예를 들어 1990년대에 노벨 경제학상은 흑인과 숄츠라고 불리는 두 사람에게 돌아갔다. 그들은 오늘날 우리가 블랙 점수 방정식이라고 부르는 방정식을 사용하여 스톡옵션에 대한 비용이나 가격을 설명할 수 있다는 것을 알게 되었다. 부분적 미분 방정식 그리고 나서 당신은 당신이 생각할 수 있는 거의 모든 영역에 pDE를 적용할 수 있다 그래서 pDE는 매우 다양한 영역에서 사용된다 그리고 계산 과학의 역할은 이러한 방정식을 취해서 응용 과학에서 온 사람들이 당신에게 주는 어떤 것이든 해결하고자 하는 것이다.d 그래서 이 수업의 목표는 여러분에게 PDS에 대한 약간의 개요와 해결 방법을 소개하기 위한 것이다. 그래서 누군가가 여러분에게 방정식을 제공하고 이것을 해결하는 소프트웨어를 써야 한다면, 여러분이 이미 이 문제를 해결할 수 있는 소프트웨어를 사용할 수 있거나 아니면 여러분이 이 두 가지 접근법을 사용할 수 있다.특히 여기 위에 있는 많은 어플리케이션들을 위해 여러분 자신을 의식하라. 상업적으로 이용할 수 있는 표준 소프트웨어가 있다. 이러한 종류의 문제들을 해결해주기 때문에 구조물의 탄력적인 변형을 확실히 해결하는 소프트웨어가 있다. 거기에는 확실히 공기와 물의 흐름을 위한 소프트웨어 등이 있다. 따라서 이러한 종류의 사례에서 당신이 할 일은 많지 않다. 당신은 물론 당신이 가지고 있는 모든 응용프로그램을 해결하는 전문적으로 작성된 소프트웨어를 사용해야 한다. 그러나 당신이 소프트웨어를 직접 작성해야 하는 두 가지 경우가 있다. 예를 들어 당신이 나처럼 컴퓨터 방법을 개발하는 사람이라면 그것은 정의상 존재하지 않는다. 이미 내 목표는 과거에 사용되었거나 과거에 사용되었던 것보다 더 나은 수치적 방법을 개발하는 것이다. 결과적으로 나는 상업적 소프트웨어를 사용할 수 없다. 왜냐하면 정의상 내가 다른 분야에 관심이 있는 현대적 방법을 사용하지 않기 때문이다.당신만의 소프트웨어를 써야 하는 것은 비표준적인 문제가 있을 때 입니다. 그래서 만약 생물학자가 당신에게 와서 내 페트리 접시 위에서 박테리아가 어떻게 움직이는지를 시뮬레이션하고 싶다고 말한다면 그것은 상업용 소프트웨어를 찾을 수 없는 일종의 응용 프로그램일 겁니다. 그것은 아무도 이것에 대해 관심을 갖지 않을 정도로 작은 틈새 시장일 겁니다.이 특정한 어플리케이션에 대해 관심을 가지는 사람이 10명뿐이거나 컴퓨터에 이것을 시뮬레이션하는 것에 관심이 있는 사람일 때 더 많은 것을 개발하는데 100만 달러가 들었다. 그래서 이런 종류의 경우 당신은 비표준적인 문제를 가지고 있다. 그래서 만약 당신이 이 두 가지 방법 중 하나를 마주친다면 당신은 스스로 해결사를 쓸 필요가 있다. 또는 표준이 아닌 세 가지 다른 문제를 직접 작성하거나 기존 구성 요소에서 어떤 것을 구축하여 예를 들어 블록을 제공하는 라이브러리를 취합하면 세 번째 문제는 유사한 것을 해결하고 수정하는 애플리케이션에서 시작하는 것이다.e 이 강의의 나머지 부분에서 내가 말하고 싶은 것은 기본적으로 옵션 1은 당신의 선택이 되어서는 안 된다는 것이다. 왜냐하면 그것은 매우 어렵거나 시간이 많이 걸리거나 비용이 많이 들 수 있기 때문이다. 그리고 적어도 수학에서 나와 같은 사람들에게는 우리는 여전히 옵션 1번으로 가는 경향이 있다. 왜냐하면 우리는 우리가 모든 p를 통제하고 싶다고 말하기 때문이다.우리가 정말로 무슨 일이 일어나고 있는지 이해하고 싶어 하지만 내가 생각하기에 내가 그것을 이 수업의 일부라고 생각하는 논쟁은 우리가 대학원생으로서 또는 연구자로서 우리가 무엇을 해야 하는 것보다 휠을 너무 많이 재발명하는 것을 본질적으로 의미하기 때문에 이것을 하지 말아야 한다는 것이다.ng는 기존 구성 요소를 기반으로 구축해야 하는 것인가, 아니면 이미 이와 유사한 작업을 수행하는 것이 이미 있다면 이를 적용해야 하는 것이다. 왜냐하면 이것은 너무 추상적이기 때문이다. 나는 왜 기존의 것을 기반으로 구축하는 것이 가치 있다고 생각하는지 예를 약간 들려고 한다. 숫자 3에 대한 세 가지 표준 도구를 보면,pDE의 해결책은 이것은 유한 요소가 볼륨을 찾거나 다른 방법을 찾는 것이다. 기본적으로 그들 모두가 여러 단계를 수행해야 하기 때문에 첫 번째 것은 당신이 이 pDE를 해결하고자 하는 당신의 도메인을 메쉬로 교체하는 것이다. 우리가 메쉬 또는 삼각측량이라고 부르는 일련의 셀들이 상당히 복잡할 수 있다.예를 들어, 여기 오른쪽에 있는 것이 종종 지하 저장소의 척도의 예인데, 그래서 이러한 척도는 수십만개의 셀을 가질 수 있고, 그들은 매우 복잡한 기하학적 구조를 가질 수 있기 때문에 단지 메쉬를 나타내고 이러한 메쉬를 창조하는 것은 사실적인 용법에서 결코 간단한 일이 아니다.대체로 부분 미분 방정식을 볼 수 있는 방법은 디스크라고 합시다.

o 곱하기 메쉬의 부분적인 미분 방정식은 당신이 본질적으로 균형 관계를 정의해야 한다는 것이다. 예를 들어, 당신이 흐름 문제를 생각한다면 그것은 균형 관계가 될 것이다. 그래서 우리가 본질적으로 쓰는 대부분의 PDE는 이러한 종류의 균형 관계에서 나오고, 그런 다음 셀들 간에 이러한 균형 잡힌 관계를 가질 때 당신은 일반적으로 매우 큰 시스템이나 비선형 시스템을 얻어야 하며, 당신이 저장해야 하고 해결해야만 하는 모든 코드들은 수치적 또는 수치적으로 PSE를 해결하는 것과 관련되어야 한다. 이러한 단계를 수행해야 한다. 그리고 만약 당신이 그러한 단계를 수행할 방법이 없다. 그리고 만약 당신이 그렇게 하지 않는 코드를 만드는 임무를 받는다면.특정한 PDE를 위한 그의 특별한 PDE를 위해 당신은 물론 이것을 할 수 있는 많은 시간이 있다는 것을 매우 빠르게 깨닫게 될 것이다. 그리고 사실 당신은 아마도 표면 아래 흐름에 대한 모든 것을 알고 있지만 당신은 완전히 익숙하지 않은 응용 과학자에 있을 것이다. 다단계 또는 더 높은 순서의 형상함수 등을 정의하는 방법 등을 사용하여 현대적인 수치적 방법을 사용하고자 한다면 오늘날 전체 복잡도에서 이러한 모든 것을 보여주는 코드를 고안하는 것은 상당히 가파른 학습 곡선이 될 것이다. 그래서 내가 주장하고 싶은 것은 이 제한들 때문이다.의 기존 도서관을 조사할 가치가 있는 이유는 단순히 30년 동안 사용되어 온 방법을 사용하는 것이 아니라 최신의 방법을 사용하고 싶기 때문이다. 예를 들어 어제 수치 PD의 최신 기술을 예로 들어 여러분이 원하는 적응적 조치를 사용하고자 한다.사실적인 복잡한 기하학적 기하학적 구조를 사용하는 경우, 이 모든 것이 현대 하드웨어의 수천 개의 프로세서를 확장해야 하며, 고품질 렌더링에 적합한 출력을 얻기를 원하며, 만약 당신이 이 목록을 본다면 어떻게 우리가 그것들을 가질 수 있는지 스스로에게 잘 물어봐야 한다. 이것을 구현하는 데 몇 년이 걸릴 것이 확실하고 만약 당신이 처음부터 이것을 구현하고 싶다면, 나에게 그것이 가능한지 아닌지에 대한 질문이 몇 년이 걸릴 것이다. 그러나 우리가 소프트웨어를 어떻게 개발하느냐에 대한 질문이기 때문에 모든 스터드들이 예를 들면 우리는 질문을 할 수 있다.그들 자신의 유한요소해결기를 개발해야 한다. 우리는 다른 사람들이 과거에 했던 것을 다시 사용하고 있다고 확신한다. 우리는 처음부터 실행해야 한다고 주장하는가 아니면 기존의 도서관을 건설해야 하는가? 그리고 당신은 이미 이것에 대한 나의 답이 무엇이어야 하는가를 이해할 수 있을 것이다. 나는 우리가 다른 사람들이 한 것을 다시 사용해야 한다고 생각한다. 사실 거기에는 꽤 많은 문제가 있었다. 이런 점에서 지난 10년 또는 15년 동안의 변화로 과거에는 우리가 모델 문제를 보고 처음부터 실행해야 한다고 생각했던 지역사회에서 확실히 변화했다. 나는 오늘날 우리는 다른 사람들이 했던 것을 다시 사용해야 한다고 생각한다. 왜냐하면 그것이 우리에게 베테를 주기 때문이다.discretation을 다루기를 원했을 뿐이지만 당신은 여전히 다른 사람들이 생각해낸 선형 시스템을 위해 현대적인 숫자 해결기를 재사용할 수 있다. 그럼에도 불구하고 도서관 재사용에 대한 이 아이디어에 대한 저항성이 꽤 있고 다음 몇 슬라이드에서 내가 하고 싶은 것은 내가 몇 가지 일을 거치는 것이다.사람들이 과거에 했던 것을 다시 사용하는 것에 반대하는 주장들 나는 이것에 대한 이유에 대해 말하고 싶다. 그래서 내가 말하기에 앞서 실제로 말하고자 한다. 기존 소프트웨어에 대한 소개로서, 이 수업에서 반복적으로 제기할 많은 도서관이 있다. 그래서 기본적인 선형 대수학에서는 이전 도서관이 있다.ist는 blast이다. 그것은 기본적인 선형 대수 서브시스템 또는 서브루틴과 라팩을 말한다. 예를 들어 고유 벡터 계산과 밀도 행렬의 고유값 계산과 같은 더 높은 순서의 것들을 말한다면, 차상위 레벨은 이 두 지원 파롤의 희박한 행렬에서 벡터를 나타내는 두 개의 라이브러리가 될 것이다.엘 계산에 기초하여 우리는 도서관과 같은 도서관을 짓는데, 그것은 이 수업에서 이야기하고자 하는 모든 메싱과 이 모든 유한 요소들을 잘 해내고, 사람들이 기존 도서관을 이용하는 것에 반대하는 주장과 내가 자주 듣는 것 중 하나는 오데에 있다는 것이다.r 물론 다른 사람의 소프트웨어를 사용하려면 거기서 사용되는 규칙을 배워야 하는데, 내가 설명서를 읽어봐야 하는데, 사람들은 내가 이 모든 것을 직접 작성하기만 하면 훨씬 더 빠를 것이라고 말한다. 왜냐하면 정말로 나는 단위의 제곱에 대한 라플라스 방정식을 풀기를 원하기 때문이다. 그리고 나는 첫 번째 부분은 확실히 당신이 가지고 있는 것이 사실이라고 생각한다. 소프트웨어를 배우려면 우리 뒤에 있는 철학을 배워야 한다. 그러나 두번째 부분은 아니다.

이전 슬라이드에서 방금 소개된 이 라이브러리에는 수십만 줄의 코드를 알고 있는 기능이 너무 많기 때문에 직접 코드를 작성하지 않아도 될 뿐만 아니라 코드를 작성하면 더 빨라지는 것은 사실이 아니다.오늘날 우리가 어떻게 MATLAB를 사용하는지에 대해 생각해보면, 어떻게 우리가 단지 플러그를 꽂고 놀기만 하고, 그리고 모든 것을 함께 할 수 있는지 그리고 그것이 우리가 오늘 MATLAB에서 코드를 매우 빨리 쓸 수 있는지, 그래서 아마도 조금 더 느릴 수도 있지만, 실제로 프로그램을 만들어 낼 수 있는 시간이 훨씬 더 빠르기 때문에, 이전 슬라이드에서 내가 했던 도서관들이 이런 종류의 것들을 할 수 있게 해준다.복잡하고 유한한 요소 해결사들을 위한 ngs는 당신에게 빌딩 블록을 제공하고 당신이 원하는 대로 플러그를 꽂을 수 있다. 물론 이것은 당신이 스스로 그것을 하고 기존 소프트웨어를 사용하는 것에 대해 시간이 지남에 따라 진행되는 과정을 그리고 당신이 무엇을 하든지 간에 당신은 빨간 선과 같은 것을 그릴 수 있다.당신이 당신의 속도를 알고 있기 때문에 당신은 만약 당신이 거기서 다른 사람의 코드를 사용한다면 당신이 몇시에 당신이 가지고 있는 지를 알고 있고, 당신이 처음에 학습 곡선이 있을 것이고, 당신은 이 전체 시스템이 어떻게 작동하는지 배워야 하지만 그것은 당신이 당신이 당신의 것을 사용할 수 있기 때문에 당신이 훨씬 더 빨라지는 지점이 될 것이다.nderstand는 이미 그 안에 있고 물론 문제는 그 교차점이 어디에 있는가 하는 것이고 나는 이 분야에 충분히 오래 있었고 나는 이 수업과 여러 번 가르쳤기 때문에 교차점은 학생으로서 앉으면 대략 2주에서 4주 정도가 아니라 그 소프트웨어를 배우려고 노력하는 것이라고 말할 수 있다. 앉아서 당신이 하는 일이라곤 당신만의 소프트웨어를 쓰는 것 뿐인데, 만약 당신이 박사과정을 3-4년이 걸린다고 생각한다면, 당신은 당신이 얼마나 더 빨리 박사과정을 밟을 수 있는지 혹은 얼마나 더 많은 것을 사용할 수 있는지를 즉시 알 수 있다. 다른 사람들이 우리의 경험에 따르면, 만약 당신이 이러한 기존의 도서관들을 사용했다면, 예를 들어 복잡한 기하학적 구조를 사용하는 프로그램을 포함하거나 기반으로 하는 박사 논문이 당신이 사용한다면, 다중 그리드 솔버와 전제조건 등을 사용하는 높은 순서 요소들을 사용한다.처음부터 이것을 하기 위해서는 10년 혹은 그 이상의 시간이 걸릴 것이다. 교수진의 관점에서 이것을 하는 데 10년 혹은 그 이상의 시간이 걸릴 것이다. 동료들은 그들이 그들의 학생들이 하는 일을 이해하기를 원하며, 그것이 그들이 처음부터 모든 것을 쓰도록 내버려두는 이유라고 나는 생각한다. 그리고 나는 이것에는 어느 정도 가치가 있다고 생각한다. 그러나 만약 당신이 어떻게 4분의 1을 어떻게 쓰는지 안다면2d에 ature works in 2d는 정말 무게가 없어서 3d로 다시 하는 법을 배워야 해 답은 그들이 어떻게 작동하는지 이해할 수 있는 장난감 코드를 쓰게 하고 3개월 후에 어떻게 작동하는지 알게 되면 그것을 버리고 내가 들은 바로는 사람들이 말하는 기존의 소프트웨어에 근거하여 다시 시작한다는 것이다.이 소프트웨어 패키지에 버그가 있는지 나는 모른다 나는 내 소프트웨어를 믿을 수 있다는 것을 알고 있다 나는 내 코드에 버그가 없다는 것을 알고 있다 이것에 대한 대답은 분명히 네가 옳을 수 없는 동안 나는 물론 우리 모두가 버그를 만든다는 것이다 만약 네가 그렇지 않다고 믿지만 진짜가 아니라고 믿는다면, 네 소프트웨어에 당신이 속는 버그가 있다는 것을 의미한다물론 내가 이 수업을 듣는 동안 이야기 할 패키지는 우리가 여러 해 동안 이 일을 해 온 경험이 많은 사람들에 의해 쓰여졌다는 것이다. 예를 들어 소프트웨어 패키지는 코드바를 변경할 때마다 2회 약 2,700개의 테스트를 수행한다.그리고 당신은 소프트웨어에 버그가 훨씬 더 적다고 믿을 수 있다. 예를 들어 당신이 새로운 방법을 개발하기를 원하거나 비표준적인 문제를 가지고 있기 때문에 특정한 문제에 대해 소프트웨어를 구현해야 할 때 이것을 결론짓기 위해 당신이 할 수 있는 것은 아마도 당신이 할 수 있는 것이 무엇인지를 다시 한번 확실히 하자.다른 사람들이 이미 한 것을 재사용하는 것에는 과학 컴퓨팅에서 실질적으로 모든 것을 하는 많은 고품질 오픈 소스 라이브러리가 있고 당신이 발견하게 될 것은 당신이 최첨단 방법을 사용할 수 있다는 것과 당신의 코드가 최종 파이로서 그것을 해야만 했을 때보다 훨씬 적은 수의 버그를 가질 수 있다는 것이다.아마도 당신이 대학원생이고 이 수업을 계속해서 보고 있는 것 중 하나일 것이다. 왜냐하면 코드의 첫 번째 버전을 만드는 시간이 당신이 직접 써야 하는 시간보다 너무 짧기 때문에 당신은 매우 빨리 그리고 항상 당신의 조언자에게 깊은 인상을 줄 것이기 때문이다. 이것의 긍정적인 측면의 하나로서, 이 수업과 함께 나는 당신이 알고 있는 이 수업이나 이 강의를 떠나겠다.

그리고 우리는 이번 학기 남은 기간 동안 이야기했던 모든 것들을 좀 더 자세히 다룰 것이고 나는 나중에 이 문제들에 대해 다시 이야기 할 것이다.