The U.S. Army Corps of Engineers’ (USACE) mission is to provide vital public engineering services in peace and war to strengthen our nation’s security, energize the economy, and reduce risks from disasters. Maintaining the nation’s inland waterways is found beneath that large umbrella and in support of that mission, USACE has been developing an exciting new way of protecting and preserving migratory fish runs.
Dr. Andy Goodwin, a USACE scientist, has developed a method of simulating fish behavior that allows him to evaluate proposed modifications to dams, fish ladders and related structures to predict their effect on fish survival. His simulation computer code takes as input a computational fluid dynamics (CFD) simulation of water flow through the proposed structures plus fish initial positions and behavior parameters, and outputs the path each fish would be expected to swim over a specified period of time. From this output he can deduce whether the proposed modifications would have a favorable or unfavorable effect on fish survival rates. This information enables his sponsors to select, from among a number of possibilities, those modifications that will have the most beneficial impact.
Dr. Goodwin contracts with companies to produce the CFD results he needs. Due to the large number of CFD simulation codes in use today, he was finding it increasingly important to modify his code to read a wide variety of CFD solution file formats, including the n-faced polyhedral meshes used by two of the most popular CFD solvers. After examining a number of options, he selected Tecplot 360 to do this work for him. This was a good fit because Tecplot 360 already reads the most popular CFD file formats, and has an extensible architecture that allows Dr. Goodwin’s solver to interact with any data Tecplot 360 can read. And I was the lucky Tecplot developer selected to do the interfacing work.
The most interesting challenges have included dusting off and updating my Fortran (I learned Fortran back in the F77 days; Dr. Goodwin’s code is in Fortran 90/95); locating the proper seams at which to interface his code with Tecplot 360; and writing the Fortran/C glue code required to allow his code to query Tecplot 360 for the CFD solution information it needs. I also needed to implement in Tecplot 360 the ability to detect when a proposed (fish) path intersects a solid boundary or exits the solution domain, since his solver does this for the CFD data it can read. And I am currently writing a CFD post-processing Tecplot add-on to perform some clean-up operations on legacy CFD data to make it suitable input for Dr. Goodwin’s simulations. This “fishy business” continues to be challenging and interesting, and I look forward to seeing the results that Dr. Goodwin will produce with Tecplot assistance.
For sample output from Dr. Goodwin’s solver, see his postings on YouTube at https://www.youtube.com/user/CognitiveEcologyTeam.