تولید هندسه الکترود ناهمگن

View Categories

تولید هندسه الکترود ناهمگن

18 min read

PDF

تولید هندسه الکترود ناهمگن
معرفی
این مثال نشان می‌دهد که چگونه می‌توان هندسه سه بعدی یک الکترود نیکل-منگنز-کبالت (NMC) را بر اساس داده‌های توموگرافی اشعه ایکس ایجاد کرد. هندسه تولید شده ممکن است برای مدل سازی الکترود ناهمگن بعدی استفاده شود.
داده‌های اشعه ایکس بین ذرات NMC فعال و ترکیبی از افزودنی‌های کربن رسانای الکترون، بایندر و الکترولیت یون رسان تمایز قائل می‌شوند.
یک روش مدل برای حلقه کردن داده های جدول بندی شده در حجم ذرات و مختصات مرکز استفاده می شود.
هندسه تولید شده در آموزش های Electrode Heterogeneous NMC و Homogenizing a Heterogeneous Electrode Electrode در کتابخانه کاربردی ماژول طراحی باتری استفاده می شود.
تعریف مدل
شکل 1: تنظیم درخت مدل. تمام گره های درگیر در تولید هندسه با رنگ آبی مشخص شده اند.
شکل 1 گره های درخت مدل مورد استفاده برای ایجاد هندسه را نشان می دهد.
تعاریف جهانی -> پارامترهای هندسه
این گره شامل پارامترهای مربوط به تولید هندسه، مانند فاکتورهای تحمل و جعبه مرزی است.
نتایج>جدول>جدول داده های ذرات
این جدول شامل مختصات مرکز ذرات و حجم ذرات است.
داده‌ها که به‌عنوان منبع باز موجود است، از http://dx.doi.org/10.5905/ethz-iis-1 دانلود شده‌اند . رجوع کنید به رفر. 1 برای اطلاعات بیشتر در مورد داده ها.
تعاریف جهانی> قطعات هندسه> ذرات
این بخش هندسی شامل تک تک اجسام هندسی ذرات (کره ها و استوانه ها) تولید شده از جدول داده های ذرات است.
تعاریف جهانی> ایجاد هندسه از جدول داده های ذرات
این گره روش مدل مربوطه را برای تولید اشیاء هندسی Geometry Parts>Particles بر اساس جدول داده های ذرات فراخوانی می کند .
هر ورودی در جدول داده های ذرات ، یک شی کره ای در ذرات ایجاد می کند، با توجه به اینکه ذره در کادر محدود تعریف شده در پارامترهای هندسه قرار دارد .
اجسام استوانه‌ای نیز در هندسه Parts>Particles اضافه می‌شوند تا از زوایای تیز بین کره‌های همپوشانی جلوگیری شود، یا زمانی که فاصله متقابل کمتر از ضریب تحمل باشد، کره‌ها را به یکدیگر متصل کنند.
روش مدل همچنین پارامتر ضخامت الکترود را در پارامترهای هندسه محاسبه و به روز می کند .
متد مدل به زبان جاوا نوشته شده است و ممکن است با جابجایی به دسکتاپ Application Builder ویرایش شود . البته توجه داشته باشید که ویرایشگر روش مدل فقط در دسکتاپ COMSOL هنگام استفاده از ویندوز موجود است. گره روش مدل ایجاد شده در مدل با این حال موجود است و ممکن است در همه سیستم عامل ها اجرا شود.
جزء 1> هندسه
دنباله هندسه نهایی، هندسه قطعات>ذرات را وارد می کند ، و همچنین شامل اشیاء هندسه بلوکی برای تعریف حوزه های جداکننده و رسانای متخلخل، بر اساس تنظیمات در پارامترهای هندسه است . انتخاب هندسه نیز به منظور تنظیم فیزیک تسهیلات گنجانده شده است.
نتایج و بحث
شکل 2 هندسه مدل تولید شده را نشان می دهد.
شکل 2: هندسه مدل تولید شده.
ارجاع
1. M. Ebner، F. Geldmacher، F. Marone، M. Stampanoni، و V. Wood، “توموگرافی اشعه ایکس الکترودهای باتری لیتیوم یونی بر پایه اکسید فلزی متخلخل،” Adv . ماده انرژی. ، جلد 3، صفحات 845–850، 2013. همچنین به اطلاعات پشتیبانی در https://onlinelibrary.wiley.com/doi/abs/10.1002/aenm.201200932 مراجعه کنید.
مسیر کتابخانه برنامه: Battery_Design_Module/Batteries,_Heterogeneous/nmc_electrode_geometry
دستورالعمل های مدل سازی
از منوی File ، New را انتخاب کنید .
جدید
در پنجره جدید ، روی  Blank  Model کلیک کنید .
تعاریف جهانی
پارامترهای هندسه
برخی از پارامترهای هندسی را از یک فایل متنی بارگیری کنید.
1
در پنجره Model  Builder ، در قسمت Global  Definitions روی Parameters  1 کلیک کنید .
2
در پنجره تنظیمات پارامترها ، هندسه پارامترها را در قسمت متن برچسب تایپ کنید .
3
قسمت Parameters را پیدا کنید .  روی Load  from  File کلیک کنید .
4
به پوشه Application Libraries مدل بروید و روی فایل nmc_electrode_geometry_parameters.txt دوبار کلیک کنید .
ذرات
داده های ذرات در هندسه قطعات قرار می گیرند ، که سپس به هندسه مدل وارد می شوند.
1
در پنجره Model  Builder ، روی Global  Definitions کلیک راست کرده و Geometry  Parts>3D  Part را انتخاب کنید .
2
در پنجره تنظیمات قسمت ، Particles را در قسمت متن برچسب تایپ کنید .
یک کره ساختگی در قسمت ایجاد کنید. این بعداً با مجموعه ای از اشیاء که از یک روش مدل تولید شده اند جایگزین می شود.
کره 1 (sph1)
1
در نوار ابزار Geometry ، روی  Sphere کلیک کنید .
2
در پنجره Model  Builder ، گره Particles را گسترش دهید ، سپس روی Sphere   (sph1) کلیک کنید .
3
در پنجره تنظیمات برای Sphere ، بخش Size را پیدا کنید .
4
در قسمت متن Radius ، 2e-6 را تایپ کنید .
5
قسمت Position را پیدا کنید . در قسمت متن x ، 11e-5 را تایپ کنید .
6
در قسمت متن y ، 7e-5 را تایپ کنید .
7
در قسمت متن z ، 4e-6 را تایپ کنید .
8
 روی Build  Selected کلیک کنید .
افزودن کامپوننت
در نوار ابزار Home ، روی  Add  Component کلیک کنید و 3D را انتخاب کنید .
هندسه 1
اکنون با استفاده از قسمت هندسه ذرات ، دنباله هندسه مدل را تنظیم کنید .
بخش ذرات
1
در نوار ابزار هندسه ، روی  قطعات کلیک کنید و ذرات را انتخاب کنید .
2
در پنجره تنظیمات برای نمونه قسمت  ، Particles Part را در قسمت متن برچسب تایپ کنید .
3
 روی Build  Selected کلیک کنید .
ذرات
1
در نوار ابزار Geometry ، روی  Booleans  and  Partitions کلیک کنید و Union را انتخاب کنید .
2
در پنجره تنظیمات برای Union ، Particles را در قسمت متن برچسب تایپ کنید .
3
فقط شی pi1 را انتخاب کنید.
4
بخش Union را پیدا کنید . کادر تیک Keep  interior  borders را پاک کنید .
5
قسمت Selections  of  Resulting  Entities را پیدا کنید . تیک گزینه Resulting  objects  selection را انتخاب کنید .
بلوک 1 (blk1)
1
در نوار ابزار Geometry ، روی  Block کلیک کنید .
2
در پنجره تنظیمات برای Block ، قسمت Size  and  Shape را پیدا کنید .
3
در قسمت متن Width ، xmax-xmin را تایپ کنید .
4
در قسمت Depth text ymax-ymin را تایپ کنید .
5
در قسمت متن ارتفاع ، L_elec+L_sep را تایپ کنید .
6
قسمت Position را پیدا کنید . در قسمت متن x ، xmin را تایپ کنید .
7
در قسمت متن y ، ymin را تایپ کنید .
8
 روی Build  Selected کلیک کنید .
