1. Trang chủ
  2. » Tất cả

(Luận văn thạc sĩ hcmute) nghiên cứu và phát triển phần mềm phân tích vật liệu tinh thể bằng nhiễu xạ x quang

135 2 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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH LUẬN VĂN THẠC SĨ LÊ THỊ MỸ LINH NGHIÊN CỨU VÀ PHÁT TRIỂN PHẦN MỀM PHÂN TÍCH VẬT LIỆU TINH THỂ BẰNG NHIỄU XẠ X – QUANG NGÀNH: KỸ THUẬT CƠ KHÍ – 60520103 S K C0 2 Tp Hồ Chí Minh, tháng 01/2016 Luan van BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH LUẬN VĂN THẠC SĨ LÊ THỊ MỸ LINH NGHIÊN CỨU VÀ PHÁT TRIỂN PHẦN MỀM PHÂN TÍCH VẬT LIỆU TINH THỂ BẰNG NHIỄU XẠ X – QUANG NGÀNH: KỸ THUẬT CƠ KHÍ – 60520103 Hƣớng dẫn khoa học: PGS.TS LÊ CHÍ CƢƠNG Tp Hồ Chí Minh, tháng 01 năm 2016 ii Luan van LÝ LỊCH KHOA HỌC I LÝ LỊCH SƠ LƢỢC: Họ & tên: Lê Thị Mỹ Linh Giới tính: Nữ Ngày, tháng, năm sinh: 10-07-1984 Nơi sinh: Bình Dƣơng Quê quán: Bình Dƣơng Dân tộc: Kinh Địa liên lạc: 246F/2, khu phố 1B, phƣờng An Phú, thị xã Thuận An, tỉnh Bình Dƣơng Điện thoại quan: Điện thoại nhà: Fax: E-mail: mylinhvsvc@gmail.com II QUÁ TRÌNH ĐÀO TẠO: Trung học chuyên nghiệp: Hệ đào tạo: Thời gian đào tạo từ …./… đến …./ …… Nơi học (trƣờng, thành phố): Ngành học: khí chế tạo máy Đại học: Hệ đào tạo: Chính qui Thời gian đào tạo từ 10/2002 đến 1/2007 Nơi học (trƣờng, thành phố): Trƣờng đại học Sƣ phạm Kỹ thuật thành phố Hồ Chí Minh Ngành học: Cơ khí chế tạo máy III Q TRÌNH CƠNG TÁC CHUYÊN MÔN KỂ TỪ KHI TỐT NGHIỆP ĐẠI HỌC: Thời gian 2008-2015 Nơi công tác Trƣờng Cao đẳng nghề Việt Nam – Singapore tỉnh Bình Dƣơng iii Luan van Công việc đảm nhiệm Giáo viên LỜI CAM ĐOAN Tôi cam đoan cơng trình nghiên cứu tơi Các số liệu, kết nêu luận văn trung thực chƣa đƣợc công bố cơng trình khác Tp Hồ Chí Minh, ngày 05 tháng 01 năm 2016 Lê Thị Mỹ Linh iv Luan van LỜI CẢM ƠN Sau thời gian theo học chƣơng trình đào tạo sau đại học trƣờng Đại học Sƣ phạm Kỹ thuật Thành phố Hồ Chí Minh, tác giả đúc kết đƣợc kiến thức bổ ích cho chun mơn Vì đề tài nghiên cứu giải vấn đề mẻ dựa sở tính tốn lý thuyết lĩnh vực vật liệu dùng kỹ thuật nhiễu xạ X– quang, nên lúc đầu tiếp cận gặp nhiều bỡ ngỡ khó khăn Nhƣng với tận tình giáo viên hƣớng dẫn PGS.TS.Lê Chí Cƣơng, với hỗ trợ từ phía gia đình, bạn bè đồng nghiệp, luận văn đạt đƣợc kết nhƣ mong muốn Đến đây, cho phép tác giả gửi lời cám ơn chân thành đến: - Ban Giám Hiệu trƣờng Đại học Sƣ phạm Kỹ thuật Thành phố Hồ Chí Minh - Thầy PGS.TS.Lê Chí Cƣơng – Khoa Cơ khí máy - trƣờng Đại học Sƣ phạm Kỹ thuật Thành phố Hồ Chí Minh - Viện lƣợng nguyên tử Việt nam - Trung tâm hạt nhân Tp HCM Số 217 Nguyễn Trãi, Q1, Tp HCM - Quý thầy khoa Cơ khí máy - trƣờng Đại học Sƣ phạm Kỹ thuật Thành phố Hồ Chí Minh - Phòng Đào tạo - Sau Đại học phòng khoa trƣờng Đại học Sƣ phạm Kỹ thuật Thành phố Hồ Chí Minh Một lần tác giả xin chân thành cảm ơn giúp đỡ, hỗ trợ, động viên quý báu tất ngƣời Xin trân trọng cảm ơn! Thành phố Hồ Chí Minh, tháng 01 năm 2016 Học viên thực luận văn Lê Thị Mỹ Linh v Luan van TÓM TẮT Phƣơng pháp nhiễu xạ X-quang phƣơng pháp kiểm tra không phá hủy đƣợc ứng dụng rộng rãi giới Từ liệu liên quan đến nhiễu xạ, ta tính tốn giải nhiều vấn đề kỹ thuật Ứng dụng lập trình vào khoa học kỹ thuật, vào công việc hàng ngày đƣợc phát triển mạnh mẽ Các phần mềm ứng dụng xuất tất ngóc ngách sống ngƣời Thiết bị di động, máy vi tính, vật gia dụng gia đình … tất điều đƣợc lập trình để thực công việc phục vụ cho nhu cầu ngƣời Đề tài “Nghiên cứu phát triển phần mềm phân tích vật liệu tinh thể nhiễu xạ X-quang” đƣợc thực nhằm mục đích phát triển đƣợc phần mềm phân tích vật liệu dựa phƣơng pháp nhiễu xạ X-quang ngôn ngữ C# Phần mềm giúp ngƣời sử dụng phân tích liệu nhiễu xạ, phân tích ứng suất, xác định tỉ lệ pha pha, xác định hệ số đàn hồi… vật liệu cách nhanh chóng có đƣợc liệu nhiễu xạ X-quang thích hợp (tác giả trƣớc viết) Phần mềm giúp cho việc nghiên cứu phân tích vật liệu phƣơng pháp nhiễu xạ X-quang đạt suất hiệu kinh tế cao Đề tài đƣợc tác giả nghiên cứu thực thời gian khoảng 06 tháng Trong thời gian đó, tác giả nghiên cứu tài liệu nhiễu xạ X-quang, công trình nghiên cứu ngồi nƣớc Ứng dụng lý thuyết nghiên cứu đƣợc vào lập trình Đến tác giả hoàn thành đƣợc mục tiêu đề ra, phần mềm X-Pro 1.0 đƣợc phát triển để thực phân tích vật liệu dựa lý thuyết nhiễu xạ Xquang Hiện tại, phần mềm X-Pro 1.0 thực thêm chức phân tích tính tốn thêm nhƣ sau + Xác định tỉ lệ pha vật liệu ba pha + Xác định kích thƣớc tinh thể + Xác định chiều dày lớp mạ vi Luan van ABSTRACT X-ray diffraction method, which is one of non-destructive testing methods, is worldwide using From the data related to diffraction, we can calculate and solve technical problems Programming application in technology which is using in daily work is rapidly developing Application software can be found in all fields of our life Mobile equipment, computer, household appliance, etc., are programmed to tasks that serve our demands Topic “Research and development in software for crystalline material analysis using X-ray” is processed based on X-ray diffraction method This software helps users analyze diffractive data, analyze stress, determine mix ratio, elastic ratio… for material quickly when they have appropriate X-ray diffraction data (The previous author drote) It also helps the researches on material analysis using X-ray diffraction method gain high productivity and commercial efficiency The topic is researched and processed in about six months During process, author researched and referenced documents about X-ray diffraction from domestic and foreign resources The author also turned the research theory into programing As a result, the author has finished the research and introduced X-Pro 1.0 which is used to analyze material based on X-ray diffraction theory At present, X-pro 1.0 can carry out these following performances: + Determining mix ratio for three-phase materials + Determining grain size + Thin layer thickness vii Luan van DANH MỤC CÁC CHỮ VIẾT TẮT M T SỐ KÝ HIỆU  bƣớc sóng 2 góc nhiễu xạ D khoảng cách mặt phẳng phân tử ( hkl ) n phản xạ bậc cao h,k,l số Miller (hkl) mặt nhiễu xạ Ψ góc tạo phƣơng pháp tuyến mẫu đo với phƣơng pháp tuyến họ mặt phẳng nguyên tử nhiễu xạ Ψo góc tạo phƣơng pháp tuyến mẫu đo tia tới X  góc phân giác tia tới tia nhiễu xạ X o góc tạo phƣơng pháp tuyến họ mặt phẳng nhiễu xạ tia tới X  góc tạo tia tới X phƣơng ngang  góc tạo tia nhiễu xạ phƣơng ngang  Hệ số hấp thụ ( phụ thuộc vào đặc tính tia X loại vật liệu mẫu đo ) m Hệ số hấp thu khối lƣợng vật liệu  Tỉ trọng vật liệu p vị trí đỉnh đƣờng nhiễu xạ LPA hệ số Lorentz hấp thụ B bề rộng đƣờng nhiễu xạ c bƣớc góc đo t thời gian chu kỳ xung M,N hệ số góc hệ số chặn đƣờng thẳng đồ thị sin2 Ψ z,y cƣờng độ nhiễu xạ chƣa hiệu chỉnh LPA viii Luan van DANH MỤC HÌNH HÌNH TRANG Hình 1.1: Máy chụp tia x quang Russell Reynold phát triển Hình 1.2: Hình ảnh kích thƣớc tinh thể từ phầm mềm Axio Vision Hình 1.3: Giao diện phần mềm MDI Jade Hình 1.4: Giao diện phần mềm Maud Hình 1.5: Giao diện phần mềm OriginPro Hình 2.1: Nguyên lý nhiễu xạ theo định luật Bragg Hình 2.2: Hiệu chỉnh đƣờng nhiễu xạ 10 Hình 2.3: Phƣơng pháp trọng tâm 15 Hình 2.4: Phƣơng pháp bề rộng trung bình 16 Hình 2.5: Dữ liệu nhiễu xạ thơ 17 Hình 2.6: Dữ liệu sau làm mịn với nL=nR=9 18 Hình 2.7: Đƣờng thẳng tiếp tuyến với liệu 19 Hình 2.8: Đƣờng thẳng tiếp tuyến điểm i 19 Hình 2.9: Đơn vị nhiễu xạ 20 Hình 2.10: Xác định liệu nhiễu xạ mặt nhiễu xạ 22 Hình 2.11: Tính lƣơng nhiễu xạ 25 Hình 2.12: Nhiễu xạ thơ vật liệu ba pha 26 Hình 2.13: Giản đồ nhiễu xạ ba pha cần khử bỏ 27 Hình 2.14: Chọn (xo,yo) (xn,yn) lần bề rộng trung bình 28 Hình 2.15: Hình ảnh TEM zeolite A [10] 28 Hình 2.16: Độ rộng Scherrer đƣờng nhiễu xạ 29 Hình 2.17: Phƣơng pháp nhiễu xạ  32 Hình 2.18: Sơ đồ nguyên lý mạ 38 ix Luan van Hình 19: Sơ đồ nguyên lý đo chiều dày màng mỏng 40 Hình 3.1: Cấu trúc phần mềm X-Pro 1.0 47 Hình 2: Lƣu đồ phân tích đƣờng nhiễu xạ 49 Hình 3.3: Lƣu đồ tính tỉ lệ pha vật liệu pha 51 Hình 3.4: Lƣu đồ xác định kích thƣớc tinh thể 55 Hình 3.5: Lƣu đồ xác định chiều dày lớp phủ 56 Hình 3.6: Định dạng tập tin liệu phần mềm X-Pro 1.0 57 Hình 3.7: Cửa sổ phần mềm phân tích vật liệu 58 Hình 3.8: Dữ liệu nhiễu xạ cần phân tích 59 Hình 3.9: Cửa sổ kết phân tích liệu 60 Hình 3.10: Kết xuất từ phần mềm 61 Hình 3.11: Thực đơn chức xác định tỉ lệ pha 61 Hình 12: Cửa sổ tính tỉ lệ pha vật liệu pha 62 Hình 13: Cửa sổ chƣơng trình phân tích liệu ba pha 63 Hình 3.14: Cửa sổ chƣơng trình xác định pha 63 Hình 15: Kết tính tỉ lệ pha vật liệu pha ứng với liệu thứ 64 Hình 16: Cửa sổ chƣơng trình tính kích tinh thể 65 Hình 17: Cửa sổ chọn liệu chức tính kích thƣớc tinh thể 66 Hình 18: Cửa sổ phân tích liệu 67 Hình 19: Cửa sổ kết tính kích thƣớc tinh thể 68 Hình 20: Cửa sổ chọn tính chiều dày lớp mạ 69 Hình 3.21: Cửa sổ kết tính chiều dày lớp mạ với liệu thứ 70 Hình 22: Cửa sổ kết tính chiều dàỳ lớp phủ với liệu thứ hai 71 Hình 23: Cửa sổ kết tính chiều dày lớp phủ với liệu thứ ba 72 Hình 1: Giản đồ nhiễu xạ cho mẫu chuẩn CeO2 73 Hình 4.2: Dữ liệu nhiễu xạ vật liệu CeO2 74 Hình 4.3: Kết phân tích liệu nhiễu xạ CeO2 74 x Luan van tbLayout.SetColumnSpan(la,trackBar1.Value); tbLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 70)); tbLayout.ColumnCount++; temp++; la = new System.Windows.Forms.Label(); la.Text = "ttb (" + '\u00B5' + "m"; ; tbLayout.Controls.Add(la, temp-1, 0); tbLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 120)); tbLayout.ColumnCount++; temp++; la = new System.Windows.Forms.Label(); la.Text = "Độ lệch chuẩn"; tbLayout.Controls.Add(la, temp-1, 0); la.Anchor = AnchorStyles.Bottom; double tb = 0; double ts = 0; for (int i = 0; i < arrMauD.Count; i++) { tbLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(SizeType.Absolute, 20)); tbLayout.RowCount++; //add sin psi double[] td = (double[])arrMauD[i]; la = new System.Windows.Forms.Label(); la.Text = td[0].ToString(); tbLayout.Controls.Add(la, 0, i+1); la = new System.Windows.Forms.Label(); la.Text = td[1].ToString(); tbLayout.Controls.Add(la, 1, i + 1); double[] t = (double[])kq[i]; double ttb = 0; for (int j = 0; j < t.Count(); j++) { la = new System.Windows.Forms.Label(); la.Text = t[j].ToString(); tbLayout.Controls.Add(la,j+2, i + 1); ttb = ttb + t[j]; } ttb = Math.Round(ttb / arrMaugoc.Count,2); la = new System.Windows.Forms.Label(); la.Text = ttb.ToString(); tbLayout.Controls.Add(la, arrMaugoc.Count + 2, i + 1); double s = 0; for (int j = 0; j < arrMaugoc.Count; j++) { s = s + Math.Pow(t[j] - ttb, 2); } s = Math.Round(Math.Sqrt(s / (arrMaugoc.Count - 1)),4); la = new System.Windows.Forms.Label(); la.Text = s.ToString(); tbLayout.Controls.Add(la, arrMaugoc.Count + 3, i + 1); tb = tb + ttb; ts = ts + s; } tbLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(SizeType.Absolute, 20)); tbLayout.RowCount++; 107 Luan van la = new System.Windows.Forms.Label(); la.Text = "Kích thước tinh thể"; tbLayout.Controls.Add(la, 2, 5); tbLayout.SetColumnSpan(la,trackBar1.Value); la.Anchor = AnchorStyles.Bottom; la = new System.Windows.Forms.Label(); la.Text =Math.Round(tb/arrMauD.Count,2).ToString(); tbLayout.Controls.Add(la,2+ trackBar1.Value, 5); la = new System.Windows.Forms.Label(); la.Text = Math.Round(ts / arrMauD.Count, 2).ToString(); tbLayout.Controls.Add(la, 3+ trackBar1.Value, 5); } ArrayList arrMaugoc; ArrayList arrMauD; ArrayList kq; private void button1_Click_1(object sender, EventArgs e) { double tmau =0; try { tmau = Convert.ToDouble(txtKTM.Text); } catch { laE.Text = "Chưa nhập kích thước mẫu"; return; } tmau = Convert.ToDouble(txtKTM.Text); double bs = 0; try { bs = Convert.ToDouble(txtBs.Text); } catch { laE.Text = "Chưa nhập giá trị Bs"; return; } bs = Convert.ToDouble(txtBs.Text); arrMaugoc = new ArrayList(); double[] temp = new double[2]; if (trackBar1.Value == 1) { try { temp[0] = Convert.ToDouble(txtP1.Text); temp[1] = Convert.ToDouble(txtB1.Text); } catch { laE.Text = "Giá trị nhiễu xạ mẫu chưa đúng"; return; } temp[0] = Convert.ToDouble(txtP1.Text); 108 Luan van temp[1] = Convert.ToDouble(txtB1.Text); arrMaugoc.Add(temp); } if (trackBar1.Value == 2) { try { temp[0] = Convert.ToDouble(txtP1.Text); temp[1] = Convert.ToDouble(txtB1.Text); } catch { laE.Text = "Giá trị nhiễu xạ mẫu chưa đúng"; return; } temp[0] = Convert.ToDouble(txtP1.Text); temp[1] = Convert.ToDouble(txtB1.Text); arrMaugoc.Add(temp); temp = new double[2]; try { temp[0] = Convert.ToDouble(txtP2.Text); temp[1] = Convert.ToDouble(txtB2.Text); } catch { laE.Text = "Giá trị nhiễu xạ mẫu chưa đúng"; return; } temp[0] = Convert.ToDouble(txtP2.Text); temp[1] = Convert.ToDouble(txtB2.Text); arrMaugoc.Add(temp); } if (trackBar1.Value == 3) { try { temp[0] = Convert.ToDouble(txtP1.Text); temp[1] = Convert.ToDouble(txtB1.Text); } catch { laE.Text = "Giá trị nhiễu xạ mẫu chưa đúng"; return; } temp[0] = Convert.ToDouble(txtP1.Text); temp[1] = Convert.ToDouble(txtB1.Text); arrMaugoc.Add(temp); temp = new double[2]; try { temp[0] = Convert.ToDouble(txtP2.Text); temp[1] = Convert.ToDouble(txtB2.Text); } catch { laE.Text = "Giá trị nhiễu xạ mẫu chưa đúng"; return; } 109 Luan van temp[0] = Convert.ToDouble(txtP2.Text); temp[1] = Convert.ToDouble(txtB2.Text); arrMaugoc.Add(temp); temp = new double[2]; try { temp[0] = Convert.ToDouble(txtP3.Text); temp[1] = Convert.ToDouble(txtB3.Text); } catch { laE.Text = "Giá trị nhiễu xạ mẫu chưa đúng"; return; } temp[0] = Convert.ToDouble(txtP3.Text); temp[1] = Convert.ToDouble(txtB3.Text); arrMaugoc.Add(temp); } laE.Text = " "; arrMauD = new ArrayList(); temp = new double[2]; try { temp[0] = Convert.ToDouble(txtPD1.Text); temp[1] = Convert.ToDouble(txtBD1.Text); arrMauD.Add(temp); temp = new double[2]; temp[0] = Convert.ToDouble(txtPD2.Text); temp[1] = Convert.ToDouble(txtBD2.Text); arrMauD.Add(temp); temp = new double[2]; temp[0] = Convert.ToDouble(txtPD3.Text); temp[1] = Convert.ToDouble(txtBD3.Text); arrMauD.Add(temp); temp = new double[2]; temp[0] = Convert.ToDouble(txtPD4.Text); temp[1] = Convert.ToDouble(txtBD4.Text); arrMauD.Add(temp); } catch { laE2.Text = "Giá trị liệu đỉnh khơng xác"; return; } laE2.Text = " "; kq = new ArrayList(); for (int i = 0; i < 4; i++) { double[] maut = (double[])arrMauD[i]; double[] ttemp = new double[trackBar1.Value]; for (int j = 0; j < trackBar1.Value; j++) { double[] mau = (double[])arrMaugoc[j]; double t = tmau * ((mau[1] - bs) * Math.Cos(mau[0] * 3.14 / 360)) / ((maut[1] - bs) * Math.Cos(maut[0] * 3.14 / 360)); ttemp[j] = Math.Round(t, 4); } kq.Add(ttemp); } setDataToTable(); 110 Luan van } private void trackBar1_SizeChanged(object sender, EventArgs e) { } private void trackBar1_Scroll(object sender, EventArgs e) { if (trackBar1.Value == 1) { txtP1.Enabled = true; txtB1.Enabled = true; txtP2.Enabled = false; txtB2.Enabled = false; txtP3.Enabled = false; txtB3.Enabled = false; } if (trackBar1.Value { txtP1.Enabled = txtB1.Enabled = txtP2.Enabled = txtB2.Enabled = txtP3.Enabled = txtB3.Enabled = } if (trackBar1.Value { txtP1.Enabled = txtB1.Enabled = txtP2.Enabled = txtB2.Enabled = txtP3.Enabled = txtB3.Enabled = == 2) true; true; true; true; false; false; == 3) true; true; true; true; true; true; } } } } 111 Luan van C Mã code phần tính chiều dày lớp mạ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using ZedGraph; using System.Collections; using System.IO; namespace MeasurementPro { public partial class ThinLayer : Form { public ThinLayer() { InitializeComponent(); } Method.XML m = new Method.XML(); Method.anasys ana = new Method.anasys(); determinePeak d = new determinePeak(); ArrayList data; ArrayList datapsi; ArrayList datapsi0; string[] name; public ThinLayer(OpenFileDialog File) { InitializeComponent(); getDataToDoThi(File); coVatlieu.DataSource = m.loadThin(); floadThin(); } private void ThinLayer_Load(object sender, EventArgs e) { lar.Text = '\u03C1' + " :"; las.Text = '\u00B5' + "m :"; lapsi.Text = '\u03C8' + " :"; lapsi0.Text = '\u03C8' + "0 :"; label4.Visible = false; label5.Visible = false; label6.Visible = false; } public void getDataToDoThi(OpenFileDialog openFile) { //string ext = Path.GetExtension(openFile.FileName); //if (ext == ".txt") //{ // data = readFileA(openFile.FileName); //} //else //{ // Data.dataMeasurement dataM = new Data.dataMeasurement(); // name = dataM.GetExcelSheetNames(openFile.FileName); tên sheet excell // data = ana.getDataByAngle(openFile.FileName, 0); //} //PointPairList list = getDataToPoint(data); 112 Luan van //lấy tập //setdatatofile(data, 4); //CreateGraph(zedGraphControl1, list); Data.dataMeasurement dataM = new Data.dataMeasurement(); name = dataM.GetExcelSheetNames(openFile.FileName); //lấy tập tên sheet excell datapsi = ana.getDataByAngle(openFile.FileName, 0); datapsi0 = ana.getDataByAngle(openFile.FileName, 1); setdatatofile(datapsi,4, "psi"); setdatatofile(datapsi0,10, "psi0"); PointPairList list1 = getDataToPoint(datapsi); CreateGraph(zedGraphControl1, list1); PointPairList list2 = getDataToPoint(datapsi0); CreateGraph2(zedGraphControl2, list2); } int num = 0; public void setdatatofile(ArrayList arr, int n, string p) { //double k = 0; num = 0; double[] db; double anpha; ArrayList kq = new ArrayList(); ArrayList arrVitri = new ArrayList(); int start = 0; // vị trí bắt đầu đỉnh int end = 0; // vị trí kết thúc đỉnh int flag = 0; // biến kiểm tra trạng thái vị trí q trình xử lý double tem = 0; // cường độ đỉnh double tem2 = 0; // cường độ vị trí bắt đầu for (int i = n; i < arr.Count - n - 1; i++) // chạy quét qua liệu để tìm đỉnh { db = (double[])arr[i]; double x_tb = db[0]; double y_tb = db[1]; double y1 = 0; double y2 = 0; double x1 = 0; double x2 = 0; for (int j = i - n; j 30 { start = i; flag = 1; tem2 = y_tb; // điểm bắt đầu // lấy cường độ điểm bắt đầu } if (flag == 1) // kiểm tra điểm qua điểm bắt đầu { db = (double[])kq[i - - n]; if (anpha < && db[1] > && start != 0) // kiểm tra lên tới đĩnh nhiễu xạ hay chưa, anpha đổi dấu { tem = y_tb; // gán giá trị cường độ vị trí đỉnh flag = 2; // dấu hiệu nhận biết qua đỉnh nhiễu xạ } } if (anpha > -10 && anpha < -5 && flag == 2) // kiếm tra xem tới chân đỉnh nhiễu xạ { db = (double[])arr[i - 10]; double a = (tem + tem2) / 2; // 1/2 cường độ từ đỉnh tới chân nhiễu xạ if (y_tb < db[1] && y_tb < a) // kiêm tra đc phần đỉnh nhiễu xạ hay chưa { end = i; } } if (start > && end > start) // xác định điểm đầu điểm cuối sau ghi đỉnh nhiễu xạ xuống file liệu { db = new double[2]; db[0] = start; db[1] = end; arrVitri.Add(db); StreamWriter wriStream = File.CreateText(Application.StartupPath + "/data/temp/peak"+ p + num + ".txt"); for (int h = start; h

Ngày đăng: 02/02/2023, 09:56

Xem thêm:

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN