আমি প্রায়শই নিজেকে প্রদত্ত ক্রিয়াকলাপ / অ্যালগরিদমের এক, দুটি এবং ত্রিমাত্রিক সংস্করণের জন্য খুব অনুরূপ কোড লিখতে দেখি। এই সমস্ত সংস্করণ বজায় রাখা ক্লান্তিকর হয়ে উঠতে পারে। সাধারণ কোড জেনারেশন মোটামুটি ভালভাবে কাজ করে, তবে মনে হয় আরও ভাল উপায় থাকতে হবে।
একবার কোনও অপারেশন লিখতে এবং উচ্চতর বা নিম্ন মাত্রায় সাধারণীকরণের তুলনামূলক সহজ উপায় আছে কি?
এর একটি সুনির্দিষ্ট উদাহরণ হ'ল ধরুন আমার বর্ণালি স্থানের একটি বেগের ক্ষেত্রের গ্রেডিয়েন্ট গণনা করতে হবে। তিন মাত্রায় ফোর্টরান লুপগুলি দেখতে এমন কিছু দেখবে:
do k = 1, n
do j = 1, n
do i = 1, n
phi(i,j,k) = ddx(i)*u(i,j,k) + ddx(j)*v(i,j,k) + ddx(k)*w(i,j,k)
end do
end do
end do
ddxঅ্যারে যেখানে যথাযথভাবে সংজ্ঞায়িত করা হয়। (কেউ এটি ম্যাট্রিক্স গুণায়ও করতে পারে)) দ্বিমাত্রিক প্রবাহের কোডটি প্রায় হুবহু বাদে: তৃতীয় মাত্রা লুপ, সূচক এবং উপাদানগুলির সংখ্যা থেকে বাদ পড়ে of এটি প্রকাশ করার আরও ভাল উপায় আছে কি?
আরেকটি উদাহরণ হ'ল ধরুন আমার কাছে ত্রি-মাত্রিক গ্রিডে তরল বেগ নির্ধারণ করা হয়েছে বিন্দু অনুসারে defined গতিবেগকে একটি স্বেচ্ছাসেবী অবস্থানে (যেমন গ্রিড পয়েন্টের সাথে সঙ্গতিপূর্ণ নয়) বিচ্ছিন্ন করতে, তিনটি মাত্রার (অর্থাত্ মাত্রিক হ্রাস) একের পরিকল্পিত এক-মাত্রিক নেভিল অ্যালগরিদম ব্যবহার করতে পারেন । কোনও সাধারণ অ্যালগরিদমের এক-মাত্রিক বাস্তবায়ন দিয়ে মাত্রিক হ্রাস করার কি সহজ উপায় আছে?