I switched from ABAQUS to ANSYS for my current research, though I am more familiar with ABAQUS. I currently have all the APDL for my model and want to do parametric analysis which requires about 7 to 8 hours for the calculation of one model with 2 cores. To improve the efficiency of running macro files in ANSYS, I decide to use MATLAB to run ANSYS.
I never used this function before and I am also a beginner in ANSYS. I searched on Google and found there are different ways to realize this function. I asked a friend for help and she sent me three files, but I still cannot understand how to do. So I focused on her method and searched again. The descriptions are not so friendly for beginners, at least for me. How I hope there was a tutorial explaining how to run ANSYS with MATLAB for parametric study. After tried and tried again, finally I could run the model one by one automatically. I decided to record the method in this article and hope I can help someone else.
First file: run_ansys.bat
SET ANS_CONSEC=YES SET ANSYS_LOCK=OFF SET KMP_STACKSIZE=1024k "C:\Program Files\ANSYS Inc\v181\ansys\bin\winx64\ANSYS181.exe" -b -i ansysinputreader.txt -o out.txt
The codes in the last line means ANSYS will read the ansysinputreader.txt file and store output to out.txt file. It should be noted that the default value for KMP_STACKSIZE is 512k, which may not be able to run your analysis. So you can set the value for your case. When I set it to 2048k (2 cores) in my laptop, it showed no responding in task manager. Thus, this value cannot be too large to be the same case as mine.
Second file: ansysinputreader.txt
This file tell ANSYS which file to be run and also the location of the file. One thing I should record is that I tried many times and the output file showed it could not find test.txt file. Latter I found it worked if I just use
test,'txt' , while all the sources I could find online use
'test','txt'. I think this difference may be caused by different versions of ANSYS.
After you have the two files and then you can run the following codes in MATLAB. I put all the files in the same folder to avoid any error resulting from location of files.
Run in MATLAB:
cd 'C:\ANSYS\paper1' !run_ansys.bat
After you successfully run the APDL codes in test.txt file, you will have out.txt file in your folder (defined in the first file) and the following codes will be in this file. You can also find errors, if any, in this file.
***** ANSYS COMMAND LINE ARGUMENTS ***** BATCH MODE REQUESTED (-b) = LIST INPUT FILE COPY MODE (-c) = COPY RELEASE= Release 18.1 BUILD= 18.1 UP20170403 VERSION=WINDOWS x64 CURRENT JOBNAME=file 12:50:41 DEC 19, 2019 CP= 0.281 1 /INPUT,test,'txt','C:\ANSYS\paper1\',,0 RUN SETUP PROCEDURE FROM FILE= C:\Program Files\ANSYS Inc\v181\ANSYS\apdl\start.ans /INPUT FILE= C:\Program Files\ANSYS Inc\v181\ANSYS\apdl\start.ans LINE= 0 /INPUT FILE= C:\ANSYS\paper1\test.txt LINE= 0 *** ANSYS - ENGINEERING ANALYSIS SYSTEM RELEASE Release 18.1 18.1 *** ANSYS Mechanical Enterprise 00000000 VERSION=WINDOWS x64 12:50:41 DEC 19, 2019 CP= 0.375
I want to do parametric analysis with ANSYS and thus I should use MATLAB to run different models one by one. I used a for loop in MATLAB to write the second file test.txt everytime and then run bat file. The simplified codes of for loop is demonstrated below. I used
disp(wind_speed)to remind me which model has been run.
matrix = [60,70,80]; for wind_speed = matrix fileID = fopen(filename, 'w+'); fprintf(fileID, '/CLEAR \n'); fprintf(fileID, '/PREP7 \n'); fclose(fileID); !run_ansys.bat cd 'C:\ANSYS\paper1' disp(wind_speed) end