OpenModelica/C2/Control-flow-and-Event-handling/Bengali

From Script | Spoken-Tutorial
Revision as of 11:01, 3 January 2018 by Satarupadutta (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Time Narration
00:01 Control flow and Event handling এর টিউটোরিয়ালে আপনাদের স্বাগত।
00:07 এখানে আমরা শিখব: if-else স্টেটমেন্টের ব্যবহার, time এবং state ইভেন্ট পরিচালনা করা, when স্টেটমেন্টের ব্যবহার।
00:19 টিউটোরিয়ালটি রেকর্ড করতে ব্যবহার করছি: OpenModelica 1.9.2 এবং উবুন্টু অপারেটিং সিস্টেম সংস্করণ 14.04.
00:30 কিন্তু এই প্রক্রিয়াটি Windows, Mac OS X বা ARM এ FOSSEE OS এ অনুরূপ।
00:38 টিউটোরিয়ালটি বুঝতে এবং অনুশীলন করতে নিম্ন জানতে হবে: physical সিস্টেমের সমীকরণ ভিত্তিক মডেলিং।
00:47 যে কোনো প্রোগ্রামিং ল্যাংগুয়েজে ব্রানচিং, Modelica তে সংজ্ঞায়িত করা।
00:53 পূর্বাবশ্যক টিউটোরিয়াল স্পোকেন টিউটোরিয়াল ওয়েবসাইটে রয়েছে, তা দেখুন।
01:00 freeFall ক্লাস আগেই আগের টিউটোরিয়ালে আলোচনা করা হয়েছিল।
01:05 এখন এত constraint যোগ করুন।
01:08 বল t = 0.5 সেকেন্ড পর্যন্ত থেমে থাকে। gravity তে Free fall t = 0.5 সেকেন্ডে শুরু হয়।
01:19 আমি timeEventExample নামে একটি মডেল বানিয়েছি যা এই কন্ডিশন সিমুলেট করে।
01:25 timeEventExample ফাইল স্পোকেন টিউটোরিয়ালে Code Files লিঙ্কে উপলব্ধ।
01:32 ডাউনলোড করুন এবং সকল ফাইল Code Files লিঙ্কে সংরক্ষণ করুন।
01:38 আপনার সুবিধার জন্য freeFall ক্লাসও উপলন্ধ।
01:43 এখন OMEdit এ যাই।
01:45 আমি এটি ইতিমধ্যেই আমার সিস্টেমে রেখেছি।
01:49 উবুন্টু অপারেটিং সিস্টেমে OMEdit খুলতে উপরে বামদিকে Dash Home আইকনে ক্লিক করুন।
01:58 সার্চ বারে OMEdit লিখুন এবং OMEdit আইকনে ক্লিক করুন। ফিরে যান।
02:06 দ্রষ্টব্য: উইন্ডোজ ইউসার একইভাবে Start মেনুতে OMEdit সনাক্ত করুন এবং এটি খুলুন।
02:13 timeEventExample ফাইল খুলতে Open Model/Library File নামে টুলে ক্লিক করুন।
02:21 আপনার timeEventExample ফাইল সনাক্ত করুন এবং Open এ ক্লিক করুন।
02:28 আপনি এই ফাইলটি খুলতে বিকল্পরূপে File মেনুও ব্যবহার করতে পারেন।
02:34 লক্ষ্য করুন timeEventExample, Libraries browser এ দেখায়।
02:39 এই আইকনে ডান ক্লিক করুন এবং View class চয়ন করুন।
02:44 মডেল এখন Diagram view তে খোলে।
02:47 তৃতীয় বোতামে Text View তে ক্লিক করুন।
02:51 আমরা ইতিমধ্যে আলোচনা করেছি Modelica তে model এবং class সমঞ্জসে ব্যবহৃত হয়।
02:58 এই মডেলের নাম হল timeEventExample.
03:02 এই ধরনের Comments, model বা class এর প্রথম লাইনে লেখা হতে পারে।
03:08 h, v এবং g freeFall ক্লাসে একই মান পরিমান বোঝায়।
03:16 initial equation সেকশনে ইনিশিয়াল কন্ডিশন রয়েছে।
03:21 h এর ভ্যালু t = 0 সময়ে 30m.
03:26 v এর ভ্যালু t = 0 সময়ে 0.
03:31 Equation এই মডেলের সমীকরণ সেকশনের সূচনা নির্দেশ করে।
03:36 এখন দেখি যে স্লাইডে বর্ণিত constraint কিভাবে প্রবিষ্ট করে।
03:43 লক্ষ্য করুন এখানে equation সেকশনে if-else block রয়েছে।
03:48 এই if-else block এর প্রতিটি স্টেটমেন্ট বোঝার চেষ্টা করি।
03:53 if statement time ভ্যারিয়েবলে constraint রাখে।
03:58 time Modelica তে বিল্ট-ইন ভ্যারিয়েবল।
04:01 এটি class বা model এ স্পষ্টভাবে ঘোষণা করা প্রয়োজন নেই।
04:06 ball এর 0.5 সেকেন্ডের পরে free fall অভিজ্ঞতা হয়।
04:12 তাই এই দুটি equation, freeFall ক্লাসের অনুরূপ equation প্রদর্শন করে।
04:19 else branch এ equations রয়েছে যা 0.5 সেকেন্ডের কম সময়ে নিষ্পাদিত হয়।
04:27 বল থেমে যায় যখন সময় 0.5 সেকেন্ডের কম হয়।
04:32 এই ক্ষেত্রে এই দুটি equations সঠিক।
04:36 end if, if-else block এর শেষ দেখায়।
04:41 model এখন সম্পূর্ণ।
04:44 Simulate বোতামে ক্লিক করে এটি সিমুলেট করি।
04:48 Plotting perspective খোলে।
04:51 Variables browser এ h চয়ন করুন।
04:55 এটি h versus time প্লট বানায়।
04:58 যেহেতু সময় t=0.5 সেকেন্ডে বল থেমে যায়, উচ্চতা একই থাকবে।
05:06 ফলাফল মুছে ফেলতে, Variables browser এ timeEventExample এ ডান ক্লিক করুন এবং Delete Result চয়ন করুন।
05:15 Modeling perspective এ ফিরে যেতে, নীচে ডানদিকে Modeling বোতামে ক্লিক করুন।
05:21 এখন else branch এ দ্বিতীয় equation মুছে ফেলি।
05:26 মডেলটি সংরক্ষণ করতে টুলবারে Save বোতামে ক্লিক করুন।
05:31 Simulate এ ক্লিক করুন।
05:34 সিমুলেশন ব্যর্থ হয়েছে।
05:37 Messages browser এ যান এবং এরর ম্যাসেজ দেখতে উপরে স্ক্রোল করুন।
05:42 এরর ম্যাসেজ বলে যে প্রতিটি branch এ equations এর সংখ্যা একই হওয়া উচিত।
05:49 তাই if এবং else branches এ equations এর সংখ্যা ভ্যারিয়েবলের সংখ্যার সমান হওয়া উচিত।
05:58 আবার equation তার জায়গায় সন্নিবেশ করি এবং Save বোতামে ক্লিক করুন।
06:05 উল্লেখ্য, der(h) = v একটি equation যা if এবং else branches উভয়ের জন্য অনুরূপ।
06:14 তাই if-else block দুটি স্টেটমেন্ট দ্বারা বদলানো যেতে পারে।
06:20 আমি আপনাকে দেখাই যে এটি কিভাবে হয়।
06:23 প্রথমে if-else block মুছুন।
06:26 এখানে লেখা equation, if else-statement.txt নামক ফাইলে উপলব্ধ।
06:34 এই ফাইল Code Files লিঙ্কেও উপলব্ধ।
06:39 যেহেতু এটি একটি টেক্সট ফাইল, আমি এটি খুলতে gedit ব্যবহার করেছি।
06:45 gedit এ যান।
06:47 উইন্ডোজ ইউসার Notepad বা অন্য কোনো টেক্সট এডিটর দ্বারা এই ফাইলটি খুলতে পারে।
06:54 দুটি equation কপি করুন।
06:57 OMEdit এ ফিরে যান।
07:00 ডান ক্লিক করুন এবং Paste চয়ন করুন।
07:04 আবার টুলবারে Save বোতামে ক্লিক করুন।
07:08 Simulate এ ক্লিক করুন।
07:11 pop up উইন্ডো বন্ধ করুন।
07:14 আবার Variables browser এ h চয়ন করুন।
07:18 মনে রাখবেন h versus time প্লট পূর্ববর্তী ক্ষেত্রে একই যা দেখায় যে উভয় মডেল একই।
07:27 ফলাফল মুছে ফেলতে, timeEventExample এ ডান ক্লিক করুন এবং Delete Result চয়ন করুন।
07:34 নীচে ডানদিকে Modeling বোতামে ক্লিক করুন।
07:38 এটি একটি if-else statement স্টেটমেন্ট যা দেখায় যে time >= 0.5 হলে dv/dt = g অন্যথায় dv/dt = 0.
07:52 এখন স্লাইডে ফিরে আসি।
07:55 লক্ষ্য করুন if branch এ equation এর সংখ্যা else branch এ equation সংখ্যার সমান হওয়া উচিত।
08:03 উভয় class বা model এ ভ্যারিয়েবলের সংখ্যা সমান হওয়া উচিত।
08:10 Event সিস্টেমের আচরণে আকস্মিক পরিবর্তন।
08:15 Events কে time events এবং state events এ শ্রেণীভুক্ত করা যেতে পারে।
08:20 time event এ, ইভেন্ট ঘটার সময় যথাযথভাবে জানা যায়।
08:25 timeEventExample, t = 0.5 সেকেন্ডে টাইম ইভেন্ট পরিচালনা করে।
08:32 state event তখন হয় যখন সিস্টেম ভ্যারিয়েবল একটি নির্দিষ্ট ভ্যালু ক্রস করে।
08:38 একটি উদাহরণ দ্বারা স্টেট ইভেন্ট বোঝার চেষ্টা করুন।
08:43 free fall এ বল, মাটি স্পর্শ করলে state event এর মুখোমুখি হয়।
08:48 এটি মাটি স্পর্শ করলে নিম্ন আচরণ দেখা যায়।
08:52 বলের গতি দিকে বদলায়।
08:55 বেগের ম্যাগনিটিউড বদলায় যদি সংঘর্ষ স্থির হয়।
09:00 আমি এই আচরণ সিমুলেট করে bouncingBall নামে মডেল বানিয়েছি।
09:06 এই ফাইলটি স্পোকেন টিউটোরিয়াল ওয়েবসাইটে উপলব্ধ।
09:10 এই মডেলটি দেখতে এবং এটি সিমুলেট করতে OMEdit এ ফিরে যান।
09:15 OpenModel/LIbrary File টুলে ক্লিক করুন।
09:19 সিস্টেমে bouncingBall ফাইল খুঁজুন এবং Open এ ক্লিক করুন।
09:25 Libraries browser এ bouncingBall আইকনে ডান ক্লিক করুন এবং bouncingBall চয়ন করুন।
09:33 মডেল Text View এ না খুললে modeling area এর উপরে যান এবং Text View বোতামে ক্লিক করুন।
09:41 e হল পৃথিবীর সাথে বলের অস্তরক সংঘর্ষের জন্য ক্ষতিপূরণের সহগ।
09:48 এটি একটি প্যারামিটার এবং সম্পূর্ণ সিমুলেশনের দরুন এর ভ্যালু 0.8 এ স্থির থাকে।
09:56 radius, m এ বলের ব্যাসার্ধ বোঝায়।
10:00 h, v এবং g, timeEventExample এর মত একই পরিমান প্রদর্শন করে।
10:07 গতির এই দুটি equation এর আলোচনা ইতিমধ্যে freeFall ক্লাসে করেছি।
10:13 when statement ইভেন্টের সিগন্যালের জন্য ব্যবহৃত হয়।
10:17 এর ব্যবহার ইভেন্ট ঘটার সময় নেওয়া অ্যাকশন নির্ধারণ করতে করা হয়।
10:22 h <= radius true রাখে যখন বলের যোগাযোগ মাটির সাথে হয়।
10:29 এই statement নিষ্পাদিত হয় যখনই ইভেন্ট কার্যকর হয়।
10:34 reinit() ফাংশনের ব্যবহার ভ্যারিয়েবল ইনিসিয়েলাইজ করতে করা হয়।
10:39 এখানে এটি e এর নেগেটিভ প্রোডাক্টের সাথে বলের বেগ এবং মাটি ছোঁয়ার আগে বলের বেগ ইনিসিয়েলাইজ করে।
10:49 মডেলটি সিমুলেট করতে টুলবারে Simulation Setup বোতামে ক্লিক করুন।
10:55 General ট্যাবে, Stop Time ফীল্ড 30 units এ বদলান এবং Simulate এ ক্লিক করুন।
11:04 pop-up উইন্ডো বন্ধ করুন।
11:06 Variables browser এ h চয়ন করুন।
11:10 লক্ষ্য করুন h শূন্যের নীচের রয়েছে যা অগ্রহণযোগ্য।
11:16 freeFall ক্লাস সিমুলেট করার সময় আমরা অনুরূপ আচরণ দেখেছি।
11:21 এটি ভুল আচরণ সংখ্যাসূচক এররের কারণে হয়।
11:25 সংখ্যাসূচক এররের আলোচনা এই টিউটোরিয়ালের সুযোগের বাইরে।
11:30 ভালোমত বুঝতে বাউনসিং বলের Zeno আচরণ দেখুন।
11:36 h অচয়নিত করুন।
11:39 স্লাইডে ফিরে যান।
11:42 when statement এর ব্যবহার ইভেন্টের সিগন্যালের জন্য করা হয়।
11:45 reinit(a,b) b এর ভ্যালু ভ্যারিয়েবল a কে নির্দিষ্ট করে এবং সিমুলেশন পুনরায় চালু করে।
11:54 pre(a) ইভেন্টের আগে ভ্যারিয়েবল a এর ভ্যালু ফেরৎ দেয়।
11:59 উদাহরণস্বরূপ, reinit(a, 10), ইভেন্ট ঘটার সময় a কে 10 নির্ধারণ করে।
12:08 bouncingBall মডেলের ত্রুটিপূর্ণ আচরণ bouncingBallWithHysteresis এ সঠিক হয়।
12:15 bouncingBallWithHysteresis মডেল স্পোকেন টিউটোরিয়াল ওয়েবসাইটে উপলব্ধ।
12:21 bouncingBallWithHysteresis সিমুলেট করুন এবং h versus time প্লট বানান।
12:27 bouncingBall এবং bouncingBallWithHysteresis এর মাঝে পার্থক্য লক্ষ্য করুন।
12:33 এর সাথেই আমরা টিউটোরিয়ালের শেষে এসেছি।
12:36 নিম্ন লিঙ্কে উপলব্ধ ভিডিওটি দেখুন: http://spoken-tutorial.org/ http://spoken-tutorial.org] /What\_is\_a\_Spoken\_Tutorial
12:40 এটি প্রকল্পকে সারসংক্ষেপে দেখায়।
12:42 স্পোকেন টিউটোরিয়াল প্রকল্প দল কর্মশালার আয়োজন করে এবং প্রশংসাপত্র দেয়। আরো জানতে আমাদের লিখুন।
12:48 আপনার এই স্পোকেন টিউটোরিয়ালে কোন প্রশ্ন থাকলে নিম্ন সাইটে যান।
12:55 Textbook Companion Project এ আমরা জনপ্রিয় বইগুলির সমাধানকৃত উদাহরণের কোডিং নির্দেশ করি।
13:03 যারা এটি করে আমরা তাদের মানদণ্ড এবং সার্টিফিকেট দেই। আরো জানতে এই সাইটে যান।
13:10 Lab Migration Project এ আমরা কমার্শিয়াল সিমুলেটর ল্যাবগুলি OpenModelica তে মাইগ্রেট করতে সহায়তা করি।
13:17 আরো জানতে এই সাইটে যান।
13:21 Spoken Tutorial প্রকল্প ভারত সরকারের NMEICT, MHRD দ্বারা সমর্থিত।
13:28 আমরা OpenModelica উন্নয়ন দলকে তাদের সমর্থনের জন্য ধন্যবাদ জানাই।
13:33 আই আই টী বোম্বে থেকে আমি বিদায় নিচ্ছি। অংশগ্রহনের জন্যে ধন্যবাদ।

Contributors and Content Editors

Kaushik Datta, Satarupadutta