Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job

Author
Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Khi chúng ta muốn mô phỏng bất kỳ bài toán nào bằng FEA (Linear static, linear dynamic, Thermal, Nonlinearity, crash, CFD, thermal, optimization, acoustic) thì chúng ta luôn quan tâm đến 2 vấn đề:
1) Độ chính xác của kết quả: Bạn muốn kết quả mô phỏng chính xác 90%, 80% hay 50%. Thông thường thì sẽ chia càng nhỏ càng chính xác (ngoại trừ Crash analysis).
2) Tốc độ hội tụ. Một mô hình phức tạp với hàng triệu phần tử nếu giải bằng PC thông thường có thể mất hàng tháng, thậm chí hàng năm. Nên các công ty lớn thường dùng các siêu máy tính(Super Computer) để tính toán. Tuy nhiên chi phí mua hoặc thuê Super Computer không hề rẻ. Nên họ cần tính toán hiệu quả cao nhất.
Vì vậy các công ty lớn muốn mô phỏng với độ tin cậy cao (Ford, GM, Toyota, BMW, Honda, Reneult, Nissan) có cả ngàn kỹ sư làm công việc chia lưới, kiểm tra và chuẩn bị mô hình thật chuẩn trước khi chạy tính toán.

Các bạn khi bắt đầu nghiên cứu CAE (Academy thường ví dụ bằng các mô hình khá đơn giản, vuông vắn, và cố gắng giản lược thì không cần quan tâm đến tiêu chuẩn chia lưới lắm. Nhưng với các hãng lớn với mô hình sản phẩm thật, hình dáng phức tạp thì họ phải có tiêu chuẩn chặt chẽ.
Với mô hình SHELL mesh thì 2 phần tử lý tưởng là hình vuông(square) và tam giác đều (equilateral triangle) tuy nhiên với mô hình bên dưới thì ta ko thể luôn luôn có VUÔNG & TAM GIÁC ĐỀU.

Khi đó tiêu chuẩn chia lưới phải có để quyết định sai lệch ở mức độ nào là chấp nhận được.
1. Aspect = max. Element edge length / min. Element edge length
>> Lý tưởng: Aspect = 1 nhưng chấp nhận được là Aspect < 5.
2. Warp = Góc giữa 2 mặt của phần tử tứ giác(QUAD).
>> Lý tưởng = 0. Nhưng chấp nhận được là < 15 deg
3. Jacobian:
>> Lý tưởng = 1. Nhưng giá trị chấp nhận được là > 0.6 (Thông số này rất quan trọng và ảnh hưởng lớn đến tốc độ hội tụ.
4. Min/Max Element Length.
5. Min/Max Angle của QUAD
6. Tetra collapse.

Ngoài ra còn phải kiểm tra Free edges( tính liên tục của mô hình), Duplicated elements, Normal vector(Giá trị màu mè ứng suất trên Post process sẽ phụ thuộc vào hướng của elements, nếu hướng lộn xộn, kết quả view sẽ rất khó hiểu)

Các bạn có thể check tiêu chuẩn này và sửa một cách dễ dàng với các công cụ Pre-processing (ví dụ HyperMesh >> F10).
Mình tin chắc nếu những ai đã có kinh nghiệm và làm CAE thực tế chắc chắn hiểu và quan tâm đến khái niệm "Element Criteria" một cách nghiêm túc.
Trong tất cả các tài liệu chuyên sâu về CAE đều đề cập rõ ràng:
[
/B] >> Solver >> Postprocessing

Nếu preprocessing(chia lưới, gán vật liệu, properties, contact, BC) có vấn đề thì kết quả trên Post-processing sẽ đầy nghi ngờ!!!
 
Last edited:
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Bài viết mới chỉ nói đến "kiểm tra những tiêu chí nào của phần tử". Chưa giải thích lý do tại sao phải kiểm tra những tiêu chí như vậy như đúng tiêu đề bài viết, hay nói đúng hơn là tại sao phần tử vuông hay tam giác đều lại là kiểu mẫu lí tưởng, và...jacobian ở đây là gi? Nghe có vẻ máy móc, thực tế việc chia lưới cũng là việc làm đầy máy móc.
 

thanhlh84

Active Member
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Mình đọc tài liệu về cái Jacobian này cũng không hiểu rõ lắm. "Nói một cách đơn giản, Jacobian là hệ số tỷ lệ "Scale factor" trong quá trình biến đổi hệ toạ độ. Các phần tử sẽ luôn được biến đổi từ hệ toạ độ global sang hệ toạ độ địa phương(tại centroid of elements). Do đó nó ảnh hưởng đến tốc độ tính toán". Mấy năm trước mình làm cho một công ty nước ngoài suốt ngày phải chia lưới và kiểm tra mấy tiêu chuẩn này khá chán. Có điều công ty mình ko kiểm tra aspect, Jacobian mà chỉ kiểm tra min/max angle, min/max length, warp. Có vẻ mấy tiêu chuẩn này cũng liên quan đến nhau.
 

Pathétique

Active Member
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Những tiêu chuẩn này liên quan đến nhau. Khi code không hội tụ, thường báo lỗi về Jacobian hoặc lỗi tích phân điểm Gauss tại phần tử chứ không nói min max dạng hình học. Các phần mềm và công cụ pre processing hầu như đã tính đến hết các tiêu chuẩn này khi chia lưới tự động rồi. Ngay cả khi biến dạng quá lớn, jacobian bị âm thì các phần mềm cũng tự chia lưới lại (remesh) dựa theo tiêu chuẩn năng lượng. Người dùng kiểm tra lưới chủ yếu để refine phần họ cần phân tích, control thông số để tiết kiệm thời gian.
 

thanhlh84

Active Member
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Bác Pathetique giải thích chuyên sâu thật. Tiện thể cho em hỏi, ngày trước em có làm mô phỏng va chạm cho oto (Crash analysis), tại sao chia lưới xong hết lại cứ phải kiểm tra time step xem có lớn hơn giá trị cho phép không? Nếu lớn hơn, thằng sếp nó bắt tăng chiều dài min length lên tại những vị trí mà solver báo time step lớn quá.
 

Pathétique

Active Member
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Crash là bài toán transient rồi (khác với static), nên criteria về chia lưới và time step liên quan đến nhau.

Chẳng hạn bạn mô phỏng hàn (welding), chia lưới gồm hai phần tử, mỗi phần tử chiều dài 1 cm. Bạn hàn với vận tốc 1 cm/s, nếu bước thời gian của bạn quá lớn, 1 s chẳng hạn, thì mỗi phần tử bạn chỉ kịp dừng có 1 s, tức là 1 time step để tính, chưa kịp thiết lập hoàn toàn trạng thái cân bằng cho phần tử thứ nhất thì step tiếp theo bạn đã qua phần tử thứ 2 rồi. Vì vậy giải pháp là giảm time step xuống, hoặc tăng min length lên để có thêm thời gian tính toán cho mỗi phần tử.

Tương tự cái crash của bạn cũng vậy, time step lớn quá thì bạn chưa tính xong cân bằng về biến dạng cho đầu ô tô thì đã đến lượt tính toán va chạm giữa đuôi xe với tường rồi, nên ta phải giảm time step xuống.
 

thanhlh84

Active Member
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Cảm ơn bác nhiều nhiều. Em thích nghiên cứu về CAE lắm nhưng có rất nhiều câu hỏi trăn trở mà không biết hỏi ai. Em cũng còn trăn trở về tại sao một số chi tiết người ta lại yêu cầu chia bằng Hexa (hexa/penta), không được phép chia bằng Tetra10. Phải chăng tetra 10 cứng hơn Hexa nên mô phỏng không chính xác. Tetra 10 sẽ có 30 bậc tự do, hexa8 có 24 bậc tự do thì lẽ ra tetra 10 phải mềm hơn chứ nhỉ?
 

thanhlh84

Active Member
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Crash là bài toán transient rồi (khác với static), nên criteria về chia lưới và time step liên quan đến nhau.

Chẳng hạn bạn mô phỏng hàn (welding), chia lưới gồm hai phần tử, mỗi phần tử chiều dài 1 cm. Bạn hàn với vận tốc 1 cm/s, nếu bước thời gian của bạn quá lớn, 1 s chẳng hạn, thì mỗi phần tử bạn chỉ kịp dừng có 1 s, tức là 1 time step để tính, chưa kịp thiết lập hoàn toàn trạng thái cân bằng cho phần tử thứ nhất thì step tiếp theo bạn đã qua phần tử thứ 2 rồi. Vì vậy giải pháp là giảm time step xuống, hoặc tăng min length lên để có thêm thời gian tính toán cho mỗi phần tử.

Tương tự cái crash của bạn cũng vậy, time step lớn quá thì bạn chưa tính xong cân bằng về biến dạng cho đầu ô tô thì đã đến lượt tính toán va chạm giữa đuôi xe với tường rồi, nên ta phải giảm time step xuống.
Trong bài toán va chạm của oto thì người ta khảo sát xe va chạm với vận tốc nào đó(Chẳng hạn 50km/h). Như vậy ta không thể giảm timestep được mà chỉ có thể tăng min length lên đúng không bác?
 

Pathétique

Active Member
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Tùy solver dùng là implicit hay explicit. Khi dùng explicit thì vận tốc có thể tăng lên vài nghìn lần để tiết kiệm thời gian tính toán. Khi bạn mô phỏng trạng thái cơ nhiệt 1 hệ khoảng 10k phần tử, vận tốc nguồn nhiệt là 10 cm/s là bạn phải chia nhỏ bước thời gian là 0.001 s rồi. Với hệ có số lượng phần tử rất lớn thì phải mô phỏng với vận tốc ảo để tối ưu hóa chi phí tính toán. Lúc này vận tốc cũng như time step được control bởi criteria về năng lượng, chẳng hạn động năng của hệ không vượt quá 5% năng lượng tổng cộng của hệ. Nếu solver là implicit, không giảm được time step thì ta tăng min length để đạt trạng thái cân bằng cho mỗi phần tử.
 
Lượt thích: umy

thanhlh84

Active Member
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Thanks bác Pathetique đã chia sẻ. Bọn em dùng solver LS-DYNA explicit để mô phỏng Crash(Impact). Bọn chuyên gia Hàn Quốc nó còn bảo em là Explicit thích hợp và cho kết quả "chính xác" hơn cho những bài toán khảo sát trong thời gian ngắn(Crash, Explosion) và vận tốc lớn hơn 10m/s (tuc khoang 36km/h. 10 e+1 m/s). Nhưng lại phải thay đổi min length để thỏa mãn để time step. Implicit thì có lẽ chỉ đúng cho vận tốc nhỏ và khảo sát trong thời gian dài (low velocity & long time events) nên có lẽ họ không dùng cho bài toán va chạm.
 
Lượt thích: umy

Pathétique

Active Member
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Implicit cũng cho kết quả chính xác, nhưng thời gian tính toán quá lâu, có khi không computable. Hiện mình cũng đang dùng abaqus explicit cho những mô hình lớn. Không cần đến vận tốc lớn, chỉ cần kích thước mô hình lớn thì nên chuyển qua explicit rồi để giảm chi phí.
 

Pathétique

Active Member
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Về vấn đề phần tử hexa hay tetra (giờ mình mới thấy câu hỏi của bạn), không phải phần tử mềm hay cứng hơn sẽ cho kết quả chính xác hơn. Tùy từng trường hợp mà dùng loại phần tử nào, không chỉ là câu hỏi về thời gian tính toán. Ví dụ đơn giản là bài toán nhiệt dạng hình học đơn giản thì qua4 cho kết quả chính xác hơn qua8, vì khi bạn dùng qua8 tính tuyến tính của bài toán lại bị ảnh hưởng. Nhưng khi sử dụng trường nhiệt độ này để tính biến dạng thermomechanical thì phải đổi qua qua8. Như bạn thấy, việc chọn loại phần tử còn phụ thuộc vào kinh nghiệm và vấn đề cụ thể (solid mechanics, CFD...).
 
Author
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Implicit cũng cho kết quả chính xác, nhưng thời gian tính toán quá lâu, có khi không computable. Hiện mình cũng đang dùng abaqus explicit cho những mô hình lớn. Không cần đến vận tốc lớn, chỉ cần kích thước mô hình lớn thì nên chuyển qua explicit rồi để giảm chi phí.
Em rất khâm phục nền tảng lý thuyết của anh Pathetique. Tuy nhiên, trong lĩnh vực CAE rộng lớn này (Phân tích kết cấu, phân tích va chạm, phân tích dòng chảy, phân tích động lực học vật rắn biến dạng, tối ưu hóa, phân tích dao động) không ai có thể thành thạo hết. Do đó em chưa hoàn toàn đồng tình với anh về cách áp dụng thực tế về IMPLICIT và EXPLICIT.
Với nhiều lần trao đổi với các chuyên gia bên Pháp, họ vẫn nói với em là:
- EXPLICIT coi bài toán là động lực (dynamic problems) và Explicit code sẽ giải các phương trình chuyển động của hệ động lực này theo miền thời gian. Nó rất hiệu quả trong việc giải các bài toán va chạm, đặc biệt là cho vật liệu phi tuyến(plastic), biến dạng lớn(large deformation), và có contact.
- IMPLICIT (thường) là ráp ma trận độ cứng của cả hệ và giải các bài toán tĩnh(static) hoặc q
coi như độc lập với thời gian. Phương pháp này cũng có thể dùng để giải bài toán Nonlinearity material, large deformation, contact.
 
Author
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Về vấn đề phần tử hexa hay tetra (giờ mình mới thấy câu hỏi của bạn), không phải phần tử mềm hay cứng hơn sẽ cho kết quả chính xác hơn. Tùy từng trường hợp mà dùng loại phần tử nào, không chỉ là câu hỏi về thời gian tính toán. Ví dụ đơn giản là bài toán nhiệt dạng hình học đơn giản thì qua4 cho kết quả chính xác hơn qua8, vì khi bạn dùng qua8 tính tuyến tính của bài toán lại bị ảnh hưởng. Nhưng khi sử dụng trường nhiệt độ này để tính biến dạng thermomechanical thì phải đổi qua qua8. Như bạn thấy, việc chọn loại phần tử còn phụ thuộc vào kinh nghiệm và vấn đề cụ thể (solid mechanics, CFD...).
Theo em biết thì cũng có một phần liên quan đến stiffness(số bậc tự do) của hệ. Trong structure analysis, người ta luôn phải dùng Tetra10 mà không phải là Tetra4 trong khi rõ ràng là Tetra4 ít node hơn nên tính toán sẽ nhanh hơn. Còn trong CFD (thermal analysis) người ta thường dùng Tetra4 + Pyramid mà không dùng Tetra10.
 

Pathétique

Active Member
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Nguyên tắc giải của solvers Explicit và Implicit bạn nói đúng, nhưng mình xét về góc độ khả thi về mặt thời gian và chi phí tính toán. Phi tuyến vật liệu, biến dạng lớn và contact phần lớn các problem đều có, mình dùng implicit giải rất nhanh, chi phí thấp hơn explicit khi kích thước hệ không quá lớn. Nhưng cùng 1 bài toán kéo đơn giản thôi, biến dạng nhỏ, miền đàn hồi, chỉ cần kích thước hệ lớn thì implicit không chạy nổi rồi.

Dĩ nhiên tùy bản chất vấn đề mà solver nào giải tốt hơn, ở đây mình nói đến việc sử dụng solver từ góc độ kích thước hệ thôi.

Chọn phần tử thì mình dùng nhiều kiểu cho 1 structure, kết hợp cả beam và shell, lý do chính là thời gian tính toán thôi. Những phần không cần chính xác, thậm chí không cần quan tâm kết quả thì dùng tetra4, thậm chí để tiêu chuẩn hình học của phần tử bị sai cũng không sao (tỉ lệ cạnh là 1/20 cũng được), miễn vừa đủ hội tụ là được. Với các structure lớn, ban đầu có thể làm tất cả bằng beam, sau đó zoom vào vị trí cần phân tích và dùng 3D. Nói chung mình chọn phần tử để tối ưu tính chính xác của kết quả và chi phí tính toán thôi, chứ không cứng nhắc chọn loại nào, dĩ nhiên CFD hay những trường hợp đặc biệt thì cần biết, mình chưa làm CFD bao giờ nên không rành bên ấy lắm.
 
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Hi,
LSDYNA is orinal explicite solver for impact solution
it integrate the results obtained from projects in the past by finte difference
(J.O.Hallquist) at livermore(LLNL).
But the implicite solver(HHT scheme)is more precise than explicite.
and the the element fomulation play an important rule for this precision.
the element size is controled for wave propation by pre-processing software
Thanx
 

Pathétique

Active Member
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Hi pdupuis75,

I profit this discussion to ask you about finite difference with domain decomposition. Recently, I've done a project under Matlab to solve Laplace equation using implicit scheme with the Schwarz decomposition method. It is to simulate an electro-thermal experiment (Gleeble test) and I obtained good correlation with finite element solution of Cast3m. However, I would like to find others finite difference solvers with different decomposition method to compare my results. Could you indicate me some existing ?
 
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Hi Pathetique,

Nice to hear you again. i guest that you'are doing applied research :)

a) Doing domain decompostion(making short time of computation on clusters) has two essential points
-from results of applied math. the heat of problem for example
eigenvalue extraction by Lanczos
egenvalue value extraction by AMLS. (Level Sub-structuring (AMLS) method for sparse eigenvalue problems)
-from computer sciences (knowhow on hardwares of big computers(died or still living from sixteen) and on all fortran compilers) for speed up
the combinaison of this two points gives the best results.
you understand that only the great institutions hold this capability.

b) trying to do with Mpi fortran on your clusters:)

