1. Trang chủ
  2. » Luận Văn - Báo Cáo

BÁO CÁO BÀI TẬP LỚN MÔN PHƯƠNG PHÁP MONTE CARLO ỨNG DỤNG TRONG KỸ THUẬT HẠT NHÂN

32 12 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo Cáo Bài Tập Lớn Môn Phương Pháp Monte Carlo Ứng Dụng Trong Kỹ Thuật Hạt Nhân
Tác giả Nhóm 3 Sinh Viên
Người hướng dẫn ThS. Trương Minh Anh
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Vật Lý Kỹ Thuật
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2020
Thành phố Hà Nội
Định dạng
Số trang 32
Dung lượng 356,07 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG I. GIẢI THÍCH CÁC VÍ DỤ 3.2, 3.3 và 3.4 (0)
    • 1.1. Giải thích ví dụ 3.2 tự làm yếu trong nguồn tia gamma hình cầu (5)
      • 1.1.1. Các phương trình sử dụng để giải toán trong ví dụ này (5)
      • 1.1.2. Lý thuyết để giải bài toán (5)
      • 1.1.3. Giải thích chương trình fortran để giải bài toán ví dụ 3.2 (7)
      • 1.1.4. Thay số liệu vào chương trình và kết quả (10)
    • 1.2. Giải thích ví dụ 3.3 Dòng notron đi vào lớp che chắn dạng bản phẳng (10)
      • 1.2.1. Các phương trình sử dụng giải bài toán ví dụ 3.3 (10)
      • 1.2.2. Lý thuyết để giải bài toán (11)
      • 1.2.3. Giải thích chương trình fortran để giải bài toán ví dụ 3.3 (13)
      • 1.2.4. Thay số liệu vào chương trình và kết quả chạy chương trình (18)
    • 1.3. Giải thích ví dụ 3.4 khoảng cách trung bình đến va chạm tiếp theo (18)
      • 1.3.1. Các phương trình sử dụng trong bài toán này (18)
      • 1.3.2. Lý thuyết để giải bài toán này (19)
      • 1.3.3. Giải thích chương trình fortran để giải bài toán ví dụ 3.4 (20)
      • 1.3.4. Thay số liệu vào chương trình và kết quả chạy chương trình (22)
  • CHƯƠNG II. MỘT SỐ CHƯƠNG TRÌNH CON VÀ HÀM TÍNH TOÁN ĐƯỢC ĐỂ CẬP TRONG CÁC VÍ DỤ (23)
  • CHƯƠNG III. CHƯƠNG TRÌNH HOÀN THIỆN (25)
    • 3.1. Chương trình giải bài toán ví dụ 3.2 (25)
    • 3.2. Chương trình giải bài toán ví dụ 3.3 (27)
    • 3.3. Chương trình giải bài toán ví dụ 3.4 (30)

Nội dung

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN VẬT LÝ KỸ THUẬT BÁO CÁO BÀI TẬP LỚN MÔN PHƯƠNG PHÁP MONTE CARLO ỨNG DỤNG TRONG KỸ THUẬT HẠT NHÂN GIÁO VIÊN HƯỚNG DẪN ThS TRƯƠNG MINH ANH NHÓM 3 SINH VIÊN THỰC HIỆN.

GIẢI THÍCH CÁC VÍ DỤ 3.2, 3.3 và 3.4

Giải thích ví dụ 3.2 tự làm yếu trong nguồn tia gamma hình cầu

1.1.1 Các phương trình sử dụng để giải toán trong ví dụ này.

Phương trình 2.14, quãng chạy của hạt đến khi va trạm: x=− 1 Σ t ln ⁡ (ξ) (2.14)

Phân bố vị trí x trong khoảng (0;+ ∞ ), trong đó ξ giữa khảng 0 và 1 Phương trình 2.18, bán kính của R của 1 hình cầu trong số ngẫu nhiên ξ

R =√ 3 ξ (2.18) ξ : số ngẫu nhiên nằm trong khoảng 0 và 1 Phương trình 3.16: r =r O + sΩ (3.16) r: vị trí sau va trạm rO: vị trí trước va trạm Ω : Hướng

1.1.2 Lý thuyết để giải bài toán

