연구동향
조회수 5428 좋아요 12 댓글 0
[구조역학7] 파이썬의 소개 및 기초적인 수식모델 패키지
곽현수(포항공과대학교 기계공학부)
좌굴 이후 (Post-Buckling) 구간에 대한 이론 모델을 파이썬을 통하여 개발한 과정에 대하여 적어보려고 합니다. 또한 파이썬에 내장되 있는 함수들과 수식 모델링 과정 중 제가 겪었던 고충들을 공유하도록 하겠습니다. 마지막으로 좌굴 이후 이론 모델의 결과를 검증 하고자 유한요소해석을 진행하였습니다. 따라서 유한요소해석과 관련되어 간단한 소개와 어떤 방법으로 문제를 해결하는지 사용방법론에 대하여 설명을 해드리려고 합니다.

전 연재에서Pre-Buckling 해석을 위하여 MATLAB 프로그램을 통하여 수식 계산을 진행하였습니다. 이번 시간에는 MATLAB이 아닌 파이썬을 활용하여 이론 모델을 구축하는 것에 대하여 설명을 드리도록 하겠습니다.


우선 MATLAB과 파이썬이 어떤 차이가 있는지 설명을 간단하게 드리도록 하겠습니다.

MATLAB은 엔지니어 및 과학자들에게 쉬운 UI를 제공하고 매우 직관적인 계산환경을 제공하기 때문에 몇몇 부분에서는 파이썬에 비하여 좋은 프로그맹이 될 수 있습니다.

하지만 제가 좌굴 이후 (Post-buckling) 주름 예측 모델을 개발 할 때 파이썬을 적용한 3가지의 이유에 대해서 설명 하도록 하겠습니다. 첫 번째로MATLAB은 범용적인 언어로 사용되기 힘듭니다. MATLAB으로 작성한 스크립트는 외부 작동 환경과 호환성이 떨어지기 때문에 상용화 과정에 적합하지 않을 수 있습니다. 가령 우수한 이론 모델을 실제 공정 어플리케이션에 적용하여 문제를 모니터링하려고 할 때 일반적으로 공정 기기들은 C언어 기반으로 작동되기 때문에 MATLAB 기반 스크립트가 적절하지 못합니다.

두 번째로 나중에 논문에 참고되는 그래프의 Figure를 수정하는 작업에서 파이썬이 조금 더 편한 느낌을 갖고있습니다. 이것은 사실 사람마다 다를 수 있는 파이썬은 외부 라이브러리를 갖고 와서 사용하기 때문에 보다 편리하게 원하는 목적에 맞게끔 수정할 수 있었던 것 같습니다.

마지막으로 MATLAB은 유료 서비스이기 때문에 학생 용 버전이 아니라면 결제를 해야만 합니다. 이런 점에서 저는 파이썬을 추후 수식 모델링으로 구축하는 것이 도움이 될 것 같다고 생각하였습니다.

무료로 다운이 가능한 파이썬은 다양한 플랫폼이 있습니다. https://www.python.org/ 위 사이트는 공식적으로 파이썬을 다운 받을 수 있지만 Fig 1.과 같이 리눅스 기반의 Power shell 콘솔 창에 입력을 하는 방법으로 진행됩니다.


그런데 파이썬 입문자들이나 초보자들에게 알맞은 UI환경을 제공하고 쉽게 외부 라이브러리를 다운 받을 수 있게 파이썬을 기반으로 커스터 마이징하여 다운로드 할 수 있는 플랫폼들이 존재합니다. 저는 바로 아나콘다(ANACONDA)란 플랫폼을 사용하여 파이썬 편집기를 다운받았습니다.


아나콘다를 활용하면 파이썬의 다양한 가상환경들을 손쉽게 구축할 수 있고 파이썬 개발에 매우 효율적인 환경을 제공합니다. 파이썬은 오픈소스 기반 플랫폼이기 때문에 많은 개발자들이 공동으로 개발한 라이브러리들이 매우 많이 존재합니다. 따라서 필요한 프로그래밍 언어가 존재하면 이러한 라이브러리를 외부에서 가져와서 파이썬 내부에서 실행을 먼저 시킨 다음 코딩이 이루어져야만 올바르게 실행이 됩니다. 이런 점에서 아나콘다는 외부 라이브러리 자체를 쉽게 가져올 수 있다는 장점이 있습니다.

저는 아나콘다 중에 특히 Spyder라 하는 프로그래밍을 사용하여서 파이썬 코드를 적어보았습니다. 아나콘다라고 하는 외부 오픈소스 플랫폼 내부에 다양한 편집기(쥬피터 등)들이 있는데 그것들 중 Spyder를 선택하였습니다.
Spyder는 MATLAB처럼 과학자나 엔지니어 및 데이터 분석에 의해 설계된 통합 시스템 라이브러리를 제공하기 때문에 수식계산을 하기에 적합하다고 생각하였습니다.

