CHUYÊN ĐỀ B Lập Trình Xây Dựng Ma Trận Độ Cứng Tính Kết Cấu Khung Phẳng Bằng PP PTHH (JAVA) Chương 1 Giới thiệu chung về Java 1 1 Tổng quan về ngôn ngữ lập trình Java Java là một trong những ngôn ngữ.
Trang 1CHUYÊN ĐỀ- B : Lập Trình Xây Dựng Ma Trận Độ Cứng Tính
Kết Cấu Khung Phẳng Bằng PP PTHH (JAVA)
Chương 1- Giới thiệu chung về Java
1.1 Tổng quan về ngôn ngữ lập trình Java
Java là một trong những ngôn ngữ lập trình mạnh và được sử dụng đông đảo trong phát triển phần mềm, các trang web, game hay ứng dụng trên các thiết bị di động
Java là ngôn ngữ lập trình hướng đối tượng (tựa C++) do Sun Microsystem đưa ra vào giữa thập niên 90 Ngôn ngữ Java và nền tảng Java phát triển như một cuộc cách mạng lớn trong lập trình Java là ngôn ngữ lập trình được thiết kế độc lập với hệ điều hành, cho phép người lập trình viết chương trình một lần và có thể sử dụng tại bất kỳ đâu
Ngôn ngữ Java có cú pháp rất giống với ngôn ngữ C/C++ (là một ngôn ngữ rất mạnh được dùng phổ biến hiện nay) Tuy nhiên nó đã được thay đổi khá nhiều để đáp ứng khả năng độc lập với hệ điều hành Nền tảng của ngôn ngữ Java là các class Các class đóng vai trò như những đối tượng, người lập trình khi xây dựng ứng dụng sẽ sử dụng một số class chuẩn của hệ thống, đồng thời có thể tự mình xây dựng class khác đáp ứng yêu cầu công việc
Java là ngôn ngữ dễ học, nó lược bớt những lệnh thừa và rườm rà của C/C++ để người lập trình chú trọng vào việc viết chương trình Đồng thời, nó còn hạn chế người lập trình không can thiệp quá sâu vào hệ thống và có độ bảo mật cao Và Java cũng có thế mạnh
về Interface mà các ngôn ngữ trước chưa làm được
1.2 Đặc điểm của ngôn ngữ lập trình Java
1.2.1 Độc lập phần cứng và hệ điều hành
Một chương trình viết bằng ngôn ngữ Java có thể chạy tốt ở nhiều môi trường khác
nhau Gọi là khả năng "cross-platform” Khả năng độc lập phần cứng và hệ điều hành được thể hiện ở 2 cấp độ là cấp độ mã nguồn và cấp độ nhị phân.
Ở cấp độ mã nguồn: Kiểu dữ liệu trong Java nhất quán cho tất cả các hệ điều hành và phần cứng khác nhau Java có riêng một bộ thư viện để hỗ trợ vấn đề này Chương trình viết bằng ngôn ngữ Java có thể biên dịch trên nhiều loại máy khác nhau mà không gặp lỗi
Ở cấp độ nhị phân: Một mã biên dịch có thể chạy trên nhiều nền tảng khác nhau mà không cần dịch lại mã nguồn Tuy nhiên cần có Java Virtual Machine để thông dịch đoạn
mã này
Trang 21.2.2 Đa luồng
Java hỗ trợ lập trình đa tiến trình (multithread) để thực thi các công việc đồng thời.
Đồng thời cũng cung cấp giải pháp đồng bộ giữa các tiến trình (giải pháp sử dụng priority )
1.2.3 Cơ chế thu gom rác tự động
Khi tạo ra các đối tượng trong Java, JRE sẽ tự động cấp phát không gian bộ nhớ cho các đối tượng ở trên heap
Với ngôn ngữ như C \ C++, bạn sẽ phải yêu cầu hủy vùng nhớ mà bạn đã cấp phát, để tránh việc thất thoát vùng nhớ Tuy nhiên vì một lý do nào đó, người dùng không hủy một vài vùng nhớ, dẫn đến việc thất thoát và làm giảm hiệu năng chương trình
Ngôn ngữ lập trình Java hỗ trợ điều đó bộ thu dọn rác của Java sẽ theo vết các tài
nguyên đã được cấp Khi không có tham chiếu nào đến vùng nhớ, bộ thu dọn rác sẽ tiến
hành thu hồi vùng nhớ đã được cấp phát
1.2.4 Ngôn ngữ thông dịch
Ngôn ngữ lập trình thường được chia ra làm 2 loại là ngôn ngữ thông dịch và ngôn ngữ biên dịch
Ngôn ngữ lập trình Java thuộc loại ngôn ngữ thông dịch Chính xác hơn, Java là loại
ngôn ngữ vừa biên dịch vừa thông dịch Cụ thể như sau
Khi viết mã, hệ thống tạo ra một tệp java Khi biên dịch mã nguồn của chương trình
sẽ được biên dịch ra mã byte code Máy ảo Java (Java Virtual Machine) sẽ thông dịch mã byte code này thành machine code (hay native code) khi nhận được yêu cầu chạy chương
trình
Ưu điểm : Phương pháp này giúp các đoạn mã viết bằng Java có thể chạy được trên nhiều nền tảng khác nhau Với điều kiện là JVM có hỗ trợ chạy trên nền tảng này
Nhược điểm : Cũng như các ngôn ngữ thông dịch khác, quá trình chạy các đoạn mã Java là chậm hơn các ngôn ngữ biên dịch khác (tuy nhiên vẫn ở trong một mức chấp nhận được)
1.2.5 An toàn và bảo mật
Tính an toàn:
Ngôn ngữ lập trình Java yêu cầu chặt chẽ về kiểu dữ liệu
Dữ liệu phải được khai báo tường minh
Không sử dụng con trỏ và các phép toán với con trỏ
Trang 3Java kiểm soát chặt chẽ việc truy nhập đến mảng, chuỗi Không cho phép sử dụng các kỹ thuật tràn Do đó các truy nhập sẽ không vượt quá kích thước của mảng hoặc chuỗi
Quá trình cấp phát và giải phóng bộ nhớ được thực hiện tự động
Cơ chế xử lý lỗi giúp việc xử lý và phục hồi lỗi dễ dàng hơn
Tính bảo mật:
Java cung cấp một môi trường quản lý chương trình với nhiều mức khác nhau Mức 1 : Chỉ có thể truy xuất dữ liệu cũng như phương phức thông qua giao diện mà lớp cung cấp
Mức 2 : Trình biên dịch kiểm soát các đoạn mã sao cho tuân thủ các quy tắc của ngôn ngữ lập trình Java trước khi thông dịch
Mức 3 : Trình thông dịch sẽ kiểm tra mã byte code xem các đoạn mã này có đảm bảo được các quy định, quy tắc trước khi thực thi
Mức 4: Java kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi phạm giới hạn truy xuất trước khi nạp vào hệ thống
1.2.6 Java Virtual Machine(JVM)
JVM (Máy ảo Java) là phần mềm giả lập máy tính, nó tập hợp các lệnh logic để xác định hoạt đông của máy Có thể xem nó như là một hệ điều hành thu nhỏ
JVM chuyển mã byte code thành machine code tùy theo môi trường tương ứng (gọi là khả năng khả chuyển) JVM cung cấp môi trường thực thi cho chương trình Java (gọi đó
là khả năng độc lập với nền)
Sun MicroSystem chịu trách nhiệm thiết kế, phát triển các máy ảo Java chạy trên các
hệ điều hành cũng như kiến trúc phần cứng khác nhau Điều này cho thấy có khá nhiều loại máy ảo Java
1.2.7 Java Swing
Swing là bộ công cụ GUI thế hệ kế tiếp mà Sun Microsystems tạo ra trong Java Các lập trình viên có thể sử dụng Swing để tạo ra các ứng dụng Java có khả năng mở rộng với một dãy nhiều thành phần mạnh mẽ Thêm vào đó, người dùng có thể kế thừa hoặc chỉnh sửa những thành phần này để điều khiển việc hiển thị và các hành xử của chúng
Swing không phải là một từ viết tắt Đó là tên thay thế cho một tập hợp lựa chọn của
nó cho các người thiết kế khi dự án được thực hiện vào 1996 Swing thật sự là một phần của gia đình rộng lớn các sản phẩm của Java được biết đến như Java Foundation Classes
Trang 4s(JFC) bao gồm nhiều đặc điểm của Internet Foundation Classes của Netscape cũng như
bị ảnh hưởng thiết kế của Taligent và Lighthouse Design của IBM Swing được phát triển thật sự kể từ thời điểm bản beta của JDK 1.1, khoảng mùa xuân 1997 Swing API bản beta đưa ra khoảng nửa cuối 1997 và được chính thức phát hành vào tháng 3 năm 1998 Khi được phát hành, các thư viện của Swing 1.0 chứa khoảng 250 lớp và 80 giao tiếp Sự phát triển được tiếp tục khi theo thời gian, bản Swing 1.4 chứa 85 giao tiếp public và 451 lớp public
Mặc dù Swing là được phát triển đơn lẻ từ lõi của Java Development Kit, nó yêu cầu phải có tối thiểu JDK 1.1.5 để chạy Swing được xây dựng dựa trên những mô hình event được giới thiệu trong serie JDK 1.1 Người dùng không thể sử dụng Swing với JDK 1.0.2, thêm vào đó phải có Java 1.1 cho phép trình duyệt hỗ trợ Swing Applet Java 2 SDK 1.4 được phát hành bao gồm nhiều lớp Swing được cập nhật và hỗ trợ một vài đặc điểm mới Swing được tích hợp đầy đủ trong cả trong bộ công cụ của các nhà phát triển
và runtime environment của tất cả các bản phát hành Java 2 (SDK 1.2 và những phiên bản cao hơn) chứa cả Java Plug-in
Trang 5Chương 2- Cơ sở lý thuyết và sơ đồ thuật toán
2.1 Cơ sở lý thuyết
2.1.1 Khung phẳng trong hệ tọa độ riêng
Xem xét một cấu trúc khung, theo đó cấu trúc khung được chia ra làm các phần tử khung kết nối bởi các nút, mỗi 1 phần tử có chiều dài L và có 2 nút ở 2 đầu của nó, các phần tử và các nút được đánh số riêng biệt sao cho thuận tiện nhất
Trong mỗi phần tử khung phẳng có 3 bậc tự do ở mỗi nút trong hệ tọa độ địa phương Tại mỗi thanh có 3 thành phần chuyển vị(Ux, Uy, Φ), nó là các biến dạng u dọc trục theo hướng x; hướng y, và góc xoay Φ trong mặt phẳng Oxy quanh trục y Và 3 thành phần lực (Fx, Fy và M).Vậy mỗi phần tử có 2 nút với tổng cộng 6 bậc tự do
Xem xét phần tử khung được thể hiện trong hình, với các nút có tên i, k ở cuối mỗi phần tử Trục x địa phương được thể hiện như hướng của phần tử với gốc của trục nằm ở giữa phần tử Một phần tử khung chứa các thuộc tính cua phần tử giàn và phần tử dầm
Vì vậy các ma trận cho phần tử khung có thể được xác định bằng cách kết hợp các ma trận phần tử giàn và phần tử dầm, mà không phải thông qua quá trình xây dựng chi tiết các chức năng hình dạng và sử dụng các tính toán cấu tạo cho khung
2.1.2 Ma trận độ cứng của phần tử khung phẳng
Tại một điểm có tọa độ x bất kỳ trên thanh, với thanh phẳng chịu nén, uốn, cắt, chuyển
vị u có 3 thành phần : u=( ux, uy, Φ)
Vậy tại mỗi đầu thanh sẽ có 3 thành phần chuyển vị :
+ Tại đầu i : ui=( uxi, uyi, Φi)
+ Tại đầu k : uk=( uxk, uyk, Φk)
Do đó vecto chuyển vị nút ue của 1 phần tử thanh phẳng có 6 thành phần :
Trang 6ue=( uxi, uyi, Φi, uxk, uyk, Φk).
Ma trận độ cứng Ke của phần tử thanh phẳng cơ bản như sau :
2.1.3 Chuyển về hệ tọa độ chung
Sau khi đã có các ma trận trong hệ thống tọa độ địa phương, điều tiếp theo cần làm là chuyển các ma trận phần tử vào hệ trục tọa độ chính Từ đó đưa ra được sự khác nhau về hướng của các hệ trục tọa độ địa phương được gán cho các phần tử khung
Giả sử rằng các nút địa phương x và y của phần tử tương ứng với các nút chính i và j Tương ứng, chuyển vị tại một nút của tọa độ địa phương có 2 thành phần tịnh tiến là ux,
uy và 1 thành phần xoay quanh trục Chuyển vị tại một nút của tọa độ chính cũng cần
có 2 thành phần tịnh tiến X, Y và 1 thành phần quay quanh trục Z và chúng cũng được đánh số lần lượt là Ux,Uy và Φ cho nút thứ i Quy ước trên cũng được áp dụng tương ứng cho nút thứ j Quan hệ giữa vector chuyển vị ue cơ bản trong hệ tọa độ địa phương và vector chuyển vị Ue trong hệ tọa độ chính cơ bản cho cùng 1 phần tử :
T là ma trận chuyển đổi cho các phần tử khung được xác định như sau:
Trang 7Trong đó:
Với là góc hợp bởi trục 1 với trục X, như hình trên
Việc chuyển đổi hệ trọng tọa độ trong mặt phẳng X - Y không làm ảnh hưởng bậc tự
do xoay Chuyển vị xoay quanh trục 3( nẳm trong mặt phẳng 1-2) vẫn giống chuyển vị xoay quang trục Z trong hệ tọa độ chính Chiều dài của phần tử được tính toán như sau:
Ma trận T cho 1 phần tử chuyển đổi 1 ma trận 6x6 vào 1 mà trận 6x6 khác Sử dụng
ma trận chuyển đổi T ta có các ma trận của phần tử trong hệ tọa độ chính là:
Trang 82.1.4 Vecto tải toàn hệ
2.1.5 Đưa điều kiện biên vào hệ
Điều kiện biên là các giá trị cưỡng bức Uxi, Uyi và Φ cho trước khác 0
2.1.6 Giải hệ phương trình KU=F
Sau khi đưa về các dạng ma trận tổng quát ta tiến hành giải lấy nghiệm Ue của từng phần tử
2.1.7 Tính nội lực
Sau khi có được nghiệm chuyển vị Ue ta chuyển về hệ tọa độ riêng ue=TT.Ue
Có Ke trong hệ tọa độ riêng Fe=Ke.ue+Fo
e
Trang 92.2 Sơ đồ thuật toán
Trang 10Chương 3- Yêu cầu về cơ sở dữ liệu
3.1 Dữ liệu đầu vào
- Dữ liệu về nút : tên nút, tọa độ, ràng buộc của nút theo x,y,z
- Dữ liệu về vật liệu : tên vật liệu, dung trọng riêng, mudule đàn hồi E, hệ số poisson…
- Dữ liệu về phần tử : tên phần tử, loại phần tử
- Dữ liệu về tải trọng :
+ Tải trên nút : tên nút có tải, loại tải, giá trị của tải
+ Tải trên thanh : tên thanh có tải, loại tải, giá trị của tải lên thanh
3.2 Dữ liệu đầu ra
- Xác định được chuyển vị nút của kết cấu
- Xác định được nội lực của kết cấu gồm : Moment, lực cắt, lực dọc, phản lực, ứng suất, biến dạng,…
- Xây dựng được biểu đồ nội lực, xuất ra được kết quả tính toán qua excel,…
Trang 11Chương 4- Mã nguồn chương trình
3.1 Mã nguồn chương trình