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

231-Article Text-793-4-10-20220928.Pdf

9 2 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên Cứu Thuật Toán Đánh Lại Số Nút Khi Giải Bài Toán Khung Không Gian Bằng Phần Mềm Phần Tử Hữu Hạn
Tác giả Trần Nhất Dũng
Trường học Học viện Kỹ thuật Quân sự
Chuyên ngành Kỹ thuật Công trình
Thể loại Nghiên cứu khoa học
Năm xuất bản 2019
Thành phố Hà Nội
Định dạng
Số trang 9
Dung lượng 624,91 KB

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

Nội dung

Section on Special Construction Engineering N 03/Journal of Science and Technique N 204 (12 2019) Le Quy Don Technical University 36 NGHIÊN CỨU THUẬT TOÁN ĐÁNH LẠI SỐ NÚT KHI GIẢI BÀI TOÁN KHUNG KHÔNG[.]

Trang 1

Section on Special Construction Engineering - N.03/Journal of Science and Technique - N.204 (12-2019) - Le Quy Don Technical University

NGHIÊN CỨU THUẬT TOÁN ĐÁNH LẠI SỐ NÚT KHI GIẢI BÀI TOÁN

KHUNG KHÔNG GIAN BẰNG PHẦN MỀM PHẦN TỬ HỮU HẠN

Trần Nhất Dũng *

Học viện KTQS

Tóm tắt

Bài báo đề cập đến vấn đề xây dựng thuật toán đánh lại số nút khi giải bài toán khung không

gian bằng phần mềm phần tử hữu hạn nhằm đạt được tốc độ tính toán cao và giảm nhẹ các đòi

hỏi về bộ nhớ khi tính toán các bài toán kết cấu có số bậc tự do lớn Với cách đánh số này,

thời gian tính của một bài toán có thể giảm hàng chục thậm chí hàng trăm lần, kích thước các

mảng ma trận cũng vì thế mà giảm đi nhiều lần khiến cho các bài toán lớn vẫn có thể giải

được trên các máy tính cá nhân thông thường

Từ khóa: Đánh lại số nút; ma trận độ cứng; kết cấu khung; phần tử hữu hạn

1 Vấn đề thời gian tính toán đối với bài toán kết cấu công trình

Khi xây dựng các chương trình tính toán kết cấu bằng phương pháp phần tử hữu

hạn các lập trình viên thường gặp một trong những trở ngại lớn là vấn đề tốc độ tính

toán Với các bài toán nhỏ và vừa, người ta thường không cảm thấy sự chờ đợi là đáng

kể tuy nhiên khi số lượng nút lên đến hàng ngàn hoặc hàng chục ngàn thì hệ phương

trình đại số tuyến tính [K].{d} = {Q} đối với bài toán kết cấu phẳng sẽ là khoảng 3000

phương trình; đối với kết cấu không gian sẽ là khoảng 6000 phương trình Khi đó, thời

gian tính toán bắt đầu gây cảm giác khó chịu cho người sử dụng Điều đó càng trở nên

rõ rệt hơn khi phải giải các bài toán động lực học với số lượng bước thời gian tính toán

lớn lúc đó hệ phương trình đại số tuyến tính trên sẽ phải giải lại rất nhiều lần và thời

gian tính toán cũng vì thế mà tăng lên đáng kể, đôi khi còn vượt quá khả năng chờ đợi

của người sử dụng, thậm chí không thể giải được [1, 8]

2 Vấn đề cấp phát bộ nhớ khi giải bài toán kết cấu công trình

Cùng với việc chiếm dụng nhiều thời gian tính toán khi giải các bài toán động, còn

là việc chiếm dụng bộ nhớ của các mảng số liệu Khi gặp bài toán lớn, các mảng ma trận

độ cứng, ma trận khối lượng, ma trận cản, ma trận chuyển vị động, ma trận gia tốc, đều

có kích thước khá lớn Ví dụ, một hệ khung không gian có 1000 nút tương ứng mỗi nút có

6 bậc tự do, khi đó mảng ma trận độ cứng nếu chưa qua xử lý sẽ có kích thước là:

* Email: trannhatdung01@gmail.com https://doi.org/10.56651/lqdtu.jst.v2.n02.231.sce

