Presentation is loading. Please wait.

Presentation is loading. Please wait.

퍼텐셜과 들 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,

Similar presentations


Presentation on theme: "퍼텐셜과 들 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,"— Presentation transcript:

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 실행 작업폴더 설정

35

36

37

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 풀이하기


Download ppt "퍼텐셜과 들 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,"

Similar presentations


Ads by Google