Paraview
VESTA: Visualization for Electronic and STructural Analysis
Atomic Structure Analysis
원자 구조를 분석할 때 저는 paraview를 사용합니다.
다른 분들은 분야 표준인 VESTA를 선호하시지만, 저는 제가 추출한 구조데이터를 table 형태로 함께 봐야 하기 때문입니다.
간혹 제 코드가 똑바로 돌았나 미심쩍을 때도 있습니다.
그럴 때는 VESTA를 옆에 함께 켜놓고 빙글빙글 돌리며 봅니다.
VESTA 화면과 paraview 화면을 1:1로 비교해야 하는 상황에서, 같은 원자가 다른 색상으로 표시되거나 다른 원자가 같은 색상으로 표시되면 참 혼란스럽습니다.
한두개면 그나마 괜찮을텐데 이런 구조를 한번에 70여개씩 비교하다보니 집중력 손실이 큽니다.
데이터가 10개 남짓일 때는 원소별 색상을 일일이 맞추다가 30개가 넘어서니 안되겠다 싶었습니다.
VESTA to Paraview
- VESTA의 원소별 정보는 element.ini에 다음과 같이 들어있습니다.
- 이 데이터를 읽어서 .csv 형태로 저장합니다.
(1) Element Color
- Paraview의 color map은
json
형식을 사용합니다. - VESTA 파일 정보로부터 원소명과 RGB 색상을 읽어옵니다.
- 그리고 인터넷에서 원소기호:원소명 테이블을 읽어 붙입니다.
- Paraview colormap 형식으로 저장합니다.
- Paraview의 Choose Preset… 메뉴에서 저장한 컬러맵을 불러와 사용합니다
(2) Element Size
VESTA의 원소별 정보를 분석프로그램에서
pandas.DataFrame
형식으로 가지고 있다가, 데이터 저장시 원소에 맞는 크기(atomic Radius)를 넣어줍니다.dict
와pandas.DataFrame.apply()
를 사용해서 간단하게 작업합니다.1
2
3
4
5
6
7# insert atomic Radius
df_elm = pd.read_csv("VESTA_elements.csv")
mats = df_elm["mat"].tolist()
r_atomic = df_elm["R_atomic(A)"].tolist()
mats_r = dict(zip(mats, r_atomic))
POSCAR.data["R_atomic(A)"] = POSCAR.data["mat_org"].apply(lambda x: mats_r[x])그리고 Paraview에서 Glyph의 Scale Array를
R_Atomic(A)
, Scale Factor를 1로 설정합니다.Scale Factor는 상황에 따라 변경해도 좋습니다.
원소별 색상과 크기가 모두 지정되면, 다음과 같은 그림들을 표현할 수 있습니다.
VESTA보다 입체감이 더 잘 드러나는 것 같기도 합니다.
그림에 힘을 주고 싶을 땐 Ray Tracing을 켜서 그림자를 드리웁니다.