{
  "id": "pm-demagnetization-margin",
  "lesson_ids": [
    "II07.4",
    "meas-bh-losses",
    "II10.2"
  ],
  "title": "N35SH при 20 и 150 °С: локальный запас против размагничивания",
  "intro": [
    "Постоянный магнит работает во втором квадранте характеристики: внешнее поле и поле реакции якоря могут уменьшать его магнитную поляризацию. При высокой температуре остаточная индукция и устойчивость к обратному полю уменьшаются. Для проверки нужен локальный компонент H вдоль направления намагничивания каждого магнита.",
    "В отдельной копии собственной SPM выбрана марка Arnold N35SH, а исходные безымянные магниты сохранены. URL производителя содержит старое имя N35H, но скачанный полный PDF и его внутренний заголовок соответствуют N35SH Rev210607; идентичность файла подтверждается SHA-256."
  ],
  "theory": [
    {
      "heading": "Какая напряжённость нужна для проверки",
      "paragraphs": [
        "Возвратная прямая магнита записывается как B∥=Br+μ₀μвозвH∥. Следовательно, физический H∥ можно независимо восстановить из проекции рассчитанного B. Знак проекции меняется вместе с намагничиванием соседнего полюса.",
        "Эта независимая формула особенно полезна при интерпретации внутренних переменных FEMM: сохранены и нативная сырая проекция H, и восстановленное физическое значение. Для решения о материале используется последнее, согласованное с возвратной прямой.",
        "Величина Hк90 получена по оцифрованной кривой, где поляризация J=B−μ₀H составляет 90 % выбранного уровня. Это заранее выбранный инженерный критерий графического сравнения, а не универсальная физическая граница полного размагничивания."
      ],
      "formulas": [
        {
          "latex": "H_{\\parallel}=\\frac{\\mathbf B\\cdot\\mathbf e_{\\mathrm{маг}}-B_r}{\\mu_0\\mu_{\\mathrm{возв}}},\\qquad J=B-\\mu_0H",
          "explanation": "eмаг — единичный вектор местного направления намагничивания, включая знак полюса."
        },
        {
          "latex": "\\Delta H_{\\mathrm{конс}}=\\min_{\\mathrm{магниты}}H_{\\parallel}-H_{\\mathrm{к90}}-\\Delta H_{\\mathrm{граф}}",
          "explanation": "Принятый запас графической оцифровки ΔHграф=20 кА/м вычитается консервативно."
        }
      ]
    },
    {
      "heading": "Температура и предел выводов",
      "paragraphs": [
        "Две температуры и два режима токов дают восемь полей на двух сетках магнитов. При 20 °С оба режима имеют большой запас относительно выбранной кривой. При 150 °С номинальный ток сохраняет небольшой положительный запас, а отрицательный d-ток −30 А попадает в область недостаточного запаса.",
        "Сеточная проверка необходима, поскольку максимум обратного поля часто расположен возле кромки магнита. Сравниваются одинаковые контрольные точки и отдельно минимум каждого из четырёх полюсов; один усреднённый магнит не отражает локальную опасность.",
        "Линейная возвратная модель сохраняет заданный Br и после опасного режима. Она обнаруживает риск выхода за выбранную границу, но не вычисляет необратимую потерю поляризации и остаточный момент после события. Для этого нужна модель истории материала и новая рабочая прямая."
      ],
      "formulas": [
        {
          "latex": "B_r(T)\\approx B_r(T_0)\\left[1+\\alpha_{B_r}(T-T_0)\\right]",
          "explanation": "Линейная температурная поправка допустима лишь в диапазоне, подтверждённом характеристиками производителя; Hк90 берётся отдельно из соответствующей кривой."
        }
      ]
    }
  ],
  "parameters": [
    {
      "name": "Температуры",
      "value": "20;150",
      "unit": "°С"
    },
    {
      "name": "Номинальные токи d/q",
      "value": "0/5",
      "unit": "А"
    },
    {
      "name": "Проверочные токи d/q",
      "value": "−30/0",
      "unit": "А"
    },
    {
      "name": "Сетка магнитов",
      "value": "0,8;0,4",
      "unit": "мм"
    },
    {
      "name": "Запас оцифровки",
      "value": 20,
      "unit": "кА/м"
    }
  ],
  "steps": [
    "Откройте паспорт N35SH и N35SH-digitized-curves.json. Проверьте марку, редакцию и температурные кривые.",
    "Запустите reproduce.py: новое поле проверяется по токам, Ψ и физическому H∥ в точках минимумов.",
    "Полные программы, названные далее, запускайте через run-series.py из корня распакованного комплекта: выберите SERIES_NUMBER по списку README.html. Диспетчер сам устанавливает подпапку и контекст исходной программы; прежний рабочий каталог FEMM не важен.",
    "Для восьми исходных полей выполните reference/native-demagnetization.py встроенным Python. Сравните обе сетки и все четыре полюса.",
    "Вычислите консервативный запас по формуле. Отделите «запас положителен» от «потеря намагниченности вычислена»: второе этой постановкой не устанавливается.",
    "Объясните, почему нулевая температура источника тока и горячий магнит требуют разных исходных свойств; изменение материала фиксируйте новым файлом."
  ],
  "table": {
    "columns": [
      {
        "key": "temp",
        "label": "Температура",
        "unit": "°С"
      },
      {
        "key": "mode",
        "label": "Режим",
        "unit": ""
      },
      {
        "key": "mesh",
        "label": "Сетка",
        "unit": "мм"
      },
      {
        "key": "br",
        "label": "Bᵣ",
        "unit": "Тл"
      },
      {
        "key": "hmin",
        "label": "Минимальный H∥",
        "unit": "кА/м"
      },
      {
        "key": "hk",
        "label": "Hк90",
        "unit": "кА/м"
      },
      {
        "key": "margin",
        "label": "Запас с оцифровкой",
        "unit": "кА/м"
      }
    ],
    "rows": [
      {
        "temp": 20,
        "mode": "Номинальный",
        "mesh": 0.8,
        "br": 1.21,
        "hmin": -485.3575643310207,
        "hk": -1511.6184091542286,
        "margin": 1006.2608448232079
      },
      {
        "temp": 20,
        "mode": "Размагничивающий",
        "mesh": 0.8,
        "br": 1.21,
        "hmin": -528.81944477294,
        "hk": -1511.6184091542286,
        "margin": 962.7989643812887
      },
      {
        "temp": 20,
        "mode": "Номинальный",
        "mesh": 0.4,
        "br": 1.21,
        "hmin": -483.7217065386327,
        "hk": -1511.6184091542286,
        "margin": 1007.8967026155959
      },
      {
        "temp": 20,
        "mode": "Размагничивающий",
        "mesh": 0.4,
        "br": 1.21,
        "hmin": -525.0003024874111,
        "hk": -1511.6184091542286,
        "margin": 966.6181066668175
      },
      {
        "temp": 150,
        "mode": "Номинальный",
        "mesh": 0.8,
        "br": 1.02124,
        "hmin": -410.23209153856646,
        "hk": -443.37213865056617,
        "margin": 13.14004711199971
      },
      {
        "temp": 150,
        "mode": "Размагничивающий",
        "mesh": 0.8,
        "br": 1.02124,
        "hmin": -454.52054482613016,
        "hk": -443.37213865056617,
        "margin": -31.148406175563984
      },
      {
        "temp": 150,
        "mode": "Номинальный",
        "mesh": 0.4,
        "br": 1.02124,
        "hmin": -408.85876050170174,
        "hk": -443.37213865056617,
        "margin": 14.513378148864431
      },
      {
        "temp": 150,
        "mode": "Размагничивающий",
        "mesh": 0.4,
        "br": 1.02124,
        "hmin": -451.37668899147775,
        "hk": -443.37213865056617,
        "margin": -28.004550340911607
      }
    ]
  },
  "series": [
    {
      "title": "Запас при номинальном токе, сетка 0,4 мм",
      "x_label": "Температура, °С",
      "y_label": "Консервативный запас, кА/м",
      "points": [
        [
          20,
          1007.8967026155959
        ],
        [
          150,
          14.513378148864431
        ]
      ]
    },
    {
      "title": "Запас при iд=−30 А, сетка 0,4 мм",
      "x_label": "Температура, °С",
      "y_label": "Консервативный запас, кА/м",
      "points": [
        [
          20,
          966.6181066668175
        ],
        [
          150,
          -28.004550340911607
        ]
      ]
    }
  ],
  "scope": [
    "Графический критерий J90 и запас 20 кА/м — объявленная методика учебной проверки; паспортные допуски партии и измеренная температура отсутствуют.",
    "Отрицательный запас означает опасный или неопределённый режим относительно выбранной кривой, а не уже вычисленный процент необратимого размагничивания.",
    "Статическое поле не воспроизводит короткое замыкание во времени. Для реального КЗ нужно получить физически согласованные токи и температуры, затем проверить локальные состояния.",
    "Локальные минимумы относятся к конечной выборке точек исходной программы при включённом сглаживании поля (Smooth). Они не являются строгой нижней границей H у идеальных острых кромок; для проектной проверки нужны сгущение выборки и согласованное исследование сглаживания и геометрии кромки."
  ],
  "sources": [
    {
      "title": "Arnold. N35SH Rev210607, полный паспорт и температурные кривые",
      "url": "https://www.arnoldmagnetics.com/wp-content/uploads/2017/11/N35H-151021.pdf"
    },
    {
      "title": "Руководство FEMM 5, разделы магнитного поля и встроенного Python",
      "url": "https://www.femm.info/doku/lib/exe/fetch.php?media=femm-qt:docs:manual.pdf"
    }
  ],
  "checks": [
    {
      "name": "Арифметическая невязка запаса при 150 °С: номинальный, кА/м",
      "value": 1.7763568394002505e-15,
      "limit": "< 10⁻⁹; физический знак запаса показан в таблице",
      "passed": true
    },
    {
      "name": "Арифметическая невязка запаса при 150 °С: размагничивающий, кА/м",
      "value": 2.842170943040401e-14,
      "limit": "< 10⁻⁹; физический знак запаса показан в таблице",
      "passed": true
    }
  ],
  "downloads": [],
  "python": {
    "path": "downloads/audit-native/pm-demagnetization-margin/reproduce.py",
    "description": "Распакуйте ZIP целиком в новую папку. Выполните reproduce.py встроенным Python FEMM 5: проверяются хеши, заново решаются контрольные поля и пересчитываются численные проверки таблиц. Рабочий каталог определяется по пути сохранённого сценария. Полные программы запускайте через run-series.py; номер SERIES_NUMBER выбирается по списку в README.html."
  },
  "provenance": {
    "origin": "Неизменённые ранее выполненные расчёты FEMM 5 и новый читаемый разбор",
    "runtime": "FEMM 5.0 06Oct2026; встроенный MicroPython; без внешнего Python/COM/TCP",
    "files": [
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/Arnold-N35SH-Rev210607-complete.pdf",
        "path": "reference/Arnold-N35SH-Rev210607-complete.pdf",
        "sha256": "61e95e16002d5d53bec459677afc2c02f7d679d698fdf5c8ddc19e2ba7886df4",
        "bytes": 248302
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/Arnold-N35SH-Rev210607-complete.receipt.json",
        "path": "reference/Arnold-N35SH-Rev210607-complete.receipt.json",
        "sha256": "70da4d9ebb8c15bbe2c0bdc9ff228d19c05bc1ab323a978065fcf481d3ca2bcd",
        "bytes": 513
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/checks.json",
        "path": "reference/checks.json",
        "sha256": "3547ec1486ec25c1a89f1a1e05e91ddda15122c81085acb92ec90bff3b941f9e",
        "bytes": 4859
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/complete-plan.json",
        "path": "reference/complete-plan.json",
        "sha256": "738f143b3876717ac26a4610f963e3cfc2e9c8d339c22c781e01da81414d2167",
        "bytes": 3017
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/control-0.fem",
        "path": "reference/control-0.fem",
        "sha256": "85901da25dd1c6c9d7d2b4050c308efd18006fecb8a4ed306d4b947b454093a5",
        "bytes": 18124
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/control-1.fem",
        "path": "reference/control-1.fem",
        "sha256": "5c8034c91e02c03da6e9a0a1a37d53857fd85d38887e1d10d1924920e0ca120f",
        "bytes": 18144
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/key-cases.json",
        "path": "reference/key-cases.json",
        "sha256": "1c4aa06e58255976bf7f8e75ccf31c0e251e39c7a7c3f93871e43037ab372b3a",
        "bytes": 5026
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/material-sources.json",
        "path": "reference/material-sources.json",
        "sha256": "9336e4e1cf5697ace0671ae578391e76c8bbe560347b41e093e83d6d64be59d6",
        "bytes": 658
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/materialized-models.json",
        "path": "reference/materialized-models.json",
        "sha256": "dd7db38e71cb32bc891fc2a7696bbec7ca8e2a53e1f974df14d10c8b23b806f5",
        "bytes": 2269
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/N35SH-150C-magmesh-0.4-source-model.fem",
        "path": "reference/N35SH-150C-magmesh-0.4-source-model.fem",
        "sha256": "67bf515d8f7cd2110200c6f4ffefd208f802d8527615030299d193a0b674b795",
        "bytes": 18033
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/N35SH-150C-magmesh-0.8-source-model.fem",
        "path": "reference/N35SH-150C-magmesh-0.8-source-model.fem",
        "sha256": "95ccaec71dc533412cb3cdb2bfc687f932a981c81f722f77539babc73300d086",
        "bytes": 18033
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/N35SH-20C-magmesh-0.4-source-model.fem",
        "path": "reference/N35SH-20C-magmesh-0.4-source-model.fem",
        "sha256": "48a59226fa49fee3704d572f9e3a8e96c4996be1c9e11e934f5577821517cda8",
        "bytes": 18033
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/N35SH-20C-magmesh-0.8-source-model.fem",
        "path": "reference/N35SH-20C-magmesh-0.8-source-model.fem",
        "sha256": "473669d59e729604df9f51895bdaabed76f74085d60894a13787a131da7cb60e",
        "bytes": 18033
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/N35SH-Hk90.csv",
        "path": "reference/N35SH-Hk90.csv",
        "sha256": "af4ac45d60e415716c2821cc5f4e2cfe57eff90a3b76b37355178eaff1da427c",
        "bytes": 463
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/native-demagnetization.py",
        "path": "reference/native-demagnetization.py",
        "sha256": "17f09f4f03bc278e137db250b751fff4b4538312229958fa60aba95448e88eaa",
        "bytes": 8579
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/native-receipt-22.json",
        "path": "reference/native-receipt-22.json",
        "sha256": "8a75d4e2938e8b7c9143c683cdf70891c2d9a5978005b1c96b036a1d8c50f449",
        "bytes": 10225
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/native-receipt-29.json",
        "path": "reference/native-receipt-29.json",
        "sha256": "d9d2595255e820e14cebd17b39e89705933b27db2f973671a1d46dea664ce7fc",
        "bytes": 11840
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/native-steel-loss-map.py",
        "path": "reference/native-steel-loss-map.py",
        "sha256": "53d450c0845088b277ea5df4953cdd6e0e4aac6c6f4c97b5aad594d57932281c",
        "bytes": 10477
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/original-00.py",
        "path": "reference/original-00.py",
        "sha256": "00dbef5a9aabd393db656e21672028060f11e190e9aa4c11f356b4b594781d0d",
        "bytes": 1326
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/practice-ii07-4-source-model.fem",
        "path": "reference/practice-ii07-4-source-model.fem",
        "sha256": "bd549ade9efa0dd638ab057015ae7cb67c4673f5f9610f875e6a5418da53ab50",
        "bytes": 17387
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/REPORT.md",
        "path": "reference/REPORT.md",
        "sha256": "8d74e113b6e9088e330fbbbabeeb445cf3ec787551a4ce30702ea37c9ca0673c",
        "bytes": 17043
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/reproduce.py",
        "path": "reference/reproduce.py",
        "sha256": "4a23cea18fb0e33926c7211f2c7e889e4ead3f10b42455377876b7036a1ad146",
        "bytes": 2987
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/result.json",
        "path": "reference/result.json",
        "sha256": "cc1b7d55d3f12fd26902df90bc61fb1e26d964c9bf67c505c8b8a91fa76fdbb9",
        "bytes": 29875
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/source-manifest.json",
        "path": "reference/source-manifest.json",
        "sha256": "62af6fcdebf3c6bf1ad85b0765c96878ec0dc1b970782910e638ed296f855b74",
        "bytes": 3604
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/source-task.json",
        "path": "reference/source-task.json",
        "sha256": "f481a8d36032a7dc84ff49950baa835a3541a285f9d3db147a5acdbdc6503b38",
        "bytes": 114160
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/voestalpine-isovac-range-January2026-complete.pdf",
        "path": "reference/voestalpine-isovac-range-January2026-complete.pdf",
        "sha256": "9a4821b89fa202e5914cf65063536eea049a904708489981ef160d25eeb00a2c",
        "bytes": 3309980
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii07-4/A/measurements.json",
        "sha256": "510832396084d299639cf7cad46f99f174e4f2b3efcf3c42a66084a53783703b",
        "bytes": 18644755,
        "extraction": "material-summary.json and steel-cells.csv; original retained unchanged in author workspace"
      }
    ],
    "native_key_fields_per_replay": 2,
    "full_series_entrypoints": [
      "reference/native-demagnetization.py"
    ],
    "source_models_mutated": false,
    "original_check_reports": [
      {
        "path": "reference/checks.json",
        "checks": 20,
        "passed": 20
      }
    ],
    "native_replay": {
      "passed": true,
      "fresh_fields": 2,
      "checks": 34,
      "runtime_sha256": "6a79ed0e882d054275347a1f267b57d04a31e900beaa7f6a6251487ed2e1df1b",
      "launch_cwd_differs_from_package": true
    }
  }
}