Note that you shoud put Like on my text:)
Cam on
 
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Bác Pathetique giải thích chuyên sâu thật. Tiện thể cho em hỏi, ngày trước em có làm mô phỏng va chạm cho oto (Crash analysis), tại sao chia lưới xong hết lại cứ phải kiểm tra time step xem có lớn hơn giá trị cho phép không? Nếu lớn hơn, thằng sếp nó bắt tăng chiều dài min length lên tại những vị trí mà solver báo time step lớn quá.
Hello Thanh
Lâu lắm mới vào meslab. :5: lẽ ra cậu hỏi các chuyên gia chỗ cậu rồi về nói lại cho mọi người chứ lị, cứ ngại ngùng cơ!
nhân đây tớ lại nói về cái timestep, với explicit thì cái timestep không được tùy ý mà nó có giới hạn trên
giới hạn này có hai ý nghĩa:
- ý nghĩa toán học (xem sơ đồ explicit, sau một loạt các phép tính): c huyển vị Xm=(A mũ m).X0 (biểu thức đúng thì phức tạp hơn mình chỉ viết như thế này thôi để giải thích)
Xm là chuyển vị ở bước tính thứ m, với một khoảng thời gian phân tích như nhau ví dụ là 1 giây để chuyển vị Xm không bị tăng
theo số bước tính m thì định thức của A<=1, từ phương trình đó rút ra timestep < [timestep]
- ý nghĩa vật lý: ở thời điểm t chuyển vị tại node1 là U1, tại node2 là U2, ở thời điểm t'=t+timestep chuyển vị tại node1 là U'1, tại
node2 là U'2, theo sơ đồ explicit thì U'2 tính dựa trên U2 nhưng sóng ứng suất (hay nguồn nhiệt) đã di chuyển từ node1 qua node2 trong khoảng tgian timestep do đó U'2 không được tính chính xác vì nó bị thay đổi bới sóng ứng suất. để U'2 được tính chính xác thì timestep phải nhỏ hơn thời gian mà sóng ứng suất (hay nguồn nhiệt) đi tới, từ đó rút ra timestep < [timestep]

