ΑΣΚΗΣΗ ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΜΕΘΟΔΟΙ, 008-009, 5 Ο ΕΞΑΜΗΝΟ ΕΡΓΑΣΙΑ #4: ΠΑΡΑΒΟΛΙΚΑ ΠΡΟΒΛΗΜΑΤΑ ΗΜΕΡΟΜΗΝΙΑ ΠΑΡΑΔΟΣΗΣ: 0..009 ΔΙΔΑΣΚΩΝ: Δ. Βαλουγεώργης Δίδεται η διαφορική εξίσωση Επιμέλεια απαντήσεων: Ιωάννης Λυχναρόπουλος w w w + = ( ), 0, z > 0 () z με τις συνθήκες w (,0) = 0, ( ) w, z = και w = 0 = 0. () Να υπολογισθεί αριθμητικά η συνάρτηση wz (, ). Να γίνει ανάλυση ευστάθειας και συνοχής του προτεινόμενου αριθμητικού σχήματος. Λύση Οι εξισώσεις () και () περιγράφουn τη θερμοκρασιακή κατανομή wz) (, ενός ρευστού που ρέει μέσα σε κύλινδρο, το οποίο αρχικά έχει αδιάστατη θεμοκρασία ίση με το μηδέν και σταδιακά θερμαίνεται επειδή τα τοιχώματα του κυλίνδρου βρίσκονται σε σταθερή θερμοκρασία μεγαλύτερη του μηδενός (βλέπε Σχήμα ). w = 0 = z=, 0 z w = w = 0 0 3 N N = 0 = Σχήμα Λόγω αξισυμμετρίας αρκεί να επιλύσουμε την () πάνω στην ακτίνα του κυλίνδρου και κατά μήκος του άξονα z. Επιλέγουμε ένα πλέγμα N κόμβων στην
κατεύθυνση. Επίσης, στην κατεύθυνση κόμβων με βήμα Δ z. z καθορίζουμε ένα πεπερασμένο πλήθος Διακριτοποιούμε την () στον τυχαίο κόμβο ( in, ) του πλέγματος χρησιμοποιώντας το ρητό σχήμα με πρόδρομη πεπερασμένη διαφορά ης τάξης στη κατεύθυνση z και κεντρώες πεπερασμένες διαφορές ης τάξης στη κατεύθυνση. w w + w w w w w n n n n n n+ n i+ i i i+ i i i + = ( i ) Δ i Δ Δz n n n n n n+ n i+ i + i i+ i i i ( ( i ) ) w w w w w w w + = Δ Δ iδ Δ Δz n+ n λ n n wi = w λ i + w i + + λ ( i ) i ( i Δ ) ( i ) i w i + Δ Δ i =,..., N, n=,,... (3) Δz n Σημειώνεται ότι λ =. Ειδικά για τον κόμβο w χρησιμοποιούμε την οριακή Δ 0 dw συνθήκη = 0, την οποία διακριτοποιούμε χρησιμοποιώντας πρόδρομες d = 0 πεπερασμένες διαφορές ως εξής: n w w = 0 w = w n n n 0 0 (4) Το πρόγραμμα σε Fotan το οποίο επιλύει την ΕΠΔ (3) είναι το ακόλουθο: Pogam FTBS implicit none intege,paamete:: N=6!Aithmos kombwn. O pwtos kombos sth thesh 0 kai o teleytaios sth thesh N-. eal,paamete::dz=0.0! Bhma z intege,paamete::zmax=50! Megistos aithmos bhmatwn sthn z akteythinsh eal::w(0:n-),wold(0:n-),(0:n-) intege::i,j,k eal::d,a,b d=./(n-)!bhma open(,file='es_all.txt',recl=0000) do i=0,n- (i)=i*d!axikes times w(0:n-)=0. w(n-)=. do k=,zmax wold=w w(0)=wold()! Oiakh syntikh symmetias do i=,n-
a=dz/(d** * (-(i)**)) b=dz/(*d * (i)*(-(i)**)) w(i)=a*(wold(i-)-*wold(i)+wold(i+))+b*(wold(i+)-wold(i- ))+wold(i) w(n-)=.! Oiakh synthikh pint* pint '(A,I3,F7.4)','-------------',k, k*dz pint '(<N>F7.4)', w wite(,'(<n+>(f7.4))'),k*dz,w close() end pogam Τα αποτελέσματα του κώδικα για N = 6 κόμβους, βήμα Δ z = 0.0 και απόσταση 0 z 0.5παρουσιάζονται στον ακόλουθο πίνακα: z 0 3 4 5 0 0 0 0 0 0 0.0 0 0 0 0.565 0.0 0 0 0 0.7 0.9549 0.03 0 0 0.649 0.5909.639 0.04 0 0.035 0.37 0.9555.90 0.05 0.035 0.773 0.5 0.9034.644 0.06 0.773 0.98 0.585..473 0.07 0.98 0.3934 0.76.04.6653 0.08 0.3934 0.507 0.7884.335.5858 0.09 0.507 0.60 0.89.49.6953 0. 0.60 0.707 0.9599.336.663 0. 0.707 0.79.044.36.779 0. 0.79 0.877.05.447.783 0.3 0.877 0.9549.73.4545.76 0.4 0.9549.03.9.50.768 0.5.03.098.86.536.790 0.6.098.67.3355.5695.797 0.7.67.8.384.597.874 0.8.8.774.47.68.86 0.9.774.386.4684.659.846 0..386.3766.5059.6789.8507 0..3766.408.544.7008.869 0..408.46.5738.78.875 0.3.46.5004.6043.74.885 0.4.5004.536.634.7608.8893 0.5.536.569.6586.7776.8977 0.6.569.5997.689.7936.9046 0.7.5997.68.7055.808.97 0.8.68.6547.764.89.978 0.9.6547.6793.7459.8345.938 0.3.6793.70.764.8464.99 0.3.70.733.7808.8573.934
0.3.733.743.7964.8674.9388 0.33.743.763.809.8769.943 0.34.763.7783.844.8856.9473 0.35.7783.794.8369.8938.95 0.36.794.8088.8485.904.9545 0.37.8088.84.8593.9084.9578 0.38.84.835.8693.949.9608 0.39.835.8468.8786.9.9636 0.4.8468.8577.8873.966.966 0.4.8577.8678.8953.938.9686 0.4.8678.877.907.9367.9708 0.43.877.886.9097.94.979 0.44.886.894.96.9454.9748 0.45.894.906.9.9493.9766 0.46.906.9086.976.959.9783 0.47.9086.95.938.956.9798 0.48.95.9.9376.9593.983 0.49.9.968.94.96.986 0.5.968.93.946.9649.9838 Παρατηρούμε ότι καθώς προχωρούμε προς την z κατεύθυνση, όλοι οι κόμβοι του πλέγματος στην κατεύθυνση τείνουν να πάρουν την οριακή τιμή. Ευστάθεια n n akiδ Θέτουμε στην (3) ui Ψ e, i = 0,,,..., N, n= 0,,..., N με a =, n+ Ψ ± akδ ξ = και χρησιμοποιώντας τις ταυτότητες: e = cos( kδ ) ± asin( kδ ) Ψ n παίρνουμε: λ λ ξ = + ( cos( kδ) asin( kδ ) ) + ( i ) ( i ) i Δ Δ λ + + ( cos( kδ ) + asin( kδ) ) iδ i ( ) λ λ ξ = + cos( k ) asin k Δ + ( Δ ) ( iδ) ( iδ) i λ λ ξ = cos( kδ ) + a sin( kδ) iδ iδ i ( ) [ ] ( ) Για να έχουμε ευστάθεια θα πρέπει ξ <.
Συνοχή Αναπτύσσουμε σε σειρά Taylo τους όρους: n+ n Δz wi = wi +Δ zwz + wzz + O[ Δz 3 ] (5) και 3 4 n n Δ Δ Δ 5 wi ± = wi ±Δ w + w ± w + w ± O[ Δ ] (6) 3! 4! Αντικαθιστούμε τις (5) και (6) στην (3) παίρνουμε: Δ 4 6 3 5 Δ w + w + O[ Δ] Δ w [ ] + Δ w + OΔ 3 ( i ) Δz 3 + = zw [ ] Δ z + wzz + O Δz i z Δ Δ Δ Δ Δz w w O w w O w w O z 4 4 + + [ Δ ] + + Δ + [ Δ ] = ( i ) z + zz + [ Δ ] i 6 Δz 4 w + w ( i ) wz = ( i ) wzz + O[ Δz ] w + w Δ + O[ Δ ] i 6i Επομένως το αριθμητικό σχήμα που χρησιμοποιήσαμε έχει συνοχή αφού καθώς τα Δ 0 και Δz 0 η ΤΔΕ ανάγεται στην ΜΔΕ.
ΑΣΚΗΣΗ Δίδονται το πρόβλημα αρχικών οριακών τιμών w w w x y t, t > 0, 0< x,y< () + = w ( 0,x,y ) = 0, w (,y) w( x, ) w( x, ) και το πρόβλημα οριακών τιμών w x w y + = 0 0 = = 0 0, w,y = 00 (), 0< x,y< ( 0 ) ( ) ( 0) = 0 ( ) w,y = w x, = w x,, w,y = 00 = ( ) Α) Να περιγραφεί για κάθε πρόβλημα ένα φυσικό φαινόμενο που μοντελοποιείται με βάση τα ανωτέρω μαθηματικά μοντέλα. Β) Να επιλυθούν αριθμητικά τα δύο προβλήματα. Εφαρμόστε στο πρόβλημα αρχικών οριακών τιμών το ρητό σχήμα, ενώ στο πρόβλημα οριακών τιμών το αλγεβρικό σύστημα που προκύπτει να επιλυθεί με την μέθοδο Jacobi. Τα αποτελέσματα να δοθούν σε πίνακες. Γ) Να συγκριθούν και να σχολιασθούν τα αριθμητικά αποτελέσματα των δύο προβλημάτων. Λύση Β) Διακριτοποιούμε την () χρησιμοποιώντας το ρητό σχήμα: n n n n n n n+ n wi+, j wi, j+ wi, j wi, j+ wi, j+ wi, j wi, j wi, j + = Δx Δy Δt + Δt Δt w = w + w w w w w w + + + + + Δx Δy ( ) ( ) n n n n n n n n i, j i, j i, j i, j i, j i, j i, j i, j (3) Ο κώδικας σε Fotan που επιλύει το πρόβλημα είναι ο ακόλουθος: Pogam FTBS implicit none intege,paamete:: Nx=6,Ny=Nx!Aithmos kombwn. O pwtos kombos sth thesh 0,0 kai o teleytaios sth thesh Nx-,Ny-. eal,paamete::dt=0.0! Bhma z intege,paamete::tmax=00! Megistos aithmos xonikwn bhmatwn eal::w(0:nx-,0:ny-),wold(0:nx-,0:ny-) intege::i,j,t eal::dx,dy,a,b
dx=./(nx-)!bhma x dy=./(ny-)!bhma y open(,file='esults.txt',recl=0000)!axikopoihsh pinaka w=0. do t=,tmax wold=w!oiakes synthikes w(0,:)=0. w(:,ny-)=0. w(:,0)=0. w(nx-,:)=00. do i=,nx- do j=,ny- w(i,j)=wold(i,j)+(dt/dx**)*(wold(i+,j)-*wold(i,j)+wold(i-,j))+(dt/dy**)*(wold(i,j+)-*wold(i,j)+wold(i,j-)) pint* pint '(A,I3,F7.)','-------------',t, t*dt do j=ny-,0,- pint '(<Nx>F5.7)', w(:,j) wite(,'(<nx+>(f5.7))'),t*dt,w(:,j) close() end pogam Τα αποτελέσματα του κώδικα για Nx = Ny = 6 κόμβους και χρονικό βήμα Δ t = 0.0 παρουσιάζονται στον ακόλουθο πίνακα. Στον πίνακα εμφανίζονται αποτελέσμτα σε συγκεκριμένες χρονικές στιγμές με τελική χρονική στιγμή το t = (00 χρονικά βήματα). Χρονικό βήμα t 0.00 i=0 i= i= i=3 i=4 i=5 j=4 0 0 0 0 0 00 j= 0 0 0 0 0 00 j= 0 0 0 0 0 00 0.0 j=4 0 0 0 0 4.999998 00
j=5 0 0 0 0 4.999998 00 j= 0 0 0 0 4.999998 00 j= 0 0 0 0 4.999998 00 0.0 j=4 0 0 0 6.49999 3.5 00 j=5 0 0 0 6.49999 37.5 00 j= 0 0 0 6.49999 37.5 00 j= 0 0 0 6.49999 3.5 00 0.05 j=4 0 0.78499 4.9983 4.4535 40.36788 00 j=5 0.78748 5.9570308 0.35 50.785 00 j= 0.78748 5.9570308 0.35 50.785 00 j= 0 0.78499 4.9983 4.4535 40.36788 00 0. j=4 0 3.09375 8.46590 9.78059 43.836 00 j=5 0 4.734535.97533 8.79859 56.85597 00 j= 0 4.734535.97533 8.79859 56.85597 00 j= 0 3.09375 8.46590 9.78059 43.836 00 0. j=4 0 3.97859 8.9436769 0.73447 44.58863 00 j=5 0 5.795006 3.739085 9.6007633 57.3709488 00 j= 0 5.795006 3.739085 9.6007633 57.3709488 00 j= 0 3.97859 8.9436769 0.73447 44.58863 00 0.5 j=4 0 4.00878 0.048489.465775 44.907337 00
j=5 0 6.39854 5.644 3.556863 58.5840759 00 j= 0 6.39854 5.644 3.556863 58.5840759 00 j= 0 4.00878 0.048489.465775 44.907337 00 0.5 j=4 0 4.54569 0.984387.3479557 45.4546 00 j=5 0 7.964397 7.0445976 3.9536896 59.469658 00 j= 0 7.964397 7.0445976 3.9536896 59.469658 00 j= 0 4.54569 0.984387.3479557 45.4546 00 0.5 j=4 0 4.545894 0.984498.3480568 45.454809 00 j=5 0 7.965408 7.044767 3.9538536 59.469688 00 j= 0 7.965408 7.044767 3.9538536 59.469688 00 j= 0 4.545894 0.984498.3480568 45.454809 00 0.9 j=4 0 4.5454535 0.984846.34848 45.454544 00 j=5 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 4.5454535 0.984846.34848 45.454544 00 0.9 j=4 0 4.5454535 0.984846.34848 45.454544 00 j=5 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 4.5454535 0.984846.34848 45.454544 00 0.9 j=4 0 4.5454535 0.984846.34848 45.454544 00
j=5 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 4.5454535 0.984846.34848 45.454544 00 0.93 j=4 0 4.5454535 0.984846.34848 45.454544 00 j=5 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 4.5454535 0.984846.34848 45.454544 00 0.94 j=4 0 4.5454535 0.984846.34848 45.454544 00 j=5 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 4.5454535 0.984846.34848 45.454544 00 0.95 j=4 0 4.5454535 0.984846.34848 45.454544 00 j=5 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 4.5454535 0.984846.34848 45.454544 00 j=4 0 4.5454535 0.984846.34848 45.454544 00 j=5 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 7.969676 7.045450 3.9545403 59.46969 00 j= 0 4.5454535 0.984846.34848 45.454544 00
Για το πρόβλημα οριακών τιμών έχουμε: w w + = 0, 0 < x, y < (4) x y w(0, y) = w( x,) = w( x,0) = 0, w(, y) = 00 (5) Υποθέτουμε ένα ορθογώνιο πλέγμα 0,..., Nx κόμβων στην x κατεύθυνση και 0,..., Ny κόμβων στην y κατεύθυνση. Διακριτοποιούμε στον τυχαίο εσωτερικό κόμβο πεπερασμένες διαφορές: wi+, j wi, j+ wi, j wi, j+ wi, j+ wi, j + = 0 Δx Δy ( ) ( ( ) ( ) ( i+, j i, j i, j i, j+ i, j i, j (, i j) Δy w w + w +Δx w w + w = Δ y +Δ x w =Δ y w + w +Δ x w + w i, j i+, j i, j i, j+ i, j ) 0 ) του πλέγματος με κεντρώες Επιλύοντας το σύστημα με την επαναληπτική μέθοδο Jacobi παίρνουμε: ( ) ( ) ( n+ ) Δy ( n) ( n) Δx ( ) ( ( n) ( n) wi, j = w i+, j+ wi, j + w i, j+ + wi, j ) (6) Δ y +Δx Δ y +Δx i =,..., Nx, j =,..., Ny, όπου με ( n) δηλώνουμε τις διαδοχικές επαναλήψεις. Αν τώρα υποθέσουμε ότι Δ x =Δ y η εξίσωση (6) απλοποιείται στην ( n+ ) ( n) ( n) ( n) ( ) wi, j = ( wi+, j+ wi, j+ wi, j+ + w n i, j ) (7) 4 Ο κώδικας σε Fotan που επιλύει το πρόβλημα είναι ο ακόλουθος: Pogam Laplace implicit none intege,paamete:: Nx=6,Ny=Nx!Aithmos kombwn. O pwtos kombos sth thesh 0,0 kai o teleytaios sth thesh Nx-,Ny-. intege,paamete::nmax=5000! Megistos aithmos iteation eal,paamete::e=.e-5 eal::w(0:nx-,0:ny-),wold(0:nx-,0:ny-) intege::i,j,k eal::dx,dy,a,b dx=./(nx-)!bhma x dy=./(ny-)!bhma y open(,file='esults.txt',recl=0000)!axikopoihsh pinaka w=0. do k=,nmax wold=w!oiakes synthikes w(0,:)=0.
w(:,ny-)=0. w(:,0)=0. w(nx-,:)=00. do i=,nx- do j=,ny- w(i,j)=0.5*(wold(i+,j)+wold(i-,j)+wold(i,j+)+wold(i,j-)) pint* pint '(A,I3,F7.)','-------------',k, maxval(abs(w-wold)) do j=ny-,0,- pint '(<Nx>F5.7)', w(:,j) wite(,'(<nx+>(f5.7))'),k,w(:,j)!check gia sygklish if (maxval(abs(w-wold))<e) exit close() end pogam Για σύγκριση των δύο προβλημάτων εκτελέσαμε τον κώδικα για Nx = Ny = 6 κόμβους και μέγιστο απόλυτο σφάλμα =0-5. O κώδικας συνέκλινε μετά από 66 επαναλήψεις και τα αποτελέσματα παρουσιάζεται στον ακόλουθο πίνακα. i=0 i= i= i=3 i=4 i=5 j= 0 4.54544 0.98486.348463 45.454536 00 j= 0 7.969476 7.045497 3.9545097 59.469673 00 j=3 0 7.969476 7.045497 3.9545097 59.469673 00 j=4 0 4.54544 0.98486.348463 45.454536 00 Παρατηρούμε ότι, όπως ήταν αναμενόμενο, τα παραπάνω αποτελέσματα συμπίπτουν με αυτά του πρώτου προβλήματος καθώς το t.