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