შიგთავსზე გადასვლა

ელემენტების ნუმერაციის სქემა და ფორმის ფუნქციების ბიბლიოთეკა

ფორმის ფუნქციებსა და სასრულ ელემენტთა მიახლოებაში შემოტანილი ფორმის ფუნქცია \(N_\alpha^e(\boldsymbol{r})\) თითოეული ელემენტის ტიპისთვის კონკრეტულ სახეს იღებს. ამ თავში FrontISTR-ის ელემენტების ჯგუფები კლასიფიცირებულია სამნიშნა ელემენტის ტიპის ნომრებით და წარმოდგენილია ფორმის ფუნქციების ბიბლიოთეკის ინტერფეისი, რომელიც ყველა ელემენტს ერთიანი წესით ამუშავებს. სამგანზომილებიანი მყარი სხეულის ელემენტების ბუნებრივი კოორდინატთა სისტემები და ფორმის ფუნქციები, აგრეთვე მეორე რიგის ელემენტების შუა კვანძების რიგის გარდაქმნა განხილულია სამგანზომილებიანი მყარი სხეულის ელემენტების ფორმის ფუნქციებში, ხოლო ელემენტის ტიპის შერჩევის მითითებები — ელემენტების ბიბლიოთეკაში (ფუნქციები).

ელემენტების კლასიფიკაცია და დასახელების წესები

FrontISTR-ის ელემენტების ტიპები სამნიშნა რიცხვებით აღინიშნება. თითოეული ციფრის მნიშვნელობა ასეთია.

  • პირველი ციფრი (ელემენტების ჯგუფი): 1 = ხაზოვანი ელემენტი/ფერმა, 2 = სიბრტყითი ელემენტი, 3 = მოცულობითი ელემენტი, 5 = ინტერფეისული ელემენტი, 6 = კოჭის ელემენტი, 7 = გარსის ელემენტი.
  • მეორე ციფრი (ძირითადი ფორმა): განასხვავებს გეომეტრიულ ფორმას ელემენტების ჯგუფში (სამკუთხედი, ოთხკუთხედი, ტეტრაედრი, პრიზმა ან ჰექსაედრი).
  • მესამე ციფრი (ინტერპოლაციის რიგი): 1 = პირველი რიგი (მხოლოდ კუთხის კვანძები), 2 = მეორე რიგი (შუა კვანძების ჩათვლით). გამონაკლისად, ორკვანძიანი ფერმის ელემენტის ნომერია 301.

ხელმისაწვდომი ელემენტები ჯგუფების მიხედვით ქვემოთ მოცემულ ცხრილშია ჩამოთვლილი.

ელემენტების ჯგუფი ელემენტის ტიპი კვანძების რაოდენობა აღწერა
ხაზოვანი ელემენტი 111 2 2-კვანძიანი დამაკავშირებელი ელემენტი (ძაბვის ანალიზისთვის მიუწვდომელია)
112 3 3-კვანძიანი დამაკავშირებელი ელემენტი (ძაბვის ანალიზისთვის მიუწვდომელია)
სიბრტყითი ელემენტი 231 3 3-კვანძიანი პირველი რიგის სამკუთხა ელემენტი
232 6 6-კვანძიანი მეორე რიგის სამკუთხა ელემენტი
241 4 4-კვანძიანი პირველი რიგის ოთხკუთხა ელემენტი
242 8 8-კვანძიანი მეორე რიგის ოთხკუთხა ელემენტი (Serendipity ოჯახი)
მოცულობითი ელემენტი 301 2 2-კვანძიანი ფერმის ელემენტი
341 4 4-კვანძიანი პირველი რიგის ტეტრაედრული ელემენტი
342 10 10-კვანძიანი მეორე რიგის ტეტრაედრული ელემენტი
351 6 6-კვანძიანი პირველი რიგის პრიზმული ელემენტი
352 15 15-კვანძიანი მეორე რიგის პრიზმული ელემენტი
361 8 8-კვანძიანი პირველი რიგის ჰექსაედრული ელემენტი
362 20 20-კვანძიანი მეორე რიგის ჰექსაედრული ელემენტი (Serendipity ოჯახი)
ინტერფეისული ელემენტი 541 4×2 4-კვანძიანი პირველი რიგის ოთხკუთხა-ზედაპირის ელემენტი (ძაბვის ანალიზისთვის მიუწვდომელია)
542 8×2 8-კვანძიანი მეორე რიგის ოთხკუთხა-ზედაპირის ელემენტი (ძაბვის ანალიზისთვის მიუწვდომელია)
კოჭის ელემენტი 611 2 2-კვანძიანი Bernoulli-Euler-ის კოჭის ელემენტი (6 თავისუფლების ხარისხი თითო კვანძზე)
641 2×2 2-კვანძიანი Bernoulli-Euler-ის კოჭის ელემენტი (3 თავისუფლების ხარისხი თითო კვანძზე, შერეული თავისუფლების ხარისხებისთვის)
გარსის ელემენტი 731 3 MITC3 სამკუთხა გარსის ელემენტი (6 თავისუფლების ხარისხი თითო კვანძზე)
741 4 MITC4 ოთხკუთხა გარსის ელემენტი (6 თავისუფლების ხარისხი თითო კვანძზე)
743 9 MITC9 ოთხკუთხა გარსის ელემენტი (6 თავისუფლების ხარისხი თითო კვანძზე)
761 3×2 MITC3 სამკუთხა გარსის ელემენტი (3 თავისუფლების ხარისხი თითო კვანძზე, შერეული თავისუფლების ხარისხებისთვის)
781 4×2 MITC4 ოთხკუთხა გარსის ელემენტი (3 თავისუფლების ხარისხი თითო კვანძზე, შერეული თავისუფლების ხარისხებისთვის)

