MATLAB and ABAQUS in synchrony
People use MATLAB to carry out optimization by:
a) importing value of a variable of interest from a .dat/.msg file
b) using this scalar in a mathematical model
c) updating the value by changing some parameter in the .inp file and running again until convergence is achieved
My question is: is it possible to do this in real time without having to wait for a run to finish? After a cursory look, it does not seem like UEXTERNALDB is going to be of much help or is it?
Your help is appreciated!
Ive had a quick look at doing something similar to this too, essentially allowing Abaqus to communicate with another process, but never tried anything in too much detail. Something I was considering was using external files and a user subroutine to communicate, but that seems pretty computationally costly and I dont know how youd tell the Abaqus executable to wait while the external code was updating the file.
Another option would be using a code coupling interface (i.e. MPCCI) which might be some help for what you need, dont think itll work for me.
Would be interested to hear if anyone else had any thoughts on this too...
I do not think updating the INP while ABAQUS is carrying out an analysis is a major roadblock. In fact, as soon as you run an analysis, ABAQUS doesnt even need the original INP. Indeed, one could even delete the INP and not have it interfere with the analysis.
And, although interesting in itself, MpCCI is not the way for me. I do not intend to run two FE simulations in parallel. Instead, I want to run an FE simulation along with an optimization algorithm running in parallel.
Thanks for your input @lumpwood
Does anyone think NumPy/SciPy could do the job?
I am a big fan of NumPy/SciPy. And yes, you should be able to script the external process using Python, and have Python call Abaqus.
Thanks Dr. Jorgen. I would like to know a little bit more about NumPy/SciPy before I jump in.
Lets say I am running an FE simulation wherein a 3D body is being stabilized by a bunch of actuators each of whose activation needs to be optimized by an optimization algorithm. Can NumPy/SciPy allow me to do that? I can do it with MATLAB. However, at the moment, I start with a guess and wait for the initial FE simulation to finish. Then, I import the values of interest in to MATLAB, run the code, and then feed the new values of the activations back in to the INP, and run the FE simulation again.
Can I accomplish this process without having to wait for the simulation to finish? I would like for the optimization code to be able to check the values of interest after every increment, and if they are not what they ought to be, re-run the simulation with new values of the activation parameter.