Semantik dari pde ++ library yang dikembangkan untuk pemrograman metode hingga-perbedaan dalam gaya operator disajikan. Objek utama perpustakaan adalah fungsi kisi, sel kisi dan operator kisi, hubungan aritmatika di antaranya membawa kode program sedekat mungkin dengan notasi matematikanya. Pde ++ library diwakili oleh hanya beberapa file header, tidak memiliki dependensi eksternal, dan menggunakan konsep komputasi malas.
Sejumlah besar masalah pemodelan matematika direduksi menjadi solusi numerik persamaan diferensial parsial (PDE) dengan metode grid. Dalam teori skema perbedaan (Samarsky A.A.), operator grid yang sesuai membentuk ruang linear di atas fungsi grid yang tidak ada representasi langsung dalam bahasa pemrograman untuk tujuan umum seperti C ++. Akibatnya, praktik merekam hasil penerapan operator kisi ke fungsi kisi menggunakan array atau matriks multidimensi banyak digunakan dalam implementasi perangkat lunak.
Praktek menunjukkan bahwa pendekatan yang disebutkan di atas sangat berguna dalam menguasai keterampilan menerapkan metode numerik, terutama karena visibilitasnya ketika bekerja dengan perkiraan pra-tertulis dari PDE dalam bentuk indeks. Masalah signifikan juga tidak muncul ketika memperluas teknik ini untuk PDE umum, jika dimaksudkan untuk menerapkan skema perbedaan dengan parameter sekali dan menggunakan kembali kode program yang sesuai tanpa modifikasi lebih lanjut.
Dalam kasus umum, program komputasi dapat dimodifikasi ke arah yang berbeda, sehingga teknik yang dijelaskan di atas akan memerlukan penulisan sejumlah besar kode program, dan ini, pada gilirannya, akan meningkatkan kemungkinan kesalahan ketik dan pencatatan yang tidak konsisten dari operator jaringan yang sama dalam modul program yang berbeda. Perlu juga dicatat masalah duplikasi kode program dengan variabilitas dimensi spasial (1D, 2D, 3D) dan metode untuk memperkirakan PDE.
Jadi, alternatifnya adalah pengembangan dan penggunaan perpustakaan perangkat lunak khusus dengan abstraksi domain tingkat tinggi yang membawa kode program lebih dekat ke notasi matematisnya. Dalam pustaka Blitz ++, abstraksi semacam itu adalah perhitungan tensor pada templat perbedaan, diimplementasikan berdasarkan penggunaan teknik metaprogramming templat. Pustaka
freePOOMA memperluas konsep Blitz ++ dengan analog perbedaan operator perbedaan divergensi dan gradien dan kemampuan untuk bekerja pada sistem komputasi multiprosesor. Sayangnya, perpustakaan-perpustakaan ini tidak didukung untuk waktu yang lama, memiliki sejumlah keterbatasan (mereka akan dibahas pada bagian selanjutnya) ketika mereka digunakan untuk perkiraan perbedaan-hingga-perbedaan yang cukup klasik dari PDE yang dipertimbangkan dalam tulisan ini.
Pde ++ open-source library, yang dikembangkan oleh penulis, idealnya terinspirasi oleh pustaka
freePOOMA dan dirancang untuk merekam dalam bentuk skema beda hingga untuk fungsi skalar dan vektor yang didefinisikan dalam pengaturan 2D (1D dan 3D dalam operasi) pada grid persegi panjang yang seragam.
Peringatan: kode diuji hanya di bawah Windows.
#include "pdepp.h" double sln_u(double x, double y) { return x * x + y * y; }
#include "pdepp.h" double sln_u(double x, double y) { return x * x + y * y; } double sln_v(double x, double y) { return x * x * x + y * y * y; }