Download presentation

Presentation is loading. Please wait.

Published byKatrina Bruin Modified about 1 year ago

1
Computational Eng./Sci.

2
ECE490O: Special Topics in EM-Plasma Simulations JK LEE (Spring, 2006) ODE Solvers PIC-MCC PDE Solvers (FEM and FDM) Linear & NL Eq. Solvers

3
ECE490O: ODE JK LEE (Spring, 2006)

4
Gonsalves ’ lecture notes (Fall 2005)

5

6
Plasma Application Modeling Group POSTECH Programs of Initial Value Problem & Shooting Method for BVP ODE Sung Jin Kim and Jae Koo Lee

7
Gonsalves ’ lecture notes (Fall 2005)

8

9

10

11

12

13

14

15
Plasma Application Modeling, POSTECH Initial Value Problems of Ordinary Differential Equations Program 9-1 Second-order Runge-kutta Method, y(0)=1, y’(0)=0 Changing 2 nd order ODE to 1 st order ODE, (1) (2) y(0)=1 z(0)=0

16
Plasma Application Modeling, POSTECH Second-Order Runge-Kutta Method By 2 nd order RK Method

17
Plasma Application Modeling, POSTECH Program 9-1 /* CSL/c9-1.c Second Order Runge-Kutta Scheme (Solving the problem II of Example 9.6) */ #include #include #include /* time : t y,z: y,y' kount: number of steps between two lines of printing k, m, b: k, M(mass), B(damping coefficient) in Example 9.6 int main() { int kount, n, kstep=0; float bm, k1, k2, km, l1, l2; static float time, k = 100.0, m = 0.5, b = 10.0, z = 0.0; static float y = 1.0, h = 0.001; printf( "CSL/C9-1 Second Order Runge-Kutta Scheme \n" ); printf( " t y z\n" ); printf( " %12.6f %12.5e %12.5e \n", time, y, z ); km = k/m; bm = b/m; for( n = 1; n <= 20; n++ ){ for( kount = 1; kount <= 50; kount++ ){ kstep=kstep+1; time = h*kstep ; k1 = h*z; l1 = -h*(bm*z + km*y); k2 = h*(z + l1); l2 = -h*(bm*(z + l1) + km*(y + k1)); y = y + (k1 + k2)/2; z = z + (l1 + l2)/2; } printf( " %12.6f %12.5e %12.5e \n", time, y, z ); } exit(0); } 2nd order RK CSL/C9-1 Second Order Runge-Kutta Scheme t y z e e e e e e e e e e e e e e e e e e e e e e-04 result

18
Plasma Application Modeling, POSTECH Various Numerical Methods h=0.1 h=0.01 h=0.001 Exact Solution:

19
Plasma Application Modeling Group POSTECH Error Estimation Fourth order Runge-Kutta Error estimation

20
Plasma Application Modeling, POSTECH Program 9-2 Fourth-order Runge-Kutta Scheme A first order Ordinary differential equation y(0)=1 Fourth-order RK Method

21
Plasma Application Modeling, POSTECH Program 9-2 Fourth-order Runge-Kutta Scheme do{ for( j = 1; j <= nstep_pr; j++ ){ t_old = t_new; t_new = t_new + h; yn = y; t_mid = t_old + hh; yn = y; k1 = h*fun( yn, t_old ); ya = yn + k1/2; k2 = h*fun( ya, t_mid ); ya = yn + k2/2; k3 = h*fun( ya, t_mid ); ya = yn + k3 ; k4 = h*fun( ya, t_new ); y = yn + (k1 + k2*2 + k3*2 + k4)/6; } double fun(float y, float t) { float fun_v; fun_v = t*y +1; /* Definition of f(y,t) */ return( fun_v ); } Main algorithm for 4 th order RK method at program 9-2 4th order RK CSL/C9-2 Fourth-Order Runge-Kutta Scheme Interval of t for printing ? 1 Number of steps in one printing interval? 10 Maximum t? 5 h= t y e e e e e e e Maximum t limit exceeded Interval of t for printing ? 1 Number of steps in one printing interval? 100 Maximum t? 5 h= t y e e e e e e

22
Plasma Application Modeling, POSTECH Program th order RK Method for a Set of ODEs A second order Ordinary differential equation y 1 (0)=1,y 1 (0)=1, y 1 ’(0)=0 * The 4 th order RK method for the set of two equations(Nakamura’s book p332) do{ for( n = 1; n <= ns; n++ ){ t_old = t_new; /* Old time */ t_new = t_new + h; /* New time */ t_mid = t_old + hh; /* Midpoint time */ for( i = 1; i <= No_of_eqs; i++ ) ya[i] = y[i]; f( k1, ya, &t_old, &h ); for( i = 1; i <= No_of_eqs; i++ ) ya[i] = y[i] + k1[i]/2; f( k2, ya, &t_mid, &h ); for( i = 1; i <= No_of_eqs; i++ ) ya[i] = y[i] + k2[i]/2; f( k3, ya, &t_mid, &h ); for( i = 1; i <= No_of_eqs; i++ ) ya[i] = y[i] + k3[i]; f( k4, ya, &t_new, &h ); for( i = 1; i <= No_of_eqs; i++ ) y[i] = y[i] + (k1[i] + k2[i]*2 + k3[i]*2 + k4[i])/6; } void f(float k[], float y[], float *t, float *h) { k[1] = y[2]**h; k[2] = -y[1]**h; /* More equations come here if the number of equations are greater.*/ return; }

23
Plasma Application Modeling, POSTECH Results of Program 9-3 CSL/C9-3 Fourth-Order Runge-Kutta Scheme for a Set of Equations Interval of t for printing ? 1 Number of steps in one print interval ? 10 Maximum t to stop calculations ? 5.0 h= 0.1 t y(1), y(2), e e e e e e e e e e e e e e-01 Type 1 to continue, or 0 to stop. 1 Interval of t for printing ? 1 Number of steps in one print interval ? 100 Maximum t to stop calculations ? 5.0 h= 0.01 t y(1), y(2), e e e e e e e e e e e e-01 Type 1 to continue, or 0 to stop. 1 Interval of t for printing ? 1 Number of steps in one print interval ? 1 Maximum t to stop calculations ? 5.0 h= 1 t y(1), y(2), e e e e e e e e e e e e-01 Type 1 to continue, or 0 to stop.

24
C CSL/F9-1.FOR SECOND ORDER RUNGE-KUTTA SCHEME C (SOLVING THE PROBLEM II OF EXAMPL 9.6) REAL M,K,K1,K2,L1,L2,KM PRINT *,'CSL/F9-1 SECOND ORDER RUNGE-KUTTA SCHEME' DATA T, K, M, B, Z, Y, H % /0.0,100.0, 0.5, 10.0, 0.0, 1.0, 0.001/ PRINT *,' T Y Z' PRINT 1,T,Y,Z 1 FORMAT( F10.5, 1P2E13.5) KM=K/M BM=B/M

25
DO 20 N=1,20 DO 10 KOUNT=1,50 T=T+H K1=H*Z L1=-H*(BM*Z + KM*Y) K2=H*(Z+L1) L2=-H*(BM*(Z+L1) + KM*(Y+K1)) Y=Y+(K1+K2)/2 Z=Z+(L1+L2)/2 10 CONTINUE PRINT 1,T,Y,Z 20 CONTINUE STOP END

26
C-----CSL/F9-2.FOR FOURTH-ORDER RUNGE-KUTTA SCHEME (FORTRAN) REAL K1,K2,K3,K4 PRINT * PRINT*,'CSL/F9-2.FOR FOURTH-ORDER RUNGE KUTTA SCHEME (FORTRAN)' 1 PRINT * PRINT *, 'INTERVAL OF T FOR PRINTING ?' READ *, XPR PRINT *, 'NUMBER OF STEPS IN ONE PRINTING INTERVAL ?' READ *, I PRINT *,'MAXIMUM T ?' READ *, XL C Setting the initial value of the solution Y=1

27
H=XPR/I PRINT *, 'H=', H XP=0 HH=H/2 PRINT * PRINT *,' PRINT *,' T Y' PRINT *,' PRINT 82, XP,Y 82 FORMAT( 1X,F10.6, 7X,1PE15.6) 30 DO 40 J=1,I XB=XP XP=XP+H YN=Y XM=XB+HH K1=H*FUN(YN,XB) K2=H*FUN(YN+K1/2,XM) K3=H*FUN(YN+K2/2,XM) K4=H*FUN(YN+K3,XP) Y=YN + (K1+K2*2+K3*2+K4)/6 40 CONTINUE

28
IF (XP.LE.XL) GO TO 30 PRINT *,' PRINT * PRINT *,' MAXIMUM X LIMIT IS EXCEEDED' PRINT * 200 PRINT* PRINT*,'TYPE 1 TO CONTINUE, 0 TO STOP.' READ *,K IF(K.EQ.1) GOTO 1 PRINT* END FUNCTION FUN(Y,X) FUN = -Y/(X*X+Y*Y ) RETURN END

29
Plasma Application Modeling, POSTECH Executing Programs for the simulation class An user ID will be made as team name at a PAM computer. A password is the same as an user ID You can execute your programs to connect your PC to pam computer by x-manager or telnet. A C program is compiled by a gcc compiler at the linux PC. gcc –o a a.c –lm where, a is a changeable execution sentence.

30
Homepage : Boundary Value Problems of Ordinary Differential Equations & Scharfetter-Gummel method Sung Soo Yang and Jae Koo Lee P lasma A pplication M odeling

31
Plasma Application POSTECH Boundary value problems Type of ProblemsAdvantagesDisadvantages Shooting methodAn existing program for initial value problems may be used Trial-and-error basis. Application is limited to a narrow class of problems. Solution may become unstable. Finite difference method using the tridiagonal solution No instability problem. No trial and error. Applicable to nonlinear problems with iteration. Problem may have to be developed for each particular problem. 1) : Dirichlet type boundary condition * Three types of boundary conditions 1) : Neumann type boundary condition 1) : Mixed type boundary condition