như vậy trong va chạm thì timestep rất bé vì sóng ứng suất truyền đi với tốc độ cao. có nghĩa là để phân tích một khoảng thời gian ví dụ 1 giây cần rất nhiều bước tính do đó tiêu tốn tài nguyên máy tính (CPU time, ram,...)
để đỡ tốn kém người ta đặt ra giới hạn dưới cho timestep => và do đó có giới hạn dưới cho khoảng cách giữa node1 và node2
chính là cái mà cậu gọi là min length. Tăng min length lên thì sẽ tăng được timestep và tiết kiệm tài nguyên máy tính
 
Ðề: Tại sao cần phải kiểm tra chất lượng phần tử(Element quality) trước khi gửi lên solver tính toán(job submit).

Cảm ơn bác nhiều nhiều. Em thích nghiên cứu về CAE lắm nhưng có rất nhiều câu hỏi trăn trở mà không biết hỏi ai. Em cũng còn trăn trở về tại sao một số chi tiết người ta lại yêu cầu chia bằng Hexa (hexa/penta), không được phép chia bằng Tetra10. Phải chăng tetra 10 cứng hơn Hexa nên mô phỏng không chính xác. Tetra 10 sẽ có 30 bậc tự do, hexa8 có 24 bậc tự do thì lẽ ra tetra 10 phải mềm hơn chứ nhỉ?
Hello Thanh
về cơ bản thì phần tử bậc 2 mềm dẻo hơn phần tử bậc 1, tuy nhiên khi dùng nó thì tiêu tốn tài nguyên máy tính hơn, nên
người ta vẫn coi như là "liệu cơm gắp mắm" vậy, nếu dùng hexa6/penta5 mà kết quả không sai lệch nhiều so với tetra10 thì
người ta vẫn ưu tiên dùng, nhất là nếu như chi tiết đó có thể mesh được bằng hexa/penta (không phải cái nào cũng mesh được)
nên cứ mesh hexa/penta với mesh size bé thì cũng cho kết quả tốt
bản thân phần tử bậc 1 cũng có một số "form" với độ mềm dẻo khác nhau:
phần tử tria3, tetra4, penta5 cứng hơn các phần tử khác, vì biến dạng trong nó là hằng số
phần tử quad4, hexa6 form có 1 IP thì mềm hơn là form có đủ IP vì nó không bị lock (tuy nhiên lại bị hourglass)

Tóm lại người ta chọn dùng loại nào là khi người ta hiểu đặc tính của nó phù hợp với khả năng, mô hình và hiện tượng cần mô phỏng

Ví dụ trong crash không (tớ chưa bao giờ thấy) dùng tetra10 hoặc các phần tử bậc 2
 
Top