Անցնել պարունակությանը

Տարրերի համարակալման համակարգ և ձևի ֆունկցիաների գրադարան

Ձևի ֆունկցիաներ և վերջավոր տարրերի մոտարկում բաժնում ներմուծված \(N_\alpha^e(\boldsymbol{r})\) ձևի ֆունկցիայի կոնկրետ տեսքը տարբեր է յուրաքանչյուր տարրի տեսակի համար։ Այս գլխում FrontISTR-ի տրամադրած տարրերի խմբերը դասակարգվում են եռանիշ տարրի տեսակի համարներով և ներկայացվում է ձևի ֆունկցիաների գրադարանի միասնական ինտերֆեյսը, որով բոլոր տարրերը մշակվում են նույն կերպ։ Եռաչափ պինդ մարմնի տարրերի բնական կոորդինատների, ձևի ֆունկցիաների կոնկրետ տեսքերի և երկրորդ կարգի տարրերի միջանկյալ հանգույցների դասավորության փոխակերպման համար տես Եռաչափ պինդ մարմնի տարրերի ձևի ֆունկցիաներ, իսկ տարրի տեսակի ընտրության ուղեցույցի համար՝ Տարրերի գրադարան (գործառույթներ)։

Տարրերի դասակարգում և անվանման կանոններ

FrontISTR-ի տարրի տեսակները նույնականացվում են եռանիշ համարով։ Յուրաքանչյուր թվանշանի իմաստը հետևյալն է։

  • 1-ին թվանշան (տարրերի խումբ)՝ 1=գծային տարր/ֆերմա, 2=հարթ տարր, 3=պինդ մարմնի տարր, 5=ինտերֆեյսային տարր, 6=հեծանային տարր, 7=թաղանթային տարր։
  • 2-րդ թվանշան (հիմնական ձև)՝ տարբերակում է տարրերի խմբի երկրաչափական ձևը (եռանկյունի, քառանկյունի, քառանիստ, եռանկյուն պրիզմա, վեցանիստ)։
  • 3-րդ թվանշան (ինտերպոլացման կարգ)՝ 1=առաջին կարգ (միայն անկյունային հանգույցներ), 2=երկրորդ կարգ (ներառյալ միջանկյալ հանգույցները)։ Բացառություն է երկհանգույց ֆերմային տարրը, որի համարը 301 է։

Տրամադրվող տարրերը ըստ տարրերի խմբերի ներկայացված են ստորև։

Տարրերի խումբ Տարրի տեսակ Հանգույցների թիվ Նկարագրություն
Գծային տարր 111 2 2 հանգույցով կապող տարր (չի կարող օգտագործվել լարումների վերլուծության համար)
112 3 3 հանգույցով կապող տարր (չի կարող օգտագործվել լարումների վերլուծության համար)
Հարթ տարր 231 3 Եռանկյուն առաջին կարգի տարր
232 6 Եռանկյուն երկրորդ կարգի տարր
241 4 Քառանկյուն առաջին կարգի տարր
242 8 Քառանկյուն երկրորդ կարգի տարր (Serendipity ընտանիք)
Պինդ մարմնի տարր 301 2 2 հանգույցով ֆերմային տարր
341 4 Քառանիստ առաջին կարգի տարր
342 10 Քառանիստ երկրորդ կարգի տարր
351 6 Եռանկյուն պրիզմայի առաջին կարգի տարր
352 15 Եռանկյուն պրիզմայի երկրորդ կարգի տարր
361 8 Վեցանիստ առաջին կարգի տարր
362 20 Վեցանիստ երկրորդ կարգի տարր (Serendipity ընտանիք)
Ինտերֆեյսային տարր 541 4×2 Քառանկյուն մակերեսի առաջին կարգի տարր (չի կարող օգտագործվել լարումների վերլուծության համար)
542 8×2 Քառանկյուն մակերեսի երկրորդ կարգի տարր (չի կարող օգտագործվել լարումների վերլուծության համար)
Հեծանային տարր 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 մուտքային և ներքին ձևաչափերի միջանկյալ հանգույցների դասավորությունները համընկնում են, ուստի փոխակերպում չի կատարվում։

Առնչվող թեմաներ