정보통신기술(ICT)

반데르발스 헤테르구조(Vanderwaals Heterostructures)

해머슴 2024. 11. 6. 11:24
import tkinter as tk
from tkinter import ttk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np

# Van der Waals 힘을 계산하는 함수 정의
def van_der_waals_force(distance, a=1.0, b=0.5):
    # 간단한 반데르발스 힘 모델로 r^6 관계를 기반으로 계산
    return -a / (distance**6) + b / (distance**12)

# 그래프를 업데이트하는 함수 정의
def update_graph():
    try:
        input_value = float(entry.get())
        if input_value <= 0:
            result_label.config(text="양수의 거리를 입력해주세요.")
            return
       
        distances = np.linspace(0.5, input_value, 100)
        forces = van_der_waals_force(distances)

        ax.clear()
        ax.plot(distances, forces, label="Van der Waals Force")
        ax.set_xlabel("Distance")
        ax.set_ylabel("Force")
        ax.set_title("Van der Waals Heterostructure Force Graph")
        ax.legend()
        canvas.draw()
       
        result_label.config(text="그래프가 업데이트되었습니다.")
       
    except ValueError:
        result_label.config(text="숫자를 올바르게 입력해주세요.")

# Tkinter 윈도우 생성
root = tk.Tk()
root.title("Van der Waals Heterostructure Visualizer")

# 입력창과 버튼 생성
frame = ttk.Frame(root, padding="10")
frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))

label = ttk.Label(frame, text="거리 범위 입력 (예: 10):")
label.grid(row=0, column=0, sticky=tk.W)

entry = ttk.Entry(frame)
entry.grid(row=0, column=1, sticky=(tk.W, tk.E))

button = ttk.Button(frame, text="그래프 업데이트", command=update_graph)
button.grid(row=0, column=2, sticky=tk.W)

result_label = ttk.Label(frame, text="")
result_label.grid(row=1, column=0, columnspan=3)

# Matplotlib 그래프 설정
fig, ax = plt.subplots()
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.get_tk_widget().grid(row=1, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))

# 윈도우 크기 설정
root.columnconfigure(0, weight=1)
root.rowconfigure(1, weight=1)
frame.columnconfigure(1, weight=1)

# GUI 루프 시작
root.mainloop()

 

 

https://www.tistory.com/event/write-challenge-2024

 

작심삼주 오블완 챌린지

오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.

www.tistory.com