خانه نمونه‌ها اسکرین‌شات‌ها راهنمای کاربر لوگوی Bluesky YouTube
OghmaNano شبیه‌سازی سلول‌های خورشیدی آلی/پروسکایتی، OFETها و OLEDها دانلود

قالب فایل oghma

1. JSON چیست؟

فایل sim.json در OghmaNano که در مرورگر Firefox باز شده و پارامترهای ساختاریافته JSON را نشان می‌دهد
نمونه‌ای از فایل sim.json که در Firefox باز شده و ساختار JSON زیربنایی یک شبیه‌سازی OghmaNano را نشان می‌دهد.

OghmaNano اطلاعات شبیه‌سازی خود را در یک فایل JSON ذخیره می‌کند. JSON (JavaScript Object Notation) یک قالب بسیار ساده و متنی برای ذخیره و انتقال داده‌های ساخت‌یافته است. این قالب به‌طور گسترده در نرم‌افزارهای علمی استفاده می‌شود زیرا هم برای انسان قابل خواندن است و هم توسط ماشین قابل تجزیه است. شما می‌توانید نمونه‌های کلی از ساختارهای JSON را در https://json.org/example.html ببینید.

برای نشان دادن نحوه کار JSON، در زیر یک نمونه ساده آمده است. یک فایل JSON از بخش‌هایی ساخته می‌شود که با آکولادهای { } شروع و پایان می‌یابند. هر بخش شامل tokenها، یا برچسب‌هایی، مانند "color_of_dog"، "dog_age"، یا "dogs_toys" است. این tokenها باید همیشه درون گیومه دوتایی نوشته شوند، و پس از آن‌ها یک دونقطه : و سپس مقدار داده مرتبط می‌آید. مقادیر متنی درون گیومه دوتایی قرار می‌گیرند، در حالی که اعداد مانند اعداد صحیح یا اعشاری بدون گیومه نوشته می‌شوند. در OghmaNano، مقادیر شبیه بولی به‌صورت رشته‌های "true" یا "false" ذخیره می‌شوند. برای معتبر بودن فایل، همه آکولادهای باز و بسته باید به‌درستی با هم منطبق باشند. آیتم‌های داخل یک بخش با ویرگول از هم جدا می‌شوند، به‌جز آیتم نهایی که با ویرگول پایان نمی‌یابد. ??.


{
  "color_of_dog": "brown",
  "dog_age": 5,
  "dogs_toys":
  {
    "rabbit": "true",
    "stick": "false"
  }
}
نمونه‌ای از یک ساختار ساده JSON.

OghmaNano از همین اصول JSON برای ذخیره تمام داده‌های شبیه‌سازی خود استفاده می‌کند. این اطلاعات در فایلی به نام sim.json قرار دارد که شامل همه پارامترهای دستگاه، تنظیمات شبیه‌سازی، و پیکربندی خروجی است. هر شبیه‌سازی فایل sim.json مخصوص خود را خواهد داشت. هرچند می‌توانید این فایل را در هر ویرایشگر متنی باز کنید، اغلب استفاده از یک نمایشگر اختصاصی JSON آسان‌تر است زیرا داده‌ها را در یک ساختار درختیِ خوانا قالب‌بندی می‌کند. Firefox یک نمایشگر json داخلی خوب دارد. نمونه‌ای از فایل sim.json که در Firefox نمایش داده شده، در پایین در ?? آمده است

یک نکته نهایی: اگرچه sim.json فایل پیکربندی کلیدی است، اما همیشه به‌صورت مستقل ذخیره نمی‌شود. در عوض، OghmaNano اغلب آن را درون یک فایل sim.oghma بسته‌بندی می‌کند، که فقط یک آرشیو ZIP استاندارد است - این کار برای صرفه‌جویی در فضا انجام می‌شود. اگر نام sim.oghma را به sim.zip تغییر دهید، می‌توانید آن را با Windows Explorer یا هر نمایشگر zip باز کنید و sim.json را استخراج کنید. اگر یک نسخه از sim.json را در همان پوشه شبیه‌سازی قرار دهید و نام آرشیو را دوباره به sim.oghma برگردانید، OghmaNano نسخه آرشیوشده sim.json را نادیده می‌گیرد و به‌جای آن از فایل متنی ساده sim.json شما استفاده می‌کند. این ویژگی برای اتوماسیون بسیار مفید است، زیرا می‌توانید مستقیماً sim.json را با استفاده از هر زبان برنامه‌نویسی و بدون نیاز به دستکاری فایل‌های zip ویرایش کنید.

2. قالب فایل OghmaNano

OghmaNano دقیقاً همین اصول را در فایل پیکربندی شبیه‌سازی خود، با نام sim.json، به‌کار می‌گیرد. این فایل هر آنچه را برای توصیف ساختار یک دستگاه، تعریف شبیه‌سازی‌های مورد اجرا، و پیکربندی حل‌گرها لازم است در بر دارد. هر پوشه شبیه‌سازی شامل فایل sim.json مخصوص خود خواهد بود. اگرچه می‌توانید این فایل را در هر ویرایشگر متنی باز کنید، اغلب استفاده از یک نمایشگر JSON مانند Firefox راحت‌تر است، که داده‌ها را به‌طور خودکار در یک نمای درختی قالب‌بندی‌شده نمایش می‌دهد.

