Muốn hiểu rõ về CAE

P

papalot

Author
Em mới bắt đầu tìm hiểu về CAE nên muốn xin tư vấn của các anh chị trong diễn đàn. Em nên bắt đầu từ đâu từ đâu và nên học như thế nào a. Em xin trân thành cảm ơn
 
Last edited by a moderator:
Bạn muốn hiểu rõ thì bạn nên học về FEM (finite element method) trước tiên.
đọc sách tiếng anh ấy. sách tiếng việt về FEM viết rút gọn đi rồi.
thấy phải đến hơn 90% số bạn nói là muốn học cae nhưng tiếng anh kém nên khó học, xin tài liệu tiếng việt => xin mời các bạn học tiếng anh cho khá trước đã nhé, không học được tiếng anh thì thôi.
 

Persious

Active Member
đọc Tiếng Anh chuyên ngành là điều tiên quyết, nếu muốn tiếng Việt thì ngồi đọc các bài viết trên diễn đàn cách đây mấy năm để hiểu thêm một ít thôi, nhưng sau đó vẫn phải tham khảo thêm sách tiếng Anh chuyên ngành.
 
Nhân tiện dành cho các bạn mới tìm hiểu về FEM, mình sẽ dẫn lại một vài ý niệm trong sách FEM của đại học colorado, dưới dạng program.
Bài tính FEM đơn giản nhất là bài tính kéo nén thanh, có thể tính xoắn nữa nhưng hãy để nó đơn giản nhất là 1 bậc tự do, 1 chiều.
1) dữ liệu đầu vào (deck) là một file text khai các node, element, lực và constraint
các solver khác nhau thì có cách khai báo dữ liệu đầu vào khác nhau. ví dụ ở đây mình khai các trường phân cách bằng dấu phẩy:
*NODE
1,0.0
2,10.0
3,15.0
4,30.0
5,60.0
đoạn text trên khai báo 5 nodes có ID từ 1-5, có tọa độ 0, 10, 15, 30, 60. Ta chỉ xét bài 1D nên coi như đây là tọa độ X

Đoạn sau sẽ khai báo một số phần tử ROD nối các node trên:
*ROD
1,1,2,210000.0,15.0
2,2,3,210000.0,12.0
3,3,4,210000.0,10.0
4,4,5,210000.0,8.0
mỗi dòng khai một phần tử rod gồm ID, node thứ nhất, node thứ 2, mô đun E, tiết diện A

Đoạn sau khai báo lực kéo/nén tại node:
*FORCE
5,10.0
4,-2.0

Đoạn sau khai báo constraint
*SPC
1,0.0

Việc khai báo dữ liệu như vậy rất nhàm chán, nếu bạn nào dùng hypermesh, hãy tạo các phần tử rod song song với trục X, đặt lực và constraint bằng giao diện đồ họa cho trực quan, sẽ có một đoạn script giúp xuất dữ liệu ra file text theo định dạng trên.

Chương trình FEM sẽ đọc dữ liệu đó và xử lý từng bước, nếu bạn nào làm cae biết gồm các công việc như modeling (preprocess), submit lên solver (process), lấy kết quả làm báo cáo (post process). thì chương trình trong solver cũng có các bước:
- preprocess: đọc dữ liệu, thiết lập ma trận độ cứng K, vector lực F, khử singularity cho K (biến đổi thành Kmod)
- process: giải hệ Kmod.U=F
- post process: tính vector phản lực R, ứng suất, biến dạng, ghi kết quả ra file output.
 