პირველი რიგის ჰექსაედრულ ელემენტ 361-ს რამდენიმე ფორმულირება აქვს (სრული ინტეგრაცია, შეუთავსებელი რეჟიმი, B-bar და F-bar), რომლებიც ანალიზის მართვის პარამეტრებით ირჩევა. დეტალებისთვის იხილეთ გაუმჯობესებული ელემენტების ფორმულირებები.

კოჭის ელემენტი 641 და გარსის ელემენტები 761/781 განკუთვნილია 6 თავისუფლების ხარისხიანი სტრუქტურული ელემენტების 3 თავისუფლების ხარისხიან მოცულობით ელემენტებთან ერთსა და იმავე კვანძებში დასაკავშირებლად; ერთი სტრუქტურული კვანძი წარმოდგენილია ორი 3-თავისუფლების-ხარისხიანი კვანძით. თვით ფორმულირებები შესაბამისი 6-თავისუფლების-ხარისხიანი ვერსიების (611, 731 და 741) იდენტურია.

ფორმის ფუნქციების ბიბლიოთეკა

ელემენტის გამოთვლის რუტინებს (სიხისტის მატრიცისა და შიდა ძალის ვექტორის აგება) თითოეული ელემენტის ტიპისთვის ცალკე რუტინა არ აქვს. ამის ნაცვლად ისინი ფორმის ფუნქციების ბიბლიოთეკას ერთიანი ინტერფეისით იძახებენ, რომელსაც არგუმენტად გადაეცემა ელემენტის ტიპის ნომერი fetype. მოდული elementInfo (fistr1/src/lib/element/element.f90) შემდეგ ფუნქციებს იძლევა.

  • NumOfQuadPoints(fetype): აბრუნებს მოცემული ელემენტის ტიპის ინტეგრაციის წერტილების რაოდენობას \(n_q\).
  • getQuadPoint(fetype, np, pos): აბრუნებს ინტეგრაციის \(i\)-ე წერტილის ბუნებრივ კოორდინატებს \(\boldsymbol{r}_i\).
  • getWeight(fetype, np): აბრუნებს ინტეგრაციის \(i\)-ე წერტილის წონას \(w_i\).
  • getShapeFunc(fetype, r, N): ბუნებრივ კოორდინატებზე \(\boldsymbol{r}\) აბრუნებს ფორმის ფუნქციის მნიშვნელობებს \(N_\alpha^e(\boldsymbol{r})\).
  • getShapeDeriv(fetype, r, dN): აბრუნებს ფორმის ფუნქციების ბუნებრივ კოორდინატთა წარმოებულებს \(\partial N_\alpha^e/\partial \boldsymbol{r}\).
  • getGlobalDeriv(fetype, n_e, r, X^e, J, dN_x): ელემენტის კვანძური კოორდინატების \(\boldsymbol{X}^e\) მიხედვით აბრუნებს ფიზიკური კოორდინატების წარმოებულებს \(\partial N_\alpha^e/\partial \boldsymbol{x}\) და იაკობიანის დეტერმინანტს \(J\).
  • getNumberOfSubface(fetype), getSubFace(fetype, k, ...): აბრუნებს ელემენტის სასაზღვრო წახნაგების რაოდენობას და თითოეული წახნაგის შემადგენელი კვანძების ნომრებს. ისინი გამოიყენება ზედაპირული დატვირთვებისა და კონტაქტური ზედაპირების აგებისთვის.