또한 Numpy, SciPy, Pandas, Matplotlib 등의 과학 기술계산 패키지가 포함되어 있고 수식과 그래프를 그릴 때 매우 적합한 프로그래밍이라 볼 수 있습니다. 여기서 Numpy, SciPy 등 이런 용어들은 파이썬의 외부 라이브러리를 의미합니다. MATLAB에서는 이러한 함수들이 자체 내장되어 있기 때문에 행렬을 불러오거나 별도의 수치 계산을 할 때 내장 함수를 사용하면 별 무리가 없습니다.

하지만 파이썬은 사전에 Numpy의 라이브러리를 가져오지 않으면 Numpy에 내장된 함수를 사용하지 못합니다. Spyde는 자체적으로 외부 라이브러리를 자동으로 다운 받아주기 때문에 매우 편리하게 이용할 수 있습니다. 만약 아나콘다와 같은 오픈소스 플랫폼이 아닌 리눅스 기반으로 작동되는 파이썬으로 진행하면 일일이 외부 사이트에서 라이브러리를 직접 다운받고 폴더에 수동으로 넣어야 되는 귀찮음이 있습니다.


Spyder로 실행시킨 파이썬의 화면은 Fig. 2 와 같습니다. 아까 이전에 리눅스 환경에서 파이썬 코드를 짜는 것보다 편리한 기능들이 탑재되어 있습니다. 왼쪽 창은 MATLAB으로 치면 M.file을 작성하는 일종의 편집기가 될 것이고 오른쪽 아래는 콘솔 실행창이 있습니다.


파이썬은 외부 라이브러리 함수를 호출하기 위해서는 라이브러리를 다운 받고 반드시 위와 같은 명령어를 통하여 사전에 정의해야만합니다. Fig. 3은 외부 라이브러리를 호출하는 코드를 적은 것을 의미합니다. 여기서 Sympy(수식 계산), Numpy(수치 계산), Scipy(최적화 및 솔버)라 보이는 명령어는 일반적으로 MATLAB에 사용되는 함수들을 모두 포함하고 있는 라이브러리 입니다. 따라서 간단하게 MATLAB과 비슷한 용도로 사용하려면 위 3가지를 기본적으로 불러오면 실행이됩니다.

여기서 잠깐 호출 명령어 대해서 알아보도록 하겠습니다. 우선 Import numpy as np 란 뜻은 Numpy 라 라이브러리를 np 로 불러오겠다는 것을 의미합니다. np는 사용자가 원하는 명칭이며 원하는 단어로 바꿀 수 있습니다. 예를 들면, Numpy란 함수를 abc로 불러오고 싶다하면 import numpy as abc로 코드를 적으면 됩니다. 추가로 from scipy.optimize import fsolove 와 from scipy.optimize import * 두 가지 형태로 적어논 것이 있는데 후자는 라이브러리의 모든 함수들을 불러오겠단 뜻입니다.

전자는 scipy.optimize라 하는 다양한 함수들 중에서 오직 fsolve만 불러오겠단 것을 의미합니다. 본인이 특정 라이브러리 3개 이상의 내장함수가 코드를 작서아는데 필요로 하면 위 처럼 * 란 문장을 통하여 편리하게 사용할 수 있지만 오직 하나의 함수만 필요하다면 하나만 불러오면 됩니다.

그런데 실제로 제가 느낀 바로는 *를 사용하나 단일 함수를 불러오나 큰 차이를 못 느껴서 대부분 호출할 때 *로 시작하는 경우가 많습니다. 기본적인 라이브러리에 대해서 간단히 설명 드리겠습니다.

1) Sympy는 심볼릭한 수식 계산을 할 때 용이합니다. 가령 우리가 1+1=2 란 수치적 계산이 아니라 x+y=z 식으로 어떤 심볼릭한 함수로 이루어진 방정식을 세울 때 매우 용이합니다. Sympy 역시 수치 계산이 가능하지만 Numpy와 비교하였을 때 한정적인 부분이 많습니다.

2) Numpy는 수치 계산에 특화된 라이브러리로 매트랩과 유사하다고 보면 됩니다. 여기서 제가 애먹은 부분이 많았는데 매트랩같은 경우 Sympy와 Numpy의 구분이 없다보니 심볼릭한 문장과 수치 계산을 자유롭게 넘나들 수 있습니다. 하지만 파이썬에서는 그런 부분이 수행되지 않습니다. 그러니깐 Sympy에서 x+y=z 란 문장의 + 란 논리 연산자와 Numpy에서 1+1=2 의 + 의 논리 연산자가 통용되지 않습니다. 따라서 Numpy 와 Sympy 사이의 연결을 해주는 명령어가 필요로만 합니다. 제가 직접 수행한 이론 모델을 바탕으로 설명을 드리도록 하겠습니다.





 

  • Post-Buckling
  • 유한요소해석
  • MATLAB 프로그램
  • python
  • ANACONDA
인쇄 Facebook Twitter 스크랩

  전체댓글 0

[로그인]

댓글 입력란
사용자 프로필 이미지
0/500자