File Exchange

image thumbnail

FEATool Multiphysics - MATLAB FEA Physics Simulation Toolbox

version (94.7 MB) by Precise Simulation
FEATool Multiphysics - Physics Simulation Toolbox for MATLAB


Updated 30 May 2021

From GitHub

View Version History

View license on GitHub

FEATool Multiphysics (short for Finite Element Analysis Toolbox), is a fully integrated toolbox for modeling and simulation of coupled physics phenomena, partial differential equations (PDE), continuum mechanics and engineering problems.
FEATool Multiphysics aims to provide a truly *easy to use* and comprehensive *all-in-one* integrated simulation platform for all kinds of multi-physics analysis. By combining the best of intuitive *usability*, *extensibility*, and *customization* features, such as
- Graphical User Interface (GUI)
- Built-in geometry and CAD modeling tools
- Automatic grid and mesh generation
- Postprocessing and visualization
- Fully programmable and scriptable
makes FEATool Multiphysics a suitable simulation and modeling tool for everyone from students learning mathematical modeling, to researchers and engineers wishing to explore new ideas in a simple, fast, and convenient way.
1) Features
- Easy to use Graphical User Interface (GUI)
- Built-in and fully integrated geometry and CAD modeling tools, mesh
generation, multiphysics solvers, post-processing and visualization
- Pre-defined equations and multi-physics modes
+ Heat and mass transfer
+ Computational Fluid dynamics (CFD)
+ Structural mechanics
+ Electromagnetics
+ Classical PDE
- One-click seamless interfaces to external physics solvers
+ OpenFOAM® (CFD)
+ SU2 (CFD)
+ FEniCS / Firedrake (FEA)
- Full support for custom and user-defined PDEs
- Equation and expression parser (enter equations and coefficients as writing equations on paper without any programming)
- Process, export, and share results and data online with
ParaView and Plotly web plots
- Save and export models in
+ Binary file formats
+ MATLAB® m-file script format
+ GUI playback script format
- Fully programmable and scriptable with MATLAB® (including support for integration and embedding of simulation apps in custom applications and toolboxes)
2) Tutorials and Examples
Pre-defined automated modeling tutorials and examples for various multi-physics applications can be selected and run from the *File* > *Model Examples and Tutorials* menu option in the GUI.
Example script files and simulation models are also available in the examples folder of the FEATool program directory. Moreover, new tutorials and articles are periodically published on the FEATool Technical Articles Blog
3) Basic Use
FEATool Multiphysics and the GUI has been specifically designed to be as easy to use as possible, and making learning multiphysics simulation by experimentation possible.
The standard modeling process is divided into six different steps or modes
- *Geometry* - Definition of the geometry to be modeled
- *Grid* - Subdivision of the geometry into smaller grid cells suitable for computation
- *Equation* - Specification of physics, material parameters, and coefficients
- *Boundary* - Boundary conditions specify how the model interacts with the surrounding environment (outside of the geometry)
- *Solve* - Solution and simulation of the defined model problem
- *Post* - Visualization and postprocessing of simulation results
These modes can be accessed by clicking on the corresponding buttons in left hand side Mode toolbar. Each mode has specialized and different Tools available in the toolbar that will be activated when selected. Additional and advanced mode options are also be available in the mode menus.
Basic usage and how to set up and model fluid flow past an obstacle is explained in the linked video tutorial
*) Documentation
The full FEATool Multiphysics Documentation Suite is available online, and by selecting the corresponding option in the Help menu of the FEATool GUI.

Cite As

