بهنامخدا برنامهنويسیبهزبانC/C++ پروژهیدرسمبانی شمارهي1 شبيهسازيديناميکذرات مدرس: دانشپژوه مهندس تنظيمتوسط:مسعودخاري مسالپاييز9911-19 ني مسالپاييز1911-11 ني شمارهي1 ينهاييدرسمبانيبرنامهنويسي-C/C++ پروژه .1مقدمه شبيهسازيديناميکذرات،نوعيشبيهسازيرايانهاياستکهدرآنحرکتتعدادزياديموجوديتکوچک،کهه يشود.ايننهو ماآنهاراذره9ميناميم،برمبناينيرويموجودبينآنهاوبااستفادهازروشهايعدديبررسيم نحوهيحرکتاتمهاومولکولهااشارهکرد.بهعلهت توانبهمطالعهي شبيهسازيکاربردهايزياديداشتهکهمي کاغذامکانپهذيرنيسهت.در حرکتآنهابااستفادهازفرمولهايرياضيبرروي شبيني وجودتعدادبااليذره،پي روهاشاملجاذبهيزمينواصهطکا باشهنداايهن حالتهايسادهتر(زمانيکهيکشيئوجودداشتهباشدوني مسئلهدربررسيحرکتپرتابههاوياکنترلمسيرحرکتموشککاربردداردکهدرحضوراصطکا تنههاروش يباشد. حلآنهااستفادهازروشهايعدديبااستفادهازرايانهم دراينمسئلهذراتميتواننددرفضاحرکتکنندوبايکديگرتعاملداشتهباشند.بهاينصورتکهدراثرنيروي دافعه(ياجاذبهامتقابلبرهمديگراثرگذاشتهومسيرحرکتهمديگرراتغييرميدهند.تعيهينمسهيرحرکهت يشود. ناشيازُبردارهاينيروتوسط«قوانينحرکتينيوتن»انجامم يشويد. حلمعادالتسادهيديفرانسيلآشنام نپروژهيشبيهسازيشمابايکروشعدديبراي درطياي پروژهيدرس .2تعريف صفحهيدوبعديx-yوجوددارند.هريکازاينذراتمطهاب رابطههي فرضکنيدکهمجموعهايازذراتدريک يکنند: زيربههمديگرنيرويدافعهواردم ⃗⃗⃗ (1ا همهيذراتيکساناست.مقدارصورتکسرراثابتوبهصورتفرضيبرابربها مقدار هابراي فاصلهيدوذرهازهماست.راستايايننيرودرامتدادخهطواصهلدوذرهوجههتآنبهه درنظربگيريد .نيز سمتمخالفيکديگراست. شکل1 نذراتدرصفحهيدوبعديبهصورتماتريسي،درnسطروnستوندرکناريکديگرقرارگرفتهاند(شکل2ا. اي ههمهيآنهاصفراسهت.فهرضکنيهدکهه درزمانصفر،مکاناوليهاينذراتثابتومشخصبودهوسرعتاولي ذرهيسطرiوستونjرابا 9 . يدهيمکه نمايشم Particle صفحه1 مسالپاييز1911-11 ني شمارهي1 ينهاييدرسمبانيبرنامهنويسي-C/C++ پروژه شکل2 کذرهيجديدکهآنرابا نشانميدهيم،باسرعتاوليهمشخصبهطهر ايهنمجموعههذراتارسهال حالي يشود. م شکل9 رابطهي(1انيرويدافعهواردميکنند.دراثربراينهد نهمهيذراتقبليبههمديگرمطاب ذرهيجديدوهمچني ايننيروها،هرکدامازذراتطب رابطهي ( 2ا دارايشتابشدهودراثرآنبهحرکتدرميآيند .جرمذراتبودهکهبرايهمههيذراتيکسهاناسهتو مقدارشتاب2ذراتاست. توجهکنيدکهFوaبردارهايدوبعديدرصفحهx-yهستند. 2 acceleration صفحه2 مسالپاييز1911-11 ني شمارهي1 ينهاييدرسمبانيبرنامهنويسي-C/C++ پروژه 9 نذرهيجديدرادرطييکدورهزمانيخها دراينپروژهشمابايدباشبيهسازياينذرات«مسيرحرکت» اي يشود. دربازههايزمانيکوچک انجامم لهيتکرار4 بهدستآوريد.شبيهسازيبهوسي يکنيد.مقهدار همهينيروهابرهرذرهرامطاب رابطهي(1احسابم بهاينصورتکهابتدابرايلحظه،t = 0برايند ازرابطهيزيربهدسهت دوذرهيPو'P مثالفاصلهي ابرابربافاصلهيهندسيدوذرهاست.براي دررابطهي(1 r يآيد: م √ (9ا توجهنماييدکهبايدمقدارهرنيرووبرايندنيروهارابهطريقيبهصورتبُهرداربههدسهتآوريهد.بهرايبهه هردوذرهيPو'Pاستفادهکنيد. دستآوردناينبرداربايدازمکانهندسي يآيد: اشتابهرذرهدرلحظهيصفر( ابهدستم سپسطب رابطهي(2 بعدباتقريبزدنمعادلهديفرانسيلسرعت5برحسبشتاب( ⃗⃗⃗⃗ ا،تغييهرسهرعتتقريبهيههرذرهرا يکنيد: محاسبهم ⃗⃗⃗⃗⃗ (4ا ⃗⃗⃗⃗⃗ ⃗⃗⃗ ⃗⃗⃗⃗⃗ ⃗⃗⃗ کهدرنتيجهسرعتجديدبهدستميآيد،وبااسهتفادهازمعادلههيديفرانسهيلمکهان6بهرحسهبسهرعت يآيد: ا،تغييرمکانودرنتيجهمکانتقريبيجديدذرهبهدستم ( ⃗⃗⃗ ( 5ا ⃗⃗⃗⃗ ⃗⃗⃗⃗ ⃗⃗⃗⃗ ⃗⃗⃗⃗ لحظهيجديد بهاينترتيبسرعتومکانجديدهرذره( و ابراي بهدسهتمهيآيهد. هاوسرعتهايجديد،بهه باتکرارمراحلفوقوبااستفادهازمکان رابهاندازهي افزايشدادهو سپسمقدار ترتيبنيرو،شتاب،سرعتومکانهرذرهمجدداًبرايزمانبعهدي همينطوراليآخر. 9 4 iteration 5 6 Trajectory Velocity Location صفحه9 محاسهبهمهيشهود.و مسالپاييز1911-11 ني شمارهي1 ينهاييدرسمبانيبرنامهنويسي-C/C++ پروژه .9مراحلپروژه پروژهيشبيهسازيراپيادهکنيد.المانهايموردنظربرنامهدربرنامهمهدلسهازيشهدهوپارامترهها .1درابتدا يشوند. يشود.ومقاديرموردنظرپروژهدرحيناجرايبرنامهچاپم يشوند.شبيهسازياجرام تعريفم رهيخروجيهايموردنظردريکفايلمتنيوبافرمتمشخصرابهه .2خروجيبهفايل:سپسبايدقابليتذخي برنامهاضافهکنيد. .4تعريفپارامترهايمسئله مکانذرهي فرضکنيد ،سهرعتآنرابها درلحظهيtرابا ،وشهتابآنرابهانشهان درصفحهيدوبعديهستند. يدهيم،کههمگيبردارهايي م يشود. ازرابطهيزيرتعيينم درحالتاوليه،مکاناوليهيذراتموجوددرصفحه (6ا ] [ [ ] ههمهيذراتموجودصفراست. يشودکهسرعتاولي همچنينيادآوريم (7ا ] [ [ ] يشودکهمکانوسرعتاوليهياينذرهمطاب زيراست: سپسذرهيجديد بهسمتمجموعهپرتابم ( 8ا شبيهسازيدربازههايزماني ] [ [ ] ،حرکتذراتراشهبيهسهازي انجامميشودوبايدتازمان کنيد. مقدارجرمرابرابربا1.0 درنظربگيريد.همچنين و . ادهسازي .5مراحلپي برايانجاماينپروژهپيشنهادميشودازيکstructياclassبرايتعريهفبردارههايشهتاب،سهرعت،ومکهان يتواندبهصورتدلخواهزيرباشد: استفادهکنيد.يکstructنوعيم struct Vector { ;double x ;double y } صفحه4 شمارهي1 ينهاييدرسمبانيبرنامهنويسي-C/C++ پروژه مسالپاييز1911-11 ني ذراتموجودوذرهيجديدرا(باروشدلخواهخوداتعريفکنيد.هرذرهدارايسهمقدارمکان، سپسمجموعهي سرعت،وشتاباستکههمگيازنو Vectorهستند. همهذراترامطاب روابط(6االي(8امشخصکنيد. درابتدابايدمقاديراوليهي رابطهي(1انيرويبينآنهارا بادرنظرگرفتنفاصلهيذراتديگرنسبتبهآنبااستفادهاز سپسبهازايهرذره، ذرهيمشخص،برايندنيروهابرآنذرهرادرزمهانt = 0 همهينيروهايواردبرآن حسابکنيدوباجمعُبرداري محاسبهکنيد. شکل4 يآيد: سپسبااستفادهازرابطهي(2اشتابجديدهرذرهبهدستم وپسازآنسرعتومکانجديدذره. يشود. اينکاربرايهريکازذراتتکرارم ددرلحظهي،tمقاديرجديد(شتاب،سرعت،ومکانامربوطبهمهثًًذرهيPبههدسهتآمهدو نکته:فرضکني رمربوطبهذرهي'Pرامحاسبهکنيد.حالچنانچهاينمقاديرمربوطبهPراهمانلحظههدر آمادههستيدتامقادي ادامهيمحاسهبات(مهثًًبههدسهتآوردنپارامترههاي'Pامقهادير برنامهتغييردهيدوبهروزرسانيکنيد،براي يشود.چراکهمقدارمکانPتغييرکردهاست. يباشدوبرنامهدچاراشتباهم معتبريموجودنم برايرفعاينمسئلهبايدابتدامقاديرمکانهايجديدتمامذراتمحاسبهشوند،سهپسدرپايهان،iterationآن مقاديربهروزرسانيشوند.يکراهبرايانجاماينکاراينستکهدوکپيازپارامترههايمکهانتمهامذراتداشهته نمحاسبهيمکانهايجديد،مقاديررادرکپيدومذخيرهکنيدودرپايانهرتکرارشبيهسازيدر باشيد.درحي زمانخا ،tمقاديررابهکپياولمنتقلکنيد. صفحه5 مسالپاييز1911-11 ني شمارهي1 ينهاييدرسمبانيبرنامهنويسي-C/C++ پروژه ييابدوعملياتفوقتکرارميشود،تازمهانيکههمکهانذرهي در بهاندازهي افزايشم پسازآنمقدارt زمان10.0بهدستآيد(.طبيعتاًمکانذراتدرزمان10.0موقعيبهدستميآيدکهمقدارtبرابربا شدهباشد.ا .6خروجيبرنامه ا،مقاديرزيررابادقت5رقماعشار(مميزثابتاوبايکفاصله برنامهبايدبهازايزمانهايصحيح( بينآنهادرخروجيچاپکند. مقاديرخروجي: ] [ ] [ ] [ ] [ ] [ ] [ که دقتنماييدکهمنظوراز] [ ذرهي مقداربُعد ازبُردارمکان ستون8ا،درزمان استومنظوراز] [ ذرهيواقعدرمختصاتسطر6و (يعني ذرهي است. ،همانمقداربراي بهعنوانمثالاولينسطرخروجيبرنامهبهصورتزيراست: 0.00000 15.00000 3.36660 8.00000 6.00000 7.00000 6.00000 ودومينخروجيبهصورتزير: 1.00000 6.44218 5.74259 9.14483 7.37202 7.38368 7.00595 پسازپيادهسازيمواردفوق،قابليتنوشتنخروجيدرفايلرابهبرنامهاضافهنماييد.برنامهبايهدهمزمهانکهه ينمايد،آنهارادرفايليمتنيبانامoutput.txtهرکدامرادريکسطربنويسد. يهايفوقراچاپم خروج يکخروجينمونهازشرو اجرايبرنامهبهصورتزيراست: 6.00000 7.00000 6.00000 7.37202 7.38368 7.00595 8.85286 7.48553 11.40256 10.01744 8.30381 15.54128 11.29076 9.45098 19.28413 8.00000 9.14483 11.88086 15.23368 18.85997 15.00000 3.36660 6.44218 5.74259 4.44543 2.45123 3.61449 -0.69237 3.44548 -3.88554 0.00000 1.00000 2.00000 3.00000 4.00000 … تذکرمهم:تماماعدادخروجيرابادقت5رقماعشارمميزثابتچاپنماييد(چههدرصهفحهي نمايشوچهدرفايلاوبيناعداديکفاصله(Spaceاقراردهيد. قسمتهايبرنامهبرايمتغيرهايحقيقي،ازنو doubleاستفادهکنيد. توجه:درتمام صفحه6 مسالپاييز1911-11 ني شمارهي1 ينهاييدرسمبانيبرنامهنويسي-C/C++ پروژه .7تستپروژهتوسطخودتان شدهيزير،مقاديرمتناظرزيهررا مشخص ددرزمانهاي ادهسازيکردهباشيد،باي درصورتيکهپروژهرادرستپي دريافتکنيد:7 ] [ ] [ ] [ ] [ ] [ ] [ 6.18834 7.35265 6.17785 8.56929 6.08316 8.66387 0.68000 16.55993 8.59694 10.35019 16.19300 -1.54594 3.54779 3.27000 22.23772 10.43484 12.37016 21.83344 -6.39949 3.38177 4.79000 27.78800 12.35248 14.51730 27.51889 -10.96488 3.33659 6.26000 34.81958 14.83645 17.39093 34.80250 -16.54587 3.35933 8.10000 41.80038 17.32799 20.35405 42.07380 -21.97189 3.41334 9.91000 نمرهدهي .8سياست برنامهيشمابايدقابلcompileواجراباشد.کامپايلرمورداستنادDev-C++خواهدبود.رعايتفرمهتخروجهي درپروژهيشماپيادهسازيشدهباشهدکهه برنامهالزامياست.هريکازبخشهايذکرشدهاجبارياستوبايد يدهد. نمرهيخامشماراتشکيلم دربرنامهيخودتاحدامکانرعايتکنيد.برنامههرابههتهابعههايکهوچکتر ساختيافتهرا اصولبرنامهنويسي بشکنيد.ازنوشتنکلبرنامهدرتابعmainيادريکتابعخا خودداريکنيدتامتحملکسرنمرهنشويد.بهراي توابعمهمبرنامهکامنتهايمختصرومفيدبنويسيد. همهي يشدهرادرآنمستندسازي8 ادهساز کازقسمتهايپي يکفايلMS WordياPDFجداگانهدرنظربگيريدوهري مصفحهيايکپاراگرا ا. کنيد(هرکدامحداقلدرحدني نمرهياضافه رنمرهياضافيبههمراهخواهندداشت: قسمتهايزي ادهسازيهريکاز پي انتقالخروجيبرنامهازفايلمتنيبهمحيط(MS Excelبهصورتدستياورسمنمهودارحرکهتذرات براساسدادههايمنتقلشده اشارهشده نحوهيحرکتذراتموردنظر.براياينکهارمهيتوانيهدازکامپهايلر برنامهنويسيبراينمايشگرافيکي دلخواهخوداستفادهکنيد. 7 توانيدبرنامهيموجوددرلينکزيررادانلودواجهراکنيهد. يتعاملذراتموردنظرمي برايبهدستآوردندر شهوديبهترازنحوه اينبرنامهبراياجرابه.NET.Framework 2ياباالترنيازدارد http://www.mediafire.com/?dnqnzmoycdusror: 8 Document صفحه7 مسالپاييز1911-11 ني شمارهي1 ينهاييدرسمبانيبرنامهنويسي-C/C++ پروژه مشمولنمرهياضافيخواهندشدکهخروجيرادرستنمايشدهند. مواردباالبهشرطي نمرهيمنفي! ازکپيبرداريازديگرانخوددارينماييدومخصوصاًازمحولنمودنپيادهسازيپروژهبهکسيغيرازخوداکيهداً پرهيزکنيد.تشخيصاينکهبرنامهتوسطخوددانشجونوشتهشدهاستياخيربسيارسادهاست.درصورتيکهه برنامهراخودتاننوشتهباشيد،ممتحنينحداکثرتخفيفرادرهنگامبررسيمهدنظرقهرارخواهنهدداد.امهادر تخلفعذروبهانهايپذيرفتنينيست. صورتمشاهدهي حلتمريندرسراهنماييبخواهيهد،امهااز چنانچههنوزدربرنامهنويسيمشکلداريد،ازکسانيکهميشناسيدوازافراد يبرداريناآگاهانهجداًخودداريکنيد. کپ نحوهيتحويلپروژه .1 پروژهيبههمراهمستنداتحداکثرتا48ساعتقبلازتحويلحضوريبايدبهآدرسايميهلتمرينهات فايلهاي يشوند. ارسالشوند.برنامههاييکهدرروزتحويلآوردهشوندپذيرفتهنم ([email protected]ا فرمتارسال فايلهايپروژهراپسازzipکردن،بههصهورتproject1_STDID.zipنهامگهذاريکنيهدکههSTDIDشهمارهي دانشجوييشمااست.بهعنوانمثال: project1_86202228.zip توجه:ازقراردادنفايل.exeدرفايلپروژهجداًپرهيزکنيد. تحويلحضوري درزمانتحويلبايدبررويقسمتهايمختلفپروژهتسلطکاملداشتهباشيد.ازبخشههايمختلهفبرنامههاز شماسؤالخواهدشد. .11مراجع [1] http://en.wikipedia.org/wiki/Molecular_dynamics [2] http://en.wikipedia.org/wiki/Newton's_laws_of_motion [3] http://www.ph.biu.ac.il/~rapaport/visint/04_examp_moldyn.html «موف باشيد» صفحه8
© Copyright 2025 Paperzz