Paraview looks like VESTA

Paraview
VESTA: Visualization for Electronic and STructural Analysis

Atomic Structure Analysis

  • 원자 구조를 분석할 때 저는 paraview를 사용합니다.

  • 다른 분들은 분야 표준인 VESTA를 선호하시지만, 저는 제가 추출한 구조데이터를 table 형태로 함께 봐야 하기 때문입니다.

    원소별 색상(왼쪽), 표면원자 여부(오른쪽)

  • 간혹 제 코드가 똑바로 돌았나 미심쩍을 때도 있습니다.

  • 그럴 때는 VESTA를 옆에 함께 켜놓고 빙글빙글 돌리며 봅니다.

    VESTA (왼쪽), paraview (가운데, 오른쪽)

  • VESTA 화면과 paraview 화면을 1:1로 비교해야 하는 상황에서, 같은 원자가 다른 색상으로 표시되거나 다른 원자가 같은 색상으로 표시되면 참 혼란스럽습니다.

  • 한두개면 그나마 괜찮을텐데 이런 구조를 한번에 70여개씩 비교하다보니 집중력 손실이 큽니다.

  • 데이터가 10개 남짓일 때는 원소별 색상을 일일이 맞추다가 30개가 넘어서니 안되겠다 싶었습니다.

VESTA to Paraview

(1) Element Color

  • Paraview의 color map은 json 형식을 사용합니다.
  • VESTA 파일 정보로부터 원소명과 RGB 색상을 읽어옵니다.
  • 그리고 인터넷에서 원소기호:원소명 테이블을 읽어 붙입니다.
  • Paraview colormap 형식으로 저장합니다.
  • Paraview의 Choose Preset… 메뉴에서 저장한 컬러맵을 불러와 사용합니다


(2) Element Size

  • VESTA의 원소별 정보를 분석프로그램에서 pandas.DataFrame형식으로 가지고 있다가, 데이터 저장시 원소에 맞는 크기(atomic Radius)를 넣어줍니다.

  • dictpandas.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에서 GlyphScale ArrayR_Atomic(A), Scale Factor를 1로 설정합니다.

  • Scale Factor는 상황에 따라 변경해도 좋습니다.


  • 원소별 색상과 크기가 모두 지정되면, 다음과 같은 그림들을 표현할 수 있습니다.


  • VESTA보다 입체감이 더 잘 드러나는 것 같기도 합니다.

  • 그림에 힘을 주고 싶을 땐 Ray Tracing을 켜서 그림자를 드리웁니다.



도움이 되셨나요? 카페인을 투입하시면 다음 포스팅으로 변환됩니다

Share