اشیاء پارتیشن 1 (par1)
1
در نوار ابزار Geometry ، روی  Booleans  and  Partitions کلیک کنید و Partition  Objects را انتخاب کنید .
2
فقط شی uni1 را انتخاب کنید.
3
در پنجره تنظیمات برای اشیاء پارتیشن  ، قسمت اشیاء پارتیشن را پیدا کنید .
4
زیربخش اشیاء ابزار  را پیدا کنید . برای انتخاب دکمه ضامن فعال کردن انتخاب کلیک کنید .
5
فقط شی blk1 را انتخاب کنید.
جعبه انتخاب 1 (boxsel1)
1
در نوار ابزار Geometry ، روی  Selections کلیک کنید و Box  Selection را انتخاب کنید .
2
در پنجره تنظیمات برای Box  Selection ، قسمت Box  Limits را پیدا کنید .
3
در قسمت حداقل متن x ،  xmin+geom_tol را تایپ کنید .
4
در قسمت متن حداکثر x ،  xmax-geom_tol را تایپ کنید .
5
در قسمت حداقل متن y ،  ymin+geom_tol را تایپ کنید .
6
در قسمت حداکثر متن y ،  ymax-geom_tol را تایپ کنید .
7
قسمت Resulting  Selection را پیدا کنید . از فهرست نمایش  در  فیزیک ، خاموش را انتخاب کنید .
8
 روی Build  Selected کلیک کنید .
انتخاب مکمل 1 (comsel1)
1
در نوار ابزار Geometry ، روی  Selections کلیک کنید و Complement  Selection را انتخاب کنید .
2
در پنجره تنظیمات برای Complement  Selection ، بخش Input  Entities را پیدا کنید .
3
 روی افزودن کلیک کنید .
4
در کادر محاوره‌ای افزودن ، کادر  انتخاب  1 را در فهرست انتخاب‌ها  برای  معکوس کردن انتخاب کنید .
5
روی OK کلیک کنید .
6
در پنجره تنظیمات برای انتخاب مکمل  ، قسمت انتخاب نتیجه را پیدا کنید .
7
از فهرست نمایش  در  فیزیک ، خاموش را انتخاب کنید .
8
 روی Build  Selected کلیک کنید .
حذف نهادهای 1 (del1)
1
در پنجره Model  Builder ، روی Geometry  1 کلیک راست کرده و Delete  Entities را انتخاب کنید .
2
در پنجره تنظیمات برای حذف  نهادها ، بخش Entities  یا  Objects  to  Delete را پیدا کنید .
3
از لیست سطح نهاد هندسی  ، دامنه را انتخاب کنید .
4
از لیست انتخاب ، Complement  Selection  1 را انتخاب کنید .
5
 روی Build  Selected کلیک کنید .
الکترود
1
در نوار ابزار Geometry ، روی  Block کلیک کنید .
2
در پنجره تنظیمات برای بلوک ، الکترود را در قسمت نوشتار برچسب تایپ کنید .
3
قسمت Size  and  Shape را پیدا کنید . در قسمت متن Width ، xmax-xmin را تایپ کنید .
4
در قسمت Depth text ymax-ymin را تایپ کنید .
5
در قسمت متن ارتفاع ، L_elec را تایپ کنید .
6
قسمت Position را پیدا کنید . در قسمت متن x ، xmin را تایپ کنید .
7
در قسمت متن y ، ymin را تایپ کنید .
8
 روی Build  Selected کلیک کنید .
تفاوت 1 (dif1)
1
در نوار ابزار Geometry ، روی  Booleans  and  Partitions کلیک کنید و Difference را انتخاب کنید .
2
فقط شی blk2 را انتخاب کنید.
3
در پنجره تنظیمات برای تفاوت ، بخش تفاوت را پیدا کنید .
4
زیربخش اشیاء را  برای  تفریق پیدا کنید . برای انتخاب دکمه ضامن  فعال کردن  انتخاب کلیک کنید .
5
فقط شی del1 را انتخاب کنید.
6
تیک Keep  objects  to  add را انتخاب کنید .
7
تیک Keep  objects  to  subtract را انتخاب کنید .
8
 روی Build  Selected کلیک کنید .
حذف نهادهای 2 (del2)
1
روی Geometry  کلیک راست کرده و Delete  Entities را انتخاب کنید .
2
در پنجره تنظیمات برای حذف  نهادها ، بخش Entities  یا  Objects  to  Delete را پیدا کنید .
3
از لیست سطح نهاد هندسی  ، Object را انتخاب کنید .
4
فقط شی dif1 را انتخاب کنید.
5
 روی Clear  Selection کلیک کنید .
6
فقط شی blk2 را انتخاب کنید.
جداکننده
1
در نوار ابزار Geometry ، روی  Block کلیک کنید .
2
در پنجره تنظیمات برای Block ، در قسمت Label text Separator را تایپ کنید .
3
قسمت Size  and  Shape را پیدا کنید . در قسمت متن Width ، xmax-xmin را تایپ کنید .
4
در قسمت Depth text ymax-ymin را تایپ کنید .
5
در قسمت متن ارتفاع ، L_sep را تایپ کنید .
6
قسمت Position را پیدا کنید . در قسمت متن x ، xmin را تایپ کنید .
7
در قسمت متن y ، ymin را تایپ کنید .
8
در قسمت متن z ، L_elec را تایپ کنید .
9
قسمت Selections  of  Resulting  Entities را پیدا کنید . تیک گزینه Resulting  objects  selection را انتخاب کنید .
10
 روی Build  Selected کلیک کنید .
11
 روی دکمه Zoom  Extents در نوار ابزار Graphics کلیک کنید .
