요소 번호 체계와 형상 함수 라이브러리¶
형상 함수와 유한요소 근사에서 도입한 형상 함수 \(N_\alpha^e(\boldsymbol{r})\)는 요소 유형마다 구체적인 형태가 다릅니다. 이 장에서는 FrontISTR가 제공하는 요소군을 세 자리 요소 유형 번호로 분류하고, 각 요소를 동일한 방식으로 다루기 위한 형상 함수 라이브러리의 인터페이스를 설명합니다. 3차원 솔리드 요소의 구체적인 자연좌표계와 형상 함수 및 2차 요소의 중간 절점 순서 변환은 3차원 솔리드 요소의 형상 함수에서 다루고, 요소 유형 선택 지침은 요소 라이브러리(기능)에서 제공합니다.
요소 분류와 명명 규칙¶
FrontISTR의 요소 유형은 세 자리 숫자로 식별됩니다. 각 자리의 의미는 다음과 같습니다.
- 첫째 자리(요소군): 1 = 선 요소/트러스, 2 = 평면 요소, 3 = 솔리드 요소, 5 = 인터페이스 요소, 6 = 보 요소, 7 = 셸 요소.
- 둘째 자리(기본 형상): 요소군 내의 기하학적 형상(삼각형, 사각형, 사면체, 프리즘, 육면체)을 구분합니다.
- 셋째 자리(보간 차수): 1 = 1차(꼭짓점 절점만), 2 = 2차(중간 절점 포함). 예외로 2절점 트러스 요소는 301번입니다.
제공되는 요소를 요소군별로 정리하면 다음 표와 같습니다.
| 요소군 | 요소 유형 | 절점 수 | 설명 |
|---|---|---|---|
| 선 요소 | 111 | 2 | 2절점 링크 요소(응력 해석에는 사용 불가) |
| 112 | 3 | 3절점 링크 요소(응력 해석에는 사용 불가) | |
| 평면 요소 | 231 | 3 | 3절점 1차 삼각형 요소 |
| 232 | 6 | 6절점 2차 삼각형 요소 | |
| 241 | 4 | 4절점 1차 사각형 요소 | |
| 242 | 8 | 8절점 2차 사각형 요소(Serendipity 계열) | |
| 솔리드 요소 | 301 | 2 | 2절점 트러스 요소 |
| 341 | 4 | 4절점 1차 사면체 요소 | |
| 342 | 10 | 10절점 2차 사면체 요소 | |
| 351 | 6 | 6절점 1차 프리즘 요소 | |
| 352 | 15 | 15절점 2차 프리즘 요소 | |
| 361 | 8 | 8절점 1차 육면체 요소 | |
| 362 | 20 | 20절점 2차 육면체 요소(Serendipity 계열) | |
| 인터페이스 요소 | 541 | 4×2 | 4절점 1차 사각형 면 요소(응력 해석에는 사용 불가) |
| 542 | 8×2 | 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자유도, 혼합 자유도용) |
1차 육면체 요소 361에는 완전 적분, incompatible mode, 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의 각 함수에 해당 분기를 추가합니다.
2차 삼각형 요소의 중간 절점 순서 변환¶
2차 삼각형 요소 232에서는 HEC-MW 메시 입력 형식(요소 둘레의 꼭짓점 절점을 먼저 배치한 다음 변 1-2, 2-3, …을 따라 중간 절점을 배치)과 요소 라이브러리의 형상 함수가 전제로 하는 FrontISTR 내부 형식 사이에 중간 절점 순서 차이가 있습니다. 두 형식의 차이는 메시를 읽은 직후 hecmw2fstr_mesh_conv(fistr1/src/common/hecmw2fstr_mesh_conv.f90 및 hecmw2fstr_connect_conv.c)가 변환 테이블 Table232에 따라 6개 절점을 \(\{1,2,3,6,4,5\}\)로 재정렬하여 해소합니다. 변환은 요소 연결 정보를 저장하는 배열에 직접 적용되므로 이후의 모든 요소 라이브러리 호출에서는 FrontISTR 내부 절점 순서가 사용됩니다. 결과 출력 시에는 역변환 fstr2hecmw_mesh_conv가 쓰기 전에 HEC-MW 형식으로 되돌리므로, 사용자는 입력과 출력 모두 HEC-MW 형식만 인지하면 됩니다.
2차 3차원 솔리드 요소 342(사면체)와 352(프리즘)에도 유사한 자동 변환이 있으며, 362(2차 육면체)는 변환하지 않습니다. 자세한 내용은 3차원 솔리드 요소의 형상 함수를 참조하십시오. 2차 평면 사각형 요소 242와 인터페이스 요소 542는 HEC-MW 입력 형식과 내부 형식의 중간 절점 순서가 같으므로 변환하지 않습니다.
관련 항목¶
- 형상 함수와 유한요소 근사 — 형상 함수의 수학적 정의
- 수치 적분 — 적분점, 가중치 및 요소 적분의 근사 형태
- 3차원 솔리드 요소의 형상 함수 — 연속체 솔리드 요소의 구체적인 자연좌표와 형상 함수
- 고급 요소 정식화 — B-bar / F-bar / incompatible mode / 셸 / 보
- 요소 라이브러리(기능) — 요소 유형 옵션과 선택 지침