Share:

ANSYS-2012-R1

MATLAB Apps For ANSYS Products: Updated for ANSYS 17.0

In 2013, I wrote a blog showing ANSYS users how to make MATLAB apps for ANSYS Fluent. Just as a quick reminder, a friend of mine, who is also an ANSYS Fluent and Mechanical APDL user has a Windows Matlab code programming a Linux Fluent session. She had just updated her hardware. Everything is moved to Linux. She also needed to integrate a Mechanical APDL session.

She was asking me: “Why, can't I port my MATLAB®  code running on the platform of my choice and be able to also connect to Mechanical APDL?" She challenged me to to create a less than 20 lines code example. Back in 2013, my example was for ANSYS 16.0. Here is my update for ANSYS 17.0.

Software:

  1. Fluent
  2. Mechanical APDL
  3. Workbench
  4. MATLAB

Hardware:

  1. Network of computers with ANSYS or MathWorks software installed

Instructions:

  1. Download ANSYS aaS Matlab toolbox (supports Matlab R2014b to 2016a) from ANSYS Customer Portal
  2. Open the folder where the mltbx has been downloaded in a Matlab folder view.
    • double click on it and follow instructions to install
  3. Start the ANSYS products in aaS mode
    • Read the downloaded pdf for suggestions
  4. Collect the aaS keys (aas_FluentId.txt, aaSMapdlId.txt and aaS_WbId.txt)  and transfer them to the MATLAB machine
    • These are the “keys” required to connect with ANSYS aaS products.
  5. Now let’s code. What should it do? Well, I will keep it simple: one command per ANSYS product:
    • ask a report from Fluent
    • set a variable in Mechanical APDL
    • retrieve the Workbench Schematic
%initialize aaS orb=initialize_orb(); load_ansys_aas(); %connect to ANSYS products iCoFluentUnit=actfluentserver(orb,'aaS_FluentId.txt'); iCoMapdlUnit=actmapdlserver(orb,'aaS_MapdlId.txt'); actwbserver('aaS_WbId.txt') %execute a Fluent TUI command iFluentTuiInterpreter=iCoFluentUnit.getSchemeControllerInstance(); fluentResult=iFluentTuiInterpreter.doMenuCommandToString('report summary') %execute a Mechanical APDL command mapdlResult=char(iCoMapdlUnit.executeCommandToString('aas_param=22')) %retrieve the content of the remote Workbench Schematic execwbcommand('systems=GetAllSystems()') querywbvariable('systems')

Well, all in all I used only 19 lines of code. My friend added her own code to create her elegant and efficient so-simulation.

Thank you for reading.

Share: