Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
447,41 KB
Nội dung
Mơ mơ hình hóa Trịnh Xn Hồng Viện Vật lý 10 Đào Tấn, Ba Đình, Hà Nội Bài 1: Giới thiệu Under construction ● Sách tham khảo: – Computer simulations of liquids, Allen & Tildesley, Oxford University Press (1991) – Understanding molecular simulations, Frenkel & Smit, Academic Press (2002) – Numerical Recipes in Fortran 90 ● http://www.nrbook.com/ Một số khái niệm ● ● ● Mô máy tính: dùng phần mềm thiết lập tình giả định (một q trình, trạng thái) máy tính thơng qua mơ hình Mơ hình: cách mơ tả tốn học hệ vật lý Một hệ nghiên cứu nhiều mơ hình khác nhau, cho phù hợp với toán đặt phương pháp giải tốn Mơ máy tính ứng dụng rộng rãi: – mơ động lực học chất lỏng – mô vật liệu – mơ thí nghiệm vật lý hạt – mô phản ứng hạt nhân – mô phản ứng hóa học – mơ hệ phân tử sinh học: protein, ADN, ARN, màng tế bào – mô hệ sinh thái: mạng thức ăn (food web), ứng xử bầy đàn (bird flocking, fish schooling) ● Vai trị mơ phỏng: – kiểm chứng lý thuyết, tiên đoán thực nghiệm Nhanh rẻ so với làm thí nghiệm – nghiên cứu: tìm hiểu chế vi mơ tượng, tính tốn tính chất vật liệu, khảo sát chuyển pha – ứng dụng công nghệ: thiết kế vật liệu mới, thiết kế linh kiện điện tử, thiết kế thuốc chữa bệnh ● ● Phân loại mơ máy tính: – Tất định (deterministic) vs ngẫu nhiên (stochastic) Chú ý: tất định bao gồm hỗn loạn (chaotic) – Cổ điển vs lượng tử Một số phương pháp mơ máy tính: – Động lực học phân tử (Molecular Dynamics hay MD): giải phương trình chuyển động cổ điển, p/p tất định – Monte Carlo (MC): lấy mẫu theo phương pháp ngẫu nhiên – Mô từ nguyên lý ban đầu (ab initio simulation): sử dụng học lượng tử – Hybrid QM/MM Một số phương pháp mô ● ● ● ● Monte Carlo: phát minh von Neumann, Ulam Metropolis (phịng thí nghiệm Los Alamos) vào 1940s Molecular Dynamics: Alder & Wainwright (phịng thí nghiệm Lawrence Livermore) cuối 1950s Ab initio methods using DFT: Car-Parrinello 1985 QM/MM: quantum mechanics/molecular mechanics Máy tính điện tử ● Ý tưởng: Turing machine (Alan Turing 1936) ● Máy tính điện tử sử dụng bóng chân khơng: 1940s ● 1947: phát minh transitor bán dẫn ● ● Định luật Moore (1965): trung bình sau 18 tháng tốc độ CPU tăng gấp đơi Chíp bán dẫn nay: kích thước transistor đạt 14 nm (gần ngưỡng), xung nhịp 4.4 Ghz Máy tính song song ● ● Máy siêu tính: nhiều máy tính kết nối mạng tốc độ cao, đạt tốc độ tính tốn cỡ 1015 phép tính số thực giây (peta-FLOPS, PFLOPS) Vi xử lý đa nhân (multi-core processors): – Intel Xeon E7: 15 cores – AMD Opteron 6000 Series: 16 cores – Intel Xeon Phi: 60 cores ● GPU computing: tính tốn card đồ họa ● Giao thức phần mềm cho tính tốn song song: – MPI: message passing interface – CUDA: thư viện cho GPU ● Mơ hình chuỗi hạt: H =∑ i pi2 K N + ∑ (r i−1 , i −b) + ∑ V (r ij ) m i=2 i< j động điều hòa tương tác cặp ● Mơ hình Kratky-Porod (worm-like chain) N N E=−κ ∑ ⃗t i−1⋅⃗t i =−κ ∑ cos θi i=2 i=2 độ cứng κ>0 ⃗t i |⃗t i|=1 ⟨ ⃗t i⋅⃗t j ⟩=e ξ= κb k BT −b|i− j| ξ persistence length ● Mơ hình Ising Hệ spin mạng chiều chiều H =−∑ J ij si s j −μ H ∑ si ⟨ij ⟩ tương tác cặp lân cận gần i tương tác với từ trường H0 s=±1 Jij - lượng trao đổi spin J > sắt từ (ferromagnet) J < phản sắt từ (anti-ferromagnet) Tổng số trạng thái hệ: N Mơ hình Ising chiều có lời giải xác: L Onsager (1944) Sai số mô ● ● Sai số tính tốn: – Sai số làm trịn: dùng biến với độ xác kép (double precision) để giảm sai số làm tròn – Sai số ngẫu nhiên: khơng tránh được, giảm tăng thời gian mô – Sai số hệ thống: thuật toán sai, cần sửa lại Hiệu ứng kích thước hữu hạn: hệ mơ thường nhỏ nhiều so với hệ thực tế, tính chất có thay đổi Sai số làm trịn Biểu diễn số thực máy tính: Biểu diễn single precision: Độ xác biểu diễn số thực máy tính ● ● Single precision: 32 bit – sign: bit, exponent: bit, significand: 23 bit – độ xác đạt 10-7 Double precision: 64 bit – sign: bit, exponent: 11 bit, significand: 52 bit – độ xác đạt 10-15 Hệ điều hành ● ● ● Windows: mã nguồn đóng, nhiều người sử dụng nhất, thiếu ổn định, đắt tiền Mac OSX: mã nguồn đóng, thân thiện ổn định, chạy máy Mac Linux: mã nguồn mở, thân thiện, chạy nhiều phần cứng khác nhau: từ điện thoại di động (Android), laptop, máy để bàn, máy chủ siêu máy tính mạnh – phiên Linux thông dụng nhất: Ubuntu, RedHat/Fedora, Mandriva Một số câu lệnh Linux ● Sử dụng môi trường terminal pwd hiển thị thư mục ls liệt kê nội dung thư mục ls -l liệt kê theo format dài (long) mkdir name tạo thư mục cd dir vào thư mục cd thoát khỏi thư mục cp file newfile copy file to new file rm file xóa file rm -rf dir xóa thư mục mv file newfile đổi tên file more file xem nội dung file vi file edit file man cmd hướng dẫn sử dụng câu lệnh cmd Các chương trình edit file: – vi dùng terminal, gọn nhẹ – vim vi improved – pico có menu – gedit – emacs Các chương trình vẽ đồ thị: – gnuplot, xmgrace Các chương trình xử lý file text, liệu: – awk, grep, head, tail ● Editor vi, vim: vim filename i vào insert mode Esc thoát khỏi insert mode /string search for string dd xóa dịng v Ctrl+v visual selection block selection y copy p paste :wq write to file and quit :q! quit without saving Ngôn ngữ Fortran 90 ● ● ● ● Là ngơn ngữ lập trình bậc thấp, thường sử dụng tính tốn hiệu cao Được cải tiến từ Fortran 77 Ưu điểm: đơn giản, dễ sử dụng, tính tốn nhanh Trình biên dịch: – GNU Fortran: gfortran – Intel Fortran: ifort Fortran 90 ● Dịch chương trình: gfortran myprog.f90 -o myprog -O2 ifort myprog.f90 -o myprog -O2 ● Chạy chương trình: /myprog ● Cấu trúc chương trình ● Khai báo biến ● Điều kiện, vịng lặp ● Đọc in liệu ● Tạo số giả ngẫu nhiên (pseudo-random number) program myprog implicit none integer :: i real :: x,y,f call mysub i=1,10 x=i y=i*2 print *,f(x,y) enddo call mysub contains subroutine mysub print *, “Hello” end subroutine mysub function f(x,y) real :: f,x,y f=x*x+y*y end function f end program myprog ● Chương trình tính số pi phương pháp Monte Carlo program tinhpi real :: x,y,r integer :: i,n,ntotal,k=1 integer, dimension(1) :: seed n=0 ntotal=1000000000 call random_seed call random_seed(size=k) call random_seed(put=seed(1:k)) i=1,ntotal call random_number(x) call random_number(y) r=sqrt(x*x+y*y) If(r < 1.0) then n=n+1 endif if(mod(i,100000000) == 0) then print *,i,float(n)/i*4 endif enddo end program tinhpi