2012년 12월 12일 수요일

리눅스용 오픈소스 공학용 툴들을 사용해 본 느낌


리눅스용 오픈소스 공학용 툴들을 사용해 본 느낌


(원래 글 : http://www.ubuntu.or.kr/viewtopic.php?p=107618#p107618 )


(위) FreeCAD에서 STEP 파일을 불러들인 모습

(위) Salome-Meca 에서 STEP 파일을 불러들여 메슁을 한 모습

(위) Elmer에서 STEP 파일을 불러들여 메슁된 모습

(위) Elmer, ConvertAll, FreeMAT 실행 모습

우선 저는 제품설계자이구요.
실업무에서는 주로 
미국 PTC사의 Pro/Engineer (현재는 CREO로 이름이 변경됨) 3D CAD를 주로 사용해 왔습니다.
물론 회사에서 정품을 사용했죠.
이런 상용 제품의 최근 경향은, 모든 툴이나 관리도구를 한 패키지 안에 다 집어넣어서 제공하는 식이라서
제품설계를 하고 나서, 유한요소해석이나 동역학 해석 같은 것을 간단히 하기도 좋습니다.

사실 원래 Pro/Engineer라는 제품도 유닉스 환경에서 개발되었던 것인데
최근에는 대세를 따라서 윈도우 중심으로 완전히 옮겨와 버렸고
리눅스 지원을 했다가 안 했다가 암턴 제멋대로 입니다.
실제로 리눅스에서 이걸 쓰는 사람이 거의 없죠!

아무튼 이런 강력한 상용 툴을 리눅스에서 오픈소스만으로 완전히 대체할 수 있는가? 
하는걸 주제로 해서 따져봤습니다.

현재 저의 리눅스 환경은 우분투 12.10 깔아놨고, 여기서 이것저것 깔아보고 테스트 해 봤습니다.
사용방법이 상당한 스터디를 필요로 하는 것들 뿐이라
저도 제대로 해 보지는 못했지만 기본적으로 파일 불러들여서 간단한거 다뤄보는 정도만 해 봤습니다.
(각 패키지를 구하는 방법, 홈페이지 같은건 그냥 구글링하면 쉽게 튀어나오므로 URL 같은 것은 대부분 생략하겠습니다.)


일단 2D CAD는...

(1) LibreCAD (리브레캐드)
오토캐드를 대체하는 것이 가장 중요하고, 또 다른 업체/부서와의 데이타 교환에 문제가 없어야 하죠.
오픈소스로는 LibreCAD를 깔아서 써 봤는데
오토캐드와는 사용방법이 좀 달라서 적응이 쉽지는 않은 듯 합니다.
하지만 익숙해지면 상당히 편리하겠더군요.
콘솔 부분도, 파이썬 기반으로 해서 별도로 스터디할 필요가 있었는데 기능상의 부족함은 거의 없어 보입니다.
다만 문제점은...
DXF 포멧은 잘 지원되는데, DWG 포멧은 아직 지원되지 않고 있으므로
데이타 교환시 불편함이 많을 것 같아요.

(2) DraftSight (드래프트사이트)
이건 카티아를 개발했던 프랑스의 닷소 사에서 개발해서 무료제공하는 건데 (이미 잘 알려져 있죠)
사용자 등록만 해 주면 무료로 사용 가능하다는 장점이 있습니다.
오픈소스는 아니기 때문에 불만이지만, 제품의 퀄리티를 보고 깜짝 놀라게 됩니다.
오토캐드를 사용하는 것과 아무런 차이를 느낄 수 없을 정도로 유사하거든요.
명령어 쳐넣는거 왠만한거 그대로 다 되는 등 오토캐드에서의 사용습관을 전혀 버리지 않아도 됩니다.
또한 DWG 포멧도 완벽히 지원하므로 실무에서의 사용에 아무런 문제가 없습니다.
물론 저는 이걸 윈도우, 리눅스 둘 다 깔아놓고, 기존의 오토캐드는 완전히 삭제한 상태입니다.


3D CAD는....

(3) BRL CAD (비알엘 캐드)
3D CAD 발달 역사상 아주 중요한 역할을 한 기념비적인 제품이죠!
1979년에 마이크 무스(Mike Muuss)가 오리지널 코드를 개발했다고 하는데,
미국 국방성에서 M-1 에이브럼즈 탱크 개발할 때 이걸로 설계했다고 합니다.
마이크 무스라는 프로그래머는 ping (아시죠?) 이라는 프로그램도 최초로 발명(?)한 분이라고 하네요.
아무튼 역사와 전통이 깊은 패키지이고, 2004년도부터는 완전히 오픈소스로 풀려서 좋긴 한데...
문제는 너무 구닥다리라서 실무적으로 도저히 쓸 수 없다는 겁니다.
역사적인 소스코드 분석 해보고 싶은 도전적인 해커가 아니고
그냥 설계 엔지니어라면 이걸 깔아서 쓰는건 비추...

상용 소프트웨어 중에 이것과 비견될 만한게, CATIA가 있을 것 같습니다.
카티아는 프랑스 닷소에서 라팔 전투기 개발을 위한 설계툴로 개발한 건데,
유닉스환경에서의 초기버전(V4이전)은 BRL CAD와 막상막하할 정도로 구식 UI입니다.
하지만 카티아는 BRL CAD처럼 오픈소스화하지 않고, 계속 상용 코드로 발전해서
V5부터 완전히 윈도우 플랫폼으로 옮겨가서 모든걸 밑바닥부터 새로 개발해서 
지금은 시장에서 나름 잘 팔리고 있는 고급 제품이 되었죠.


(4) FreeCAD (프리캐드)
오픈소스 쪽에서 이게 대세라고 하는데, 이와 유사한 다른 3D 오픈소스 CAD 몇가지를 더 보긴 했지만
이것과 대등한 완성도까지 도달한 것은 아직 없는 듯 하더군요.
깔아서 기본적인 스케치와 익스트루드 정도 해 봤는데, 설명서에는 NURBS까지 다 된다고 되어 있긴 한데
아무래도 역시 상용 패키지처럼 신속한 작업성이 보장되는 수준은 아닌 듯 합니다.
하지만 이 패키지와 연계한 스크립트 어플리케이션을 얼마든지 만들어낼 수 있기 때문에
FreeCAD를 기반으로 해서, 특정 설계목적에 맟춘 특화된 기능을 부여하면
각종 문제를 해결하는데 아주 좋겠더라구요.

제가 사용하는 PTC Pro/Engineer의 경우에는, 
Pro/Program 이라는 스크립트가 있긴 하지만, 새로운 Feature를 생성하는건 불가능한 등 아주 기능이 미약하기 때문에
제대로 기능을 부여하려면 (플러그인 툴 개발) Pro/Toolkit 이라는 C 라이브러리를 사용해서 
아예 새로운 C 프로그램을 개발해야 됩니다.
물론 기계공학과 소프트웨어공학을 동시에 정통한 엔지니어는 별로 없기 때문에
우리나라에서도 Pro/Toolkit 개발자는 아주 희귀합니다.
듣기로는 현대자동차 같은 곳에서 이걸로 섀시 부품설계를 편하게 해 주는 플러그인 같은 것을
개발해서 쓴다고는 하는데, 이런 대기업에서 개발자 따로 고용해서 만들지 않는 이상 
현실적으로 개발이 힘든 환경입니다.

반면에 FreeCAD는 빵빵하고 자유로운 파이썬 스크립트 콘솔을 이용해서
대화식으로 어떤 작업을 스크립팅 하고, 그 소스를 파일화해서 그냥 새로운 플러그인을 만드는게 아주 쉬운 것 같습니다. (아직 해 보진 않았지만)

즉 기본적으로 제공되는 사용자 인터페이스나, 라이브러리 같은 것들이 좀 부족할지 몰라도
사용상의 자유도나 확장성이 매우 좋은 장점이 있다고 생각됩니다.

"FreeCAD 기반으로 엔지니어링 서비스 회사 하나 차려도 되겠구만!"
하는 생각이 들더군요.

세상일이 다 그렇듯이, 내가 생각한 걸 누군가 이미 생각했을 확률이 높죠?

그래서 구글링 해 봤더니, 아니나다를까 이미 그런 분들이 있더군요. ㅠㅠ

부산에 있다는 디비시테크 ( http://www.qtkor.com/ ) 라는 회사에서 QT,OpenCascade 같은 프레임웤이나 오픈소스 3D 라이브러리와 FreeCAD 같은 오픈소스 툴들을 조합, 개조하는 엔지니어링 서비스를 사업아이템으로 해서 잘 하고 계시는 모양입니다. FreeCAD 기반으로 소스코드 좀 손봐서, 풍력발전소의 날개설계 전용 CAD를 만들거나 하는 모양입니다. 국책과제 같은데서 이런 수요가 분명 있으니, 사업의 지속성은 아마 문제없지 않나 싶더라구요.



아무튼 CAD 부분은 그럼 됐으니, 이제 공학해석(CAE) 쪽은...
http://en.wikipedia.org/wiki/List_of_fi ... e_packages
여기만 봐도 오픈소스화 된 코드들이 아주 빵빵하게 많이 나와 있음을 알 수 있습니다.
사실 몇년 전에도 찾아본 적이 있는데, 공개된 패키지들의 완성도도 대체로 낮은 편이고
해서 오픈소스로는 공학해석이 아직 어렵구나 하면서 좌절한 기억이 나는데
지금은 그런 패키지들이 계속 버전업을 해서 엄청나게 완성도가 향상되었습니다.
모든걸 다 볼 수는 없지만, 몇개만 골라서 살펴봤습니다.

해석프로그램은 일반적으로 프리프로세서,솔버,포스트프로세서로 분리해서 나뉘는데
각각의 구성모듈별로 이넘 저넘 섞어서 쓰기도 합니다.
다만 한 방에 다 묶여서 패키지로 제공되는게 골치가 덜 아프므로(?)
그런 것들만 일단 봤습니다.


(5) Calculix (칼큘릭스)
독일 뮌헨에 있는 MTU라는 회사가 있는 모양인데, 항공기용 제트엔진 개발하는 회사인가 봅니다.
여기서 일하는 엔지니어들이 '남는 시간에' 조금씩 개발한게 완성되어서 칼큘릭스 패키지가 되었고, 이걸 그냥 프리 소프트웨어로 개방했을 뿐만 아니라 MTU사 자체 해석 툴로도 사용되고 있다고 하네요.
제트엔진 개발용으로 만든 놈이니만큼, 
유한요소해석(고체) 뿐만 아니라 전산유체해석(유체)도 되고 
신뢰성은 충분히 검증되었다고 봐도 무방하겠죠.
공돌이들이 남는 시간에 만들어서 이런게 튀어나오다니 독일이 대단하긴 합니다.


(6) Code-Aster (코드 아스터), Salome (살로메)
코드-아스터는 프랑스 물건인데, 토목 구조 해석을 위한 목적으로 개발된 것입니다.
EDF라는 프랑스 엔지니어링 회사에서, 자체 해석툴로 개발한 건데
20년 이상 꾸준하게 오랜 시간동안 개발이 지속되어 왔기 때문에 (한국에서는 불가능하죠)
이걸 개발한 엔지니어들 인터뷰 동영상 보면 
전부 백발이 희끗하거나 대머리가 된 아저씨들 10여명이 프랑스어로 꿍얼꿍얼 대고 있더군요.
코드 아스터는 솔버 부분 뿐입니다만, 홈페이지 가보면
다른 프랑스제 오픈소스 프리프로세서/포스트프로세서인 
GUI 환경의 SALOME(살로메) 프로그램과 묶어서 패키지로도 제공합니다.
(Salome-Meca 2012.2)
저는 이 "살로메-메카 2012.2"를 깔아봤습니다.
살로메는 
일단 프리프로세스 부분에서 옵션설정이 GUI로 상당히 세부적으로 가능하고
또 불러들인 3D 모델을 매쉬로 변환할 때 중간에 깨진 부분도 수동으로 꿰멜 수 있는 
등의 툴들이 빵빵합니다. 상용툴 저리가라더군요.
또 상용툴처럼, 3D 모델링을 살로메 상에서 직접 할 수도 있습니다.
간단한 CAD 기능도 있다는거죠.
아무튼 이걸 이용해서, 기계공학의 구조해석을 하기에 아주 좋은 솔루션 같습니다.
다만 옵션이 너무 많아서, 제대로 쓰려면 스터디를 많이 해야 됩니다. 
설계전문 엔지니어용 툴이라기 보다는 
해석전문 엔지니어를 위한 툴에 가깝다고 생각됩니다.
또, DEB 같은 리눅스용 패키지를 제공하지 않고 그냥 압축패키지로 제공하기 때문에
깔 때 좀 짜증납니다. 또 이넘은 윈도우 쪽은 아예 지원 안합니다.


(7) Elmer (엘머)
이넘은 핀란드 물건입니다.
핀란드 교육부에서 역시 20년 조금 못되게 지속적으로 
CSC연구소에 펀딩해 줘서 나온 것이더군요.
프리프로세서,솔버,포스트프로세서 전부 한 패키지로 제공됩니다.
최근에 GUI 부분이 많이 개선되어서 쓰기가 더 좋아진 것 같습니다.
위의 프랑스제 살로메 보다는 좀 더 심플하다는 느낌이구요.
덕분에 설명서 안 보고, 그냥 딱 띄워서 일단 뭘 해 보기는 좀 더 낫더군요.
일단 3D 모델링한 파일이 불러들어와 지니까요.
모델을 불러들이면 지멋대로 매쉬 작업을 시작해 버립니다.
하다가 뻑 나면 메시지창 뜨고 중단되고, 잘 되면 몇 분 정도 기다리니깐
자동적으로 잘 짜여진 매쉬 모델로 변환되어 똻! 뜨더군요.
매쉬 작업은 일종의 노가다 같은건데, 이넘은 자동으로 꽤 일을 잘 하는 것 같습니다.
솔버 부분의 코드는 역시 위의 프랑스제 코드-아스터 처럼 포트란 기반이라서
속도가 아주 좋은 듯 합니다.
규모가 큰 작업을 할 때 반드시 지원되어야 하는 병렬컴퓨팅,슈퍼컴퓨팅에서도 아마 잘 되나 봅니다.
솔버 부분은 아주 빵빵해서,
선형/비선형 구조해석은 물론
다물체 해석, 열해석, 유체해석, 심지어 양자역학적 해석까지 다 되나봐요.
이걸 개발한 핀란드의 CSC연구소에서는 HP랑 크레이 슈퍼컴퓨터 2대가 있는 모양인데
둘 다 이넘을 깔아놓고 쓰나봐요.
2011년 기준으로, CSC연구소 자체적으로는 엘머 유저가 200명 정도 되고
세계적으로는 수천명 정도의 사용자가 있다고 합니다. 다운로드는 몇만건 정도 되나봐요.
첫인상이 아주 좋은 소프트웨어 같습니다.
리눅스에 깔 때도 별 문제없이 한 방에 잘 됩니다.


(8) Z88 Aurora (Z88 오로라)
이넘은 독일 바이로이트(Bayreuth)대학교의 프랭크 리그(Frank Rieg) 교수팀이 만든 학교 제품입니다.
Z88은 솔버를 말하는 거고, 오로라는 프리/포서트프로세서 GUI 패키지를 말하는 것입니다.
둘을 합쳐서 "Z88 Aurora"로 제공하는가 봅니다.
윈도우용은 그냥 인스톨 하면되고, 리눅스용은 압축패키지 받아서 풀어야 됩니다.
리눅스용 깔아보니 의존성 있는 C 라이브러리가 있는지 확인을 먼저 해야 되던데
우분투에서 이 라이브러리들이 확실히 딱 있는 것 같지는 않더군요. 
깔아서 실행시켜 보니 뭔가 빠진 것 같은데 대체 뭐가 빠진건지 파악을 아직 못했습니다. ㅠㅠ
암튼 윈도우 환경에서 깔았을 때는 그냥 잘 돌아갑니다.
안정성은 조금 떨어지는 듯... 좀 복잡한 모델을 불러오니 다운되는 확률이 높습니다.
Z88 솔버의 특징은, 포트란이 아니고 C로 전부 다 짰다는 것입니다.
포트란 소스코드를 사용하는 이유중의 하나는, 빠르다는 점도 있지만
해당 연구소나 학교에서 대대로 물려오는 빠방한 포트란 라이브러리를 포기 못해서 
그냥 물려받아 재활용하는 차원도 큰데요.
Z88은 그냥 처음부터 C로 밑바닥부터 다 짰나봅니다.
이를테면 "나는 젊은 소스코드다"라고 주장하는 듯. 
장점은, 다른 상용 해석프로그램의 데이타들이 임포트되도록 호환성이 높은 편인 듯 합니다.
위에 언급한 엘머 같은 경우에는 그런 데이타 호환성이 좀 낮아 보입니다. (자체 포멧) 


덩치가 좀 큰 해석 프로그램들은 대충 이정도 살펴봤고,
매틀랩을 대체할 수 있는 넘들도 좀 봤습니다.


(9) FreeMAT (프리멧)
공짜 매틀랩이라는 의미의 이름 같군요..
매틀랩 소스코드 호환 잘 되는 편입니다. plot 까지 가는데 아무 문제 없더군요.
사이즈가 작아서 일단 좋아 보입니다.

(10) QtOctave (큐트 옥타브)
코멘드라인용 옥타브에 GUI 올려서 매틀랩이랑 더 비슷해진 건데
역시 FreeMAT 정도의 소스 호환성이 이루어지더군요.
옥타브는 원체 역사도 좀 되고, 제일 유명한 넘이니 별 다른 설명이 필요 없을 듯..

(11) Scilab (사이랩)
이넘도 프랑스 물건이죠?
매틀랩과 소스 호환성은 없지만, 비슷한 느낌이라 적응하는데 큰 어려움은 없는 듯 하고
대신에 매틀랩 소스를 싸이랩 소스로 변환해 주는 번역기가 매뉴에 있어서
이걸로 그냥 매틀랩 m파일을 변환해서 실행시켜주니깐 잘 되네요.
프리멧,옥타브가 갖지 못한 이 녀석의 또다른 장점은
Xcos 툴이 있다는 것... 매틀랩의 시뮬링크 대체품인데, 옥타브에서도 이런건 없으므로
시뮬링크 없어서 아쉬웠던 분이 사이랩 쪽에 유혹을 많이 느끼시나 봅니다.

(12) SageNB (세이지 노트북)
이넘도 꽤 유명한 것 같네요... 파이썬 문법도 배울 겸 해서도 좋고요.
웹 기반 서비스니깐 따로 뭘 깔 필요도 없고, 그냥 홈피가서 로그인 하면 막 되니깐
간단히 플랏 같은거 해서 그림 캡춰해서 쓰고 하면 좋을 듯....


기타


(13) ConvertAll (콘버트올)
이외에 공돌이 필수품으로 단위변환 해주는 툴이 있으면 좋을텐데
리눅스용으로 없나 찾아 봤더니 이게 있더군요.
깔아서 써 보니깐, 내가 평소 찾아왔던 놀라운 구조더라고요.
차원해석 개념이 들어가 있더라는....
즉 단위별로 일일이 골라서 쓰는게 아니고
예를 들어 m/s 단위를 km/h로 변환한다고 하면
두 단위는 차원이 같쟎아요. (길이/시간) 이렇게요.
이렇게 차원별로 따로 선택하거나 직접 써주면 단위가 성립이 되고
내부적으로 일관된 단위변환이 가능해지므로
각 차원별로만 단위를 프로그램이 제공해 주면
변환 할 수 있는 단위들이 엄청나게 늘어나서 제한이 없어지는거죠.




일단 이정도 툴들을 살펴봤는데,
리눅스용 오픈소스 공학용 툴들의 특징으로 할 만한게
파이썬으로 일부가 코딩되거나, 또는 자체 콘솔에 파이썬 기반으로 제공되는게 많더라....
파이썬 배워놓으면 리눅스에서 공돌이 노릇 하기 정말 좋겠구나...
대충 이런 느낌이에요.

이런 툴들을 제대로 익숙하게 다루려면
상당한 노력이 들어가게 되는데, 대신 적응만 잘 하면 
강력한 엔지니어로서의 무기를 갖게 되므로
다른 동료들과 비교해서 우월감(?)을 쩔어주게 만끽할 수 있을 것 같습니다.

댓글 없음:

댓글 쓰기