Matrix Transfer*
Fortunately there is a Matrix Market format sponsored by NIST that is also supported by Ansys and Matlab. There are two very useful MATLAB functions created just for this purpose:
- mmread.m for reading in the Market Matrix file into MATLAB
- mmwrite.m for writing the matrix into a Matrix Market file
Writing Matrix or Arrays from Ansys to be Read by MATLAB
In Ansys...
/prep7
*dim, c,, 10,10, 1 ! Example Matrix
enow = 0
*do, ct, 1, 10
*do, ct2, 1, 10
c(ct,ct2) = ct*ct2
*enddo
*enddo
!!! Writes out Matrix to matlab
*dmat, exportmatrix, D, import, APDL, c ! export to matrix file
*export, exportmatrix, mmf, mytemp.mtx
In MATLAB, the command is simply...
c = mmread('mytemp.mtx'); % mmread.m must is in working directory
Writing Matrix from MATLAB to be Read by Ansys
In MATLAB...
m = transpose(1:10) * (1:10); % example matrix
mmwrite('toansys.mtx', m, 'example matrix'); % writes out matrix
In Ansys...
*dmat, importmatrix, d, import, mmf, toansys.mtx ! imports
*dim, fromMatlab, array, 10, 10 ! pre-define matrix size
*export, importmatrix, apdl, fromMatlab, 1, 10
! writes out to apdl named fromMatlab, 1st column to 10th column
You may now access the matrix in Ansys for example via...
q = fromMatlab(3, 4)
*stat, q
Other Comments
The Harwell-Boeing format can also be an alternative that is also supported by *EXPORT. It might come in handy for large sparse matrix though I've not tried it myself.
nice
ReplyDeleteThanks, you are so selfless for share us. I learned a lot from you.
ReplyDelete