2차원 포화 불포화 삼투류 분석
(2017.11.19 수정)
일부 프로그램 오류가 있어서 프로그램을 수정했습니다
개요
대강대강 한 감상
2차원 FEM 응력 분석 프로그램을 만들었기 때문에 겸사겸사 2차원 포화-불포화 침투 분석 프로그램을 만들었다.
원소는 2차원 응력 분석과 마찬가지로 원소 4개 노드 4고스 적분점을 가진 동위소 파라미터 원소다.
실제 사용 여부는 노드수 1317, 소자수 1227, 수렴 계산 횟수 10회, 계산 시간 3.7초로 이런 규모의 문제라면 특별한 압력이 없다.
Numpy의 행렬 연산과 해연립 방정식을 결합하는 프로그램은 우수하죠.
절차상 주의사항은 다음과 같다.
x=numpy.linalg.solve(A, b)
. 경계 조건 처리로 행렬이 비대칭적이기 때문에 스키 분해 등은 도저히 사용할 수 없다포화 삼투류 분석
포화 안정적 침류 분석은 다음과 같은 일차 방정식을 결합하는 문제를 해결하는 것이다.
$$
[k]\{h\}=\{q\}
$$
$$
\begin{bmatrix}k_{11} & k_{12} &\dots\\
k_{21} & k_{22} &\dots\\
\dots &\dots &\dots\\
\dots &\dots & k_{nn}\end{bmatrix}
\begin{Bmatrix}h_1\\h_2\\\dots\\h_n\end{Bmatrix}
=\begin{Bmatrix}q_1\\q_2\\\dots\\q_n\end{Bmatrix}
$$
$$
\begin{bmatrix}k_{11} & k_{12} &\dots\\
k_{21} & k_{22} &\dots\\
\dots &\dots &\dots\\
\dots &\dots & k_{nn}\end{bmatrix}
\begin{Bmatrix}h_{\text{unknown}}\\h_{\text{unknown}}\\\dots\\h_{\text{given}}\end{Bmatrix}
=\begin{Bmatrix}q_{\text{given}}\\q_{\text{given}}\\\dots\\q_{\text{unknown}}\end{Bmatrix}
$$
여기서 $\{q\} 노드 유량 벡터, $\{h\} 전수두 벡터, $[k] 달러는 투명 행렬로 다음과 같은 특성을 가지고 있습니다.
(한 방정식을 연립하는 이미 알고 있는 수와 미지수 간의 관계를 해결하는 처리)
$q_i$,$q_j$데이터 및 $h 제거i$,$h_알려진 정보, $hi$,$h_j$를 제외한 모든 수두 및 $qi$,$q_만약 j$가 알 수 없다면 투명 행렬의 $k{i}달러 및 $k}$1, 이외의 $i열과 $j$j열 요소를 0으로 처리하면 투명 행렬의 $i열과 $j$j열의 효과를 오른쪽으로 옮깁니다.
$$
\begin{bmatrix}
k_{11} &\ldots & 0 &\ldots & 0 &\ldots & k_{1n}\\
\vdots &\ddots &\vdots &\ddots &\vdots &\ddots &\vdots\\
k_{i1} &\ldots & 1 &\ldots & 0 &\ldots & k_{in}\\
\vdots &\ddots &\vdots &\ddots &\vdots &\ddots &\vdots\\
k_{j1} &\ldots & 0 &\ldots & 1 &\ldots & k_{jn}\\
\vdots &\ddots &\vdots &\ddots &\vdots &\ddots &\vdots\\
k_{n1} &\ldots & 0 &\ldots & 0 &\ldots & k_{nn}
\end{bmatrix}
\begin{Bmatrix}
h_1\\
\vdots\\
-q_i\\
\vdots\\
-q_j\\
\vdots\\
h_n
\end{Bmatrix}
=\begin{Bmatrix}
q_1\\
\vdots\\
0\\
\vdots\\
0\\
\vdots\\
q_n
\end{Bmatrix}
-h_i
\begin{Bmatrix}
k_{1i}\\
\vdots\\
k_{ii}\\
\vdots\\
k_{ji}\\
\vdots\\
k_{ni}
\end{Bmatrix}
-h_j
\begin{Bmatrix}
k_{1j}\\
\vdots\\
k_{ij}\\
\vdots\\
k_{jj}\\
\vdots\\
k_{nj}
\end{Bmatrix}
$$
포화-불포화 삼투류 분석
포화-불포화 삼투류 분석에서의 연립 방정식은 다음과 같은 특성을 가지고 있다.
압력수두도 0 이하의 제한이 있다
따라서 수렴 계산을 통해 미지수를 정해야 한다.
수렴 계산 방법은 전체 노드에 전수두의 초기 값을 제공하여 얻은 해를 다음 수렴 계산의 입력 값의 순서로 대입하는 것이다. 이런 방법은 모든 노드의 수두를 가설하여 계산 절차를 간소화할 수 있다.
전수두의 초기값은 전수두가 이미 알고 있는 경계를 제외하고 해결 방안의 정밀도와 수렴성을 고려한 토대에서 포화구역의 최소 전수두를 주는 것이 효과적인 것 같다.
불포화 투수 특성(van Genuuchten 모델)
지반의 불포화 투수 특성 모델도 표에 포화도-흡압 관계, 포화도-불포화 투수 계수비를 입력하는 방법이 있지만 분석을 위해 연속 함수 처리를 사용하여 프로그램을 간단하게 할 수 있도록 van Genuuchten 모델을 사용했다.
$$
S_e=\left\{\frac{1}{1+\left(\alpha\cdot h_s\right)^n}\right\}^m\qquad n=\frac{1}{1-m}\quad (0
$$
K_r=(S_e)^{0.5}\cdot\left\{1-\left(1-S_e{}^{1/m}\right)^m\right\}^2 \qquad (0\leqq S_r, K_r\leqq 1)
$$
$$
K=K_r\cdot K_0
$$
절차.
프로그램이 오래되어 자신의 홈페이지 링크를 붙였다.
입력 데이터 형식
npoin nele nsec koh koq kou idan
Ak0 alpha em
..... (1~nsec) .....
node-1 node-2 node-3 node-4 isec
..... (1~nele) .....
x z hvec0
..... (1~npoin) .....
nokh Hinp
..... (1~koh) .....
nokq Qinp
..... (1~koq) .....
noku
..... (1~kou) .....
npoin, nele, nsec노드 수, 요소 수, 재료 특성 수
koh, koq, kou
수두 지정 노드수, 유량 지정 노드수, 침윤 경계 노드수
idan
분석 단면(0: 수직 단면, 1: 수평 단면)
Ak0
원소의 포화 투수 계수
alpa, em
원소의 불포화 투수 특성
node-1, node-2, node-3, node-4, isec
구성 요소의 노드 번호, 요소의 재료 특성 번호
x, z, hvec0
노드의 x와z 좌표, 수렴 계산용 초기 수두값
nokh, Hinp
물머리 지정 노드 번호 및 물머리 값
nokq, Qinp
트래픽 지정 노드 번호 및 트래픽 값
noku
침윤 경계 노드 번호
출력 데이터 형식
npoin nele nsec koh koq kou idan
9 4 1 6 0 0 1
sec Ak0 alpha em
1 1.0000000e-05 0.0000000e+00 0.0000000e+00
node x z hvec qvec koh koq kou
1 0.0000000e+00 0.0000000e+00 1.0000000e+01 0.0000000e+00 1 0 0
2 1.0000000e+00 0.0000000e+00 1.0000000e+01 0.0000000e+00 1 0 0
3 2.0000000e+00 0.0000000e+00 1.0000000e+01 0.0000000e+00 1 0 0
4 0.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0 0 0
5 1.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0 0 0
6 2.0000000e+00 1.0000000e+00 0.0000000e+00 0.0000000e+00 0 0 0
7 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 1 0 0
8 1.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 1 0 0
9 2.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 1 0 0
node Hinp
1 1.0000000e+01
2 1.0000000e+01
3 1.0000000e+01
7 0.0000000e+00
8 0.0000000e+00
9 0.0000000e+00
elem i j k l sec
1 1 2 5 4 1
2 2 3 6 5 1
3 4 5 8 7 1
4 5 6 9 8 1
node hvec pvec qvec koh koq kou
1 1.0000000e+01 1.0000000e+01 2.5000000e-05 1 0 0
2 1.0000000e+01 1.0000000e+01 5.0000000e-05 1 0 0
3 1.0000000e+01 1.0000000e+01 2.5000000e-05 1 0 0
4 5.0000000e+00 5.0000000e+00 -6.7762636e-21 0 0 0
5 5.0000000e+00 5.0000000e+00 2.7105054e-20 0 0 0
6 5.0000000e+00 5.0000000e+00 0.0000000e+00 0 0 0
7 0.0000000e+00 0.0000000e+00 -2.5000000e-05 1 0 0
8 0.0000000e+00 0.0000000e+00 -5.0000000e-05 1 0 0
9 0.0000000e+00 0.0000000e+00 -2.5000000e-05 1 0 0
elem vx vz vm kr
1 -5.5511151e-21 5.0000000e-05 5.0000000e-05 1.0000000e+00
2 5.5511151e-21 5.0000000e-05 5.0000000e-05 1.0000000e+00
3 -5.5511151e-21 5.0000000e-05 5.0000000e-05 1.0000000e+00
4 5.5511151e-21 5.0000000e-05 5.0000000e-05 1.0000000e+00
Total inflow = 1.0000000e-04
Total outflow= -1.0000000e-04
Max.velocity in all area = 5.0000000e-05 (ne=1)
Max.velocity in inflow area = 5.0000000e-05 (ne=1)
Max.velocity in outflow area = 5.0000000e-05 (ne=3)
iii=2 icount=9 kop=0
n=9 time=0.007 sec
node, hvec, pvec, qvec노드번호,온수두,압력수두,유량
elem, vx, vz, vm
원소의 x·z방향 유속 및 합성 유속
Kr
원소의 불포화 투수 특성 (1:포화, 1&:불포화)
Total inflow, Total outflow
모델 구역의 전유입량 및 전유출량
iii, icount
계산 횟수를 수렴하여 계산 완성 조건의 자유도수를 만족시키다
kop
침윤면 경계 노드 중 압력수두 0의 노드수
n, time
전자유도, 시간 계산
수출 사례
간단한 변환기 제작 프로그램을 통해 압력수두 0, 5, 10, 15미터의 변환기를 잡아당기는 그림을 시도해 본다.
상류는 높이 18m, 하류는 높이 4m의 수심을 부여한다.
컴퓨터 그래프 자체는 비록 문외한 수준이지만 계산은 매우 순조로운 것 같다.
또 압력 헤드와 댐 규격을 빨간 글자로 표시한 것은 맥의 프리뷰로 추가로 작성했다.
이곳의 작도는 GMT(Generic Mapping Tools)의 변환 기능에 맡겨 그림을 만들어 보고서로 활용하는 것이 좋다.
참고로 실제 댐에서는 심지와 여과기의 경계 부근에서 압력수두가 낮아지고 분석결과처럼 심지에서 압력이 낮아지지 않는다는 것은 잘 알려져 있다.
결론적으로 이것은 해석 사례이니 이해해 주십시오.
이상
Reference
이 문제에 관하여(2차원 포화 불포화 삼투류 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/damyarou/items/3150261ab4b848d89c06텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)