32
Plasma Application POSTECH Solve difference equation, With the boundary conditions, x = 012 i = Especially for i = 1, known y(0)=1 Program 10-1

33
Plasma Application POSTECH For i = 10, Summarizing the difference equations obtained, we write Tridiagonal matrix Program 10-1

34
Plasma Application POSTECH Solution Algorithm for Tridiagonal Equations (1) R2R2 R3R3 Based on Gauss elimination

35
Plasma Application POSTECH Solution Algorithm for Tridiagonal Equations (2)

36
Plasma Application POSTECH void trdg(float a[], float b[], float c[], float d[], int n) /* Tridiagonal solution */ { int i; float r; for ( i = 2; i <= n; i++ ) { r = a[i]/b[i - 1]; b[i] = b[i] - r*c[i - 1]; d[i] = d[i] - r*d[i - 1]; } d[n] = d[n]/b[n]; for ( i = n - 1; i >= 1; i-- ) { d[i] = (d[i] - c[i]*d[i + 1])/b[i]; } return; } Recurrently calculate the equations in increasing order of i until i=N is reached Calculate the solution for the last unknown by Calculate the following equation in decreasing order of i Solution Algorithm for Tridiagonal Equations (3)

37
Plasma Application POSTECH /* CSL/c10-1.c Linear Boundary Value Problem */ #include /* a[i], b[i], c[i], d[i] : a(i), b(i), c(i), and d(i) n: number of grid points */ int main() { int i, n; float a[20], b[20], c[20], d[20], x; void trdg(float a[], float b[], float c[], float d[], int n); /* Tridiagonal solution */ printf( "\n\nCSL/C10-1 Linear Boundary Value Problem\n" ); n = 10; /* n: Number of grid points */ for( i = 1; i <= n; i++ ) { x = i; a[i] = -2; b[i] = 5; c[i] = -2; d[i] = exp( -0.2*x ); } Program 10-1

38
Plasma Application POSTECH d[1] = d[1] + 2; d[n] = d[n]*0.5; b[n] = 4.5; trdg( a, b, c, d, n ); d[0] = 1; /* Setting d[0] for printing purpose */ printf( "\n Grid point no. Solution\n" ); for ( i = 0; i <= n; i++ ) { printf( " %3.1d %12.5e \n", i, d[i] ); } exit(0); } Program 10-1 CSL/C10-1 Linear Boundary Value Problem Grid point no. Solution e e e e e e e e e e e-02

39
Plasma Application POSTECH Program 10-3 An eigenvalue problem of ordinary differential equation We assume a b i-1ii+1

40
Plasma Application POSTECH Program 10-3 (Inverse Power method) Step1 :for all i andare set to an arbitrary initial guess. Step2 : is solved by the tridiagonal solution for Step3 : The next estimate for is calculated by the equation: Step4 : is solved by the tridiagonal solution for Step5 : The operations similar to Step 3 and 4 are repeated as the iteration cycle t increases. Step6 : The iteration is stopped when the convergence test is satisfied. Criterion for convergence

