Я использую Abaqus для запуска имитаций FEA, которые включают подпрограмму пользователя материала (umat), написанную на Fortran 77 для определения модели материала. В настоящее время мне нужно использовать данные моделирования (во время выполнения) для обучения алгоритму машинного обучения (SVR или Random Forest Regression еще не выбраны). Естественно, большинство модулей ML находятся в python, а не в Fortran, поэтому я попробовал следующий подход:
В UMAT я вызываю скрипт python через командную строку, данные записываются в видеCSV-файл и используется для обучения, вывод считывается обратно в UMAT, и моделирование продолжается.
Это работает в игрушечных моделях, хотя оказывается крайне неэффективным продолжать вызывать командную строку в серединесимуляция, и она неосуществима для реальных моделей.
Единственная альтернатива, которую я мог придумать, - это код алгоритма ML в Fortran, в самой подпрограмме, проблема в том, что это не тривиально, например SVRтребует решения задачи оптимизации с использованием множителей Лагранжа, реализация которых, если Fortran достаточно сложна и требует много времени.