Một bài toán thực tế trong vận chuyển tia gamma là tự che chắn của nguồn bức xạ gamma có phân bố thể tích Vấn đề chính là xác định phần bức xạ gamma sinh ra từ sự phân rã phóng xạ trong nguồn mà không va chạm Các tia gamma tương tác với vật liệu nguồn sẽ thay đổi năng lượng, do đó, số tia gamma không va chạm thoát ra là rất quan trọng Điều này ảnh hưởng đến cường độ tương đối của tia gamma với các năng lượng khác nhau, hiệu suất tuyệt đối của detector, và hoạt độ tổng cộng của nguồn.

Theo nghiên cứu của de Hoffmann và Plazek, đối với nguồn cầu đồng vị đồng nhất có bán kính R và hệ số làm yếu gamma (hay tiết diện vĩ mô tổng cộng) là μ cm –1, tỷ số giữa số gamma thoát ra không va chạm và tổng số gamma sinh ra trong vật liệu nguồn được xác định.

Kỹ thuật Monte Carlo có thể chứng minh kết quả thông qua mô hình hóa chất hấp thụ nghèo, với các hạt khởi đầu được phân bố đều trong thể tích cầu Phương trình 2.18 giúp đánh giá việc chọn bán kính r trong thể tích cầu Hướng phát ra bức xạ gamma là ngẫu nhiên, tương tự như mô hình tán xạ đẳng hướng trong phòng thí nghiệm được trình bày trong ví dụ 3.1.

Chúng ta sẽ sử dụng một đoạn code từ ví dụ trước để xây dựng chương trình xác định tỷ lệ J/J0 Để tính số lượng tia gamma thoát ra khỏi thể tích nguồn không va chạm, cần ghi nhận tất cả các bước ngẫu nhiên dẫn đến điểm va chạm bên ngoài thể tích nguồn Đối với một gamma nguồn với hướng ban đầu ngẫu nhiên tại điểm r0, quãng bay được xác định bởi phương trình 2.14 Điểm va chạm ảo r có thể tìm được từ phương trình 3.16, trong đó s là khoảng cách va chạm, r là vị trí sau va chạm, r0 là vị trí trước va chạm, và Ω là hướng Nếu bán kính quả cầu R nhỏ hơn |r|, hạt sẽ thoát ra ngoài mà không va chạm; ngược lại, hạt sẽ tương tác với vật liệu nguồn.

Do tính đối xứng, vị trí của hạt khởi đầu trên bề mặt quả cầu có bán kính r có thể là mọi điểm trên bề mặt đó Để thuận tiện, chúng ta chọn gốc tọa độ tại tâm của nguồn hình cầu và khởi đầu mọi hạt theo trục +Z Khi chọn vị trí khởi đầu, cần lựa chọn hướng khởi đầu ngẫu nhiên Sử dụng phương pháp trong Ví dụ 3.1, chúng ta có thể thu nhận cosine hướng của một vector ngẫu nhiên tại điểm z trên trục Z Do tính đối xứng, góc phương vị cần được chọn một cách không ngẫu nhiên, và chúng ta chọn góc phương vị φ = 0 Như vậy, việc chọn hướng khởi đầu ngẫu nhiên được đơn giản hóa thành việc tính toán vector.

V=0W=cos θ Trong đó θ là góc độc cực của vết đường bay (xem hình 1.1).

Hình 1 1 Tọa độ theo cosin

1.1.3 Giải thích chương trình fortran để giải bài toán ví dụ 3.2

Bảng 3.4 trình bày chương trình tính toán sự suy giảm gamma, nhằm xác định xem hạt đã thoát ra khỏi nguồn hình cầu hay chưa Chương trình thực hiện việc so sánh vị trí va chạm của hạt với bán kính của nguồn thông qua một vòng lặp, sau đó tính xác suất hạt thoát ra ngoài.

! Code được giải thích viết sau dấu chấm than ‘!’.

! Tự che chắn của một nguồn hình cầu

! Kích thước theo đơn vị đường dẫn tự do trung bình

! NMAX= Số hạt bắt đầu

! Khai báo fltrn là số thực độ chính xác kép kiểu thực

WRITE(*,*) !In ra màn hình, cách xuống 1 dòng

New_case_Loop: DO !Vòng lặp chấm dứt nếu NMAX=0

WRITE(*,’(lX,A\)’)’ Enter number of start particles’

! In ’ Enter number of start particles’ ra màn hình, cho người chạy code biết vị trí nhập số là gì

! Nhập NMAX là số lượng hạt

IF ( NMAX.LE.0) EXIT New_case_Loop

! Nếu NMAX nhỏ hơn hoặc bằng 0 thì vòng lặp New_case_Loop kết thúc

WRITE(*, ‘(1x,a\)’) ‘ Enter sphere radius in mfp’

!In ra màn hình ‘ Enter sphere radius in mfp’, là ‘Nhập bán kính hình cầu trong mfp’

!Nhập r là bán kín của hình cầu rsq là bình phương bán kính r.

WRITE(*,’(1X,A\)’) ‘Enter start random number seed’

!In ra màn hình ‘Enter start random number seed’, ‘ nhập số hạt giống cho số ngẫu nhiên bắt đầu’

!Nhập ISEED là hạt giống số ngẫu nhiên

!Gọi chương trình con rndin, để đặt số ngẫu nhiên bắt đầu nr=0

!Gán giá trị mặc định nr=0, tránh lỗi khi chạy code

! Vòng lặp DO 300, Bắt đầu theo dõi hạt - vòng lặp trên các hạt từ 1 đến NMAX z= r*fltrn()**0.33333333

!Chọn đồng đều từ hình cầu Đây là biểu thức thu được bán kính hình cầu từ một số ngẫu nhiên tính theo phương trình (2.18) : r =√ 3 ξ ,

! Hàm fltrn() là ξ là số ngẫu nhiên nằm trong khoảng (0,1) costh = 2.*fltrn() -1

! Thành phần theo trục z ( Hàm fltrn() nằm [ 0;1] thì costh nằm trong khoảng [-1;1] ) sinth = SQRT(1 -costh*costh)

! cos 2 θ + sin 2 θ =1 nên sin θ = √ 1 – cos 2 θ d = -DLOG(fltrn())

Hàm log cơ số 10 của số thực được tính bằng công thức \( zc = z + d \cdot \cos(\theta) \) Khoảng cách va chạm theo trục z được xác định là \( xc = d \cdot \sin(\theta) \), trong khi khoảng cách va chạm vuông góc với trục z được tính bằng \( rcsq = xc^2 + zc^2 \) Nếu bình phương bán kính điểm đến va chạm lớn hơn bình phương bán kính hiện tại, thì số lượng va chạm \( nr \) sẽ được tăng thêm 1.

! rcsq là bình phương khoảng cách từ tâm nguồn hình cầu đến điểm va chạm,

Bình phương bán kính quả cầu được ký hiệu là \$rsq\$ Nếu giá trị \$rcsq\$ lớn hơn \$rsq\$, điều này có nghĩa là điểm va chạm của hạt đã nằm ngoài bán kính nguồn hoặc hạt đã rời khỏi nguồn hình cầu.

!Khi đó , đếm hạt nr thêm 1

Prob = FLOAT(nr)/FLOAT(nmax) ! Tính xác suất hạt thoát ra dự kiến

StDev = SQRT(prob-prob**2)/SQRT(FLOAT(nmax))

! Độ lệch chuẩn so với phương trình để ước tính giá trị trung bình của phân phối nhị thức, công thức được chứng minh ở phần bài 3.3

!Ở dòng code trên WRITE(0,13) sử dụng là sai

!Do không có khai báo nào vị trí 0 của file để ghi vào

!Nên sử dụng WRITE(*,13) thì khi chạy chương trình code mới hoạt động được

13 FORMAT(‘ Particles escaping =’,I9,’,probability of escape =’,f11.4,&

!I9 : in số nguyên có độ rộng trường là 9, vị trí in nr

!f11.4 : In số thực có độ rộng trường là 11 lấy 4 chữ số sau dấu phẩy, vị trí in prob

!f12.5: In số thực có độ rộng trường là 12 lấy 5 số sau dấu phẩy, vị trí in StDev

END DO New_Case_Loop

1.1.4 Thay số liệu vào chương trình và kết quả

Chương trình Fortran được trình bày trong Bảng 3.4 cho phép tính toán tỷ lệ J/J0, cho phép người dùng thiết lập bán kính vùng nguồn μR theo mfp, số hạt khởi đầu và số ngẫu nhiên gieo Sử dụng 10^6 hạt khởi đầu với bán kính nguồn đã chọn và seed=1, xác suất các hạt nguồn thoát ra được liệt kê trong Bảng 3.5 Kết quả thu được so sánh với phương trình 3.37 và cho thấy sự phù hợp tuyệt vời.

Hình 1 2 Kết quả ví dụ bài 3.2 khi chạy chương trình

Bảng 1 1 Tỷ số bức xạ gamma thoát ra từ nguồn tự chắn Bán kính nguồn (mfp) Monte Carlo Phương trình 3.37

Giải thích ví dụ 3.3 Dòng notron đi vào lớp che chắn dạng bản phẳng

1.2.1 Các phương trình sử dụng giải bài toán ví dụ 3.3 Đầu tiên cần tìm độ lệch chuẩn cho một giá trị của phân phối nhị thức:

Một phân phối nhị thức được xác định bởi số lần ghi điểm của một sự kiện nhị thức, trong đó kết quả chỉ có thể là có hoặc không, tức là số điểm ghi có thể là 1 hoặc 0 Phương sai của số điểm ghi E(V) được tính dựa trên xác suất ghi điểm là 1 Nếu nt là tổng số sự kiện được ghi điểm, trong đó n1 là số sự kiện ghi được 1 điểm và nt - n1 là số sự kiện ghi được 0 điểm, thì xác suất để ghi được 1 điểm được tính bằng công thức: \[p = \frac{n_1}{n_t}\]

Bởi vì mọi điểm khác không đều bằng 1, nên bình phương của mọi điểm khác không cũng bằng 1 Vì thế:

Mà ta có phương sai được tính là :

Phương sai giá trị trung bình của một tính toán Monte Carlo cho một phân phối nhị phân phối nhị thức:

Mã trong bảng 3.4 được sử dụng để ước tính độ lệch chuẩn bằng cách áp dụng căn bậc 2 của biểu thức đã nêu Trong khi đó, bảng mã 3.8 cung cấp đầu ra chi tiết về số lượng hạt nhập thực tế, bao gồm hạt hấp thụ, hạt phản xạ và hạt xuyên qua, kèm theo độ lệch chuẩn tương ứng cho từng loại hạt.

NA là số hạt hấp thụ và Pa là xác suất hấp thụ Khi thay NS bằng nt, ta có thể xác định độ lệch chuẩn của giá trị trung bình của NA.

Độ lệch chuẩn của số hạt phản xạ NL với xác suất PL và số hạt xuyên qua NR với xác suất PR lần lượt được xác định như sau:

1.2.2 Lý thuyết để giải bài toán

Bài toán đánh giá xác suất các sự cố khi notron đi qua một bản phẳng được khảo sát với giả thiết bản phẳng gồm hai lớp có tiết diện toàn phần bằng nhau Lớp đầu tiên là chất chỉ tán xạ với tiết diện tổng là \(\Sigma_t = \Sigma_s\) và tán xạ đẳng hướng trong hệ tọa độ phòng thí nghiệm, trong khi lớp thứ hai là chất chỉ hấp thụ với \(\Sigma_t = \Sigma_a\) Giả thiết chùm notron là đơn năng, với tiết diện là một hằng số Độ dày của tấm tán xạ là 2 mfp và bề dày tấm hấp thụ là 1 mfp Mục tiêu là tính xác suất notron xuyên qua bản phẳng, bắt đầu bằng việc dự kiến số notron đi xuyên qua lớp mà không va chạm, từ đó xác định xác suất của hạt đi xuyên qua 3 mfp mà không va chạm.

Số notron ban đầu được ký hiệu là N(0) Tuy nhiên, lớp tán xạ có ảnh hưởng đến việc thay đổi hướng của các notron, và một số notron tán xạ có thể xuyên qua bản phẳng, điều này khiến việc xác định trong trường hợp không va chạm trở nên khó khăn.

Chương trình Fortran theo dõi các hạt trong bản phẳng hai lớp, ghi nhận số hạt xuyên qua bản phẳng như được thể hiện trong các chương trình bảng 3.6 và bảng 3.8 Sự di chuyển của hạt sẽ dừng lại khi chúng xuyên qua bản phẳng, bị hấp thụ trong lớp thứ hai, hoặc bị tán xạ ngược ra ngoài lớp thứ nhất Chương trình này duy trì theo dõi kết quả di chuyển của tất cả các hạt, bao gồm phản xạ, hấp thụ và truyền qua, nhằm ghi nhận tất cả các hạt vào và chứng minh sự cân bằng hạt.

Trong nghiên cứu này, chúng ta chỉ tập trung vào trục Z, trục vuông góc với mặt phẳng, mà không cần quan tâm đến vị trí (x,y) của hạt Tán xạ đẳng hướng trong hệ phòng thí nghiệm được xác định để sử dụng trong chương trình con “Isoout” cùng với các chương trình con tính số ngẫu nhiên trước khi thực hiện Để xác định hướng di chuyển sau va chạm, cần lựa chọn góc phương vị tán xạ và góc cực Tuy nhiên, trong bài toán này, mặt phẳng được coi là vô hạn trong các mặt X-Y, do đó chỉ cần chú ý đến góc giữa quãng bay và hướng vuông góc với mặt phẳng, vì góc này quyết định chiều dài quãng bay và vị trí z của hạt.

Chương trình yêu cầu người dùng chỉ định số hạt bắt đầu để theo dõi và thiết lập các giá trị biến cục bộ nhằm ghi nhận kết quả và đếm hạt Tất cả các hạt bắt đầu tại gốc ở z=-z1 với cosine hướng trục Z có độ dày w=+1 Khi hạt rời khỏi va trạm ở z với cosine hướng trục Z có độ dày w và quãng bay λ, va trạm tiếp theo được xác định bởi phương trình 3.16 Chương trình cần xác định vị trí va trạm trong hai vùng hạt thoát ra khỏi bản phẳng bằng cách xác định tọa độ Z của điểm va chạm ở z và thực hiện phép so sánh: nếu z < -z1, hạt sẽ phản xạ.

-z1 < z < 0 => tán xạ trong lớp thứ nhất, vùng 1

0 < z < z2 =>hấp thụ trong lớp thứ hai, vùng 2

Z2 hạt xuyên qua bản phẳng.

1.2.3 Giải thích chương trình fortran để giải bài toán ví dụ 3.3

Bảng 3.6 Chương trình Fortran cho chùm tia song song trên bản phẳng hai lớp

!Giải thích code được viết sau dấu ‘chấm than -!’.

!Các ký hiệu “1*”, “2*”, “3*”, “4*”, “5*” chú thích dòng code để giải thích vòng lặp

!NR = Số hạt xuyên qua lớp (Hướng bên phải)

!NL = Số hạt phản xạ từ lớp (Hướng bên trái)

!NA= Số hạt bị hấp thụ trong lớp.

!A\ :Giữ trên cùng một bản ghi

!Các số “300”,”200” như là một nhãn để lưu vị trí

! DOUBLE PRECISION khai báo cho số thực có độ chính xác kép kiểu thực - ở đây ta khai báo hai biến kiểu số thực là rnd và ftlrn.

COMMON/scoring/NA,NR,NL,NS

Khai báo tên khối dùng chung cho ba bảng 3.6, 3.7 và 3.8 là "scoring", với các biến NR, NL, NA, NS Dòng code này cho phép các bảng cùng sử dụng một tên khối, từ đó các biến trong khối dùng chung sẽ có tác động và tham chiếu lẫn nhau.

! Lần lượt khai báo giá trị cho số PI và hai giá trị của Z1 và Z2 lần lượt là 2

! và 1 với Z1,Z2 là độ dày của lớp tán xạ và lớp hấp thụ.

! Bắt đầu vòng lặp New_Case_Loop

!vòng lặp này sẽ chấm dứt trong chương trình con Input nếu ta nhập NS = 0

! Gọi chương trình con Input

!Nhập dữ liệu đầu vào từ chương trình con và khởi tạo mảng ghi điểm

2* DO 300 N=1,NS ! Thực hiện vòng lặp bắt đầu từ 1 đến NS với NS lấy từ Input.

300 là nhãn của vòng lặp

Đặt vị trí ban đầu theo hướng cosin với các tọa độ U, V, W trên các trục xyz Theo yêu cầu của đề bài, chỉ cần chú ý đến đại lượng W, với giá trị ban đầu là W = 1.

X=0.; Y=0.; Z=-Z1 ! Vị trí hạt ban đầu Đề bài cho vị trí hạt ban đầu là Z=-Z1 ZC=Z ! Gán ZC = Z

3* DO 200 WHILE (ZC.GE.-Z1.AND.ZC.LE.0.0)

!Vòng lặp DO 200 hạt nằm trong vùng tán xạ

! Thoát khỏi vòng lặp DO 200 , khi -Z1> = ZC hoặc ZC Z2 thì hạt đã xuyên qua bản phẳng và đi ra ngoài

!NR sẽ được cộng thêm 1 như dòng code dưới

!ZC không thỏa mãn các điều kiện trên, tức 0 e^{-0.1} Khi đó, quãng bay dừng lại do va chạm và quãng bay mới nhỏ hơn 0.1/ Σ t được xác định Nếu có n số ngẫu nhiên nhỏ hơn 0.9048 được tạo ra trước khi ξ lớn hơn 0.9048, tổng khoảng cách quãng bay mfp của hạt được tính là λ = 0.1n + (−lnξ)/ Σ t.

1.3.3 Giải thích chương trình fortran để giải bài toán ví dụ 3.4

Bảng 3.9 Chương trình fortran tính quãng chạy tự do trung bình

! Tính quãng chạy trung bình sử dụng từng đơn vị tiết diện mặt cắt ngang

! Bằng phương pháp trực tiếp và gián tiếp

!Lệch khai báo biến hằng thực có độ chính xác kép thuộc kiểu số thức

WRITE(*,'(1X,A\)')'seed ' !In ‘seed’ ra màn hình

READ(*,*)iseed !Gán giá trị iseed

!Gọi chương trình con, chức năng cài lại số ngẫu nhiên bắt đầu iseed,

Vòng lặp Loop cho phép chúng ta quay lại để tính toán với NMAX hạt mới mà không cần phải khởi động lại chương trình từ đầu.

WRITE(*,'(1X,A\)')'Enter Number of Start Particles: ' !In ra màn hình dòng trong

!Nhập NMAX là số hạt bắt đầu

IF (NMAX.EQ.0) STOP !Nếu NMAX=0 thì dừng vòng lặp Loop X=0.0D0

!Gán X=0.0D0 là X là biến có độ chính xác kép thuộc kiểu thực

!Bắt đầu tính toán quãng bay bằng cách thứ 1 (cách trực tiếp)

!Vòng lặp DO 100, nếu I > NMAX thì thoát khỏi vòng lặp rnd=fltrn()

!Hàm fltrn() tạo số ngẫu nhiên gán vào rnd, rnd là ξ

! -DLOG(RND) : Quãng bay của hạt

!Với mỗi vòng lặp ta thêm -DLOG(RND) vào X, với RND của mỗi vòng lặp là khác nhau

!X=X-DLOG(RND) để tính tổng khoảng cách quãng chạy của các hạt,

100 CONTINUE !Quay lại vòng lặp DO 100

!Hàm X trên tác dụng để tính quãng chạy tự do trung bình của Nmax hạt bằng phương pháp trực tiếp

!Gán Y=0.0D0, Y là biến có độ chính xác kép kiểu số thực

!Bắt đầu tính quãng chạy tự do trung bình của hạt theo cách thứ 2(cách gián tiếp)

DO 400 I=1,NMAX !Vòng lặp DO 400, thoát khỏi vòng lặp khi I>NMAX rnd=fltrn() ! Tạo số ngẫu nhiên gán vào rnd

!Thoát vòng lặp nếu rnd > 0.90483741803596 , tức là ξ > e −0.1 hạt dừng lại

Y=Y+0.1D0 !Y tăng 0.1 sau mỗi lần chạy vòng lặp DO WHILE rnd=fltrn() !Tạo số ngẫu nhiên gán vào rnd, rnd là số ξ

END DO !Kết thúc vòng lặp DO WHILE

!-DLOG(RND) là quãng chạy hạt trong 1 lớp phẳng ảo có độ dày 0.1

! Hàm Y trên để tính tổng khoảng cách quãng chạy của các hạt

400 CONTINUE !Quay lại vòng lặp DO 400

!Hàm Y trên tính quãng chạy tự do trung bình bằng phương pháp gián tiếp

10 FORMAT(' Mean free path direct = ',F10.7,' Indirect= ',F10.7)

!Hai dòng code trên để in ra màn hình X, Y

!F10.7: In ra 10 vị trí và lấy 7 số sau dấu phẩy, lần lượt là vị trí in ra màn hình X,Y từ trái sang phải

END DO Loop !Quay lại vòng lặp Loop

END !Kết thúc chương trình

1.3.4 Thay số liệu vào chương trình và kết quả chạy chương trình

Hình 1 4 Kết quả chạy chương trình ví dụ bài 3.4

Kết quả từ chương trình 3.9 cho mẫu với tổng Σ t = 1 và gieo hạt giống là 1 (seed=1) cho thấy, ngay cả khi sử dụng 1000 hạt, cả hai kỹ thuật đều cho kết quả rất gần với 1.

Bảng 1 2 Kết quả tính toán trực tiếp và gián tiếp của quãng bay trung bình

Số phép thử(số hạt) Trực tếp Gián tiếp

MỘT SỐ CHƯƠNG TRÌNH CON VÀ HÀM TÍNH TOÁN ĐƯỢC ĐỂ CẬP TRONG CÁC VÍ DỤ

Hàm fltrn(), chức năng tạo số ngẫu nhiên :

Hi = seed/q lo =MOD(seed,q) seed=a*lo-r*hi

IF(seed.LE.0) seed=seed+m fltrnE(seed)/fm

Chương trình con “rndin” tác dụng đặt số bắt đầu ngẫu nhiên :

COMMON/randseed/iseed iseed=iin

Chương trình con “ISOOUT” tìm phương vị tọa độ cosine U,V,W mới :

DATA PI/3.14159265/ ! Khai báo giá trị cho số PI là 3.14159265

! Tìm hướng đi mới của U V W theo cosin

! Bằng cách lựa chọn một giá trị cos ngẫu nhiên trên khoảng [-1;1]

! Và chọn một góc ngẫu nhiên PHI bằng cách gieo số ngẫu nhiên

! Gieo một số ngẫu nhiên hàm fttrn() nằm trong khoảng [0;1] thì giá trị COSTH sẽ có giá trị ngẫu nhiên nằm trong khoảng từ [-1;1]

! Gieo một số ngẫu nhiên fltrn()

!Tương tự như trên thì PHI sẽ có giá trị ngẫu nhiên trong khoảng từ [0;2 π ]

! Lúc này sinθ= √ ¿¿ nên ta có câu lệnh này

! U=COS(PHI)*SINTH;V=SIN(PHI)*SINTH;W=COSTH

! Sau đó ta tính vị trị ngẫu nhiên của hạt trong hệ tọa độ theo: u=sinθcosφv=sinθsinφw=cosθ

RETURN !Lệch điều khiển về chương trình mẹ

END ! Kết thúc chương trình con

CHƯƠNG TRÌNH HOÀN THIỆN

Chương trình giải bài toán ví dụ 3.2

WRITE(*,'(1X,A\)')'Enter number of start particles '

IF (NMAX.LE.0) EXIT New_Case_Loop

WRITE(*,'(1X,A\)')'Enter sphere radius in mfp '

WRITE(*,'(1X,A\)')'Enter start random number seed '

DO 300 n=1,NMAX z=r*fltrn()**0.33333333 costh=2.*fltrn()-1. sinth=SQRT(1.-costh*costh) d=-DLOG(fltrn()) zc=z+d*costh xc=d*sinth rcsq=xc*xc+zc*zc

IF(rcsq.GT.rsq) nr=nr+1

300 CONTINUE prob=FLOAT(nr)/FLOAT(nmax)

StDeV=SQRT(prob-prob**2)/SQRT(FLOAT(nmax))

13 FORMAT('Particles escaping = ',I9,'probality of escape = ',f11.4,'standrd deviation

END DO New_Case_Loop

DATA seed/1/ hi =seed/q lo =MOD(seed,q) seed=a*lo-r*hi

IF(seed.LE.0) seed=seed+m fltrnE(seed)/fm

!Subrotine for setting start random number

SUBROUTINE rndin(iin) !rnd sets the current random number seed COMMON/randseed/iseed iseed=iin

Chương trình giải bài toán ví dụ 3.3

COMMON/scoring/NA,NR,NL,NS

DO 200 WHILE (ZC.GE.-Z1.AND.ZC.LE.0.0) rnd=fltrn()

U=COS(PHI)*SINTH;V=SIN(PHI)*SINTH;W=COSTH

END DO New_Case_Loop

SUBROUTINE rndin(iin) !rnd sets the current random number seed COMMON/randseed/iseed iseed=iin

COMMON/scoring/NA,NR,NL,NS

WRITE(*,'(1X,A\)')'Enter number of start particles '

COMMON/scoring/NA,NR,NL,NS

StDevR=SQRT(FLOAT(NR)*FLOAT(NS-NR)/FLOAT(NS))

StDevL=SQRT(FLOAT(NL)*FLOAT(NS-NL)/FLOAT (NS))

StDevA=SQRT(FLOAT(NA)*FLOAT(NS-NA)/FLOAT(NS)) WRITE (*,13)NR,StDevR,NL,StDevL,NA,StDevA

13 FORMAT('Number of particles transmitted = ',I9,'+or-',F10.2,/,& 'Number of particles reflected = ',I9,'+or-',F10.2,/,&

'Number of particles absorbed = ',I9,'+or-',F10.2 )

DATA seed/1/ hi =seed/q lo =MOD(seed,q) seed=a*lo-r*hi

IF(seed.LE.0) seed=seed+m fltrnE(seed)/fm

Chương trình giải bài toán ví dụ 3.4

WRITE(*,'(1X,A\)')'Enter Number of Start Particles: ' READ(*,*)NMAX

10 FORMAT(' Mean free path direct = ',F10.7,' Indirect= ',F10.7) END DO Loop

END SUBROUTINE rndin(iin) !rnd sets the current random number seed COMMON/randseed/iseed iseed=iin

FUNCTION fltrn() REAL*8 fltrn, fm

Ngày đăng: 21/04/2023, 08:37

HÌNH ẢNH LIÊN QUAN

Hình 1. 1. Tọa độ theo cosin - BÁO CÁO BÀI TẬP LỚN MÔN PHƯƠNG PHÁP MONTE CARLO ỨNG DỤNG TRONG KỸ THUẬT HẠT NHÂN
Hình 1. 1. Tọa độ theo cosin (Trang 7)
Hình 1. 2. Kết quả ví dụ bài 3.2 khi chạy chương trình - BÁO CÁO BÀI TẬP LỚN MÔN PHƯƠNG PHÁP MONTE CARLO ỨNG DỤNG TRONG KỸ THUẬT HẠT NHÂN
Hình 1. 2. Kết quả ví dụ bài 3.2 khi chạy chương trình (Trang 10)
Hình 1. 3. Kết quả chạy chương trình fortran ví dụ bài 3.3 Chạy chương trình với số hạt bắt đầu là 10 4  hạt, seed=1, chương trình cho kết quả: -Hạt notron xuyên qua: 1256 ±  33 hạt. - BÁO CÁO BÀI TẬP LỚN MÔN PHƯƠNG PHÁP MONTE CARLO ỨNG DỤNG TRONG KỸ THUẬT HẠT NHÂN
Hình 1. 3. Kết quả chạy chương trình fortran ví dụ bài 3.3 Chạy chương trình với số hạt bắt đầu là 10 4 hạt, seed=1, chương trình cho kết quả: -Hạt notron xuyên qua: 1256 ± 33 hạt (Trang 18)
Hình 1. 4. Kết quả chạy chương trình ví dụ bài 3.4 - BÁO CÁO BÀI TẬP LỚN MÔN PHƯƠNG PHÁP MONTE CARLO ỨNG DỤNG TRONG KỸ THUẬT HẠT NHÂN
Hình 1. 4. Kết quả chạy chương trình ví dụ bài 3.4 (Trang 22)
Bảng 1. 2. Kết quả tính toán trực tiếp và gián tiếp của quãng bay trung bình - BÁO CÁO BÀI TẬP LỚN MÔN PHƯƠNG PHÁP MONTE CARLO ỨNG DỤNG TRONG KỸ THUẬT HẠT NHÂN
Bảng 1. 2. Kết quả tính toán trực tiếp và gián tiếp của quãng bay trung bình (Trang 23)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w