Velocity Verlet Python

Mô phỏng quỹ đạo của các nguyên tử Argon trong hộp sử dụng Tiềm năng Lennard Jones để mô hình hóa tương tác giữa các hạt và thuật toán Velocity Verlet để giải các phương trình chuyển động

phân tử-động lực học-mô phỏng vận tốc-verlet

  • Cập nhật27 tháng 4 năm 2021
  • con trăn

R-Van-Laer / Sự sụp đổ của Electron cổ điển

Sao 1

  • Mã số
  • Vấn đề
  • Yêu cầu kéo

Đồ án mô phỏng C++ chuyển động của electron trong điều kiện Thu gọn cổ điển do bức xạ lý thuyết

vật lý mô phỏng vật lý mô phỏng quỹ đạo vật lý cổ điển vận tốc-verlet runge-kutta-4 cơ học cổ điển tích hợp verlet

#. /usr/bin/python #coding. utf8 # Bộ tích hợp Velocity Verlet def Verlet[r, v, dt, a]. """Trả lại vị trí và vận tốc mới từ các giá trị hiện tại, bước thời gian và gia tốc. Thông số. r là một mảng có nhiều ô cho vectơ vị trí hiện tại v là một mảng có nhiều ô cho vectơ vận tốc hiện tại dt là một giá trị float cho biết độ dài của bước thời gian tích phân a là một hàm lấy x làm tham số và trả về vectơ gia tốc dưới dạng một . """ # Có vẻ đơn giản [đọc về Velocity Verlet trên wikipedia] r_new = r + v*dt + a[r]*dt**2/2 v_new = v + [a[r] + a[r_new]]/2 . # Nhập các thư viện cần thiết từ numpy. định mức nhập linalg từ mảng nhập numpy, số không # Xác định hàm tăng tốc # Đầu tiên là một số hằng số tự nhiên G = 6. 673e-11 # Hằng số hấp dẫn MGsun = 1. 98e30 * G # Khối lượng của mặt trời sun = array[[0, 0, 0]] # Đặt mặt trời tại gốc # Khi đó hàm tự def a[r]. # Đây chỉ là lực hấp dẫn của mặt trời trên một đơn vị khối lượng. Asun = -MGsun * r /norm[r]**3 return Asun # Đặt giá trị bắt đầu cho vị trí và vận tốc r = mảng[[1. 49e11, 0, 0]] v = mảng[[0, 29. 783e3, 0]] # Chúng tôi hiện đang chạy mô phỏng 180 ngày với 20000 dấu thời gian T = 86400*180 # thời gian mô phỏng tính bằng giây N = 20000 # bước thời gian tích hợp M = 500 # lưu vị trí mỗi M dấu thời gian dt = T*1. 0 / [N] # tính độ dài dấu thời gian tính bằng giây # Danh sách lưu trữ vị trí và vận tốc Rlist = zeros[[3,N/M]] Vlist = zeros[[3,N/M]] # Đặt giá trị ban đầu vào . ,0] = r Vlist[. ,0] = v # Chạy bản in mô phỏng "Tích phân %d giây với bước thời gian dt = %f giây. " %[T,dt] print "Tổng số bước. ", N print "Lưu vị trí mỗi %d bước. " % [M] in "Bắt đầu. " cho tôi trong phạm vi[N/M]. # Chạy cho M bước trước khi lưu giá trị cho j trong phạm vi[M]. # Cập nhật vị trí và vận tốc dựa trên vị trí hiện tại # và hàm gia tốc r, v = Verlet[r, v, dt, a] # Lưu giá trị vào danh sách Rlist[. , i] = r Vlist[. , i] = v print "Dừng. " # Vẽ kết quả từ matplotlib nhập pyplot dưới dạng biểu đồ cốt truyện. title["%d seconds, $dt=%f$, lấy mẫu mỗi %. 2f giây" % [T, dt, M*dt]] # Đặt biểu đồ trục bằng nhau. axis['equal'] # Vẽ biểu đồ trục x và y. biểu đồ axhline[color="black"]. axvline[color="black"] # Vẽ mặt trời dưới dạng đồ thị. scatter[sun[0], sun[1], 400, c=["y"]] # Vẽ quỹ đạo dưới dạng biểu đồ đường. cốt truyện [Rlist[0,. ], Danh sách [1,. ], "-"] kịch bản. chỉ[]

Velocity_verlet, một mã Python sử dụng một phiên bản của phương thức Velocity Verlet để giải phương trình vi phân thông thường bậc hai [ODE] có dạng y''=f[t,y]

cấp phép

Các tệp dữ liệu và mã máy tính được mô tả và cung cấp trên trang web này được phân phối theo giấy phép GNU LGPL

ngôn ngữ

speed_verlet có sẵn trong phiên bản MATLAB và phiên bản Python

Dữ liệu và chương trình liên quan

backward_euler, một mã Python giải một hoặc nhiều phương trình vi phân thông thường [ODE] bằng phương pháp Euler lùi

backward_euler_fixed, một mã Python giải một hoặc nhiều phương trình vi phân thông thường [ODE] bằng cách sử dụng phương pháp Euler lùi [ngầm], sử dụng phép lặp điểm cố định cho phương trình ngầm

bdf2, mã Python giải một hoặc nhiều phương trình vi phân thường [ODE] bằng cách sử dụng BDF2, công thức sai phân ngược [ngầm] bậc 2, sử dụng fsolve[] để giải phương trình ngầm

euler, một mã Python giải một hoặc nhiều phương trình vi phân thông thường [ODE] bằng phương pháp Euler

đi tắt đón đầu, một mã Python sử dụng phương pháp đi tắt đón đầu để giải phương trình vi phân thường cấp hai [ODE] có dạng y''=f[t,y]

điểm giữa, mã Python giải một hoặc nhiều phương trình vi phân thông thường [ODE] bằng phương pháp điểm giữa [ngầm]

midpoint_adaptive, mã Python giải một hoặc nhiều phương trình vi phân thông thường [ODE] bằng cách sử dụng phương pháp điểm giữa [ngầm], dựa vào fsolve[] để giải phương trình ngầm và sử dụng dấu thời gian thích ứng

midpoint_explicit, mã Python giải một hoặc nhiều phương trình vi phân thông thường [ODE] bằng cách sử dụng phương pháp điểm giữa [rõ ràng], còn được gọi là phương pháp Euler đã sửa đổi

midpoint_fixed, một mã Python giải một hoặc nhiều phương trình vi phân thông thường [ODE] bằng phương pháp điểm giữa [ẩn], sử dụng phép lặp điểm cố định đơn giản để giải phương trình ẩn

rk12, một mã Python triển khai bộ giải Runge-Kutta bậc 1 và bậc 2 cho hệ phương trình vi phân thường [ODE]

rk4, một mã Python áp dụng thuật toán Runge-Kutta [RK] bậc 4 để ước tính nghiệm của phương trình vi phân thường [ODE]

rkf45, một mã Python triển khai bộ giải Runge-Kutta-Fehlberg ODE

hình thang, một mã Python giải một hoặc nhiều phương trình vi phân thông thường [ODE] bằng phương pháp hình thang [ẩn]

trapezoidal_explicit, mã Python giải một hoặc nhiều phương trình vi phân thông thường [ODE] bằng phương pháp hình thang [rõ ràng]

trapezoidal_fixed, một mã Python giải một hoặc nhiều phương trình vi phân thông thường [ODE] bằng phương pháp hình thang [ẩn], sử dụng phương pháp điểm cố định để xử lý hệ ẩn

vận tốc verlet là gì?

Velocity Verlet . similar to the leapfrog method, except that the velocity and position are calculated at the same value of the time variable [leapfrog does not, as the name suggests].

Thuật toán verlet có phải là thuật toán tự bắt đầu không?

Ưu điểm của nó là nói chung thực hiện tốt hơn công việc duy trì bảo tồn năng lượng. Tuy nhiên, thuật toán Beeman không tự khởi động

Chủ Đề