Last edited:
Chương trình sẽ nhận 2 tham số là 1 biến đầu vào (chứa nội dung file deck) và 1 biến đầu ra để ta có thể ghi nội dung của nó ra file result.
Code:
proc p_Solve1D {InputVar OutputVar} {
    upvar $InputVar Input $OutputVar Output
    set Lines [split $Input \n]
    set Blocks [split $Lines *]
    foreach Block $Blocks {
        switch -glob $Block {
            *NODE* {
                  set NodeNum [expr [llength $Block]-1]
                  #mỗi node có 1 bậc tự do nên số dof = số node, ta sẽ tạo sẵn một ma trận K, các thành phần của K sẽ được cập nhật sau
                  set K [mkMatrix $NodeNum $NodeNum]
                  set F [mkMatrix $NodeNum 1]; #vector lực F là ma trận chỉ có 1 cột
                  # ta cần lưu tọa độ node vào một mảng, để sau đó tính độ dài mỗi phần tử rod
                  foreach Line [lrange $Block 1 end] {
                      scan $Line \%d,\%f  NodeId X
                      set Xcoord($NodeId) $X
                   }
 
Ở đoạn trên ta đã biết ma trận K có kích thước bằng số bậc tự do của hệ, và các thành phần của nó sẽ được cập nhật sau.
=> các thành phần của K gọi là hệ số cứng
=> trong phương trình K.U=F nếu ta cho U=1, thì K là nội lực phát sinh ứng với mỗi đơn vị chuyển vị
=> mỗi thành phần của K biểu thị nội lực tại một node nào đó theo một hướng nào đó phát sinh do chuyển vị =1 tại một node khác theo một hướng khác
=> mỗi node chỉ có liên hệ với một số node cận kề (các node thuộc cùng 1 element), cho nên đa số các hệ số cứng trong ma trận K=0, nếu được sắp xếp tốt, ma trận K có dạng băng - tức là chỉ có các hệ số xung quanh đường chéo chính khác 0, cái này có lợi trong tính toán.
=> các hệ số cứng của K được "đóng góp" bởi các element quanh node đó, hay nó được cộng bởi các hệ số cứng của ma trận độ cứng phần tử Ke
=> ma trận Ke của phần tử thanh là
AE/L. |1 -1|
|-1 1|
A là tiết diện, E là mô đun young - hai thông số này có khai báo ở đoạn *ROD , L là chiều dài - khoảng cách giữa 2 node của element ta cần tính
đoạn chương trình lắp ghép ma trận K như sau
chú ý là ở đây lấy ngay chỉ số node để đánh chỉ số hàng cột cho K, một số ngôn ngữ lập trình đánh chỉ số mảng từ 0 thì cần trừ 1 vào chỉ số node. mình sẽ gửi chương trình full sau trong đó dùng mảng chỉ số riêng cho K, các code ở đây chỉ để mọi người xem các bước

Code:
foreach Block $Blocks {
        switch -glob $Block {
            *ROD* {
                    foreach Line [lrange $Block 1 end] {
                           scan $Line \%d,\%d,\%d,\%f,\%f EID N1 N2 E A
                           set L [expr abs($Xcoord($N1)-$Xcoord($N2))]
                           set Ke11 [expr $A*$E/$L]
                           setelem K $N1 $N1 [expr [getelem $K $N1 $N1]+$Ke11]
                           setelem K $N1 $N2 [expr [getelem $K $N1 $N2]-$Ke11]
                           setelem K $N2 $N1 [expr [getelem $K $N2 $N1]-$Ke11]
                           setelem K $N2 $N2 [expr [getelem $K $N2 $N2]+$Ke11]
 

thanhlh84

Active Member
Chà. Muốn học CAE mà phải tìm hiểu cả lập trình và ma trận thế này thì mất thời gian quá. Bác nào làm Tiến Sỹ thì phù hợp hơn. Còn kỹ sư thì mình recommend nên học cuốn này của Altair (Thực chất là tham khảo từ cuốn "Practical Finite Element" của G.S Nitin): https://altairuniversity.com/learni...ite-element-analysis-from-finite-to-infinite/

Nếu muốn lập trình để tính toán và xử lý dữ liệu kết quả mô phỏng (Cái này ứng dụng thực tế nhiều hơn là lập trình để giải hệ phương trình F=KU), thì có một tùy chọn khác cũng khá tốt là Solidthinking Compose: https://solidthinking.com/product/compose/
 
U

umy

Author
Em mới bắt đầu tìm hiểu về CAE nên muốn xin tư vấn của các anh chị trong diễn đàn. Em nên bắt đầu từ đâu từ đâu và nên học như thế nào a. Em xin trân thành cảm ơn
Em papalot chi hỏi - ko đọc, ko học, ko tìm, ko vào tham gia xem thêm !!! : =4.0 SV.VN :D .???
 
Last edited by a moderator:
W

Whitelotus

Author
Mình xin có một số nhận định về quyển "Practical Finite Element Analysis" của Nitin S Gokhle để mọi người tiện theo dõi, và nhận xét thêm.

Pros
+ Một bức tranh tổng quan về FEA và chi tiết về những lĩnh vực phân tích.
+ Cung cấp những từ khóa quan trọng liên quan đến từng lĩnh vực cụ thể.
+ Ngôn ngữ viết là tiếng anh nhập môn nên dễ đọc, không dùng nhiều từ ngữ học thuật như những quyển FEA khác.
+ Sách được viết bởi nhóm tác giả đến từ nhiều lĩnh vực khác nhau trong CAE nên ngoài kiến thức chuyên môn, họ cũng cung cấp thêm những thông tin về Job Description nếu bạn theo nghiệp CAE trong tương lai.
+ Sách màu nên đẹp :eek:

Cons
+ Sách viết theo dạng tổng hợp không theo kiều đi từ A-Z nên các ví dụ cụ thể không nhiều, tuy nhiên các ebook của hãng Altair đều tham khảo từ sách này ra. Trong đó họ cung cấp những ví dụ về mô hình và thao tác trên phần mềm cụ thể. Ngoài ra bạn có thể xem trong phần mềm CAE hoặc doccumentation từ NAFEMS.

+ Một số từ khóa liên quan bạn nên ghi nhớ và đối chiếu nó theo 2 hướng. Một là từ những quyển FEA lý thuyết (có thể tham khảo trong https://meslab.org/threads/tong-hop-tai-lieu-hoc-va-lam-cae.34550/ ). Hai là từ mục Help hoặc các file Verification/User's Manual/ Theory Manual từ các phần mềm CAE. Một hướng luyện nội công, một hướng luyện chiêu thức :D.

+ Sách xuất bản từ năm 2008, và hình như chỉ có 1ed đến 2018. Thế giới CAE có những thay đổi gì ? o_O

Conclusion
Như lời tựa:
" . . . But i wish, that this book will be also a seed for better understanding between all people working for common objectives of our lives, societies and cultures, our world and our spirits."

Nếu mỗi lĩnh vực CAE mà xuất hiện thêm những quyển dạng Handbook như quyển sách này: Handbook of CFD, Handbook of NVH, ... thì tuyệt cú mèo. :)
 
Top