Penggunaan Metode Level Set dalam Menyelesaikan Masalah Stefan Dua Fase (Kasus Masalah Pencairan Es) Makbul Muksar 1, Tjang Daniel Candra 2, Susy Kuspambudi Andaini 3 1 Jurusan Matematika FMIPA UM, mmuksar@yahoo.com 2 Jurusan Matematika FMIPA UM, tjangdanielchandra@yahoo.co.id 3 Jurusan Matematika FMIPA UM, Susyka06@yahoo.co.id Abstrak. Masalah Stefan merupakan bagian dari masalah batas berjalan (moving boundary problem). Hal pokok yang terjadi dalam masalah Stefan adalah keberadaan batas dalam berjalan di dalam proses perubahan fase. Perilaku batas dalam berjalan ini merupakan suatu bagian dari selesaian yang harus ditentukan dalam masalah perubahan fase ini. Oleh karena itu, metode level set dipandang sesuai digunakan untuk menentukan evolusi perilaku batas dalam berjalan. Dalam menggunakan metode level set dalam menyelesaikan masalah Stefan, pertama akan diturunkan algoritma penggunaan metode level set terhadap masalah Stefan. Selanjutnya ditentukan metode numerik yang sesuai. Kemudian dilakukan simulasi numerik untuk kasus masalah pencairan es. Hasil yang diperoleh membuktikan bahwa metode level set dapat digunakan untuk menyelesaikan masalah Stefan dengan akuarasi tinggi. Kata Kunci: Metode Level Set, Batas Dalam Berjalan, Masalah Stefan. Masalah Stefan merupakan bagian dari masalah batas berjalan (moving boundary problem). Kajian terhadap masalah Stefan sangat bermanfaat untuk mendiskripsikan beberapa masalah penomena alam, teknik dan sosial, misalnya mencairnya es, masalah perubahan fase dalam pencampuran logam, dan masalah kemiskinan [1]. Perilaku batas dalam berjalan (interface) ini merupakan suatu bagian dari selesaian yang harus ditentukan dalam masalah perubahan fase ini. Persamaan Stefan diturunkan dari masalah terjadinya suatu perubahan fase. Misalkan perubahan dari fase padat ke cair, cair ke gas, atau sebaliknya. Perubahan fase bisa terjadi secara multi fase, misalnya dari padat ke cair kemudian ke gas, atau sebaliknya. Di sini akan kaji masalah Stefan tentang masalah percairan es. Misalkan kita pandang masalah perubahan dua fase tentang mencairnya suatu balok es dengan panjang L satuan panjang. Diasumsikan bahwa balok es mempunyai kerapatan yang homogen, sehingga dapat dipandang hanya dalam satu dimensi (sumbu-x). Mula-mula es tersebut mempunyai suhu awal T 0 < 0 0 Celcius. Pada ujung kiri balok es tersebut dialiri panas dengan suhu T l > 0 0 Celcius. Seketika secara perlahan es diujung kiri mencair dan semakin lama es yang mencair semakin banyak. Misalkan batas dalam berjalan antara air di sebelah kiri (zona cairan) dan es disebelah kanan (zona padat) adalah s(t), maka tentu s(t) ini akan
bergerak dari ujung kiri es ke sebalah kanan. Hukum yang membangun masalah di atas adalah hukum konduksi panas. Misalkan T 1, T 2 masing-masing adalah suhu di sebelah kiri dan sebelah kanan batas s(t), maka persamaan yang dibangun diberikan oleh t t = x (α l = x (α s ), 0 < x < s(t), (1) x ), s(t) < x < L, (2) x α l = K l ρ l c l, α s = K s ρ s c s, dengan K l, K s, ρ l, ρ s, c l, c s berturut-turut adalah koefisien difusi panas, kalor jenis, dan kapasitas panas untuk untuk masing-masing zona cairan dan padat. Kecepatan v(t) dari batas dalam berjalan s(t) diberikan oleh kondisi lompatan ds(t) dt dengan Λ adalah panas laten. = v(t) = K s (s(t),t) K l (s(t),t) ρ l Λ x ρ l Λ x Sedangkan kondisi awal dan kondisi batas masalah tersebut adalah T 1 (0, t) = T l ; T 2 (L, t) = T 0 ; T 1 (x, 0) = T 2 (x, 0) = T 0. (4) Metode penentuan evolusi perilaku batas dalam berjalan secara langsung dapat dilakukan pada persamaan batas berjalannya, yang dikenal dengan metode penelusuran langsung (front tracking method). Kelemahan metode ini adalah order akurasi yang diperoleh masih belum tinggi karena metode ini bekerja langsung pada persamaan batas berjalannya yang merupakan persamaan differensial biasa orde satu. Metode lain untuk menentukan evolusi perilaku batas dalam berjalan adalah metode level set. Metode ini menelusuri evolusi batas dalam berjalan secara implisit (tidak langsung) sebagai nilai nol dari suatu fungsi level set yang cukup licin. Fungsi level set ini dibangun oleh fungsi-fungsi selesaian yang cukup licin dari masingmasing domain. Dengan demikian fungsi level set ini akan selalu bekerja dengan fungsi-fungsi yang cukup licin. Dengan metode ini diduga akan diperoleh selesaian evolusi perilaku batas dalam berjalan yang mempunyai akurasi tinggi. Penggunaan metode level set dalam menentukan evolusi perilaku batas dalam berjalan telah dilakukan oleh Makbul untuk masalah injeksi uap air ke dalam suatu media berpori [2], dalam menyelesaikan masalah persamaan hiperbolik konveks [3], tak konveks [4] dan masalah aliran uap dan minyak dalam media berpori [5]. Keempat masalah tersebut berkenaan dengan masalah batas berjalan. Karena masalah Stefan juga berkenaan dengan masalah batas berjalan, maka metode level set diduga juga dapat digunakan dalam menyelesaikan masalah Stefan. Beberapa penelitian yang berkenaan dengan penggunaan metode level set dalam menyelesaikan masalah Stefan dilakukan oleh [6] dan [7]. Dalam penelitian tersebut telah dikaji secara numerik tentang penggunaan metode ini untuk menyelesaikan masalah Stefan. Oleh karena itu, dalam penelitian ini akan mengkaji secara numerik tentang kelayakan penggunaan metode level set dalam menyelesaikan masalah Stefan, khususnya dalam kasus masalah pencairan es. (3)
Dalam kajian numerik akan ditentukan metode numerik-metode numerik yang sesuai dan mempunyai keakuratan tinggi dalam menyelesaian masalah Stefan yang menggunakan metode level set. Kajian ini dilakukan dengan cara menentukan metode numerik-metode numerik yang konvergen dan mempunyai akurasi tinggi yang sesuai dengan karakteristik persamaan masalah Stefan dan metode level set. Selanjutnya akan diberikan pembenaran secara numerik bahwa metode level set sesuai dan mempunyai akurasi tinggi dalam menyelesaikan masalah Stefan. A. Metode Level Set Misalkan akan ditentukan suatu batas dalam berjalan x = s(t) yang bergerak searah normalnya dengan kecepatan F yang diketahui dari batas dalam berjalan awal s(0) = s 0. Kecepatan F ini bergantung pada banyak faktor, seperti bentuk geometri, interpretasi fisis, maupun penurunan kecepatan kurva. Untuk menentukan evolusi batas dalam berjalan x = s(t) ini, pertama, batas dalam berjalan awal x(0) = s 0 disisipkan sebagai level set nol dari suatu fungsi level set Φ 0 berdimensi satu lebih tinggi. Selanjutnya, mengaitkan evolusi fungsi Φ 0 terhadap evolusi batas dalam berjalan x = s(t) yang dicari dengan menyatakan evolusi kurva x = s(t) sebagai level set nol dari fungsi level set Φ sebagai hasil evolusi dari Φ 0. Langkahlangkah ini disebut metode level set. Jadi dengan metode level set, evolusi suatu batas dalam berjalan tidak secara langsung dihitung dari kecepatan batas dalam berjalan tersebut, melainkan dinyatakan sebagai level set nol dari evolusi suatu fungsi level set yang dikonstruksi, di mana evolusi kurva level set nol tersebut mempunyai kecepatan sama dengan kecepatan dari evolusi dari batas dalam berjalan yang dicari. Penurunan persamaan evolusi suatu fungsi level set seperti yang dimaksud di atas dilakukan sebagai berikut. Misalkan kurva x = s(t) merupakan suatu batas dalam berjalan yang akan ditentukan sebagai hasil dari evolusi suatu batas dalam berjalan awal x(0) = s 0 yang bergerak dengan kecepatan F searah normalnya. Akan dikonstruksi suatu persamaan evolusi fungsi level set Φ(x, t) yang mengaitkan antara level set nol dari Φ(x, t) dengan evolusi batas dalam berjalan x = s(t) yang akan ditentukan, yaitu dengan diharuskannya level set nol dari Φ(x, t) merupakan evolusi batas dalam berjalan x = s(t) yang akan ditentukan, yaitu Φ(s(t), t) = 0. (5) Dengan menggunakan aturan rantai pada (5), maka diperoleh Φ t (s(t), t) + Φ(s(t), t) s (t) = 0. (6) Karena F merupakan kecepatan kurva searah normalnya, yaitu s (t) n = F dengan n = Φ/ Φ, maka dari (6) diperoleh persamaan evolusi untuk fungsi level set Φ t + F Φ = 0, Φ(x, 0) = Φ 0. (7) Untuk dimensi satu, persamaan evolusi fungsi level set ini dituliskan sebagai Φ t + FΦ x = 0, Φ(x, 0) = Φ 0. (8) B. Penskalaan Seperti dituliskan oleh [8], didefinisikan variabel tak dimensi sebagai berikut. T i = T T 0 T l T 0 ; x = x L ; t = t ; s = s, dengan i = 1,2. t max L Maka persamaman (1), (2), dan (3) masing-masing menjadi
t = 2 T i α l x 2, 0 < x < s (t).. (9) t = 2 T 2 α s x 2, s (t) < x < 1.. (10) ds dt = v (t) = λ s dengan α l = α lt max L 2 (s (t ),t ) x λ l, α s = α st max, λ L 2 s = K s ρ l Λ (s (t ),t ) x.(11) (T l T 0 ) L 2 t max dan λ l = K l (T l T 0 ) ρ l Λ L 2 t max Sedangkan kondisi awal dan kondisi batas masalah tersebut (4) menjadi T 1 (0, t ) = 1; T 2 (1, t ) = 0; T 1 (x, 0) = T 2 (x, 0) = 0 (12) C. Penggunaan Metode Level Set dalam Menyelesaikan Masalah Stefan Dua Fase Ide utama metode level set untuk menentukan selesaian T i, i = 1,2 dari persamaan (9) - (10) beserta batas dalam berjalan x = s(t) adalah menyatakan batas dalam berjalan x = s(t) sebagai level set nol dari fungsi level set Φ(x, t) (R, R + ) yang dikonstruksi. Pertama, definisikan fungsi terbatas T 10, T 20 (R), masing-masing sebagai perluasan dari fungsi-fungsi T 1 0 dan T 2 0 ke seluruh domain R dan fungsi Φ 0 (x) C 1 (R) monoton naik dengan Φ(0) = 0. Kemudian diperoleh fungsi-fungsi terbatas T 1 (x, t), T 2 (x, t) C 1 (R, R + ) masing-masing sebagai selesaian dari t ) x 0 { = (α x l dan { = (α t x s ) x (13) T 1 (x, 0) = T 1 T 2 (x, 0) = T 0 2 Selanjutnya definisikan fungsi kecepatan F(x,t) sebagai perluasan dari kecepatan awal batas dalam berjalan yang dicari, F(s(t), t) = v(t) = K s ρ l Λ (s(t),t) x K l ρ l Λ (s(t),t) x sebagai F(x, t) = K s (x,t) K l ρ l Λ x ρ l Λ (x,t) x. (14) Karena fungsi-fungsi T 1 (x, t), T 2 (x, t)adalah terdifferensialkan, maka fungsi F(x,t) yang didefinisikan seperti pada (14) juga terdifferensialkan. Dengan F(x,t) ini, berikutnya dikonstruksi suatu fungsi level set di mana level set nol dari fungsi level set ini adalah s(t) yang diinginkan. Pengkonstruksian fungsi level set dan kaitannya dengan selesaian T i (x, t) dan batas dalam berjalan s(t) dijelaskan sebagai berikut. Misalkan fungsi F(x,t) seperti yang didefinisikan pada (14). Pandang masalah nilai awal { Φ t + FΦ x = 0 (15) Φ(x, 0) = Φ 0 (x) dengan Φ 0 (x) C 1 (R) monoton naik dan Φ 0 (0) = 0. Maka selesaian dari (15) adalah tunggal dan level set nolnya adalah x = s(t) dengan ds(t) = F(s(t), t). Dengan batas dalam berjalan x = s(t) yang diperoleh ini, selesaian masalah Stefan T i (x, t) dari persamaan (13) dinyatakan dengan T i (x, t) = { T 1(x, t), x s(t) (16) T 2 (x, t), x > s(t) dt
Walaupun pemilihan fungsi perluasan dari fungsi nilai awal T 1 0 dan T 2 0, dan fungsi nilai awal Φ 0 (x) tidak merubah level set nol dari Φ(x, t), tetapi dalam perhitungan numerik bentuk dari fungsi level set Φ(x, t) di sekitar level set nolnya berpengaruh terhadap keakuratan penentuan level set nolnya. Oleh karena itu, dipilih fungsi nilai awal Φ 0 (x) = x (fungsi jarak relatif terhadap titik awal kediskontinuan, x = 0). Dengan pemilihan nilai awal fungsi jarak, selesaian Φ(x, t) dari (15) tidak dijamin menjadi fungsi jarak meskipun untuk waktu t yang pendek, bahkan mungkin bentuk fungsi Φ(x, t) semakin landai di sekitar titik (s(t), t) untuk waktu t yang lama. Akibatnya order keakuratan penentuan level set nol fungsi Φ(x, t) menjadi berkurang. Untuk mengatasi masalah tersebut dalam perhitungan numerik, maka untuk setiap satu langkah waktu t dilakukan inisialisai kembali menjadi fungsi jarak terhadap level set nolnya. Inisialisasi kembali ini dilakukan dengan menggunakan persamaan Φ t = sgn(φ 0 )(1 Φ x ), (17) menuju keadaan setimbang, dengan Φ(x, 0) = Φ 0 (x, t) bukan fungsi jarak, sebagaimana dilakukan pada [9]. Persamaan (17) ini tidak merubah posisi level set nolnya, tetapi hanya titik-titik di sekitarnya. D. Algoritma Metode Level Set untuk Masalah Stefan Dua Fase Sebelum metode tersebut dituliskan dalam suatu algoritma, beberapa hal perlu dijelaskan sebagai berikut. Fungsi-fungsi terbatas T 10, T 20 (R), yang merupakan perluasan dari nilai awal (12) ke seluruh domain R dieksekusi hanya sekali pada awal perhitungan numerik. Sedangkan fungsi-fungsi T 1 (x, t), T 2 (x, t) sebagai selesaian dari (13) dieksekusi untuk setiap satu langkah waktu t. Pendefinisian fungsi F(x, t) dieksekusi hanya pada suatu daerah di sekitar titik (s(t), t) untuk setiap satu langkah waktu t. Oleh karena itu, penyelesaian persamaan (15) juga dieksekusi untuk daerah di sekitar titik (s(t), t) untuk setiap satu langkah waktu t. Dari beberapa penjelasan di atas, maka langkah-langkah numerik untuk metode level set ini dapat dinyatakan dalam suatu algoritma berikut. 1. Diberikan fungsi nilai awal T(x, 0) = T 0 (x) = { T 1 0 (x), x 0 T 0 2 (x), x > 0, dengan T 0 1 (0 ) = T 0 2 (0 + ) dan fungsi level set awal Φ 0 (x, t) = x. 2. Tentukan fungsi terbatas T 10, T 20 (R), masing-masing sebagai perluasan dari fungsi T 0 0 1 dan T 2 ke seluruh domain R. 3. Selesaikan masalah nilai awal (13), notasikan selesaiannya masing-masing dengan T 1 (x, t), T 2 (x, t). 4. Tentukan fungsi kecepatan F(x, t) dengan (14) pada suatu daerah di sekitar (s(t), t). 5. Selesaikan masalah nilai awal (15), notasikan selesaiannya dengan Φ(x, t). 6. Inisialisasi kembali Φ(x, t) menjadi fungsi jarak dengan persamaan (17) menuju keadaan setimbang, dengan Φ 0 = Φ(x, t) dan notasikan selesaiannya yang merupakan fungsi jarak dengan Φ 0 (x, t). Kemudian tentukan s(t + Δt) sebagai level set nolnya dari fungsi jarak Φ 0 (x, t). 7. Ulangi proses 2-7 untuk proses langkah waktu berikutnya, dan pengulangan berhenti hingga t= tmax.
Catatan. Dalam perhitungan numerik fungsi F(x,t) dan Φ(x, t) yang terdefinisi pada (R, R + ), hanya dieksekusi pada suatu domain Dr. di sekitar batas dalam berjalan yang bergerak terhadap waktu t. Dalam domain Dr ini dilakukan perhalusan ukuran panjang partisinya, sehingga akan menambah keakuratan penentuan fungsi level set Φ(x, t). E. Metode Numerik Persamaan pembangun yang digunakan dalam penyelesaian numerik (13,15,17) dapat dipandang sebagai bentuk s t = L(s). Sehingga metode numerik yang digunakan adalah metode semi eksplisit. Metode semi eksplisit merupakan metode numerik yang perhitungan waktu dan ruang dihitung secara berurutan, yaitu dihitung secara numerik untuk ruang, kemudian dilanjutkan dihitung secara numerik untuk waktu. Pendiskritan Ruang Persamaan pembangun untuk persamaan level set (15), dapat dituliskan sebagai t = F x. Persamaan ini berbentuk persamaan Hamilton-Jacobian, sehingga untuk ruang dihampiri dengan skema numerik F x F n i n x. n i x didiskritkan i dengan skema numerik WENO orde kelima [5]. Untuk persamaan inisialisasi kembali (17) dihampiri oleh skema numerik sgn(φ 0 )(1 φ x ) sgn (φ n 0 )(1 φ n i x ), dengan φ n i x didisktritkan dengan i skema numerik WENO order kelima untuk persamaan berbentuk Hamilton- Jacobian seperti pada persamaan level set di atas. Untuk persamaan panas (13), didiskritkan menggunakan skema numerik beda pusat orde keempat [10]. Pendiskritan Waktu Untuk mendisktritkan waktu t, digunakan skema numerik TVD Runge-Kuta orde ketiga berikut. s (1) = s n + tl(s n ), s (2) = ( 3 4 ) sn + ( 1 4 ) s(1) + ( 1 4 ) tl(s(1) ), s (n+1) = ( 1 3 ) sn + ( 2 3 ) s(1) + ( 2 3 ) tl(s(2) ), dengan t c x α, c bilangan CFL dan α = max s L (s) [5]. Skema ini dipilih karena bersifat stabil mempunyai akurasi tinggi order ketiga. Dengan demikian kesalahan yang diperoleh dari perhitungan numerik untuk waktu t relatif kecil. F. Hasil Simulasi Numerik Hasil simulasi numerik yang disajikan adalah evolusi suhu, evolusi batas dalam berjalan dan evolusi kecepatan batas dalam berjalan untuk beberapa kasus nilai suhu ujung kiri Tl dan panjang domain L. Gambar 1 sampai dengan 3 menyatakan evolusi suhu, batas dalam berjalan, dan kecepatan batas dalam berjalan dengan panjang domain L yang berbeda, yaitu masing-masing 0,1 m; 0,5 m; dan 1 m, dan dengan suhu panas di ujung kiri Tl = 90 o C dan suhu awal es T0=- 10 o C. Sedangkan Gambar 4 sampai dengan 6 menyatakan evolusi suhu, batas dalam berjalan, dan kecepatan batas dalam berjalan dengan
panjang domain L yang berbeda, yaitu masing-masing 0,2 m; 0,5 m; dan 1 m, dan dengan suhu panas di ujung kiri Tl = 150 o C dan suhu awal es T0=- 10 o C. Gambar 1. Evolusi Suhu, Batas dalam berjalan, dan Kecepatan dengan L = 0,1m, T l = 90 o C, T 0=-10 o C Gambar 2. Evolusi Suhu, Batas dalam berjalan, dan Kecepatan dengan L = 0,5m, Tl = 90 o C, T0=- 10 o C
Gambar 3. Evolusi Suhu, Batas dalam berjalan, dan Kecepatan dengan L = 1 meter Tl = 90 o C, T0=-10 o C Gambar 4. Evolusi Suhu, Batas dalam berjalan, dan Kecepatan dengan L = 0,2 meter Tl = 150 o C, T0=-10 o C
Gambar 5. Evolusi Suhu, Batas dalam berjalan, dan Kecepatan dengan L = 0,5 meter Tl = 150 o C, T0=-10 o C Gambar 6. Evolusi Suhu, Batas dalam berjalan, dan Kecepatan dengan L = 1 meter Tl = 150 o C, T0=-10 o C Dengan membandingkan hasil numerik pada Gambar 1, 2, dan 3, terlihat bahwa perbedaan panjang L tidak mempengaruhi secara siginikan kecepatan batas dalam berjalan, hal ini juga bisa dilihat dari hasil numerik pada Gambar 4, 5, dan 6. Dari hasil numerik Gambar 1 sampai dengan 6, terlihat juga bahwa kecepatan batas dalam berjalan semakin lama semakin berkurang dan cendrung menuju nol untuk waktu yang cukup lama. Tetapi dengan membandingkan perbedaan Tl (Gambar 2 dan 5, dan 3 dan 6) terlihat bahwa untuk Tl yang lebih besar, kecepatan batas berjalannya lebih besar, sehingga batas dalam berjalannya lebih besar untuk
waktu yang sama. Dari hasil simulasi numerik ini dapat disimpulkan bahwa: 1. Panjang L tidak mempengaruhi secara siginikan kecepatan batas dalam berjalan. 2. Kondisi batas suhu di ujung kiri Tl mempengaruhi kecepatan batas dalam berjalan. 3. Kecepatan batas dalam berjalan semakin lama semakin berkurang dan cendrung menuju nol untuk waktu yang cukup lama. 4. Posisi batas dalam berjalan semakin lama semakin pelan dan untuk waktu yang lama hampir berhenti. G. Kesimpulan dan saran Dari kajian yang telah dilakukan dapat disimpulkan beberapa hal antara lain: 1. Metode level set dapat digunakan untuk menetukan selesaian masalah Stefan dua fase, khususnya dalam menetukan evolusi dari batas berjalan (batas dalam berjalan). 2. Secara numerik metode level set ini mempunyai akuarasi tinggi, sesuai dengan metode numerik yang digunakan WENO orde kelima dan TVD Runge-Kuta orede ketiga. Untuk kajian lebih lanjut, dapat dikaji tentang penggunaan metode level set untuk permasalahan-permasalahan yang berkenaan dengan batas berjalan (moving boundary problems) yang lain. DAFTARPUSTAKA [1] Chen, S. Merriman, B., Osher, S., Smereka, P., A Simple Level Set Method for Solving Stefan Problems, Journal of Computational Physics, 135, 8 29. 1997. [2] Muksar, M., Metode Level set untuk Masalah Injeksi Uap Air ke dalam Suatu Media Berpori, Disertasi. ITB Bandung, 2005. [3] Muksar, M., A Level Set Method for Convex Hyperbolic Equation, dipresentasikan pada International Conference on Statistics and Mathematics and Its Application 19-21 June 2006 di UNISBA, 2006. [4] Muksar, M., Selesaian Lemah Persamaan Hiperbolik Tak-Konveks dengan Metode Level Set, Laporan Penelitian Fundamental tahun anggaran 2007, 2007. [5] Muksar, M., A Level Set Method for One Dimensional Steam Displacing Oil in A Saturated Porous Medium, Jurnal MIPA, 2008 [6] Vermolen, F.J.. On similarity Solutions and Interface Reactions for a Vector- Valued Stefan Problem. Nonlinear Analysis: Modelling and Control, 12, 269-288, 2007. [7] Gulkac, V., Numerical Solution of One-Dimensional Stefan-Like Problems Using Three Time-Level Set Method, Ozean Journal of applied Sciences, 2(1), 19-24, 2009.
[8] Javierre, E., Vuik, C., Vermolen, F.J., van der Zwaag, S., A Comparison of Numerical Models for One-Dimensional Stefan Problems, Journal of Computational and Applied Mathematics, 192, 445-459, 2006. [9] Cheng, T., Numerical Analysis of Non Linear Multi-Phase Stefan Problems, Computer and Structures Journal, 75, 225-233., 2000. [10] Kurganov, A., Levy, D. (2000), A Third-Order Semi-Discrete Scheme for Conservation Laws and Convection-Diffusion Equations, SIAM Journal on Scientific Computing, 22, 1461-1488.