Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

⚡ SVM Circuit Simulator

SVM Circuit Simulator — это мощный инструмент для моделирования электрических цепей во временной области (Transient Analysis), основанный на Методе Переменных Состояния (State Variables Method).

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

🚀 Основные возможности

  • Универсальность: Поддержка R, L, C, независимых источников (V, I) и управляемых источников (VCCS/Транзисторов).
  • Топологический анализ: Автоматическое построение ориентированного графа, выделение Дерева и Хорд, формирование М-матрицы (матрицы главных контуров).
  • Математическое ядро:
    • Автоматическая генерация матриц состояния A и B.
    • Решение системы дифференциальных уравнений $\dot{X} = A X + B U$.
  • Умная автоматизация:
    • Auto-Grounding: Если в схеме нет земли (узла 0), программа назначит её автоматически.
    • Smart Time Step: Автоматическое определение шага интегрирования (от секунд для LC-контуров до пикосекунд для микроэлектроники).
  • Визуализация: Генерация высококачественных графиков (PNG) для каждой переменной состояния с помощью библиотеки ScottPlot.

🛠️ Требования

  • .NET SDK (6.0 или выше)
  • NuGet пакеты:
    • MathNet.Numerics (Линейная алгебра)
    • ScottPlot (Построение графиков)

📂 Структура проекта

Архитектура приложения разделена на логические модули:

Файл Описание
Program.cs Точка входа. Обработка пользовательского ввода, управление циклом симуляции и меню.
CircuitReader.cs Парсер входных файлов (.txt). Преобразует текст в объекты компонентов.
SimulationEngine.cs Движок симуляции. Отвечает за цикл времени, применение метода и управление данными.
Solver.cs Математическое ядро. Строит матрицы A и B путем решения линеаризованной схемы методом узловых потенциалов.
TopologyAnalyzer.cs Графовый анализатор. Строит дерево, находит циклы и формирует М-матрицу.
GraphPlotter.cs Модуль визуализации. Сохраняет результаты расчетов в папку ResultPlots.
Component.cs Модель данных электронного компонента.

💻 Как пользоваться

1. Подготовка схемы

Схемы хранятся в папке InputCircuit (создается автоматически при запуске). Формат файла — текстовый (Netlist), похожий на SPICE.

Формат строки:

ИМЯ   ТИП   ЗНАЧЕНИЕ   УЗЕЛ1   УЗЕЛ2   [УПР_УЗЕЛ1   УПР_УЗЕЛ2]
  • Узел 0 всегда считается Землей (GND).

Поддерживаемые компоненты:

Тип Обозначение Пример в файле Описание
Резистор R R1 R 100 1 2 Резистор 100 Ом между узлами 1 и 2
Конденсатор C C1 C 1e-6 2 0 Емкость 1 мкФ между узлом 2 и землей
Индуктивность L L1 L 0.001 2 3 Индуктивность 1 мГн
Источник Напряжения V Vin V 5.0 1 0 Идеальный источник ЭДС 5В
Источник Тока J / I J1 I 0.1 2 0 Идеальный источник тока 0.1А
Транзистор (VCCS) VCCS T1 VCCS 0.02 2 0 1 0 Источник тока, упр. напряжением (S=0.02)

Примечание для VCCS: Формат Имя VCCS Крутизна(S) Сток Исток Затвор Исток.

2. Запуск

Откройте терминал в папке проекта и выполните:

dotnet run

3. Интерактивный режим

  1. Программа покажет список файлов в папке InputCircuit.
  2. Введите имя файла (например, testLC.txt).
  3. Настройка времени: Нажмите Enter, чтобы использовать авто-подобранные параметры ($T_{end}$, $dt$), или введите свои значения.
  4. Начальные условия: Вы можете задать начальные напряжения в узлах.
    • Пример: 1=5.0 2=10.0 (Узел 1 = 5В, Узел 2 = 10В).
    • Нажмите Enter, чтобы стартовать с нулей.

4. Результаты

  • В консоли будут выведены:
    • Ветви дерева и хорды.
    • Матрица главных контуров (M-Matrix).
    • Матрица системы A.
    • Уравнения состояния в символьном виде.
    • Таблица значений в ходе симуляции.
  • Графики сохраняются в папку ResultPlots/{ИмяФайла_Время}/. Для каждой переменной создается отдельный PNG файл.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages