عن المشروع

Oceananigans.jl هي حزمة برمجيات بلغة جوليا لمحاكاة الحجم المحدود لمعادلات بوسينسك غير الهيدروستاتيكية والهيدروستاتيكية، موجهة نحو ديناميكا الموائع ذات الطابع المحيطي. تدعم النطاقات الديكارتية والقشور الكروية ويمكن تشغيلها على وحدات المعالجة المركزية أو وحدات معالجة الرسوميات Nvidia الممكّنة بتقنية CUDA، حيث يتم تمكين التنفيذ على وحدة معالجة الرسوميات بتحميل CUDA.jl وتبديل وسيط البنية من CPU() إلى GPU(). يركز المشروع على واجهة مستخدم مرنة: فالمحاكاة البسيطة قصيرة التعبير، بينما تظل الإعدادات الأكثر تعقيدًا ممكنة. يبني مثال بسيط شبكة RectilinearGrid، وينشئ نموذج NonhydrostaticModel مع تقريب WENO، ويضبط حقول سرعة ابتدائية عشوائية، ويعرّف Simulation بخطوة زمنية وزمن توقف، ثم يشغّلها. تغطي الوثائق أمثلة برمجية، ودروسًا تعليمية حول الكائنات والدوال الرئيسية، وشروحات لطرق الحجم المحدود العددية، والمعادلات الديناميكية المحلولة، ومرجعًا مكتبيًا للكائنات والدوال الموجهة للمستخدم. تشمل موارد المجتمع مناقشات GitHub للعلوم الحاسوبية والميزات التجريبية، وويكي بنصائح حول إعداد جوليا، والوصول إلى وحدات معالجة الرسوميات، وسير العمل المنتج، بالإضافة إلى قنوات Slack وسجل المشكلات وطلبات الدمج. التطوير مدفوع من المجتمع بمساهمين أكاديميين وصناعيين؛ وتوفر البنية التحتية للاختبار من atdepth وتحالف نمذجة المناخ. الحزمة مرخصة بموجب MIT وقابلة للتثبيت من سجل حزم جوليا المسجل، وتتطلب جوليا 1.10 أو أحدث. يسرد ملف README عدة أوراق لتطوير النماذج تغطي التقدم الزمني بطريقة Runge-Kutta، ونمذجة نظام الأرض القابلة للاشتقاق، وتقريب الزخم القائم على WENO، ونوى المحيطات الديناميكية على وحدات معالجة الرسوميات، والانتشار الرأسي CATKE، ويدعو إلى الاستشهاد بالورقة العامة. تُتتبع معايير الأداء على لوحة معلومات عامة، مع ملاحظات بأن إشباع وحدة معالجة الرسوميات يتطلب عمومًا نحو عشرة ملايين نقطة شبكية أو أكثر، وأن Float32 قد لا تكون دائمًا أسرع من Float64 بسبب تكلفة التحويل.