Trang 2

60006000 = 36.000.000 phần tử, mỗi phần tử đều là các số thực 64 bits

(8 bytes), do vậy kích thước đầy đủ của ma trận [K] sẽ là: 600060008 = 288.000.000

bytes (288 MB)

Tuy nhiên, sẽ có rất nhiều phần tử của ma trận [K] có trị số bằng 0 Chỉ có các

phần tử trên đường chéo chính và một số phần tử lân cận nó là có trị số khác 0 Bên cạnh đó, ma trận lại có tính đối xứng, điều này cho thấy có thể giảm bớt đáng kể kích thước ma trận độ cứng bằng việc chỉ lưu trữ một nửa (trên hoặc dưới) cùng các phần tử trên đường chéo, vả lại cũng không nhất thiết phải lưu trữ toàn bộ các phần tử thuộc nửa trên hay nửa dưới của ma trận mà chỉ cần lưu trữ các phần tử có trị số khác 0 Cho đến nay, các phần mềm phần tử hữu hạn vẫn thường sử dụng một trong hai cách lưu trữ sau:

2.1 Lưu trữ ma trận dưới dạng chiều rộng nửa dải

Cách lưu trữ này kiểm tra để tìm ra hàng nào của ma trận có số phần tử khác 0 lớn

nhất Khi đó ma trận [K] sẽ chuyển từ ma trận vuông nn thành ma trận chữ nhật nnw trong đó nw được gọi là chiều rộng nửa dải của ma trận độ cứng (Hình 1) [3]

n

M Y

S

0

0 0 0

0 0

0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0

0

Hình 1 Lưu trữ ma trận dưới dạng chiều rộng nửa dải

Chiều rộng nửa dải nw được xác định từ sự sai lệch cực đại của tên nút J và nút I

của tất cả các phần tử thuộc bài toán khung không gian, cụ thể là:

nw = (Max IJ + 1)  NED

trong đó:

Max IJ - sai lệch lớn nhất của tên nút I và J trong cùng phần tử, xét cho mọi phần

tử thanh thuộc bài toán hiện xét;

NED - số bậc tự do của 01 nút: Bài toán phẳng NED = 3; bài toán không gian

NED = 6

Ghi chú

 - phần tử có trị số  0

0 - phần tử có trị số = 0

nw - chiểu rộng nửa dải

n - tổng số phương trình

n

nw

Trang 3

2.2 Lưu trữ mảng số liệu dưới dạng ma trận răng cưa (SKYLINE)

Tư tưởng chung của phương pháp lưu trữ này là biến ma trận vuông (mảng 2 chiều) thành ma trận cột (vectơ) Nghĩa là các phần tử của ma trận vuông nếu có trị số khác 0 sẽ được lưu trữ liên tiếp nhau trong ma trận cột, và để quản lý việc truy xuất số liệu ta phải sử dụng một vài mảng phụ để ánh xạ vị trí của phần tử ma trận cột sang ma trận vuông và ngược lại Lúc đó ma trận vuông sẽ được lưu trữ dưới dạng ma trận cột như minh họa sau (Hình 2) [3, 8]:

Hình 2 Minh họa lưu trữ ma trận dưới dạng răng cưa (Skyline)

3 Đánh lại số nút để giảm kích thước ma trận [K]

Hình 3 Hai cách đánh số nút của cùng một bài toán cho hai trị số nw khác nhau

Như đã trình bày ở trên, kích thước ma trận [K] lưu trữ theo dạng chiều rộng nửa dải phụ thuộc rất nhiều vào tham số nw, còn cách lưu trữ theo dạng răng cưa thì phụ

thuộc vào chiều cao của từng cột trong ma trận [K] Song độ lớn của cả tham số nw lẫn

a) nw = ((11-1) + 1)  6 = 66

b) nw = ((5 - 1) + 1)  6 = 30

2

Trang 4

chiều cao cột trong cách lưu trữ dạng răng cưa đều phụ thuộc vào cách đánh số nút của người sử dụng khi lên sơ đồ tính và nhập số liệu Lấy ví dụ như bài toán kết cấu ở hình

4 dưới đây

a) Đánh số nút theo kiểu tuần tự: nw = 768; kích thước [K] = 1.759.656 byte