فرم اتحادیه (فین)
1
در پنجره Model  Builder ، روی Form  Union  (fin) کلیک کنید .
2
در پنجره تنظیمات Form  Union/Assembly ، روی  Build  Selected کلیک کنید .
چسب رسانای متخلخل
1
در نوار ابزار Geometry ، روی  Selections کلیک کنید و Complement  Selection را انتخاب کنید .
2
در پنجره تنظیمات برای انتخاب مکمل  ، Porous Conductive Binder را در قسمت متن برچسب تایپ کنید .
3
قسمت Input  Entities را پیدا کنید .  روی افزودن کلیک کنید .
4
در کادر محاوره‌ای افزودن ، در فهرست انتخاب‌ها برای معکوس کردن ، ذرات و جداکننده را انتخاب کنید .
5
روی OK کلیک کنید .
فویل لیتیوم
1
در نوار ابزار Geometry ، روی  Selections کلیک کنید و Box  Selection را انتخاب کنید .
2
در پنجره تنظیمات برای انتخاب جعبه  ، فویل لیتیوم را در قسمت نوشتار برچسب تایپ کنید .
3
قسمت Geometric  Entity  Level را پیدا کنید . از لیست Level ، Boundary را انتخاب کنید .
4
قسمت Box  Limits را پیدا کنید . در قسمت حداقل متن z ،  L_elec+L_sep/2 را تایپ کنید .
5
قسمت Output  Entities را پیدا کنید . از فهرست Include  entity  if ، Entity  inside  کادر را انتخاب کنید .
NMC Current Collector
1
در نوار ابزار Geometry ، روی  Selections کلیک کنید و Box  Selection را انتخاب کنید .
2
در پنجره تنظیمات برای انتخاب جعبه  ، NMC Current Collector را در قسمت متن برچسب تایپ کنید .
3
قسمت Geometric  Entity  Level را پیدا کنید . از لیست Level ، Boundary را انتخاب کنید .
4
قسمت Box  Limits را پیدا کنید . در قسمت حداکثر متن z ،  0 را تایپ کنید .
5
قسمت Output  Entities را پیدا کنید . از فهرست Include  entity  if ، Entity  inside  کادر را انتخاب کنید .
مرزهای ذرات
1
در نوار ابزار Geometry ، روی  Selections کلیک کنید و گزینه Adjacent  Selection را انتخاب کنید .
2
در پنجره تنظیمات برای انتخاب مجاور  ، Particle Boundaries را در قسمت متن برچسب تایپ کنید .
3
قسمت Input  Entities را پیدا کنید .  روی افزودن کلیک کنید .
4
در کادر محاوره‌ای افزودن ، ذرات را در لیست انتخاب‌های ورودی  انتخاب کنید .
5
روی OK کلیک کنید .
6
در پنجره تنظیمات برای انتخاب مجاور  ، قسمت انتخاب نتیجه را پیدا کنید .
7
از فهرست نمایش  در  فیزیک ، خاموش را انتخاب کنید .
مرزهای کلاسور
1
در نوار ابزار Geometry ، روی  Selections کلیک کنید و گزینه Adjacent  Selection را انتخاب کنید .
2
در پنجره تنظیمات برای انتخاب مجاور  ، مرزهای Binder را در قسمت متن برچسب تایپ کنید .
3
قسمت Input  Entities را پیدا کنید .  روی افزودن کلیک کنید .
4
در کادر محاوره ای افزودن ، Porous  Conductive  Binder را در لیست انتخاب های ورودی  انتخاب کنید .
5
روی OK کلیک کنید .
6
در پنجره تنظیمات برای انتخاب مجاور  ، قسمت انتخاب نتیجه را پیدا کنید .
7
از فهرست نمایش  در  فیزیک ، خاموش را انتخاب کنید .
سطوح ذرات
1
در نوار ابزار Geometry ، روی  Selections کلیک کنید و گزینه Intersection  Selection را انتخاب کنید .
2
در پنجره تنظیمات برای انتخاب تقاطع  ، سطح ذرات را در قسمت متن برچسب تایپ کنید .
3
قسمت Geometric  Entity  Level را پیدا کنید . از لیست Level ، Boundary را انتخاب کنید .
4
قسمت Input  Entities را پیدا کنید .  روی افزودن کلیک کنید .
5
در کادر محاوره‌ای افزودن ، در فهرست انتخاب‌ها برای تقاطع ، مرزهای ذرات  و مرزهای بایندر را انتخاب کنید .
6
روی OK کلیک کنید .
جداکننده + کلاسور
1
در نوار ابزار Geometry ، روی  Selections کلیک کنید و Union  Selection را انتخاب کنید .
2
در پنجره تنظیمات برای انتخاب اتحادیه  ، Separator + Binder را در قسمت نوشتار Label تایپ کنید .
3
قسمت Input  Entities را پیدا کنید .  روی افزودن کلیک کنید .
4
در کادر محاوره‌ای افزودن ، در لیست Selections to add ، Separator and Porous  Conductive  Binder را انتخاب کنید .
5
روی OK کلیک کنید .
همه دامنه ها
1
در نوار ابزار Geometry ، روی  Selections کلیک کنید و Box  Selection را انتخاب کنید .
2
در پنجره تنظیمات برای انتخاب جعبه  ، همه دامنه ها را در قسمت متن برچسب تایپ کنید .
3
قسمت Box  Limits را پیدا کنید . در قسمت متن  حداقل ، xmin را تایپ کنید .
4
در قسمت متن حداکثر x ،  xmax را تایپ کنید .
5
در قسمت حداقل y  متن، ymin را تایپ کنید .
6
در قسمت حداکثر متن y ،  ymax را تایپ کنید .
7
قسمت Output  Entities را پیدا کنید . از لیست Include  entity  if ، کادر All  vertices  inside  را انتخاب کنید .
8
قسمت Resulting  Selection را پیدا کنید . از فهرست نمایش  در  فیزیک ، خاموش را انتخاب کنید .
تمام مرزهای خارجی
1
در نوار ابزار Geometry ، روی  Selections کلیک کنید و گزینه Adjacent  Selection را انتخاب کنید .
2
در پنجره تنظیمات برای انتخاب مجاور  ، همه مرزهای خارجی را در قسمت متن برچسب تایپ کنید .
3
قسمت Input  Entities را پیدا کنید .  روی افزودن کلیک کنید .
4
در کادر محاوره‌ای افزودن ، همه  دامنه‌ها را در فهرست انتخاب‌های ورودی  انتخاب کنید .
5
روی OK کلیک کنید .
نتایج
داده های ذرات را در قالب یک جدول وارد کنید.
جدول داده های ذرات
1
در پنجره Model  Builder ، گره Results را گسترش دهید .
2
روی Results>Tables کلیک راست کرده و Table را انتخاب کنید .
3
در پنجره تنظیمات جدول ، Particle Data Table را در قسمت نوشتار Label تایپ کنید .
داده ها را از ورودی آمار ذرات (NMC_94wt_0bar) از http://dx.doi.org/10.5905/ethz-iis-1 دانلود کنید و آن را به عنوان یک فایل متنی به جدول وارد کنید.
4
قسمت Data را پیدا کنید . روی Import کلیک کنید .
برای تولید قسمت هندسه ذرات بر اساس داده های جدول، از روش مدل استفاده می کنیم. توجه داشته باشید که ویرایشگر روش فقط در نسخه Windows ® ComSOL Desktop موجود است.
برنامه ساز
در نوار ابزار Home ، روی  Application  Builder کلیک کنید .
روش جدید
1
در پنجره Application  Builder ، روی Methods کلیک راست کرده و New  Method را انتخاب کنید .
2
در کادر محاوره‌ای New  Method ، GenerateGeometryFromTable را در قسمت متن نام تایپ کنید .
3
روی OK کلیک کنید .
GenerateGeometryFromTable
1
در پنجره Application  Builder ، در قسمت Methods روی GenerateGeometryFromTable کلیک کنید .
2
کد زیر را در پنجره GenerateGeometryFromTable کپی کنید :
// خواندن داده ها از Results->Table در درخت سازنده مدل
String tableData[][] = model.result().table().get(“tbl1”).getTableData(false);

// برخی از مقادیر پارامتر هندسی را از Parameters بخوانید
Double voxel_size = model.param().evaluate(“vox_size”);
Double geom_tol = model.param().evaluate(“geom_tol”);
Double xmin = model.param().evaluate(“xmin”)+geom_tol;
دابل xmax = model.param().evaluate(“xmax”)+geom_tol;
Double ymin = model.param().evaluate(“ymin”)+geom_tol;
Double ymax = model.param().evaluate(“ymax”)+geom_tol;

// قسمت پاک کردن هندسه
model.geom(“part1”).feature().clear();

int i = 0; // شمارنده ردیف برای ماتریس

// متغیر برای محاسبه ضخامت الکترود
Double maxz = new Double(0.0);

// متغیرهایی برای محاسبه شعاع کره با میانگین جرم
Double Vsum = new Double(0.0);
Double rVsum = new Double(0.0);

// حلقه برای تمام سطرهای جدول
برای (String[] row : tableData) {
Double xminData = Double.parseDouble(row[2])*voxel_size;
Double yminData = Double.parseDouble(row[3])*voxel_size;
Double xmaxData = Double.parseDouble(row[5])*voxel_size;
Double ymaxData = Double.parseDouble(row[6])*voxel_size;

// بررسی کنید که آیا در کادر محدود است، و اگر شعاع بزرگتر از تلورانس است، کره اضافه کنید
if (((xminData < xmax && xminData > xmin) || (xmaxData < xmax && xmaxData > xmin)) && ((
yminData < ymax && yminData > ymin) || (ymaxData < ymax && ymaxData > ymin))
{ volume = Double.parseDouble(row[1])*Math.pow(voxel_size, 3.0);
شعاع دو برابر = Math.pow(0.75*volume/Math.PI، 0.333333)؛

if (radius > geom_tol) {
Double xpos = Double.parseDouble(row[8])*voxel_size;
Double ypos = Double.parseDouble(row[9])*voxel_size;
Double zpos = Double.parseDouble(row[10])*voxel_size;

// افزودن داده به ماتریس داده های کره ای
sphereData[i][0] = xpos;
sphereData[i][1] = ypos;
sphereData[i][2] = zpos;
sphereData[i][3] = شعاع;
i++;

maxz = maxz < (zpos+radius) ? zpos+radius : maxz;

// متغیرهای شعاع میانگین جرم را به‌روزرسانی کنید، اگر مرکز کره در کادر محدودکننده باشد
if ((xpos < xmax && xpos > xmin) && (ypos < ymax && ypos > ymin))) {
Vsum = Vsum+volume;
rVsum = rVsum+شعاع*حجم;
}

// افزودن کره به بخش هندسه
GeomFeature sph = model.geom(“part1”).create(“sph”+i, “Sphere”);
sph.set(“pos”, new String[]{Double.toString(xpos)+”[m]”, Double.toString(ypos)+”[m]”, Double.toString(zpos)+”[m] “})؛
sph.label(“Particle “+(int) Math.round(Double.parseDouble(row[0])));
sph.set(“r”, radius+”[m]”);

double hmin = model.param().evaluate(“hmin”); // حداقل اندازه عنصر مش
int cyl = 1;

// فواصل و شکاف‌های بین تمام ترکیب‌های دوتایی کره‌ها را
برای (int j = 0; j < i; j++) بررسی کنید {
for (int k = j+1; k <i; k++) {
Double x = sphereData[k][ 0] -sphereData[j][0];
Double y = sphereData[k][1]-sphereData[j][1];
z Double = sphereData[k][2]-sphereData[j][2];

فاصله دو برابر = Math.sqrt(x*x+y*y+z*z);

دو شکاف = dist-(sphereData[k][3]+sphereData[j][3]);
int index1 = sphereData[k][3] <sphereData[j][3] ? k : j;
int index2 = sphereData[k][3] > sphereData[j][3] ? k : j;
دابل r_sphere = sphereData[index1][3];

// اگر کره ها خیلی نزدیک یا همپوشانی دارند، استوانه اضافه کنید
if (gap <hmin && gap > -0.667*r_sphere) {

Double x_sphere = sphereData[index1][0];
Double y_sphere = sphereData[index1][1];
z_sphere دو برابر = sphereData[index1][2];

جهت دوگانه = sphereData[k][3] <sphereData[j][3] ? -1.0 : 1.0;

دابل r_help = r_sphere+gap-hmin;
Double r_cyl = Math.max(Math.sqrt(r_sphere*r_sphere-r_help*r_help), hmin*2);

// معادله ریشه به غیر خطی را برای شعاع استوانه حل کنید (به طوری که فاصله کره به کره = hmin در امتداد سطح استوانه).
دو برابر r1 = r_sphere;
Double r2 = sphereData[index2][3];
دو تا = 2*r2;
tb دو برابر = 2 * r1;
double tc = Math.sqrt(-((gap-hmin+tb+ta)*(gap-hmin+tb)*(gap-hmin+ta)*(gap-hmin)));
r_cyl = ((1/(شکاف-hmin+r1+r2))*tc)/2;

Double dist_corr = Math.sqrt(r_sphere*r_sphere-r_cyl*r_cyl)-2*hmin;
دابل posx = x_sphere+x/dist*dist_corr*direction;
دابل posy = y_sphere+y/dist*dist_corr*direction;
دابل posz = z_sphere+z/dist*dist_corr*direction;

// ایجاد سیلندر
GeomFeature cylinder = model.geom(“part1”).create(“cyl”+cyl++, “Cylinder”);
با (سیلندر)؛
set(“pos”، new String[]{Double.toString(posx)+”[m]”، Double.toString(posy)+”[m]، Double.toString(posz)+”[m]”} )
set(“axitype”، “cartesian”);
set(“ax3″، new String[]{Double.toString(x*direction)+”[m]”, Double.toString(y*direction)+”[m]”، Double. toString(z*direction)+”[m]”});
set(“r”، r_cyl+”[m]”);
set(“h”، hmin*5+”[m]”);
پایان یافتن با()؛
}
}
}

// تنظیم طول الکترود در مدل
model.param().set(“L_elec”, maxz+geom_tol+”[m]”);

// ساخت هندسه در model.geom
(“part1”).run();
model.component(“comp1”).geom(“geom1”).run();

// اندازه گیری و به روز رسانی پارامتر حجم
model.component(“comp1”).geom(“geom1”).measure().selection().init(3);
model.component(“comp1”).geom(“geom1”).measure().selection().named(“uni1”);
model.param().set(“Vp”, model.geom(“geom1″).measure().getVolume()+”[m^3]”);

//
مدل پارامتر ناحیه را اندازه گیری و به روز کنید.
model.component(“comp1”).geom(“geom1”).measure().selection().named(“intsel1”);
model.param().set(“Ap”, model.geom(“geom1″).measure().getVolume()+”[m^2]”);

// به روز رسانی پارامتر شعاع میانگین جرمی
model.param().set(“rp_avg_spheres”, rVsum/Vsum+”[m]”);

مواد و روش ها
در نوار ابزار Home ، روی  Model  Builder کلیک کنید .
تعاریف جهانی
متد مدل را در درخت مدل موجود کنید و به صورت زیر اجرا کنید:
 روی Method  Call کلیک کنید و GenerateGeometryFromTable را انتخاب کنید .
هندسه را از جدول داده های ذرات ایجاد کنید
1
در پنجره Model  Builder ، در زیر Global  Definitions روی GenerateGeometryFromTable  1 کلیک کنید .
2
در پنجره تنظیمات برای فراخوانی روش  ، Generate Geometry From Particle Data Table را در قسمت نوشتار Label تایپ کنید .
3
 روی Run کلیک کنید .
ذرات
در پنجره Model  Builder ، گره Global  Definitions>Geometry  Parts>Particles را جمع کنید .
تعاریف
در نهایت، نما را به‌روزرسانی کنید تا محور y به سمت بالا، و محور z به سمت چپ و محور x به سمت شما باشد.
1
در پنجره Model  Builder ، گره Component   (comp1)>Definitions را گسترش دهید .
دوربین
1
در پنجره Model  Builder ، گره Component   (comp1)>Definitions>View  2 را گسترش دهید ، سپس روی Camera کلیک کنید .
2
فقط شی را انتخاب کنید.
3
 روی دکمه Zoom  Extents در نوار ابزار Graphics کلیک کنید .
4
در پنجره تنظیمات دوربین ، بخش موقعیت را بیابید .
5
در قسمت متن x ، 6.1e-4 را تایپ کنید .
6
در قسمت متن y ، 2.1e-4 را تایپ کنید .
7
در قسمت متن z ، -4.1e-4 را تایپ کنید .
8
قسمت Up  Vector را پیدا کنید . در قسمت متن x ، 0 را تایپ کنید .
9
در قسمت متن y ، 1 را تایپ کنید .
10
در قسمت متن z ، 0 را تایپ کنید .
11
 روی Update کلیک کنید .
12
 روی دکمه Zoom  Extents در نوار ابزار Graphics کلیک کنید .