Triforce is a new approach to the calculation of solvent-accessible surface areas of molecules with potential application to surface area based methods for determination of solvation free energies. As in traditional analytical and statistical approaches, this new algorithm reports both component areas and derivatives as a function of the atomic coordinates and radii. Unique to TRIFORCE are the rapid and scalable approaches for the determination of sphere intersection points and numerical estimation of the surface areas, derivatives, and other properties that can be associated with the surface area facets. The algorithm performs a special tessellation and semianalytical integration that uses a precomputed look-up table. This provides a simple way to balance numerical accuracy and memory usage. TRIFORCE calculates derivatives in the same manner, enabling application in force-dependent activities such as molecular geometry minimization. TRIFORCE is available free of charge for academic purposes as both a C++ library, which can be directly interfaced to existing molecular simulation packages, and a web-accessible application.

Envisioned, developed and implemented by:


This form can be used to upload a structure file and calculate semi-analytically solvent accessible surface areas.

Topology (optional)
Structure (.gro, .pdb)
Numerical detail
Logistic Smoother
Force Balance

TRIFORCE: Tessellated Semianalytical Solvent Exposed Surface Areas and Derivatives
Nils J. D. Drechsel, Christopher J. Fennell, Ken A. Dill, and Jordi VillĂ -Freixa
Journal of Chemical Theory and Computation 2014 10 (9), 4121-4132


TRIFORCE comes in 4 packages. triforce-lib contains the main library to calculate surface areas and solvations free energies. triforce-grids is comprised of integration tables which are vital for the calculations and default topologies in case there are none supplied by the user. triforce-dat contains scripts to generate the tables amongst other development stuff. Last but not least triforce-tool is a small command-line tool that interfaces with the library and produces the same output as displayed here on this website.


The following packages are required to build triforce:

The supported way to install triforce is via the boost-build. Installation can be invoked by changing in the triforce directory and executing b2. There are 2 build variants that can be chosen: "b2 double" will build a library which expects atomic coordinate and force memory cells to be of double precision on the calling program side (triforce internally will use floats). "b2 float" will make triforce expect float precision memory cells. The default installation directories are /usr/local/lib for the library and /usr/local/include for the header files. If these directories do not suit you, you can simply change them in the jamroot file. If header and library files for boost armadillo etc. are located in non-standard folders, you might have to add their path to the searchpath in the jamroot.


Open in new tab


For any enquiries, questions or comments, please send an email to nils [dot] drechsel [at] gmail [dot] com.