41
Plasma Application POSTECH Program 10-3 main() { while (TRUE) { k = 0; n = 10; ei = 1.5; it = 30; ep = ; for (i=1; i <= n; i++) { as[i] = -1.0; bs[i] = 2.0; cs[i] = -1.0; f[i] = 1.0; ds[i] = 1.0; } printf("\n It. No. Eigenvalue\n"); while (TRUE) { k = k+1; for (i=1; i<=n; i++) fb[i] = f[i]*ei; for (i=1; i<=n; i++) { a[i] = as[i]; b[i] = bs[i]; c[i] = cs[i]; d[i] = ds[i]*fb[i]; } trdg(a, b, c, d, n); sb = 0; s = 0; for (i=1; i <= n; i++) { f[i] = d[i]; s = s + f[i]*f[i]; sb = sb + f[i]*fb[i]; } eb = ei; ei = sb/s; printf("%3.1d %12.6e \n", k, ei); if (fabs(1.0-ei/eb) <= ep) break; if (k >it) { printf("Iteration limit exceeded.\n"); break; } Step 1 Step 6 Step 3 Step 2,4

42
Plasma Application POSTECH z = 0; for (i=1; i <= n; i++) if (fabs(z) <= fabs(f[i])) z = f[i]; for (i=1; i <= n; i++) f[i] = f[i]/z; eigen = ei; printf("Eigenvalue = %g \n", eigen); printf("\n Eigenfunction\n"); printf("i f(i)\n"); for (i=1; i<=n; i++) printf("%3.1d %12.5e \n", i, f[i]); printf(" \n"); printf("Type 1 to continue, or0 to stop. \n"); scanf("%d", &kstop); if (kstop != 1) exit (0); } It. No. Eigenvalue e e e e-02 Eigenvalue = Eigenfunction i f(i) e e e e e e e e e e Type 1 to continue, or0 to stop. Program 10-3

43
Plasma Application POSTECH Scharfetter-Gummel method 2D discretized continuity eqn. integrated by the alternative direction implicit (ADI) method Tridiagonal matrix Scharfetter-Gummel method

44
Plasma Application POSTECH Scharfetter-Gummel method Flux is constant between half grid points and calculated at the grid point Flux is a linear combination of and Analytic integration between i and i+1 leads to

45
Plasma Application POSTECH Scharfetter-Gummel method where, The main advantage of SG scheme is that is provides numerically stable estimates of the particle flux under all conditions (Big potential difference)(small potential difference)

46
Plasma Application POSTECH Scharfetter-Gummel method In case of Drift flux

47
Plasma Application POSTECH Scharfetter-Gummel method In case of Diffusion flux

48
Plasma Application Modeling, POSTECH Shooting Method for Boundary Value Problem ODEs Definition: a time stepping algorithm along with a root finding method for choosing the appropriate initial conditions which solve the boundary value problem. 1) : Dirichlet type boundary condition * Three types of boundary conditions 1) : Neumann type boundary condition 1) : Mixed type boundary condition Second-order Boundary-Value Problem y(a)=A and y(b)=B

49
Plasma Application Modeling, POSTECH Computational Algorithm of Shooting Method Computational Algorithm 1. Solve the differential equation using a time-stepping scheme with the initial conditions y(a)=A and y’(a)=A’. 2. Evaluate the solution y(b) at x=b and compare this value with the target value of y(b)=B. 3. Adjust the value of A’ (either bigger or smaller) until a desired level of tolerance and accuracy is achieved. A bisection or secant method for determining values of A’, for instance, may be appropriate. 4. Once the specified accuracy has been achieved, the numerical solution is complete and is accurate to the level of the tolerance chosen and the discretization scheme used in the time-stepping.

50
Plasma Application Modeling, POSTECH Shooting Method for Boundary Value Problem ODEs Rewrite the second-order ODE as two first-order ODEs: We should assume a initial value of z(a). z(a) is determined for which y(b)=B by secant method.

51
Plasma Application Modeling, POSTECH Example of Shooting Method Ex) T(0)=0 and T(1.0)=100 Sol) Rewrite the second-order ODE as two first-order ODEs: T(0)=0.0 S(0)=T’(0) By modified Euler method Let x=0.25, S(0.0) (1) =50, S(0.0) (2) =100

52
Plasma Application Modeling, POSTECH Solution by the Shooting Method

53
Plasma Application Modeling, POSTECH Errors in the Solution by the Shooting Method

54
Plasma Application Modeling, POSTECH Equilibrium Method y(a)=A and y(b)=B Ex) T(0)=0 and T(1.0)=100 Let x=0.25, T a =0, =2.0 x=0.25 : x=0.50 : x=0.75 : T1T2T3T1T2T =

Similar presentations

© 2016 SlidePlayer.com Inc.

All rights reserved.

Ads by Google