A Review of EFDC Versions
Environmental Fluid Dynamics Code (EFDC) is a state-of-the-art, multifunctional surface water modeling engine that includes hydrodynamic, sediment-contaminant, and eutrophication components designed to simulate aquatic systems in one, two, and three dimensions. EFDC has become one of the most widely used modeling systems in the world. Following the initial development of EFDC in 1980 by Dr. John Hamrick while he was at Virginia Institute of Marine Science, it has been used by many consultants and organizations. Over the years, multiple versions of EFDC developed and supported by different organizations have come become available. This post reviews some of these versions and provides the key differences among them.
When Hamrick moved to Tetra Tech in 1996, the US EPA continued to support the development of the code until the late 2000s. The most recent available source code is the EFDC EPA/GVC version is from around 2010. A wide range of users in the governmental, and private sectors also continued to develop their own forks of EFDC. Some of these forks are not publicly available. Scott James from SNL also continued to develop the code and the publicly available version is referred to as EFDC_SNL. DSI continued developing EFDC and it is now known as EFDC+. It is one of the most used versions of EFDC available to the scientific and engineering community. A broad comparison of the capabilities of different versions of EFDC is presented below.
- EFDC EPA/GVC is made available by the U.S. Environmental Protection Agency (EPA). Currently, only the executable is downloadable from the EPA website. The last update available is from 2007 and while considered “open-source,” the source code is not available from EPA.  DSI however, recently uploaded the source code for EFDC EPA/GVC version on Github, and detailed instructions on how to compile it using the Intel One Fortran compiler.
- SNL-EFDCis maintained by Sandia National Laboratories (SNL). SNL-EFDC is open-source and available at net though it hasn’t been updated since 2013. SNL-EFDC is aimed at researchers in the marine renewable energy industry, adding modeling of marine hydrokinetic energy (MHK) turbines, including the MHK turbulent kinetic energy and its dissipation. The SNL source code is based on a 2008 version of EFDC+, which included DSI’s dynamic memory allocation implementation. Craig Jones, formerly of Sea Engineering, also has versions of this code on Github.
- EFDC-MPI is a modification of the original code developed by Fearghal O’Donncha at IBM and available from Github. This code serves as the hydrodynamic core of IBM Research asset DeepCurrent, which focuses on the prediction of environmental conditions in coastal oceans, rivers and lakes. DSI found this MPI work by Fearghal helpful when developing our own version of the MPI code.
- EFDC+: Starting back in 1998, DSI created EFDC+ by taking the original version of EFDC and significantly improving its stability, accuracy, and speed, as it now includes MPI/OMP parallelization. EFDC+ now far surpasses the features and performance of the legacy code. Unlike many versions of the EFDC code, EFDC+ is actively maintained and supported by DSI. This means that you have one go-to source for code improvements and reporting any bugs you think might be in the code. We fix them and release updates to our active users. DSI typically releases minor improvements and bug fixes to the code every month as part of the EFDC_Explorer Modeling System (EEMS). These are designated by a second period, for example 10.3.4 to 10.3.5. Major releases are made on a half yearly basis and include significant enhancements and often require a change to the input files. These are designated by a single decimal place, for example 10.3 to 10.4. All releases are backwardly compatible, so 10.4 can run an 8.5 model after loading and saving in EE. The source code for the latest version of EFDC+ (10.3) is available to the active users, upon request. The source code for EFDC+8.5 is available from this Github site. The EFDC+ features are described here.
A tabular comparison of different versions of EFDC is presented below.
 We don’t recommend using the executable file, as the EFDC-GVC code uses fixed array formatting controlled by the EFDC.PAR file at compile time. The executable of the compiled code does not check for array bounds, so there could be array bound errors and the user would not know it. The model may not crash but the model results would be erroneous.
Talk to the experts
Paul Craig, PE
President and Senior Consultant
Water Resources Engineer