თითოეული ფუნქცია შიგნით განშტოვდება ელემენტის ტიპის ნომრის მიხედვით და იძახებს ფორმის ფუნქციისა და მისი წარმოებულის ქვერუტინებს შესაბამისი ელემენტის ტიპისთვის განკუთვნილ ქვედა დონის მოდულებში (tet4n.f90, tet10n.f90, prism6n.f90, prism15n.f90, hex8n.f90, hex20n.f90, tri3n.f90, tri6n.f90, quad4n.f90, quad8n.f90, quad9n.f90, line2n.f90, line3n.f90). ინტეგრაციის წერტილების კოორდინატებისა და წონების რიცხვითი ცხრილები გაერთიანებულია quadrature.f90-ში. ახალი ელემენტის ტიპის დასამატებლად უნდა განხორციელდეს შესაბამისი ქვედა დონის მოდული და elementInfo-ის თითოეულ ფუნქციაში დაემატოს მისი განშტოება.

მეორე რიგის სამკუთხა ელემენტების შუა კვანძების რიგის გარდაქმნა

მეორე რიგის სამკუთხა ელემენტი 232-ისთვის შუა კვანძების მიმდევრობა განსხვავდება HEC-MW-ის ბადის შეყვანის ფორმატსა (ჯერ კუთხის კვანძები ელემენტის გარშემო, შემდეგ შუა კვანძები წიბოებზე 1-2, 2-3, …) და FrontISTR-ის შიდა ფორმატს შორის, რომელსაც ელემენტების ბიბლიოთეკის ფორმის ფუნქციები იყენებს. ეს განსხვავება ბადის წაკითხვისთანავე სწორდება hecmw2fstr_mesh_conv-ით (fistr1/src/common/hecmw2fstr_mesh_conv.f90 და hecmw2fstr_connect_conv.c), რომელიც გარდაქმნის ცხრილ Table232-ის მიხედვით ექვს კვანძს \(\{1,2,3,6,4,5\}\) რიგში გადააწყობს. გარდაქმნა პირდაპირ ელემენტის კავშირების მასივზე სრულდება, ამიტომ შემდგომი ელემენტების ბიბლიოთეკის ყველა გამოძახება FrontISTR-ის შიდა კვანძურ რიგს იყენებს. შედეგის გამოტანისას უკუგარდაქმნა fstr2hecmw_mesh_conv ჩაწერამდე აღადგენს HEC-MW ფორმატს, ამიტომ მომხმარებელს შეყვანისა და გამოტანისთვის მხოლოდ HEC-MW ფორმატის ცოდნა სჭირდება.

სამგანზომილებიან მოცულობით ელემენტებს 342 (მეორე რიგის ტეტრაედრული) და 352 (მეორე რიგის პრიზმული) ანალოგიური ავტომატური გარდაქმნები აქვს, ხოლო 362-ს (მეორე რიგის ჰექსაედრული) გარდაქმნა არ სჭირდება. მათი დამუშავებისთვის იხილეთ სამგანზომილებიანი მყარი სხეულის ელემენტების ფორმის ფუნქციები. მეორე რიგის სიბრტყითი ოთხკუთხა ელემენტი 242-ისა და ინტერფეისული ელემენტი 542-ისთვის გარდაქმნა არ სრულდება, რადგან HEC-MW-ის შეყვანის ფორმატსა და შიდა ფორმატში შუა კვანძების რიგი ერთნაირია.

დაკავშირებული თემები