问题
I'm using Abaqus to run FEA simulations which include a material user subroutine (umat), written in Fortran 77 to define the material model. Currently I'm need to use data from the simulation (at run time) to train a machine learning algorithm (SVR or Random Forest Regression are yet to be chosen). Naturally most of the ML modules are in python, not in Fortran, so I have tried the following approach so far:
Within the UMAT I'm calling the python script via command line, the data is written in a csv file and used to train, the output is read back into the UMAT and the simulation continues.
It's working in toy models, although it turns out to be highly inefficient to keep calling the command line in the middle of the simulation and it's not feasible for real models.
The only alternative I could think was to code the ML algorithm in Fortran, in the subroutine itself, the problem is that it's not trivial to do it, SVR for instance requires the solution of an optimization problem using Lagrange multipliers, which the implementation if Fortran is quite sophisticated and extremely time consuming.
回答1:
I would rather check if CALL SYSTEM()
can be used along with the standard procedure of Abaqus. Using the system subroutine, one can run shell scripts known to the OS in use.
来源:https://stackoverflow.com/questions/58972538/how-to-run-ml-within-abaqus-material-subroutine