در بالاترین سطح، sim.json به تعداد کمی بخش سطح‌بالا سازمان‌دهی می‌شود. سپس این بخش‌ها به زیربخش‌های جزئی‌تر، مانند sweepهای JV، اجراهای EQE، یا تعریف لایه‌های دستگاه، منشعب می‌شوند. بخش‌های اصلی سطح‌بالا که در قالب فعلی وجود دارند در جدول زیر خلاصه شده‌اند: ??.

بخش‌های سطح‌بالای فعلی در sim.json
بخش هدف
simفراداده عمومی (برای مثال نسخه، حالت اجرا، یادداشت‌ها)
simsهمه تعریف‌های شبیه‌سازی (JV، Suns-Voc، EQE، PL، حوزه زمان، ray، FDTD، و غیره)
epitaxyساختار دستگاه: لایه‌ها، تماس‌ها، هندسه، مواد
mathتنظیمات عددی حل‌گر و تلرانس‌ها
opticalمدل‌های نوری، منابع، آشکارسازها، مش‌ها
dumpکنترل‌های خروجی: میزان جزئیات، پروب‌ها، قالب‌های فایل
serverاجرا/موازی‌سازی (رشته‌ها، GPU، محدودیت‌های زمانی)
بخش‌های اصلی سطح‌بالا که در این sim.json شناسایی شده‌اند.

3. ویژگی‌های خاص قالب json در OghmaNano

4. کدگذاری

فایل‌های .json که توسط OghmaNano خوانده/نوشته می‌شوند همیشه در قالب UTF-8 ذخیره می‌شوند. OghmaNano نمی‌تواند UTF-16 یا هیچ استاندارد کدگذاری متنی دیگری را مدیریت کند. امروزه Windows Notepad و بیشتر برنامه‌های دیگر به‌طور پیش‌فرض از UTF-8 استفاده می‌کنند، بنابراین اگر نمی‌دانید این قالب‌های ذخیره‌سازی متن چه هستند، احتمالاً اهمیتی ندارد. این موضوع فقط زمانی خود را نشان خواهد داد که شروع به تولید برنامه‌نویسی‌شده فایل‌های .oghma در زبانی مانند C++ کنید و از زبانی مانند چینی یا روسی با نویسه‌های غیر لاتین در الفبای آن استفاده کنید.

5. سازگاری رو به جلو/رو به عقب قالب فایل

تلاش قابل‌توجهی انجام می‌شود تا اطمینان حاصل شود نسخه‌های جدید OghmaNano بتوانند فایل‌های تولیدشده در نسخه‌های قدیمی‌تر را بخوانند. با این حال، نسخه‌های قدیمی‌تر OghmaNano ممکن است نتوانند فایل‌های تولیدشده در نسخه‌های جدیدتر را بخوانند. هر بار که کاربر یک فایل sim.oghma را با استفاده از GUI باز می‌کند، قالب فایل بررسی می‌شود و اگر با قالب مورد استفاده در نسخه فعلی متفاوت باشد، فایل به‌روزرسانی شده و دوباره روی دیسک نوشته می‌شود. اگر از OghmaNano در یک پیکربندی بدون رابط گرافیکی و با فراخوانی مستقیم \(oghma\_core.exe\) استفاده می‌کنید، آنگاه هنگام کار با فایل‌های sim.oghma از نسخه‌های قدیمی‌تر مدل، پیش از اجرای \(oghma\_core.exe\) مطمئن شوید ابتدا آن را در GUI باز کرده‌اید تا فایل در قالب صحیح قرار داشته باشد.

6. نکات

اگر مطمئن نیستید یک پارامتر خاص در فایل sim.json مربوط به OghmaNano در کجا ذخیره شده است، یک روش بسیار مؤثر این است که دو نسخه از فایل را مقایسه کنید و ببینید چه چیزی تغییر می‌کند. یکی از راه‌های انجام این کار استفاده از یک ابزار مقایسه فایل مانند KDiff3 است.

این فرایند ساده است:

  1. شبیه‌سازی خود را در رابط کاربری OghmaNano باز کنید.
  2. پارامتر مورد نظر را تنظیم کنید (برای مثال، ضخامت لایه فعال یا یک تنظیم ولتاژ را تغییر دهید) و شبیه‌سازی را ذخیره کنید.
  3. فایل جدید sim.json را با نسخه قبلی با استفاده از KDiff3 (یا ابزار diff دیگر) مقایسه کنید.
  4. به دنبال خط‌هایی بگردید که متفاوت هستند: این‌ها دقیقاً نشان می‌دهند آن پارامتر در کجای ساختار JSON ذخیره شده است.

این تکنیک روشی سریع و قابل‌اعتماد برای یافتن پارامترها در JSON است اگر از مسیر آن‌ها در فایل مطمئن نیستید. این روش به‌ویژه برای شبیه‌سازی‌های پیچیده با بخش‌های تو‌در‌توی زیاد مفید است.

👉 گام بعدی: اکنون ادامه دهید به ابزار Parameter Scan را بررسی کنید، جایی که می‌توانید بیاموزید چگونه پارامترهای شبیه‌سازی را به‌صورت نظام‌مند تغییر دهید و نتایج را تحلیل کنید.