Skip to content


Switch branches/tags
This branch is 1 commit behind smdogroup:master.

Latest commit

* uningnore makefile, readme and f5 converters in extern dir

* Add `-lopen-pal` to f5 converter makefiles

* Ignore some more testing/installation output files

* Add extern install instructions to docs, remove extern readme to avoid duplication

* Add tecio build target

* Don't need to unignore extern readme anymore

* Add note on metis installation non-issue

* Add TECIO_INCLUDE and TECIO_LIB variables to

* Adding f5totec/f5tovtk compilation to CI

* Removing usr/include from f5totec makefile

* Minor CI script update

* Minor CI script update for f5tovtk

* Minor comment update in CI

Co-authored-by: trbrooks <>
Co-authored-by: Tim Brooks <>

Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Build, unit tests, and docs

TACS Overview

The Toolkit for the Analysis of Composite Structures (TACS) is a parallel finite-element code for analysis and gradient-based design of advanced structures. Originally, TACS was primarily designed as a tool for the analysis of shell structures, such as wing-boxes. More recently it has been extended to perform topology optimization of large three-dimensional structures using gradient-based methods.

TACS has been under continuous development since 2010 by the Structural and Multidisciplinary Design Optimization group at Georgia Tech and by the Multidisciplinary Design Optimization Lab at the University of Michigan.

Online documentation and examples is located at

How to cite TACS

If you use TACS, please cite one or more of the following papers.

This paper describes the time-dependent flexible multibody dynamics and adjoint capabilities implemented in TACS:

K. Boopathy and G. J. Kennedy. "Parallel Finite Element Framework for Rotorcraft Multibody Dynamics and Discrete Adjoint Sensitivities", 2019,

This paper describes the core functionality of TACS, including the adjoint-based gradient evaluation techniques it implements:

Kennedy, G. J. and Martins, J. R. R. A, "A parallel finite-element framework for large-scale gradient-based design optimization of high-performance structures", Finite Elements in Analysis and Design, 2014, doi:

These papers describe in detail the aggregation functional implementation in TACS:

Kennedy, G. J. and Hicken, J. E., "Improved Constraint-Aggregation Methods", Computer Methods in Applied Mechanics and Engineering, 2015, doi:

Kennedy, G. J., "Strategies for adaptive optimization with aggregation constraints using interior-point methods", 2015, doi:

Setting up and installing TACS

In addition to a working implementation of MPI, BLAS and LAPACK, TACS requires Metis 5.1 for mesh partitioning. The latest version of Metis can be obtained here. TACS can optionally use the approximate minimum degree ordering routines from AMD/UFConfig. These were distributed separately, but can now be obtained from SuiteSparse package. If you use AMD, be sure to define the TACS_HAS_AMD_LIBRARY flag within the configuration file.

To convert TACS FH5 output files to tecplot-compatible files, you must install TecIO. This can be placed in the tacs/extern directory. There is also a FH5 to VTK converter as well that produces (large) ASCII files.

Once the external dependencies are installed, copy to Open and follow the directions within to set the variables. In particular, set the following:

  1. TACS_DIR: the root directory of TACS
  2. CXX: the C++ compiler - must be MPI-enabled
  3. LAPACK_LIBS: the linking arguments for the LAPACK libraries
  4. METIS_INCLUDE/METIS_LIB: the include/linking arguments for METIS
  5. AMD_INCLUDE/AMD_LIBS: the include/linking arguments for AMD

Note that the default values can often be used without modification. Of all these options, it is most important for performance reasons to link to an optimized version of LAPACK, if possible.

Setting up the Python interface

The python interface (and all dependencies) can be created with a call to The contains the recommended defaults for the configuration script. For development, create a local development installation by executing

pip install -e .\[all\]

This command is also executed by the command make interface.

If the user does not intend to modify the source code and wishes to install the interface to their python site-packages, they can instead run

pip install .\[all\]

Converting FH5 files

The utility f5totec can be used to convert the .f5 files generated by TACS to tecplot .plt files. This utility is located under tacs/extern/f5totec/. I find it convenient to create a symbolic link to f5totec in a bin directory.


Finite-element library for analysis and adjoint-based gradient evaluation






No packages published


  • C++ 82.2%
  • Python 10.5%
  • Cython 3.9%
  • C 3.3%
  • Makefile 0.1%