b) Đánh lại số nút bằng phần mềm: nw = 54; kích thước ma trận [K] = 292.872 byte

Hình 4 Hai cách đánh số nút của cùng một bài toán

Minh họa trên hình 3 và hình 4 cho thấy, cách đánh số như biểu diễn ở hình 3b và 4b có lợi cho việc tính toán hơn là cách đánh số như biểu diễn ở hình 3a, 4a Khi đó chiều rộng nửa dải của ma trận độ cứng theo cách đánh số như ở hình 3b, 4b đều rất nhỏ

so với cách đánh số như ở hình 3a, 4a; Kích thước ma trận độ cứng nếu lưu trữ theo

dạng nửa dải hoặc dạng skyline cũng sẽ giảm rất đáng kể

Minh họa trên hình 3 và hình 4 cũng cho thấy: Với bài toán khung ở hình 3 chỉ gồm 27 nút, người sử dụng có thể khá dễ dàng chọn đánh số lại cho từng nút sao cho

nw là nhỏ nhất Nhưng với ví dụ ở hình 4, bài toán có 149 nút (vẫn là bài toán khá nhỏ),

nhưng là kết cấu 3D, việc yêu cầu người sử dụng phải đánh số sao cho nw nhỏ nhất, sẽ

Trang 5

rất khó nếu không nói là không thể Số liệu đánh lại số nút ở hình 4b, là do phần mềm thực hiện, nên hiệu quả đánh số lại cũng lớn hơn rất nhiều so với bài toán khung hình 3 Các minh họa và nhận xét trên cho thấy khi nhập số liệu nút và phần tử nếu biết lựa chọn cách đánh số nút một cách hợp lý thì sẽ rất có lợi cho tính toán và lưu trữ các mảng số liệu Tuy nhiên, việc buộc người sử dụng phải tự lựa chọn cách đánh số nút hợp lý là không thực tế bởi 02 lý do sau:

- Với các bài toán lớn nếu người sử dụng phải tự chọn cách đánh số nút hợp lý sẽ rất dễ dẫn đến các nhầm lẫn do con người luôn có thói quen đánh số theo các quy luật nhất định (hàng dọc hoặc hàng ngang ), mà các cách đánh số đó thông thường lại là bất lợi cho việc tính toán và lưu trữ ma trận

- Với các bài toán kết cấu không gian lớn, khi số lượng nút lên đến hàng ngàn, con người sẽ không thể tự nhận biết được đâu là cách đánh số nút hiệu quả nhất

Do vậy, việc tối ưu hoá đánh số nút cần được thực hiện một cách tự động Thuật toán sau đây được sử dụng để đáp ứng điều đó Thuật toán này không phụ thuộc vào cách đánh số ban đầu của người sử dụng và cũng không làm xáo trộn bất kỳ phần số liệu cũng như kết quả hiển thị nào của bài toán Với việc tối ưu hoá đánh số nút này thời gian thực thi của chương trình có thể giảm từ vài chục đến hàng trăm lần (tuỳ thuộc vào từng bài toán cụ thể) Nội dung của thuật toán đánh lại số nút được mô tả như sau:

- Khai báo các mảng phụ để tham chiếu từ tên nút “ban đầu” (do người sử dụng định nghĩa hoặc do các thuật toán tự sinh) sang tên nút tính toán (do chương trình quản lý) Các mảng phụ này đảm bảo cho việc truy xuất số liệu về tọa độ nút, thuộc tính nút, tải trọng nút, được bảo toàn mà không phải sửa đổi số liệu trong các mảng mô tả khác (mảng số liệu phần tử, mảng số liệu tải trọng, mảng số liệu tọa độ nút, mảng số liệu điều kiện biên )

- Xuất phát từ nút đầu tiên (nút 1) của số liệu “gốc”, đặt tên mới là 1, đặt chỉ số

bắt đầu nStart=1 Thực hiện chu trình đánh số lại theo sơ đồ khối hình 5

- Tính toán chiều rộng nửa dải nw o (khi chưa đánh số lại) và nw 1 (cho trường hợp

đã đánh số lại từ nút 1) So sánh trị số nw o và nw 1 nếu nw 1 < nw o , nghĩa là cách đánh

số lần này hiệu quả hơn lần đánh số trước nên ta lưu lại mảng nID[ ] trong thuật toán đánh số và giá trị nw 1 làm giá trị dự kiến tối ưu (nw = nw1 và RealID[ ] = nID[ ])

- Tăng chỉ số bắt đầu nStart = nStart + 1 Thực hiện lại chu trình đánh số theo sơ

đồ hình 5 Tính toán lại chiều rộng nửa dải của lần đánh số này và so sánh với giá trị đã

nw chọn từ các lần tính toán trước để xác định lại trị số dự kiến tối ưu nw và RealID[ ]

- Tiếp tục tăng trị số nStart = nStart + 1 và thực hiện lại cách đánh số và so sánh trên Dừng tính khi nStart > tổng số nút tính toán Khi đó nw và RealID[ ] chọn được sau n lần phương án đánh số nút sẽ là giá trị nhỏ nhất trong các cách đánh số đã làm

Trang 6

Với cách đánh số lại như trên nw và RealID[ ] chọn được sẽ luôn là phương án đánh

số nút hợp lý nhất, cho kết quả kích thước ma trận độ cứng [K] là nhỏ nhất trong số các

phương án đã đánh số Sơ đồ khối của thuật toán đánh số lại được thể hiện trên hình 5

Hình 5 Sơ đồ khối của thuật toán đánh lại số nút

Thuật toán đánh số lại trên đây, được lập trình và tích hợp vào một hàm công cụ

(Function) của phần mềm chuyên dụng mang tên Vn3DPro Bài báo này sẽ sử dụng

phần mềm (xem giao diện hình 6), để thử nghiệm số đánh giá hiệu quả của đánh số lại cho một bài toán nhà khung 8 tầng (cao 29,2m) Khung nhà được thể hiện bởi các phần

tử thanh 3D; sàn các tầng thể hiện như các phần tử tấm 04 nút Sau khi nhập và phát

sinh số liệu, bài toán có: 1551 nút tính toán; 1880 phần tử thanh 3D; 1104 phần tử tấm

04 nút Dạng hình học và sơ đồ nút, sơ đồ phần tử của bài toán thử nghiệm được thể hiện trên hình 6

- Gán các trị số ban đầu cho các biến tham chiếu (mảng nID[ ], nStart = 1, bUse[ ] …);

- Tính chiều rộng nửa dải nw0 của bài toán hiện tại

- Đặt i=1; nw=nw0; RealID[ ]=nID; nContinue=1;

Đếm xem có bao nhiêu phần tử nối đến nút i Đánh

số lại bắt đầu từ nút i, số nút tiếp theo là của các phần tử có chung nút i (các nút i+1  i+n)

- Kiểm tra các nút từ i+1 đến i+n, đếm xem có phần

tử nào chưa đánh số mà có nối đến i+1 i+n không?

Nếu có thì đánh số tiếp i+n+1  i+n+m…

- Tính chiều rộng nửa dải nwi của lần đánh số thứ i

- Giữ lại các giá trị đã đánh số

của lượt tính này

- Đặt nw=nwi

- RealID[ ]=nID

- Đánh dấu lượt tính: nContinue

sai

đúng

(nwi < nw) ?

nContinue=nContinue+1 (nContinue >TS nút)?

Bắt đầu

Kết thúc

Trang 7

Hình 6 Bài toán thử nghiệm và phần mềm VN3DPro

Sử dụng Vn3DPro, thực hiện 02 nội dung tính toán (tính nội lực; tính tần số, dạng

dao động riêng), trong 02 trường hợp: không đánh số lại và có đánh số lại Các kết quả đánh giá và thống kê cho 02 trường hợp tính được thể hiện trên hình 7 Kết quả cho thấy trong cả 02 trường hợp (có đánh số lại và không đánh số lại), nội lực, ứng suất và chuyển vị của hai trường hợp tính là hoàn toàn trùng khớp (nghĩa là việc đánh số lại không làm ảnh hướng sai lệch đến kết quả tính toán kết cấu của bài toán) Do khuôn khổ của bài báo nên các nội dung so sánh kết quả nội lực, chuyển vị… không thể trình bày chi tiết tại đây Bài báo sẽ chỉ tập trung phân tích, đánh giá hiệu quả của 02 trường hợp tính, với việc có hoặc không đánh lại số nút cho bài toán khảo sát

