Skip to main content

Routines for the course "Physical Fundamentals of Microelectronics"

Project description

PyPI version PyPI license PyPI - Downloads
GitHub contributors GitHub commit activity Coverage
GitHub milestone

FOMpy

FOMpy — подпрограммы и классы для курса «Физические основы микроэлектроники» (ФОМЭ). Идея проекта в том, чтобы совместными усилиями создать достаточную базу подпрограмм для решения задач по ФОМЭ.

Документация модуля с приведением используемых формул и единиц измерения доступна по этой ссылке.

Важно! Основной системой единиц для расчётов является СГС (Гауссова система единиц). О том, как работать с единицами измерения, читайте в разделе Единицы измерения.

Установка

Данная инструкция поможет вам начать использовать пакет FOMpy в вашем проекте или работать с ним как с калькулятором.

С целью избежать возможных проблем с установкой зависимостей, рекомендуется установка в виртуальной среде.

Глобальная установка

Для того чтобы установить FOMpy глобально, выполните команду

$ pip install fti-fompy

Установка в виртуальной среде

  • Создайте виртуальную среду (возможно, придётся написать python3 вместо python):

    $ python -m venv .venv
    
  • Запустите виртуальную среду:

    $ source ./venv/bin/activate
    

    Важно! В дальнейшем эту команду нужно будет выполнять каждый раз перед запуском скриптов, работающих с FOMpy. Эффект действует до закрытия окна терминала или вызова команды deactivate.

  • Установите пакет FOMpy:

    $ pip install fti-fompy
    

Удобный скрипт для запуска

Вы можете настроить терминал таким образом, чтобы одной командой в нём запускался интерпретатор Python, сразу после запуска готовый к работе с FOMpy.

  • Добавьте в файл ~/.bashrc (или другой rc-файл в зависимости от вашей командной оболочки) следующие строки:

    FOMPY_IMPORTS="
    from math import *
    from fompy.constants import *
    from fompy.materials import *
    from fompy.models import *
    from fompy.units import unit
    "
    
    fompy() {
        cd <Путь до папки с FOMpy> # Эти две строки нужны только для 
        source .venv/bin/activate  # запуска виртуальной среды
        PYTHONSTARTUP=<(echo "$FOMPY_IMPORTS") python
    }
    
  • Перезапустите терминал.

  • Наберите команду

    $ fompy
    

    Теперь этой командой вы можете вызывать интерпретатор python, в котором уже будут импортированы все нужные модули FOMpy.

Использование

В этом разделе объясняется, как наиболее эффективно работать с единицами измерения, а также представлены несколько примеров, демонстрирующих применение пакета FOMpy для решения простейших типичных задач.

Подробное описание доступных подпрограмм, классов и их методов можно прочитать по этой ссылке. В документации методов приведены используемые формулы и уравнения, а также указаны единицы измерения физических величин.

Единицы измерения

С единицами физических величин в расчётах необходимо обращаться осторожно. Важно помнить, что в пакете FOMpy везде используется система СГС: как в возвращаемых значениях функций, так и в аргументах, передаваемых тем же функциям. Все физические константы также приведены в единицах СГС.

Функционал, облегчающий работу с единицами измерения, расположен в модулях fompy.constants и fompy.units. Документация методов и подпрограмм снабжена обозначениями принимаемых и возвращаемых единиц в квадратных скобках, например, [g] — грамм, [statV] — статвольт, [1] — безразмерная единица.

Функция fompy.units.unit()

Общий интерфейс для работы с единицами предоставляется функцией fompy.units.unit(). Пример использования:

s = Semiconductor(me_eff= 0.1 * unit('MeV_m'), mh_eff= 4. * 10**(-28), Eg= 1. * unit('eV'))

Здесь масса электрона задана эквивалентным значением энергии покоя в МэВ, масса дырки сразу приведена в граммах, а размер запрещённой зоны равен 1 эВ.

Строка, передаваемая функции unit(), может содержать

  • наименование единицы измерения (обязательно);
  • дольную или кратную приставку в виде префикса к наименованию;
  • рациональная степень;
  • пробельные символы (где угодно, но не между приставкой и наименованием единицы).

Показатель степени по умолчанию равен 1, в иных случаях он присоединяется в виде суффикса справа от наименования единицы. Этот суффикс выглядит так: ^ + знак (- для отрицательной степени, + для положительной степени) + целое или рациональное число. Знаки умножения, возведения в степень, и знак + в показателе степени — необязательны.

Примеры: микрометр в минус третьей степени — um^-3 или um-3; вольт — V, или V ^1, или V ^ +1; вольт в степени 3/2 — V ^ 3/2, V 3/2.

Комбинации разных единиц строятся с помощью символов / для частного и */отсутствие символа для произведения. Важный момент: символ / делит обозначение на числитель и знаменатель. Всё, что записано после него, станет множителем с противоположной по знаку степенью. В качестве числителя может выступать 1.

Функция всегда способна отличить знак / в показателе степени от знака / разделяющего числитель и знаменатель, поскольку знаменатель не может начинаться с числа.

Примеры: ом-метр — Ohm m, или Ohm * m, или Ohm / m-1; секунда в минус первой степени — s^-1 или 1 / s; генри = кг м2 с−2 А−2kg m^2 / s^2 A^2.

Поддерживаются следующие наименования единиц измерения:

Подстрока Единица
m метр
g грамм
s секунда
K кельвин
A ампер
eV электронвольт
eV_m 1 эВ/c2 (масса, эквивалентная энергии покоя 1 эВ)
eV_T 1 эВ/kB (температура, эквивалентная тепловой энергии 1 эВ)
Hz герц
N ньютон
J джоуль
W ватт
Pa паскаль
C кулон
V вольт
Ohm ом
F фарад
Wb вебер
T тесла
H генри

Таблица дольных и кратных десятичных приставок:

Подстрока Множитель Приставка
y 10−24 иокто-
z 10−21 зепто-
a 10−18 атто-
f 10−15 фемто-
p 10−12 пико-
n 10−9 нано-
u 10−6 микро-
m 10−3 милли-
c 10−2 санти-
d 10−1 деци-
da 101 дека-
h 102 гекто-
k 103 кило-
M 106 мега-
G 109 гига-
T 1012 тера-
P 1015 пета-
E 1018 экса-
Z 1021 зетта-
Y 1024 иотта-

Физические константы

Физические константы определены в модуле fompy.constants. Все значения приведены в единицах системы СГС.

Таблица представленных констант:

Имя объекта Константа
c скорость света
k постоянная Больцмана
Na постоянная Авогадро
R универсальная газовая постоянная
sigma константа Стефана-Больцмана
me масса электрона
mp масса протона
mn масса нейтрона
e заряд электрона
h постоянная Планка
h_bar редуцированная постоянная Планка
eV 1 эВ
eV_m 1 эВ/c2 (масса, эквивалентная энергии покоя 1 эВ)
eV_T 1 эВ/kB (температура, эквивалентная тепловой энергии 1 эВ)
amu атомная единица массы (дальтон)
angstrom ангстрем
volt 1 В
ampere 1 А
ohm 1 Ом
farad 1 Ф
henry 1 Гн
Ry число Рейнольдса
a0 радиус Бора

Примеры

Пример 1: расчёт концентрации дырок в легированном полупроводнике

Необходимо найти концентрацию дырок в кремнии Si, легированном акцепторной примесью. Температура T = 300 К, концентрация акцепторной примеси Na = 1017 см−3, акцепторный уровень Ea = 0,3 эВ (от вершины валентной зоны Ev = 0).

  • Подготавливаем интерпретатор Python — воспользуемся удобной настройкой Unix shell:

    $ fompy
    
  • Создаём объект легированного полупроводника fompy.models.DopedSemiconductor:

    • задаём в качестве базового материала кремний fompy.materials.Si;
    • приводим значения для акцепторных концентрации Na и уровня Ea;
    • зануляем параметры донорной примеси Nd и Ed (считаем, что она отсутствует).
    >>> si_p = DopedSemiconductor(Si, 10**17, 0.3 * eV, 0, 0)
    

    Важно! Применение эВ требует домножения на величину fompy.constants.eV, равную значению 1 эВ в единицах СГС. Либо можно взамен воспользоваться функцией fompy.units.unit(), описанной в разделе Единицы измерения.

  • Находим концентрацию дырок (температура T = 300 К по умолчанию, уровень Ферми вычисляется автоматически):

    >>> n_p = si_p.p_concentration()
    >>> print("{:e}".format(n_p))
    3.778950e+15
    

Пример 2: определение проводимости

Требуется вычислить проводимость материала при заданных концентрации электронов nn = 2,0 · 1016 см−3 и дырок np = 8,5 · 1016 см−3, а также подвижности электронов μn = 3,9 · 103 см2 В−1 с−1 и дырок μp = 1,9 · 103 см2 В−1 с−1.

  • Подготавливаем интерпретатор Python:

    $ fompy
    
  • Находим проводимость с помощью подпрограммы fompy.models.conductivity(n, n_mob, p, p_mob). Здесь для перевода единиц измерения мы пользуемся функцией fompy.units.unit().

    >>> sigma = conductivity(2. * 10**16, 3900. * unit('cm^2 / V s'), 8.5 * 10**16, 1900. * unit('cm^2 / V s'))
    >>> print("{:e}".format(sigma))
    3.448655e+13
    

Лицензия

MIT

Помощь проекту и поддержка пользователей

Если вы желаете внести свой вклад в проект, следуйте инструкциям в файле CONTRIBUTING.md. На репозитории действуют правила поведения.

Предложения и пожелания по функционалу, наполнению проекта и исправлению ошибок принимаются на сайте репозитория в разделе Issues.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fti-fompy-0.4.0.tar.gz (28.0 kB view details)

Uploaded Source

Built Distribution

fti_fompy-0.4.0-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

Details for the file fti-fompy-0.4.0.tar.gz.

File metadata

  • Download URL: fti-fompy-0.4.0.tar.gz
  • Upload date:
  • Size: 28.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0

File hashes

Hashes for fti-fompy-0.4.0.tar.gz
Algorithm Hash digest
SHA256 b6ca7aef03e3a079083c6290d3ea8c1e2ba0ea99c62112fb5743f75fa8054cfb
MD5 f61a5de8672e962962d872d0c2fc9942
BLAKE2b-256 050cf5da32c2732a94662e59a4026a26bc2b50df840eaa9eb7afcf60ea2dcea7

See more details on using hashes here.

File details

Details for the file fti_fompy-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: fti_fompy-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0

File hashes

Hashes for fti_fompy-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8c3b15529c6dfe975f5d35e05b1068a58a388498013c1cdcc525440f34db3ef3
MD5 e72bdedc1c24643946880ab759123306
BLAKE2b-256 b9f7fab72e46d9b2f3236e2ae944cee802596bb86342fa2562078c8134f125a5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page