يتم تقديم دلالات مكتبة pde ++ المطورة لبرمجة طرق الاختلاف المحدود في نمط المشغل. الكائنات الرئيسية للمكتبة هي وظيفة الشبكة ، وخلية الشبكة ومشغلي الشبكات ، والعلاقات الحسابية التي تجعل كود البرنامج أقرب ما يكون إلى الرموز الرياضية. يتم تمثيل مكتبة pde ++ ببضعة ملفات رأس فقط ، ولا يوجد بها تبعيات خارجية ، ويستخدم مفهوم الحوسبة البطيئة.
يتم تقليل عدد كبير من مشاكل النمذجة الرياضية إلى الحل العددي للمعادلات التفاضلية الجزئية (PDEs) بواسطة طرق الشبكة. في نظرية مخططات الاختلاف (Samarsky A.A.) ، فإن مشغلي الشبكات المقابلة يشكلون مساحة خطية على وظائف الشبكة التي لا يوجد لها تمثيل مباشر في لغات البرمجة للأغراض العامة مثل C ++. ونتيجة لذلك ، فإن ممارسة تسجيل نتيجة تطبيق مشغلي الشبكات على وظائف الشبكة باستخدام المصفوفات أو المصفوفات متعددة الأبعاد تستخدم على نطاق واسع في تنفيذ البرامج.
تدل الممارسة على أن النهج المذكور أعلاه مفيد جدًا في إتقان مهارات تنفيذ الطرق العددية ، ويعزى ذلك بشكل أساسي إلى رؤيتها عند العمل مع التقريب المكتوب مسبقًا لـ PDEs في شكل فهرس. لا تحدث مشكلات كبيرة أيضًا عند توسيع هذه التقنية لتشمل أجهزة PDE معممة ، إذا كان الغرض منها هو تطبيق نظام فرق مع المعلمات مرة واحدة وإعادة استخدام رمز البرنامج المناسب دون إجراء مزيد من التعديلات.
في الحالة العامة ، يمكن تعديل برنامج الحوسبة في اتجاهات مختلفة ، لذلك ستتطلب التقنية الموضحة أعلاه كتابة قدر كبير من رمز البرنامج ، وهذا بدوره سيزيد من احتمال حدوث أخطاء مطبعية وتسجيل غير متناسق لمشغلي الشبكات في وحدات نمطية مختلفة. تجدر الإشارة أيضًا إلى مشكلة ازدواجية رمز البرنامج مع تباين الأبعاد المكانية (1D ، 2D ، 3D) وطرق تقريب PDEs.
وبالتالي ، يتمثل البديل في تطوير واستخدام مكتبات البرامج المتخصصة مع تجريدات المجال عالية المستوى التي تقرب رمز البرنامج من تدوينه الرياضي. في مكتبة Blitz ++ ، مثل هذا التجريد هو حسابات الموتر في قوالب الاختلاف ، والتي يتم تنفيذها على أساس استخدام تقنية metaprogramming للقالب.
تعمل مكتبة
freePOOM على توسيع مفهوم Blitz ++ مع نظائر الفرق بين الاختلاف ومشغلي التدرج والقدرة على العمل على أنظمة الحوسبة متعددة المعالجات. لسوء الحظ ، لم يتم دعم هذه المكتبات لفترة طويلة ، وتمتلك عددًا من القيود (سيتم مناقشتها في الجزء التالي) عند استخدامها لتقريب الفروق المحدودة الكلاسيكية إلى حد ما من PDEs التي تم بحثها في هذه الورقة.
مكتبة المصادر المفتوحة pde ++ التي طورها المؤلف مستوحاة بشكل مثالي من مكتبة
freePOOMA وهي مصممة للتسجيل في شكل مخططات فرق محدود لوظائف الشبكة العددية والمتجهة المحددة في إعداد ثنائي الأبعاد (تشغيل ثلاثي الأبعاد وثلاثي الأبعاد قيد التشغيل) على شبكات مستطيلة الشكل موحدة.
تحذير: تم اختبار الرمز فقط تحت 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; }