কনটেন্টে যান

ব্যবহারকারী সাবরুটিন সম্প্রসারণ

FrontISTR মূল সোর্স পরিবর্তন না করেই বৈশিষ্ট্য সম্প্রসারণের জন্য ব্যবহারকারী সাবরুটিনের একটি সমষ্টি দেয়। এর আওতায় গঠনমূলক সম্পর্কের ব্যবহারকারী বাস্তবায়ন এবং ব্যবহারকারী-সংজ্ঞায়িত বাহ্যিক লোড সংযোজন রয়েছে। এই অধ্যায়ে সম্প্রসারণযোগ্য বিন্দু এবং প্রতিটি চালু করার জন্য বিশ্লেষণ নিয়ন্ত্রণ ফাইলের কীওয়ার্ড তালিকাভুক্ত করা হয়েছে। সাবরুটিন আর্গুমেন্টের বিস্তারিত বিবরণ ও পুনর্নির্মাণ পদ্ধতির জন্য ব্যবহারকারী সাবরুটিন (কোডিং গাইড) দেখুন।

কার্যাবলির সারসংক্ষেপ

ব্যবহারকারী সাবরুটিনের সম্প্রসারণ বিন্দু প্রধানত পদার্থের গঠনমূলক সম্পর্ক এবং বাহ্যিক লোড—এই দুই ধারায় বিভক্ত। গঠনমূলক সম্পর্কের ক্ষেত্রে ব্যবহারকারী রৈখিক স্থিতিস্থাপকতা, অতিস্থাপকতা, স্থিতিস্থাপক-প্লাস্টিকতা এবং সাধারণ গঠনমূলক সম্পর্ক—এই চারটি আহ্বান পথ রয়েছে; প্রতিটি আলাদা কীওয়ার্ডে চালু হয়। বাহ্যিক লোডের ক্ষেত্রে ব্যবহারকারীর প্রস্তুত করা বাহ্যিক ফাইল থেকে লোড তথ্য পড়ে সামগ্রিক লোড ভেক্টর ও অবশিষ্ট ভেক্টরে যোগ করার পথ রয়েছে। সব ক্ষেত্রেই FrontISTR বিতরণে থাকা টেমপ্লেট ফাইল সম্পাদনা করে মূল প্রোগ্রাম পুনর্নির্মাণ করলে ব্যবহার করা যায়।

সম্প্রসারণ বিভাগ বিশ্লেষণ নিয়ন্ত্রণ কীওয়ার্ড প্রধান ব্যবহারকারী সাবরুটিন সম্পাদনাযোগ্য টেমপ্লেট
ব্যবহারকারী রৈখিক স্থিতিস্থাপকতা !ELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
ব্যবহারকারী অতিস্থাপকতা !HYPERELASTIC, TYPE=USER uElasticMatrix, uElasticUpdate fistr1/src/lib/user/uelastic.f90
ব্যবহারকারী স্থিতিস্থাপক-প্লাস্টিকতা (ফলন ফাংশন ও রিটার্ন ম্যাপিং) !PLASTIC, YIELD=USER uElastoPlasticMatrix, uBackwardEuler, uElastoPlasticNumStatus fistr1/src/lib/user/uyield.f90
সাধারণ ব্যবহারকারী গঠনমূলক সম্পর্ক !USER_MATERIAL uMatlMatrix, uUpdate fistr1/src/lib/user/umat.f90
ব্যবহারকারী-সংজ্ঞায়িত বাহ্যিক লোড !ULOAD, FILE=<fname> ureadload, uloading, uResidual fistr1/src/lib/user/uload.f90

ব্যবহারকারী কঠিনীকরণ সূত্রের (অন্তর্নির্মিত ফলন ফাংশন রেখে কেবল কঠিনীকরণ বক্ররেখা ব্যবহারকারী বাস্তবায়ন) জন্য কোনো পথ নেই। কঠিনীকরণ বক্ররেখা ব্যবহারকারী বাস্তবায়ন করতে হলে !PLASTIC, YIELD=USER নির্বাচন করে পুরো স্থিতিস্থাপক-প্লাস্টিক গঠনমূলক সম্পর্ক ব্যবহারকারী বাস্তবায়নে প্রতিস্থাপন করতে হবে। ব্যবহারকারী সীমানা শর্ত এবং পুনরারম্ভের সময় ব্যবহারকারী প্রক্রিয়াকরণের সম্প্রসারণ বিন্দুও সমর্থিত নয়।

!CREEP-এর TYPE=USER সমর্থিত নয়। সময়-নির্ভর গঠনমূলক সম্পর্ক ব্যবহারকারী বাস্তবায়ন করতে !USER_MATERIAL ব্যবহার করুন।

ব্যবহারকারী গঠনমূলক সম্পর্ক

ব্যবহারকারী গঠনমূলক সম্পর্ক হলো এমন পীড়ন–স্ট্রেন সম্পর্ক বাহ্যিক সাবরুটিনে বাস্তবায়নের প্রবেশপথ, যা অন্তর্নির্মিত পদার্থ মডেলে প্রকাশ করা যায় না। সংশ্লিষ্ট অন্তর্নির্মিত গঠনমূলক সম্পর্কের কাঠামো অনুযায়ী ব্যবহারকারী রৈখিক স্থিতিস্থাপকতা, ব্যবহারকারী অতিস্থাপকতা, ব্যবহারকারী স্থিতিস্থাপক-প্লাস্টিকতা এবং সাধারণ ব্যবহারকারী গঠনমূলক সম্পর্ক—এই চারটি পথ আছে। প্রতিটি পথেই বিশ্লেষণ নিয়ন্ত্রণ ডেটার !MATERIAL ব্লকের সংশ্লিষ্ট কীওয়ার্ডে TYPE=USER অথবা YIELD=USER যোগ করা হয়। সর্বোচ্চ 100টি ব্যবহারকারী ধ্রুবক নির্দিষ্ট করা যায় এবং সেগুলো সাবরুটিনে পাঠানো হয়।

ব্যবহারকারী রৈখিক স্থিতিস্থাপকতা

ব্যবহারকারী রৈখিক স্থিতিস্থাপকতা ক্ষুদ্র বিকৃতির কাঠামোতে ব্যবহারকারীকে স্থিতিস্থাপক ম্যাট্রিক্স গণনা করতে দেয়। বিশ্লেষণ নিয়ন্ত্রণ ডেটায় !ELASTIC, TYPE=USER দিলে FrontISTR এটিকে ক্ষুদ্র বিকৃতি গঠনমূলক সম্পর্ক হিসেবে বিবেচনা করে এবং উপাদান দৃঢ়তা ও পীড়ন হালনাগাদের সময় uElasticMatrix (স্থিতিস্থাপক ম্যাট্রিক্স \(D\) ফেরত দেয়) এবং uElasticUpdate (পীড়ন ফেরত দেয়) আহ্বান করে। বিদ্যমান অতিস্থাপক বা স্থিতিস্থাপক-প্লাস্টিক মডেলের সঙ্গে একসঙ্গে ব্যবহার করা হয় না।

ব্যবহারকারী অতিস্থাপকতা

ব্যবহারকারী অতিস্থাপকতা বড় বিকৃতির (Total Lagrange) কাঠামোতে স্ট্রেন-শক্তি ফাংশনের অন্তরক থেকে পীড়ন ও ট্যানজেন্ট দৃঢ়তা গণনার পথ। বিশ্লেষণ নিয়ন্ত্রণ ডেটায় !HYPERELASTIC, TYPE=USER নির্দিষ্ট করা হয়। আহ্বানকৃত সাবরুটিন ব্যবহারকারী রৈখিক স্থিতিস্থাপকতার মতোই uElasticMatrixuElasticUpdate, এবং টেমপ্লেটও fistr1/src/lib/user/uelastic.f90 ভাগ করে। কীওয়ার্ডের নির্দিষ্টকরণ অনুযায়ী FrontISTR ক্ষুদ্র বিকৃতি নাকি Total Lagrange হিসেবে বিবেচনা করবে তা বদলে যায়; তাই একই টেমপ্লেটকে একই সঙ্গে ক্ষুদ্র ও বড় বিকৃতির জন্য পুনঃব্যবহার করা যায় না। যেকোনো একটি গঠনমূলক সম্পর্ক হিসেবে বাস্তবায়ন করুন।

ব্যবহারকারী স্থিতিস্থাপক-প্লাস্টিকতা

ব্যবহারকারী স্থিতিস্থাপক-প্লাস্টিকতা ফলন ফাংশন ও রিটার্ন-ম্যাপিং প্রক্রিয়া ব্যবহারকারী বাস্তবায়নের পথ। বিশ্লেষণ নিয়ন্ত্রণ ডেটায় !PLASTIC, YIELD=USER নির্দিষ্ট করা হয়। এটি Mises, Mohr-Coulomb ও Drucker-Prager অন্তর্নির্মিত ফলন ফাংশন থেকে পৃথক শাখায় যায়। উপাদান দৃঢ়তা গণনায় uElastoPlasticMatrix (স্থিতিস্থাপক-প্লাস্টিক ট্যানজেন্ট দৃঢ়তা \(D\) ফেরত দেয়), পীড়ন হালনাগাদে uBackwardEuler (ট্রায়াল পীড়নকে সত্য পীড়নে ম্যাপ করে এবং অবস্থা চলক হালনাগাদ করে), এবং Gauss বিন্দু প্রারম্ভে uElastoPlasticNumStatus (সংরক্ষিত বাস্তব অবস্থা চলকের সংখ্যা ফেরত দেয়) আহ্বান করা হয়। শুধু কঠিনীকরণ বক্ররেখা ব্যবহারকারী বাস্তবায়নে প্রতিস্থাপনের পথ নেই; প্রয়োজন হলে এই পথেই পুরো স্থিতিস্থাপক-প্লাস্টিক গঠনমূলক সম্পর্ক প্রতিস্থাপন করতে হবে।