a) Phương án không đánh số lại b) Phương án có đánh số lại

Hình 7 Hiệu quả của phương án có đánh số lại so với không đánh số lại

Trang 8

Nhận xét:

Khi có đánh số lại thì chiều rộng nửa dải nw đã giảm từ 4920 xuống chỉ còn là 864

(5,81 lần); kích thước ma trận độ cứng (lưu trữ dưới dạng Skyline) từ 125.937.192 byte giảm xuống chỉ còn 35.175.432 byte (3,58 lần)

Thời gian tính toán nội lực khi có đánh số lại giảm từ 24 giây xuống còn 06 giây (giảm 04 lần); thời gian tính toán tần số dao động riêng giảm từ 36 giây xuống còn

08 giây (4,5 lần)

4 Kết luận

Việc đánh lại số nút để giảm thời gian tính toán và giảm kích thước chiếm dụng

bộ nhớ máy tính, là cần thiết và khả thi Thuật toán đánh lại số nút như bài báo đề xuất

là tường minh và có thể lập trình

Đối với các bài toán nhỏ và vừa lợi ích của việc đánh số lại là không rõ rệt tuy nhiên với các bài toán lớn, khi số lượng nút tăng cao, kích thước các ma trận độ cứng

[K], ma trận khối lượng [M], ma trận cản [C],… có thể lên đến hàng chục hoặc hàng

trăm MB thì việc đánh lại số nút sẽ thực sự phát huy và tỏ rõ hiệu quả

Các thử nghiệm số mà bài báo đã trình bày đều cho thấy, việc đánh lại số nút, đã góp phần làm giảm thời gian tính toán từ vài lần, đến hàng chục lần Bài toán thử nghiệm càng lớn thì hiệu quả đánh lại số nút càng rõ rệt

Tài liệu tham khảo

1 Nguyễn Quốc Bảo, Trần Nhất Dũng (2012) Phương pháp phần tử hữu hạn, lý thuyết và lập

trình, tập 1, 2 Nxb Khoa học và Kỹ thuật

2 Bộ Xây dựng TCVN 2737 - 1995: Tải trọng và tác động tiêu chuẩn thiết kế Nxb Xây dựng

3 Trần Nhất Dũng (1999) Tối ưu hoá đánh số nút với việc giải bài toán động lực học công

trình bằng phương pháp phần tử hữu hạn Tạp chí Khoa học và Kỹ thuật, số 87(II-1999),

Học viện KTQS

4 Chu Quốc Thắng (1997) Phương pháp phần tử hữu hạn Nxb Khoa học và Kỹ thuật

5 Lều Thọ Trình (1997) Ổn định và động lực công trình Nxb Hà Nội

6 Đỗ Sanh, Nguyễn Văn Vượng (1997) Cơ học ứng dụng Nxb Hà Nội

7 Robert Sedgewick (1996) Cẩm nang thuật toán Nxb Hà Nội

8 C S Krishnamoorthy (1995) Finite Element Analysis - Theory and Programming New Delhi

9 K Bathe, E Wilson (1976) Numerical Methods in Finite Element Analysis New Jersey

10 David J Kruglinski (1995) Inside Visual C ++ Microsoft Press

Trang 9

RESEARCHING ALGORITHM FOR REDEFINING NODE NUMBER

TO SOLVE 3D FRAMES BY FINITE ELEMENT SOFTWARE

Abstract: The paper builds an algorithm to redefine the number of nodes when solving

the 3 dimension frames problem by using finite element software to achieve high computing speed and mitigate memory requirements in the case of calculating large structural problems With this numbering, the calculation time of those problems can be reduced by dozens or hundreds of times, the size of matrix arrays also reduces many times so that large problems can still be solved on the PC

Keywords: Redefine node number; frame structure; finite element method

Ngày nhận bài: 15/11/2019; Ngày nhận bản sửa lần cuối: 15/12/2019; Ngày duyệt đăng: 24/12/2019

Ngày đăng: 16/02/2023, 17:15

TỪ KHÓA LIÊN QUAN