Precise Simulation (2021). FEATool Multiphysics - MATLAB FEA Physics Simulation Toolbox (, GitHub. Retrieved .

Comments and Ratings (39)

Yang Tian

Thanks for your great toolbox!

Precise Simulation

@Joris Naudin If possible please use the user forum for reporting issues as this channel is not frequently monitored. And please submit your system information when reporting issues (Toolbox and MATLAB versions as well as system and OS).

Regarding your issue it is most likely that you don't have MPI parallelization libraries installed (please make sure compatible "mpirun" or "mpiexec" binaries are installed for your system.), alternatively run the solver in serial mode by setting the "Number of processors" field to 1.

Joris Naudin

Hi, I am interested in purchasing this product to use it for CFD + Heat transfert simulations.

However I am already experiencing problems with one of the Multi-Physic exemple: Multi-Simulation Heat Exchanger which doesn't work.

I get the following error at step 52 (Post-processing):
"openfoam: decomposePar call failed.

Line 0 in featool
Line 0 in featool
Line 0 in featool
Line 0 in featool
Line 0 in featool
Line 0 in featool
Line 0 in featool"

Please tell me how can I solve this.
Thank you very much

naveed ibrahim

thanks for every one who contributing in math work. Allot of students and researcher getting befits from exchanging the ideas and works.

Amee kd


mellah hacen

jie tang

xc h

very good

Jorge Arriagada

Dylan Gonzalez

Hi, I am not able to open .fes files. I get an error saying "could not find uicontrol with identifier edit xmin". Please help!

Precise Simulation

Please use the FEATool user forum for questions and technical issues.

Precise Simulation

@Shuyang Fan: Thank you for your review. FEATool does not specify specific units and can work with any system as long as you are consistent. So if you make your geometry in mm your equation/material coefficients must also be correspondingly specified/scaled to work in mm. For simplicity, if you use SI units for everything (geometry, material coefficients) you don't have to think about it.


what‘s the unit of the scale for the geometry? mm or m(SI unit?)?

Mohamed Azith


very useful and advanced

Precise Simulation

To assist with troubleshooting, please use the "Report Issue..." option under the "Help" menu in the FEATool GUI to report bugs and issues. If possible, please also include instructions how to reproduce the issue and system configuration (system, OS, MATLAB version etc).

bu an

'featool testt' failed to run in the command window of MATLAB R2019a. It returns following errors:
>> featool testt
Test suite: tutorials_tests
Test suite location: C:\Users\anonymous\Documents\MATLAB\Add-Ons\Collections\FEATool Multiphysics - MATLAB FEA Physics Simulation Toolbox
Log file: C:\Users\anonymous\AppData\Local\Temp\FEATool-test.log
04-May-2019 21:52:53

1 - 01_Quickstart\01_hole_in_plate1 .................... ERROR in 1.0 seconds
错误使用 featool
Error executing UI action: ["uipushtool","Standard.NewFigure",[],"ClickedCallback",[]]

出错 featool

出错 featool

出错 featool

出错 featool
2 - 01_Quickstart\02_heat_exchanger1 ................... ERROR in 0.2 seconds
错误使用 featool
Error executing UI action: ["uipushtool","Standard.NewFigure",[],"ClickedCallback",[]]
出错 featool
Test suite: tutorials_tests ....................................... FAILED in 5.3 seconds
In addition, tutorial examples return similar errors. I don't know what happens.

AJ Park

Precise Simulation

@Lledo Prades: Thank you for the issue report, there will be an update addressing this later this Spring. In the meanwhile you could try to scale your coordinates (by maybe a factor of 100 or 1000), alternatively if you upgrade and register FEATool you can manually set the grid size and have access to the advanced grid generation settings.

Lledó Prades

I designed a 2D geometry, which is similar to the one defined in the example “Flow around a cylinder”, but with bigger dimensions (162 x 76, being X and Y dimensions for the rectangle respectively, and for the circle the center is in (22,38), with y and x radius of 12).
When I tried to mesh it, changing to the Grid menu, the mesh procedure did not start, indicating a grid size of 12 (which is impossible to change with the toolbar). Moreover, I get the following error in the Command Window of MATLAB R2016b:
Error using matlab.ui.control.UIControl/set
While setting property 'SliderStep' of class 'UIControl':
Slider step line increment must be between 0 and 1.
Error in featool
Error in featool
Error while evaluating UIControl Callback
Could you please indicate me how I have to procedure for meshing this type of geometry?
Thanks in advance.

Precise Simulation

@Jack Jonyson: Thank you for trying FEATool and your review. If possible, please provide some constructive and actual feedback, in order to help us help you and improve the toolbox.

Jack Joynson

Precise Simulation

@Xiangyuan: Thank you for your interest in FEATool Multiphysics, please visit the website for full licensing and contact information.


Please leave contact numbers and email address for quotation and communication use. We will buy this software in the very near future. Regards.

Gabriel Hu

Precise Simulation

@Kate Xu: The equations and boundary condition are defined in the "Physics Mode" section of the FEATool User's Guide (

kate xu

Hi.How can I get the control equations of fluid dynamics that are solved for different efficient models in CFDTool?

Precise Simulation

@Xiangyuan: FEATool Multiphysics is neither developed nor licensed by the Mathworks and must therefore be licensed and installed separately using the Add-On toolbar (as described above).


Hi, my university has the official MATLAB license, but as I saw from the list of toolboxes, the FEATool Multiphysics is not included there. Does it mean that I need to buy the FEATool Multiphysics separately? Or, this toolbox is hiding somewhere in the list?

Precise Simulation

@Talha Zia: With the "Flow" checkbox in the "Equation Settings" dialog box in CFDTool you can switch the pre-defined Navier-Stokes equations on and off. Then you can enter the fluid parameters density, viscosity, and volume source/body force terms.

Talha Zia

How can I use Navier Stokes Equation in CFDTool?

Precise Simulation

@Kevin Chng The FEATool Multiphysics (and CFDTool) toolboxes are completely stand-alone, and do not depend on or require any additional Matlab toolboxes.

Kevin Chng

Does it required partial differential equation toolbox?

Precise Simulation

@Eric Andreescu It looks like you have a very nonlinear problem. For these to converge you typically need a very good initial guess (init) and/or lower the nonlinear relaxation parameter (nlrlx). You might also want to start introducing the nonlinearities bit by bit, and use the previous solution as initial guesses.

Eric Andreescu

I applied FEATool v1.7.1 to conduct the heat transfer analysis recently. However, the converge cannot achieved after thousands of times of attempts. Even though I spent two weeks on error checking, no improvement is achieved. Can you give me some suggestions? The following are the codes.
Thank you
Best wishes

%% Starting new model.
fea.sdim = { 'r', 'z' };
fea.geom = struct;
fea.geom = struct;
fea = addphys( fea, {@heattransfer, 1}, { 'T' } );

%% Geometry operations.
gobj = gobj_rectangle( 0.1143, 0.1223, 0, 0.0892, 'R1' );
fea.geom.objects{1} = gobj;
fea.grid = gridgen( fea, 'hmax', 0.001, 'itmax', 800 );

%% Constants and expressions.
fea.expr = { 'omega', '314.1593';
'g', '9.8';
'Lseal', '0.0892';
'SHstator', '645';
'rhostator', '8220.93';
'Tflowin', '424.85';
'Tosflow', '225.4214';
'Tcavityend', '524.5643';
'aveTcavity', '441.7945';
'c1', '0.1';
'c2', '1/3';
'RoutersZ', '0.1223';
'RinnerbZ', '0.1143';
'RoutersY', '0.1223';
'RinnerbY', '0.1143';
'vkinematicosZ', '1.9764e-06';
'VteosZ', '0.0014259';
'PrandtlosZ', '0.71736';
'TCosZflow', '0.050733';
'Lc', '0.0892';
'Nusselt', '5852.5638';
'TCQSiflow', '0.051241';
'vkinematicosY', '3.4149e-06';
'VteosY', '0.0012475';
'PrandtlosY', '0.72558';
'TCosYflow', '0.055714';
'vkinematicos', '1.5647e-06';
'Vteos', '0.002018';
'Prandtlos', '0.70811';
'TCosflow', '0.039489'};

%% Equation settings. = { 'T' }; = { 'sflag1' }; = { 'rho_ht', 'rho', 'Density', { 'rhostator' };
'cp_ht', 'C_p', 'Heat capacity', { 'SHstator' };
'k_ht', 'k', 'Thermal conductivity', { '3.739721e-9*(T+273.15)^3-7.945898004e-6*(T+273.15)^2+0.021263470082733*(T+273.15)+5.451796181807637' };
'u_ht', 'u', 'Convection velocity in r-direction', { '0' };
'w_ht', 'w', 'Convection velocity in z-direction', { '0' };
'q_ht', 'Q', 'Heat source', { '(3.739721e-9*(T+273.15)^3-7.945898004e-6*(T+273.15)^2+0.021263470082733*(T+273.15)+5.451796181807637)/r*Tr' };
'T0_ht', 'T_0', 'Initial condition for T', { 'Tflowin' } }; = 'r*rho_ht*cp_ht*T'' - r*k_ht*(Tr_r + Tz_z) + r*rho_ht*cp_ht*(u_ht*Tr_t + w_ht*Tz_t) = r*q_ht'; = { 'Temperature, T', 'T';
'Temperature gradient, T', { 'Tr', 'Tz' } }; = 1; = 0; = 0.5; = 0; = 0.25; = 1;

%% Boundary settings. = [ 4, 4, 4, 4 ]; = { 'bcr_ht', 'T = T_0', 'Temperature', { 'T_0' }, { 1, 1, 1, 1 }, [], { 0, 0, 0, 0 };
'bcc_ht', 'n.(-kgrad T) = 0', 'Convective flux/outflow', [], { 0, 0, 0, 0 }, [], { 0, 0, 0, 0 };
'bci_ht', 'n.(-kgrad T + rhoC_puT) = 0', 'Thermal insulation/symmetry', [], { 0, 0, 0, 0 }, { 'r*rho_ht*cp_ht*(nr*u_ht+nz*w_ht)*T' }, { '0', '0', '0', '0' };
'bcf_ht', '-n.(-kgrad T + rhoC_puT) = q_0 + h*(T_inf-T) + Const*(T_amb4-T4)', 'Heat flux', { { 'q_0', 'h', 'T_inf', 'Const', 'T_amb' } }, { 0, 0, 0, 0 }, { 'r*rho_ht*cp_ht*(nr*u_ht+nz*w_ht)*T+r*(', ')+r*(', ')*((', ')-T)+r*(', ')*((', ')^4-T^4)' }, { { '0', 'c1 *(g*VteosZ*sqrt( (T-Tflowin)^2 ) *(RoutersZ-RinnerbZ)^3/(vkinematicosZ^2) *PrandtlosZ)^c2 *TCosZflow /(RoutersZ-RinnerbZ)', 'Tflowin', '0', '0' }, { '0', 'c1*(g*Vteos*sqrt(( T-Tosflow )^2)*Lseal^3 /(vkinematicos^2) *Prandtlos)^c2 *TCosflow /Lseal', 'Tosflow', '0', '0' }, { '0', 'c1 *(g*VteosY*sqrt( (T-Tcavityend)^2 ) *(RoutersY-RinnerbY)^3/(vkinematicosY^2) *PrandtlosY)^c2 *TCosYflow /(RoutersY-RinnerbY)', 'Tcavityend', '0', '0' }, { '0', 'Nusselt *TCQSiflow /Lc', 'aveTcavity', '0', '0' } } }; = { 'Normal conductive heat flux, T', '-r*k_ht*(nr*Tr+nz*Tz)';
'Normal convective heat flux, T', 'r*rho_ht*cp_ht*(nr*u_ht+nz*w_ht)*T';
'Normal total heat flux, T', '-r*k_ht*(nr*Tr+nz*Tz)+r*rho_ht*cp_ht*(nr*u_ht+nz*w_ht)*T' }; = 1; = 0; = 0.5; = 0; = 0.25; = 1;

%% Solver call.
fea = parsephys( fea );
fea = parseprob( fea );

fea.sol.u = solvestat( fea, ...
'tstep', 0.1, ...
'icub', 2, ...
'nlrlx', 1, ...
'toldef', 1e-06, ...
'tolchg', 1e-06, ...
'reldef', 0, ...
'relchg', 1, ...
'maxnit', 50, 'init', { 'T0_ht' }, 'solcomp', 1 );

%% Postprocessing.
postplot( fea, ...
'surfexpr', 'T', ...
'colorbar', 1, ...
'solnum', 1 );

Precise Simulation

@Alberto Dear Alberto, Thank you for your comment and interest. FEATool is in the process of being updated and redesigned so please use CFDTool until FEATool v1.9 is made available. The OpenFOAM interface will also be integrated and made available in CFDTool from version 1.2, so keep an eye out for that too.


I downloaded the files but I can only find the file CFDTool.mlappinstall which installs CFDtool 1.0 not FEATool. I am interested in trying out for personal use FEATool 1.8, which also uses openfoam. This page says FEATool 1.8, so I am a bit confused. Can you help?
Thank you

MATLAB Release Compatibility
Created with R2019a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!