সাধারণ ব্যবহারকারী গঠনমূলক সম্পর্ক

সাধারণ ব্যবহারকারী গঠনমূলক সম্পর্ক এমন গঠনমূলক সম্পর্ক একত্রে বাস্তবায়নের পথ, যা স্থিতিস্থাপকতা, অতিস্থাপকতা বা স্থিতিস্থাপক-প্লাস্টিকতার কাঠামোর মধ্যে পড়ে না। বিশ্লেষণ নিয়ন্ত্রণ ডেটায় !USER_MATERIAL নির্দিষ্ট করা হয়। পূর্বনির্ধারিতভাবে Updated Lagrange কাঠামো ব্যবহৃত হয়; KIRCHHOFF দিলে Total Lagrange হিসেবে বিবেচিত হয়। অবস্থা চলকের সংখ্যা NSTATUS দিয়ে নির্দিষ্ট করা হয়। উপাদান দৃঢ়তা গণনায় uMatlMatrix (ট্যানজেন্ট দৃঢ়তা \(D\) ফেরত দেয়) এবং পীড়ন হালনাগাদে uUpdate (পীড়ন ও অবস্থা চলক হালনাগাদ করে) আহ্বান করা হয়।

ব্যবহারকারী ধ্রুবক ও অবস্থা চলক আদান-প্রদান

!ELASTIC, TYPE=USER, !HYPERELASTIC, TYPE=USER এবং !USER_MATERIAL—সব পথেই বিশ্লেষণ নিয়ন্ত্রণ ডেটার ডেটা লাইনে লেখা ব্যবহারকারী ধ্রুবকগুলো (সর্বোচ্চ 100টি) অপরিবর্তিতভাবে সাবরুটিনের matl আর্গুমেন্টে পাঠানো হয়। !PLASTIC, YIELD=USER-এর ক্ষেত্রে !ELASTIC-এ নির্দিষ্ট স্থিতিস্থাপক ধ্রুবকের সঙ্গে !PLASTIC-এর ডেটা লাইনে দেওয়া ব্যবহারকারী ধ্রুবকও পাঠানো হয়।

সাধারণ ব্যবহারকারী গঠনমূলক সম্পর্ক এবং !PLASTIC, YIELD=USER-এ অবস্থা চলক fstat দিয়ে আগের ধাপের ইতিহাস তথ্য (প্লাস্টিক স্ট্রেন, ব্যাক পীড়ন, ক্ষতির পরিমাণ ইত্যাদি) ব্যবহারকারী বাস্তবায়নে পাঠিয়ে ধাপ শেষে ফের লিখে রাখা যায়। অবস্থা চলকের সংখ্যা সাধারণ ব্যবহারকারী গঠনমূলক সম্পর্কের ক্ষেত্রে !USER_MATERIAL-এর NSTATUS এবং !PLASTIC, YIELD=USER-এ uElastoPlasticNumStatus-এর ফেরত মান দ্বারা নির্ধারিত হয়।

ব্যবহারকারী-সংজ্ঞায়িত বাহ্যিক লোড

ব্যবহারকারী-সংজ্ঞায়িত বাহ্যিক লোড এমন বাহ্যিক বল ব্যবহারকারী সাবরুটিনে সংজ্ঞায়িত করার পথ, যা অন্তর্নির্মিত কেন্দ্রীভূত লোড, বিতরণকৃত লোড বা বডি ফোর্স দিয়ে প্রকাশ করা যায় না। বিশ্লেষণ নিয়ন্ত্রণ ডেটায় !ULOAD, FILE=<fname> লিখলে FrontISTR নির্দিষ্ট ফাইলের নাম ureadload-এ পাঠায় এবং ব্যবহারকারী বাস্তবায়নে পড়া তথ্য মডিউলের ডেটা হিসেবে সংরক্ষণ করে।

!ULOAD চালুর সঙ্গে নিচের 3টি সাবরুটিন সম্পর্কিত।

  • ureadload: বিশ্লেষণ শুরুতে নিয়ন্ত্রণ ফাইলে নির্দিষ্ট বাহ্যিক ফাইল থেকে ব্যবহারকারী-সংজ্ঞায়িত লোড পড়ে। ব্যবহারকারী বাস্তবায়ন ফাইল খুলে প্রয়োজনীয় ডেটা মডিউলের চলকে সংরক্ষণ করে।
  • uloading: প্রতিটি ধাপে বাহ্যিক লোড ভেক্টর অ্যাসেম্বলির সময় আহ্বান করা হয় এবং সামগ্রিক লোড ভেক্টরে ব্যবহারকারী লোড যোগ করে। বর্তমান ধাপ নম্বর ও লোড সহগ আর্গুমেন্ট হিসেবে দেওয়া হয়।
  • uResidual: প্রতিটি পুনরাবৃত্তিতে অবশিষ্ট ভেক্টর অ্যাসেম্বলির সময় আহ্বান করা হয় এবং সামগ্রিক অবশিষ্ট ভেক্টরে ব্যবহারকারী লোডের অবদান যোগ করে। অরৈখিক পুনরাবৃত্তি ও সাম্য গণনা—দুই ক্ষেত্র থেকেই এটি আহ্বান করা হয়।

ব্যবহারকারী সীমানা শর্তের (নির্ধারিত স্থানচ্যুতি বা সংস্পর্শ শর্তের ব্যবহারকারী সম্প্রসারণ) জন্য কোনো সম্প্রসারণ বিন্দু নেই। বাহ্যিক বল ছাড়া অন্য ব্যবহারকারী সম্প্রসারণ প্রয়োজন হলে সংশ্লিষ্ট অন্তর্নির্মিত কীওয়ার্ড অথবা ব্যবহারকারী গঠনমূলক সম্পর্কের পথ ব্যবহার করুন।

ব্যবহারকারী সাবরুটিন বাস্তবায়নের ধাপ

ব্যবহারকারী সাবরুটিন ব্যবহার করতে FrontISTR সোর্স বিতরণে থাকা টেমপ্লেট ফাইল সম্পাদনা করে FrontISTR মূল প্রোগ্রাম পুনর্নির্মাণ করতে হয়। বিতরণকৃত বাইনারিতে ব্যবহারকারী সাবরুটিন প্রতিস্থাপন করা যায় না; তাই ব্যবহারকারী সম্প্রসারণের জন্য সোর্স থেকে নির্মাণের পরিবেশ প্রস্তুত করতে হবে।

ব্যবহারকারী সাবরুটিনের টেমপ্লেট fistr1/src/lib/user/-এর অধীনে রাখা আছে এবং সম্প্রসারণ বিভাগের ভিত্তিতে সম্পাদনাযোগ্য ফাইল নির্ধারিত (কার্যাবলির সারসংক্ষেপ-এর সারণি দেখুন)। প্রাথমিক অবস্থায় প্রতিটি ফাইলে সাবরুটিনের মূল অংশ ফাঁকা অথবা রৈখিক স্থিতিস্থাপকতার নমুনা বাস্তবায়ন থাকে; ব্যবহারকারী এখানে নিজের গঠনমূলক সম্পর্ক বা লোড সংজ্ঞা যোগ করেন। টেমপ্লেট সম্পাদনার পর স্বাভাবিকভাবে CMake দিয়ে FrontISTR পুনর্নির্মাণ করে পাওয়া fistr1 কার্যকর ফাইল দিয়ে বিশ্লেষণ চালাতে হবে।

সাবরুটিন আর্গুমেন্টের অর্থ, অবস্থা চলক অ্যারের ব্যবহার এবং পুনর্নির্মাণের সতর্কতা ইত্যাদির বিস্তারিত কোডিং গাইডের পৃথক পাতায় আছে।

সংশ্লিষ্ট বিষয়

  • পদার্থ ডেটা — গঠনমূলক সম্পর্কের বিকল্প ও অন্তর্নির্মিত মডেলের তালিকা
  • সীমানা শর্ত ও লোড — অন্তর্নির্মিত সীমানা শর্ত ও লোড
  • ব্যবহারকারী সাবরুটিন (কোডিং গাইড) — সাবরুটিন আর্গুমেন্টের বিবরণ ও বাস্তবায়ন নিয়ম
  • !USER_MATERIAL — সাধারণ ব্যবহারকারী গঠনমূলক সম্পর্কের কীওয়ার্ড বিন্যাস
  • !ELASTICTYPE=USER-সহ রৈখিক স্থিতিস্থাপকতার কীওয়ার্ড
  • !HYPERELASTICTYPE=USER-সহ অতিস্থাপকতার কীওয়ার্ড
  • !PLASTICYIELD=USER-সহ স্থিতিস্থাপক-প্লাস্টিকতার কীওয়ার্ড