Download presentation
Presentation is loading. Please wait.
1
퍼텐셜과 들 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호, hwlee@inje.ac.kr
운동시뮬레이션 제7주 실습하기 퍼텐셜과 들 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
2
2차원 라플라스 방정식 𝑉 𝑖,𝑗 = 1 4 𝑉 𝑖+1,𝑗 +𝑉(𝑖−1,𝑗) +𝑉 𝑖,𝑗+1 +𝑉(𝑖,𝑗−1)
𝑉 𝑖,𝑗 = 1 4 𝑉 𝑖+1,𝑗 +𝑉(𝑖−1,𝑗) +𝑉 𝑖,𝑗+1 +𝑉(𝑖,𝑗−1) 𝑉 new 𝑖,𝑗 = 𝑉 old 𝑖+1,𝑗 + 𝑉 old (𝑖−1,𝑗) + 𝑉 old 𝑖,𝑗+1 + 𝑉 old (𝑖,𝑗−1) ∆𝑉= 𝑖,𝑗 𝑉 new 𝑖,𝑗 − 𝑉 old (𝑖,𝑗) ∆𝑉 가 원하는 만큼 작아질 때 까지 반복
3
Modelica 구현 Modelica는 편미분방정식은 자동으로 해를 구하지 못함.
이완 방법을 시간미분으로 재구성하여 구현한다.(로지스틱 맵에서 사용한 방법) 이완방법의 계산식 𝑉 𝑖,𝑗 𝑛+1 = 𝑉 𝑖−1,𝑗 𝑛 + 𝑉 𝑖,𝑗−1 𝑛 + 𝑉 𝑖+1,𝑗 𝑛 + 𝑉 𝑖,𝑗+1 𝑛 𝑉 𝑖,𝑗 𝑛+1 − 𝑉 𝑖,𝑗 𝑛 = 𝑉 𝑖−1,𝑗 𝑛 + 𝑉 𝑖,𝑗−1 𝑛 + 𝑉 𝑖+1,𝑗 𝑛 + 𝑉 𝑖,𝑗+1 𝑛 𝑉 𝑖−1,𝑗 𝑛 + 𝑉 𝑖,𝑗−1 𝑛 + 𝑉 𝑖+1,𝑗 𝑛 + 𝑉 𝑖,𝑗+1 𝑛 − 𝑉 𝑖,𝑗 𝑛
4
Modelica 구현 Euler 방법 시간 미분 방정식 ∆𝑡=1인 Euler 방법은 이완방법과 같은 계산을 한다.
𝑑 𝑉 𝑖𝑗 𝑛 𝑑𝑡 ≈ 𝑉 𝑖,𝑗 𝑛+1 − 𝑉 𝑖,𝑗 𝑛 ∆𝑡 𝑑 𝑉 𝑖𝑗 𝑛 𝑑𝑡 = 𝑉 𝑖−1,𝑗 𝑛 + 𝑉 𝑖,𝑗−1 𝑛 + 𝑉 𝑖+1,𝑗 𝑛 + 𝑉 𝑖,𝑗+1 𝑛 − 𝑉 𝑖,𝑗 𝑛 , ∆𝑡=1 ∆𝑡=1인 Euler 방법은 이완방법과 같은 계산을 한다.
5
Modelica 구현 Modelica에서 배열 변수 사용 Modelica에서 반복문(for) 사용
경계인지를 판단하는 함수 작성 출력을 Empty로 설정하여 기본 출력을 하지 않도록 함. Modelica의 Utility를 사용하여 원하는 파일에 원하는 자료 저장 gnuplot 을 이용하여 3차원 그래프 그리기
6
불필요한 Package/Class 닫기 Motion 패키지가 사라졌음
7
Package 생성 패키지 명 Motion 패키지 선택 새로운 패키지 Motion이 root(global) 에 생성됨
8
Package 생성 패키지 명 y2016 패키지 선택 상위 패키지 새로운 패키지 y2016가 Motion 아래에 생성됨
9
Package 생성 Week07 Week07
10
Package 저장 D:\lec_hwlee\motion\y2016\week07 Motion.y2016.Week07.mo
11
클래스 생성 새로운 클래스 Field2D가 Motion.y2016.Week07 아래에 생성됨 Field2D Field2D
12
클래스 작성 Motion.y2016.Week07.Field2D 기본 생성 코드 추가할 함수
주어진 위치가 경계인지를 판단하는 함수: isBoundary 마지막에 gnuplot에서 3차원으로 그림을 그릴 수 있도록 자료를 저장하는 함수 : saveData
13
isBoundary 함수 입력 자료 출력 값 그리드 위치를 나타내는 i,j 와 그리드의 크기 N
경계인지를 나타내는 Boolean 값 boundary
14
함수 추가 Field2D클래스 아래에 isBoundary 함수 추가됨. isBoundary
Motion.y2016.Week07.Field2D Field2D클래스 아래에 isBoundary 함수 추가됨.
15
isBoundary 함수 작성 그리드의 각 변이 경계이다. Modelica의 첨자는 1부터 시작한다.
16
그리드 𝑉= 𝑉 1 𝑉= 𝑉 0 +1 -1 𝑉 𝑥 = 𝑉 0 + 𝑉 1 − 𝑉 𝑥+1 𝑥 ∆𝑦 ∆𝑥 𝑉(𝑖,𝑗)
17
함수 선택
18
클래스 선택 안보이는 경우 Unload 후에 다시 읽기
19
saveData 함수 퍼텐셜 자료를 저장한다. 입력 자료 출력 자료 : 없음 for 반복문 사용
x,y 좌표 퍼텐셜 V 출력 자료 : 없음 for 반복문 사용 출력 파일 명 : field2d.dat
20
saveData 함수 작성 모든 퍼텐셜 자료를 x,y,V(x,y) 형태로 저장
21
자료 파일 저장된 자료 파일
22
이완 방법 클래스 작성 변수 선언 크기가 N인 2차원 배열 선언 -1 부터 1 까지 일정한 간격으로 N개의 값을 설정
23
이완 방법 클래스 작성 계산 알고리즘 구현 경계에서의 퍼텐셜은 변하지 않는다. 시뮬레이션이 끝날 때 자료를 저장한다 𝑑 𝑉 𝑖𝑗 𝑛 𝑑𝑡 = 𝑉 𝑖−1,𝑗 𝑛 + 𝑉 𝑖,𝑗−1 𝑛 + 𝑉 𝑖+1,𝑗 𝑛 + 𝑉 𝑖,𝑗+1 𝑛 − 𝑉 𝑖,𝑗 𝑛
24
이완 방법 클래스 작성 초기 조건 그리드의 각 변의 값을 설정한다. 이 전 시뮬레이션에서 생성된 파일을 삭제한다.
그리드의 각 변의 값을 설정한다. 이 전 시뮬레이션에서 생성된 파일을 삭제한다. 지우지 않으면 이전 파일에 추가하여 자료를 저장한다.
25
전체 코드
26
전체 코드
27
전체 코드
28
전체 코드
29
시뮬레이션 조건 설정 끝 시간을 5000으로 한다. 즉 최대 5000번 반복한다. 반드시 Euler 로 설정한다.
30
시뮬레이션 조건 설정 5000으로 설정하여 delta t = 1 이 되도록 한다.
31
시뮬레이션 결과 반복이 2500번 정도 지나면 값이 수렴함을 알 수 있다. 경계에서의 값 V[2,1]과 경계가 아닌
반복이 2500번 정도 지나면 값이 수렴함을 알 수 있다. 경계에서의 값 V[2,1]과 경계가 아닌 곳에서의 값 V[2,2]가 반복 계산에 따라 어떻게 변해 가는지를 보여 준다.
32
시뮬레이션 결과 X 값에 따라 퍼텐셜의 값이 다른 것을 보여 준다.
33
생성된 자료 파일 D:\lec_hwlee\motion\y2016\temp
이 폴더는 Tools->Options 에서 설정한다.
34
gnuplot 실행 작업폴더 설정
38
결과 해석 경계조건을 퍼텐셜이 일정하게 증가하게 했으므로 내부 에서도 일정하게 증가 함을 알 수 있다.
이완방법을 약 2500번 정도 반복하면 수렴하는 것을 알 수 있다.
39
금속 사각 프리즘 𝑉= 𝑉 0 𝑉= 𝑉 1 b -1 +1 a
40
경계조건 𝑉 𝑥,𝑦 = 𝑉 1 if 𝑥 ≤ 𝑎 2 and 𝑦 ≤ 𝑏 2
At Box, potential is 𝑉 0 corresponds to 𝑉 𝑖 1 =𝑉 𝑖 𝑁 =𝑉 1 𝑗 =𝑉 𝑁 𝑗 = 𝑉 0 .
41
Modelica 구현 Modelica.y2016.Week07.Hollow 경계조건이 다름
isHollow : 중심 영역인지를 판단 isBoundary : 외곽영역인지를 판단
42
Modelica 클래스 isBoundary 함수
43
Modelica 클래스 isHollow 함수
44
Modelica 클래스 saveData 함수
45
Modelica 클래스 변수 선언
46
Modelica 클래스 이완 계산
47
Modelica 클래스 초기 설정
48
a=b=0.5
49
a=b=0.1
50
결과 해석 중앙의 사각형을 중심으로 대칭 적으로 퍼지면서 퍼텐셜이 줄어 든다.
51
Capacitor example 𝑉=0 𝑉=1 +1 -1 𝑉=−1 a b
52
경계조건 𝑉 𝑥,𝑦 =−1 if 𝑥−𝑎 ≤ ∆𝑥 2 and 𝑦 ≤ 1 2
At Box, potential is zero corresponds to 𝑉 𝑖 1 =𝑉 𝑖 𝑁 =𝑉 1 𝑗 =𝑉 𝑁 𝑗 =0.
53
Gauss-Seidel method 배열을 하나만 사용 하여 계산 새로운 값을 계산 하는 즉시 다시 사용
𝑉 old 𝑖,𝑗 = 𝑉 old 𝑖+1,𝑗 + 𝑉 old (𝑖−1,𝑗) + 𝑉 old 𝑖,𝑗+1 + 𝑉 old (𝑖,𝑗−1) Modelica로는 알고리즘(함수)로만 구현이 가능함.
54
Modelica 구현 Gauss-Seidel 방법은 앞에서와 같은 방법으로 구현은 안 된다.
함수를 이용하여 실제 프로그램을 구현해 주어야 한다.
55
Gauss-Seidel 함수 입력 변수 및 지역 변수 선언
56
Gauss-Seidel 함수 초기 값 설정
57
Gauss-Seidel 함수 이완방법 계산 구현
58
saveData 함수 x, y, V(x,y) 형태로 자료 저장(capacitor.dat)
59
isBoundary 함수 외곽의 사각 경계인지를 판단
60
isLeftBar 함수 왼쪽 도체 판인지를 판단
61
isRightBar 함수 오른쪽 도체 판인지를 판단
62
Capacitor 클래스
63
실행 결과
64
Capacitor
65
Capacitor
66
결과해석 두 도체 판 사이의 퍼텐셜의 변화가 가장 큰 것을 알 수 있다. 축전기의 외부에도 전기장이 있는 것을 보여 준다.
67
도전해 보기 연습문제 5.1~5.7 풀이하기 연습문제 5.8~5.10 풀이하기 연습문제 5.11~5.13 풀이하기
연습문제 5.14~5.15 풀이하기
Similar presentations