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

ReplyDelete