1. Overview and Getting Started

1.1. Background

FUN3D was born in the late 1980s as a research code. The code’s original purpose was to study existing algorithms and to develop new algorithms for unstructured-grid fluid dynamic simulations spanning incompressible flow to transonic flow. The project has since grown into a suite of codes that cover not only analysis, but adjoint-based error estimation, mesh adaptation, and design optimization of fluid dynamic problems extending into the hypersonic regime.

The solver has been applied to a number of complex large-scale problems by groups at NASA Langley, industry, and academia. (See the Applications section of this manual.) Internally, the software has been used to study airframe noise, space transportation vehicles, flow control devices using synthetic jets, the design of wind tunnel and flight experiments, and so forth. Boeing, Lockheed, Cessna, New Piper, and others have used the tools for applications such as high-lift, cruise performance, and studies of revolutionary concepts. The software has also been used for military applications, large-scale computer science research at national labs, as well as algorithmic studies performed at universities around the country. For example, researchers at Georgia Tech have been using FUN3D as their base for rotorcraft work.

In 1999, we began employing Agile Software Development practices, primarily those of Extreme Programming. We use Continuous Integration on a wide range of computer platforms. To catch integration errors, the suite of codes are repeatedly checked-out around the clock from our central repository, compiled, and several hundred regression and unit tests are run. Email and cell phone SMS provide instant notification of any errors. We practice pair-programming on a regular basis to raise our truck number and adhere to a coding standard (see the Appendix) while continuously looking for refactoring opportunities. We use a Wiki, email lists, retrospectives, and Scrum status meetings to facilitate communication, identify impediments, and foster team collaboration.

1.2. Capabilities

  • Analysis, Sensitivity Analysis, and Design Optimization
    • Hand-coded discrete adjoint for reverse mode differentiation
    • Automated complex variables for forward mode differentiation
  • Adjoint-based adaptation for outputs
  • Gradient-based adaptation
  • Domain decomposition with MPI communication for distributed computing
  • Node-based, finite volume discretization
  • 2D and 3D options
  • Thermodynamic models
    • Perfect gas (compressible and incompressible)
    • Thermochemical equilibrium, non-equilibrium
  • Multigrid with implicit time stepping where the linear system is solved using either
    • Point-implicit
    • Line-implicit
    • Newton-Krylov
  • Upwind flux functions
    • Roe flux-difference splitting
    • Van Leer flux-vector splitting
    • AUFS
    • HLLC
  • Turbulence models (all integrated to the wall)
    • Spalart Allmaras
    • k-omega/SST
  • Propulsion simulation (10.5)
    • Inlets (10.5)
    • Nozzles (10.5)
    • System performance calculation (10.5-beta)
  • Grid motion (time-varying translation/rotation)
  • Time-accurate options to third-order with error controllers
  • Modified linear elasticity solver for mesh morphing with hand-coded discrete adjoint and automated complex-variable modes for sensitivities
  • Predominantly F95 implementation with some F2003 features, readily portable to wide range of platforms and compilers
    • Hardware: SGI, Sun, Cray, HP, IBM, DEC, Pentium, Athlon, Opteron, Mac
    • Compilers: SGI, Sun, Compaq, Lahey-Fujitsu, Cray, Absoft, Intel, NAG, IBM, HP
  • Instant, live updates of code modifications made by the developers available via the FUN3D Website: http://fun3d.larc.nasa.gov/commits.html

1.3. Requirements

Our usual computing platform is Linux clusters, so this is the preferred environment for the software. A number of users prefer to work on Suns, SGIs, Mac OS X, Opterons, Crays, HPs, IBMs, or DEC Alphas; these platforms are supported as well. Users have also run on other architectures such as MS Windows based PC’s, however we don’t provide explicit support for these machines. The codes were originally geared towards vector processing, but have since been modified for cache-based platforms.

For FUN3D, you will need a Fortran 2003 compiler. This code has gone through an extensive cleanup/overhaul over the past few years to lay a solid foundation for the extension to flows in thermochemical non-equilibrium, and is considerably easier to use and modify than ever before. New features include hooks for generalized boundary conditions, inclusion of incompressible physics formerly available only as a separate code, much more organized routines in a module setting, and extensive use of F95/2003 coding features such as derived types. The user can compile the code to run in either sequential mode or using MPI. The most improved aspect of FUN3D is the grid processing and partitioning stage, where users can now easily go directly from a number of popular grid formats to the solver.

For two-dimensional grid generation, we recommend the AFLR2 software written by Dave Marcum at Mississippi State University. Our automated scripts are geared towards this grid generator, but you may choose to use your own if you wish. Three-dimensional grid generation is much more involved, and is left entirely up to the user. Our most common sources of 3D grids are VGRID (NASA Langley) and SolidMesh/AFLR3 (Mississippi State). We also prefer the GridEx package (NASA Langley), which serves as an interface for a variety of CAD packages and grid generators.

We also offer unique design optimization and grid adaptation capabilities built around a discrete adjoint solver for the RANS equations. Before pursuing design optimization, you should be an experienced FUN3D user, and have some serious hardware available to run on. The adaptation capability is very far along, but still being matured. Get in touch with questions.

1.4. Release History

The following release notes summarize changes to FUN3D’s functionality associated with each formal release. Changes not visible to the user are omitted to keep the list concise.

Version 13.1—Expect Mar 2017

Input Changes

  • The untangling_iters has been added to the &elasticity_gmres namelist. The default value now disables untangling, which is rarely helpful in practice. Setting untangling_iters=3 will recover previous default behavior. (2850b1)
  • The parameters grefl, uinf and qinf in the &aeroelastic_modal_data namelist (in moving_body.input) have been changed to scalar values; previous versions required these inputs for each aeroelastic body. The names of the available time_integration_scheme have changed. The traditional prodictor-corrector scheme remains the default, but is now referred to as PC_2ndorder. The second order backward-difference scheme is now referred to as BDF_2ndorder. See the manual for all options. (2653dbd)
  • The command line option --elasticity has been removed – now input as elasticity in the &elasticity_gmres namelist; see the manual for additional input changes for &elasticity_gmres. (12f1145)
  • The command line option --reduce_shape_change has been removed. (a34067c)
  • The command line option --plt_tecplot_output has been added. This option sets the binary Tecplot output to the old .plt format if FUN3D has been compiled against the new standard TecIO library. It is invalid if compiled against TecIO-MPI. (af2a578)

Output Changes

  • The restart data for the modal/linear structural dynamics solver is no longer held in the FUN3D restart file. A separate file, [project]_modal_structure.restart is now written/read, and the user must ensure that this file is visible in the run directory, in addition to the usual [project].flow file. (83691c8)
  • The output from the modal/linear structural dynamics solver has been changed to dimensional output (e.g. time is now in seconds). The generalized acceleration has been added to the list of output variables. (62de0ea)
  • The convergence history of the linear elasticity solver that is written to standard output has changed – similar but different – with additional information. (895f772)
  • The --make_tets command line option has been eliminated. A separate utility code called aflr3_make_tets to convert AFLR3 mixed-element meshes to tetrahedral meshes is now provided. (e96c72a)


  • The 'szplt' option was added to export_to option of &volume_output_variables to produce a single image tecplot data file. This requires configuring FUN3D with TecIO-MPI library. (2d9838e)
  • A new objective function for adjoint-based design using inlet fan distortion has been implemented. See manual for details. (61d55f0)
  • For coupled CFD/CA rotorcraft simulations, an algebraic mesh deformation option has been added. This option can be considerably faster than deforming the blade meshes using the linear elasticity solver. The new option is engaged by setting algebraic_mesh_deform = .true. in the &elasticity_gmres namelist. This option is now the default when using FUN3D within HELIOS Again, this new option is limited in scope to only coupled rotorcraft simulations – not general aeroelastic simulations. (bb962112c)
  • Added changes compatible with HELIOS Version 7. (30c6cb6)
  • The linear elasticity solver has been revamped. For best performance, the SPARSKIT linear algebra library should be built and linked with FUN3D via the --with-SPARSKIT=... configuration flag. In the absence of the SPARSKIT library, the point-multicolor scheme is utilized as the solver for the elasticity equation; with SPARSKIT, GMRES is used as the solver, with point-multicolor as a preconditioner. The restart_deformation option is now .true. by default. See the manual for all options. (895f772)
  • Some mixed precision arithmetic in the point-implicit solver routines has been modified to improve linear system stability. The modifications have resulted in dramatic improvements in robustness for a wide range of applications. (b6924e5e)

Bug Fixes

  • Fixed an error in the check of boundary_list input when doing a static_body_transform. (85c654c)

A work-around has been implemented for a regression in the 2017 version of the Intel compiler. Our continuous integration tests examine Intel versions 2013.4.183, 2015.2.164, 2016.0.109, 2016.3.210, and 2017.1.132 (other versions may function).

Version 13.0-382ef83—Sep 2016

The version 13.0 PDF user’s manual is available as NASA TM-2016-219330.


  • Viscous wall function and weakly imposed solid wall boundary conditions are added. (9b5646e)
  • The option restart_deformation is added to &elasticity_gmres to reduce the execution time of time accurate simulations with grid deformation. (5280cb2)
  • The mesh_diagnostics option is added to &raw_grid to provide analysis of grid element properties. (883eb99)
  • The options override_partition_vector and write_partition_vector have been added to &partitioning namelist. (5f984e9)
  • New output options have been added to &slice_data, see user manual documentation for details. (bfe136f)
  • Time average and RMS added to generic gas model &volume_output_variables, &boundary_output_variables, and &sampling_output_variables. (0ef48df)
  • MPI abort is now used to stop execution if an error is detected after initialization completes. This can reduce parallel execution time by 10 percent for some cases due to eliminating MPI gather-scatter operations. MPI abort can create a deadlock with some MPI implementations, which prevents the code from completing execution. (b9f819a)
  • CGNS version 3.3.0 or later is now required. Larger files that require 64-bit integers are now supported.

Input Changes

  • The timing and time_moving_grid options have been removed from the &global namelist.
  • The HIARMS actuator disk model is now activated via the hiarms_flag variable in the &hiarms_actuator_disk namelist. The --hiarms_rotor command line option has been removed. (2ba2168)
  • The &slice_data options slice_initial_coords and output_in_slice_coords are obsolete and are slated for removal. See &slice_data user manual documentation for details. (4a4225d)

Bug Fixes

  • The value of the blending function, F1, in the Menter-SST turbulence model, when both the turbulent kinetic energy and the distance are zero, was corrected to be 1 instead of 0. (4c71583)
  • The minimum allowable value for the omega transport variable in the Menter-SST, Wilcox and several Reynolds stress turbulence models was decoupled from the value in the freestream and set to the value of 1.0e-20. (a99ccd1)

At the time of the relase, the 2017 version of the Intel compiler produces an Internal Complier Error (ICE). A work-around has been implemented for regression in the 2016 version of the Intel compiler. Our continuous integration tests examine Intel versions 2013.4.183, 2015.2.164, 2016.0.109, and 2016.3.210 (other versions may function). (49cfead)

Version 12.9-0555546—Apr 2016

The version 12.9 PDF user’s manual is available as NASA TM-2016-219012.

There is currently a regression in the 2016 version of the Intel compiler that prevents the Intel 2016 Fortran compiler from compiling FUN3D (and has been reported to Intel). Please use a version of the Intel Fortran compiler prior to 16. Our continuous integration tests have verified Intel versions 2013.4.183 and 2015.2.164, but other versions may work.


  • The k-kL-MEAH2015 turbulence model has been added.
  • &noninertial_reference_frame gained noninertial_frame_output which controls the reference frame of visualization data. (1e6772e)
  • &observer_motion gained a new ob_parent_name option specifically targeted to articulated rotor simulations. The new option allows simple specification of an observer frame tied to the rotor hub reference frame. (d420222)
  • &sampling_output_variables gained DES/DDES visualization functions. (3e2361f)
  • &aeroelastic_modal_data gained a backward_difference modal_update_scheme, along with the ability to perform subiterations between the fluid and (modal) structural solvers.
  • &grid_transform and &body_transform, are now compatible with overset meshes. &grid_transform requires an additional specification of which component mesh to move.

Input Changes

  • The 4thorderESDIRK4 time integration scheme has been removed. (21b4006)
  • &boundary_conditions gained farfield_point_vortex which controls the use of a vortex correction to 2D far field boundary conditions. The --point_vortex command line option has been removed. (ab5730c)

Output Changes

  • The data field contained the value of (simulation) time has been increased in size in the sectional_forces and slice.dat files. The extract_sectional_data.f90 utility code has been modified to work with the new data field size.

Bug Fixes

  • The output of total pressure (ptot) and total temperature (ttot) from the compressible, perfect gas path are now correct when requested via the &volume_output_variables namelist. Total pressure (ptot) is available in the incompressible path, however total temperature is not available. (94fc10a)
  • For fully articulated rotor blades (not actuator disk), an error in the order of the application of lead-lag and flap angles was corrected. This can have a significant effect for rigid-blade simulations where the blade motions are set via the rotor.input file (blade orientation is incorrect), and a small impact on elastic-blade simulations where the blade motions are set via a motion file. In the elastic-blade case, the error only impacts the orientation of the outer boundary of the blade grid. (8409ffb)

Version 12.8-dc8fb20—November 2015

The version 12.8 PDF user’s manual is available as NASA TM-2015-218807.

The FUN3D source code repository has been migrated to the Git version control system. A hexadecimal SHA-1 (Secure Hash Algorithm 1) is now used to refer to individual commits instead of Subversion revision numbers.


  • FUN3D may now be used as a “near-body solver” in the HELIOS rotorcraft simulation framework (collaborative effort with Rohit Jain of AFDD).
  • Static mesh deformation (mesh deformation before solution begins) may now be used in conjunction with dynamic mesh deformation. The distance function for turbulence modeling is automatically recomputed for the statically-deformed mesh.
  • Shear-stress contributions can be optionally added to the generalized aerodynamic force coefficients for mode-based aeroelastic simulations. Shear stress contribution is enabled by setting genforce_include_shear = .true. in the &nml_aeroelastic_modal_data namelist. Only using pressure to compute the generalized forces matches the implementation of CFL3D and CAPTSD.
  • Ffwocs Williams and Hawkings (FWH) acoustic data may now be output for noninertial frame rotor simulations. A new tool (fwh_noninertial_to_fwh_moving.f90 in the utils/Rotorcraft directory) was created to convert these noninertial frame files to inertial frame files for direct use in acoustic analysis tools such as PSU-WOPWOP.
  • For articulated rotors, all shaft axis rotation angles are now utilized (phi1, phi2, phi3) in the rotor.input file. Previously, only phi2 (shaft tilt in x-z plane) was utilized. The other angles (phi1 and phi3) were silently ignored.
  • Additional partitioning weighting options have been exposed to the user; See the manual documentation for the &partitioning namelist.
  • The Zoltan v3.82 partitioning library available from Sandia National Labs can be linked with FUN3D as an alternative partitioning library; see the manual documentation for the &partitioning namelist.
  • METIS partitioning options have been extended to accommodate the weighted partitioning approaches available with ParMETIS and Zoltan. See the manual documentation for the &partitioning namelist.
  • The utility that merges tetrahedral VGRID meshes into prismatic grids is now capable of reading multisegment VGRID files.

Input Changes

  • The &inviscid_flux_method namelist variable smooth_limiter_coeff supersedes the command line option --smooth_limiter_coeff, which will be removed in a future release. See the user manual for a description of smooth_limiter_coeff.
  • Alternate freestream conditions may now be enabled via namelist input. The variable vinf_ratio in the namelist &nml_reference_physical_properties sets these alternate conditions in the same way that the command line option --alternate_freestream did.
  • The &metis namelist has been renamed the &partitioning namelist. The variable metis_numbering_entry has been moved from the &code_run_control namelist to the &partitioning namelist.
  • The serialize_partitioner namelist option has been removed. Instead, specify partitioner='metis' in the &partitioning namelist.
  • The use_imesh_constraint namelist input has been eliminated. Instead, the value of imesh_weighting in the &partitioning namelist should be set appropriately. This weighting only applies to dynamic overset grid systems.
  • inlet_symmetry has been renamed to engine_symmetry and inlet_solution_method removed from the &boundary_conditions namelist.
  • The fixed, supersonic inflow boundary condition, 7100, fixed_inflow, now uses all 5 primitive variables input in the &boundary_conditions namelist variable q_set(ib,1:5). Previously, only the density, pressure and the magnitude of the velocity using the three input components, q_set(ib,2:4), were applied normal to the boundary at each node.

Bug fixes

  • Fixed a parallelization bug where large_angle_fix (ivgrd internal variable) was turned off inconsistently in partitions without any large angles. (r75312)
  • Fixed a parallelization bug where strong turbulent boundary initial conditions are now applied consistently to ghost nodes. This only affects initial transients and not the converged solution. (143e91d)
  • Fixed a bug so that SA-QCR viscous terms are now applied to tetrahedral elements. This affected tetrahedral grids and tetrahedral elements in mixed-element grids. The linear eddy viscosity of the standard SA was being used in place of QCR terms. (4508027)
  • Fixed a bug in the hex numbering for VTK output. (r75159)
  • Fixed several bugs in the Venkatakrishnan limiter and related smooth_limiter_coeff. (r75007, r75139)
  • Fixed bug that prevented correct output of rotor performance files for multiple rotors (r75259)
  • Fixed several bugs for rotors with clockwise rather than the usual counter-clockwise rotation (Thanks to Rohit Jain of AFDD for finding these: r75213, r75200, and r75040)

Known Bugs

  • The output of total pressure (ptot) and total temperature (ttot) are not actually available via the &volume_output_variables namelist, contrary to the manual. Zeros will be output for these variables if requested.

Version 12.7-74063—May 2015

The version 12.7 PDF user’s manual is available as NASA TM-2015-218761.

Input Changes

  • The &code_run_control metis_numbering_entry variable is required for serial partitioning, serial_partitioner=.true.—see &code_run_control namelist description in the user manual. (r73658)
  • The ammo.input file has been replaced with a new file called design.nml, which contains a single &design namelist containing inputs very similar to the now-obsolete ammo.input file. Variables and their defaults are documented in the user manual. (r73780)

Bug fixes

  • Fixed a bug in the residual computation for time-dependent cases that led to small errors in the the imposition of the no-slip condition (r73770); no impact on steady-state flows. The bug was introduced in January 2015 and was in the v12.6 release.
  • Fixed a bug in visualization when output in a (moving) observer frame. Bug was encountered only when restarting with a handful of timesteps: the observer velocity was not preserved after restart and took several steps to recover to the correct observer velocity. No impact on actual flow solution, only visualization thereof, and only if the user requested observer_motion in moving_body.input. (r73663)
  • An out of array bounds write affecting point sampling on the boundaries of mixed element grids is repaired. (r73621) This issue, introduced March 2011, can cause an incorrect residual or segmentation fault.

Version 12.6-73467—March 2015

The version 12.6 PDF user’s manual is available as NASA TM-2015-218690.

Known Bugs

  • For time accurate simulations, the strong no-slip boundary condition is not enforced correctly.
  • Point sampling on the boundaries of mixed element grids can cause an out of array bounds write affecting the correctness of the residual or causing a segmentation fault (repaired with r73621, bug introduced March 2011)


  • An option has been added to allow serial partitioning with the METIS library if desired (&code_run_control serial_partitioner=T /). (The serial partitioner typically provides more efficient partitions.) The master node must have sufficient memory to store the connectivity graph for entire global grid. (r72484)
  • Two new radial thrust and torque (swirl) distributions have been added to the actuator disk model. These are a Goldstein distribution LoadType=6 and a distribution read from a file LoadType=5. (r72090)
  • Two new boundary condition options have been added to time-accurate simulations of air-breathing propulsion systems. A delta-function impulse, of a specified length and amplitude, can be applied to either an engine inlet outflow boundary or the inflow boundary of a subsonic nozzle plenum. New boundary condition numbers and names are used for these options. Further information can be found in the user manual. (r72542, r72554)
  • The Quadratic Constitutive Relation (QCR) option for the Spalart-Allmaras (SA) turbulence model is now available.

Input Changes

  • The previously depreciated (v12.3) schedule_number variable in the &nonlinear_solver_parameters namelist has been removed. A namelist read error will occur if it is present. (r73337)
  • massflow_dimensions and massflow_set_out have been removed from the &boundary_conditions namelist. A namelist read error will occur if it is present. (r71947)
  • The format of rotor.input has changed to specify TorqueCoff instead of PowerCoff. (r72090)
  • The prior_time_avg variable has been deprecated from the time_avg_params namelist in a way that is backwards compatible. Users are encouraged to remove this variable because its use will cause an input error in future releases. (r72572) Defaults were also changed to reduce input for common use cases.
  • The unused variable number_of_lines was removed from the &sampling_parameters namelist. (r71643)
  • Unimplemented options were removed from the &boundary_output namelist. (r72567)

Bug fix

  • Inconsistency in temporal backplane initialization on boundaries corrected. (r72936)
  • The code now exits cleanly if an error occurs during grid mirroring. (r72807)
  • A possible MPI deadlock was eliminated from equ_type='generic'. (r72778)
  • A possible MPI deadlock was eliminated from point sampling. (r72780)
  • A memory leak was eliminated from line partitioning (r72648) and multiple equation turbulence models (r71991).
  • A performance regression for multiple equation turbulence models has been addressed, recovering the speed of v12.2.

Build Environment

  • The Fortran dependency generation is now distributed. This should not affect users.
  • A C++ compiler is required if the Fortran compiler has ISO C Bindings (F2003). A link error can result if inconsistent compiler/C++ libraries are used.
  • The g95 Fortran compiler is no longer supported.

Version 12.5.1-71602M—September 2014

The version 12.5 PDF user’s manual is available as NASA TM-2014-218520.

Input Changes

  • The format of rubber.data has changed slightly to include four additional global design variables in addition to the Mach number and angle of attack. A template of this file is located in the Adjoint directory of the source distribution. (r70475)
  • An additional input field has been added to ammo.input to support user-defined parameterizations. The input specifies the name of the user-defined executable to be run when user-defined surface parameterizations or their sensitivities need to be evaluated during the course of a design optimization. See manual for further details. (r70625)
  • The --write_mesh command line option now requires a single trailing character string specifying the project name for the mesh to be written. (r70665)


  • The power-based cost function for the adjoint solver has been broken up into its components in each of the three Cartesian directions. (r70428)
  • For simulations in noninertial reference frames, the rotation rate about each Cartesian coordinate axis is now available as a design variable. (r70475)
  • The sideslip (or yaw) angle is now available as a design variable for adjoint-based sensitivity analysis and design optimization. (r70492)
  • Extended the dp/dt unsteady objective function to instead use drho/dt if requested for compressible flows. See manual for details. (r70538)
  • Input verification is improved to ensure that the adjoint solver and any subsequent sensitivity analysis are compatible with the user’s boundary conditions, governing equations (inviscid, laminar, turbulent, compressible, incompressible), grid topology (element and boundary face types), temporal discretization, objective/constraint functions, and design variable choices. The adjoint solver should immediately stop with an error message when an unsupported combination of input options are detected.
  • The output from component force tracking has been modified to include all the moments and forces, with pressure and viscous forces split out, similar to what is output to the [project_name]_hist.dat file. (r70575)
  • The manner in which user-defined geometric parameterizations are specified has been formalized for design optimization. The user can now mark one or more bodies in rubber.data as having user-defined parameterizations. The user must provide the name of an executable parameterization tool so FUN3D can invoke it during design optimization. The names of any necessary auxiliary files must also be provided. See the Using Other Parameterization Packages section of the user manual Design Optimization chapter for further details. (r70625)
  • The design optimization opt_driver has been enhanced to archive files during the course of a design optimization. For example, visualization files can be archived to develop animations of the design history. See the design section of the manual for details. (r70779)
  • The I/O operations that must occur during flow solutions to support subsequent time-dependent adjoint solutions have been extended to be compatible with the temporal error controller. (r71087)
  • When using the near-field sonic boom objective function boom_targ, target pressure points which are identified as orphans will no longer contribute to the objective function nor its sensitivity. The contributions from these points were formerly associated with the nearest grid point. (r71244)
  • Boundary condition family name is written to project.mapbc, if available. (r71311) Boundary condition family name is maintained during grid adaptation for the refine grid adaptation library. (r71310)
  • The vortex generator source term model is extended to include triangular devices in addition to the existing trapezoidal devices. (r71388)
  • Limited support for objective functions including flow-through boundaries has been added (generally relevant to propulsion-type simulations). Contact support team for details. (r71508)
  • A new option to alter the mesh before beginning the flow solution has been added. Similar to the existing &grid_transform namelist that acts on the entire mesh, the new &body_transform namelist allows the user to specify a rotation or translation to a body (one or more grid boundaries). The grid is then elastically deformed around the new body position, after which the flow solve begins. (r71292)
  • The functionality of the stop.dat file has been extended. Previously, the file was used to terminate a run earlier (fewer number of iterations/times steps) than requested in the fun3d.nml file. The new functionality allows a run to be extended beyond the number of steps requested at the beginning of the run. For example, if 1000 steps were requested at run time but the user deems 2000 would have been better, create a stop.dat file with one line containing 2000, and the code will continue on to do 2000 steps.

Bug fix

  • A time rollover bug that halts execution in rare occasions with a cryptic error message was replaced with a warning. This happened when the count argument of the the system_clock exceeded the count_max argument. This would happen with a frequency of count_max/count_rate seconds, which is compiler and system dependent. (r71660 was backported to fix)
  • The option to move the moment center of the body for moving-grid cases was discovered to be broken. The moment center remained fixed in space even if requested to move or once its location was specified, it could not be changed. Both of these moment center related issues are repaired. (r70473)
  • Two arrays related to dci_io are now always allocated. This fixes an issue where they were used before being allocated with some MPI implementations. The flow solver no longer prematurely terminates during a restart if steps < dci_period . (r70624)
  • Pyramids are read in the correct orientation from ASCII AFLR3 files. (r70661)
  • Fixed a subtle bug in the computation of the power associated with flow-through boundaries (generally relevant to propulsion-type simulations). (r71460)
  • Fixed a bug in total force accounting when flow-through boundaries are present (generally relevant to propulsion-type simulations). (r71499)

Version 12.5-71602—September 2014

A time rollover bug that halts execution in rare occasions (once every four months) with a cryptic error message was found with this version. This makes 12.5-71602 obsolete. Use version 12.5.1-71602M, which was backported with a fix.

Version 12.4-70371—April 2014

The version 12.4 PDF user’s manual is available as NASA TM-2014-218179.

Input Changes

  • The --with-ParMetis=/path/to/parmetis/lib configure option has been renamed to --with-parmetis=/path/to/parmetis where the /path/to/parmetis should contain lib and include subdirectories. Some older versions of ParMETIS have inconsistent header files, it is recommended that you upgrade to the latest version of ParMETIS. (r69411,r69413,r69416,r69463,r69580)
  • Removed --linear_projection from the command-line options, use &linear_solver_parameters namelist linear_projection variable. (r67756)
  • The default of the cr3 term of the SA-RC model has been changed to the recommended value of 1. Use the &spalart namelist variable sarc_cr3=0.6 to obtain previous behavior. (r67276)
  • When setting aside separate cores/nodes on which to run auxiliary processes that rely on a split MPI communicator (such as SUGGAR++, VisIt, and the DCI_IO option), the cores/nodes dedicated for the FUN3D solver itself should now appear first in the list; and cores/nodes intended for auxiliary processes should appear last, after the primary solver cores/nodes. (r67177)
  • The naming convention for mode-shape files read into FUN3D when doing modal-based aeroelastic simulations has changed. The old naming convention was [project].bodyN_modeM (for body N and mode M). The new convention is [project]_bodyN_modeM.dat. The modal files have historically been ASCII Tecplot files, and the new file extension fits with the convention used for all other ASCII Tecplot files read and written by FUN3D. (r69636)
  • In addition to mode-shape files in ASCII Tecplot format, binary (stream) DDF files are now also supported. To utilize stream DDF files, use mode_file_format='stream' in the &aeroelastic_modal_data namelist in moving_body.input. (r69636)
  • The command line option --six_dof has been removed. 6DOF now triggered by setting motion_driver(:)='6dof' in moving_body.input. (Note: 6DOF currently requires a DOD library with restricted distribution.) (r69752)

Output Changes

  • The 2D path in FUN3D has historically taken the input grid, and behind the scenes, doubled the extent in the y-direction. It also took the input reference area and doubled it (but, not the y_moment_length), so most forces and moments accounted for the doubled spanwise extent of the grid except for Cmx and Cmz, which are really meaningless for 2D anyway. However, when the mesh and/or solution was output, the spanwise factor of two was not removed. With this release, all the behind-the-scenes manipulations have been removed; the grid is no longer doubled in y. This results in three areas of output changes: 1) the output grid will be the same size in y as the input grid, 2) residuals will be smaller by a factor of two, and 3) Cmx and Cmz will be smaller by a factor of two. All other forces and moments remain the same.


  • A version 12.4 PDF user’s manual is now available as NASA TM-2014-218179.
  • New time-averaged sampling variables available for time-accurate solutions: mu_t_tavg, vort_mag_tavg, vort_x_tavg, vort_y_tavg, vort_z_tavg can be extracted after computing them via the &time_avg_params namelist with tavg_header_version=3. (r66879)
  • If the compiler supports it, the flow and adjoint solver will use open(convert=...) in an attempt to read big endian formatted grid and restart without the need to set an environment variable. This capability has not been propagated to all utility or auxiliary files. (r66814,r66822,r66833,67564,r66973,r66974,r66983)
  • Updated the sBOOM interface to handle reverse equivalent area functions. (r67152)
  • When running dynamic overset grid simulations with precomputed DCI information stored on disk, these files may now be loaded asynchronously on cores/nodes dedicated specifically for this purpose to hide overhead associated with this I/O. To utilize this option, ASCII DCI files must be generated using SUGGAR++ and then converted to binary FUN3D DCIF files using the dci_to_dcif utility. Set aside the desired number of additional cores/nodes for DCI I/O at the end of your machine allocation, then use the command line option --dci_io N, where N is the number of cores/nodes set aside for the I/O operation. (r67214)
  • Added several new turbomachinery-related objective functions and their adjoint implementation for design optimization: mass flow rate, total pressure ratio, and adiabatic efficiency. (r68121)
  • Added equivalent area-based objective functions for adjoint-based design optimization of sonic boom configurations. See these notes for background information. (r68091)
  • Corrected uninitialized variable in boundary face preprocessing. (r69359)
  • Refactor and streamline memory and communication infrastructure for red-black solver. User should see 1-5% performance improvement depending on solver inputs and hardware. (r68769)
  • Modified upper bound on “r” source term in Spalart-Allmaras turbulence model to match upper limit of 10.0 published on the NASA Turbulence Modeling Resource website. FUN3D has traditionally used an upper bound of 20.0. (r68657)
  • To facilitate importing iteration histories into spreadsheet programs, added a hist2csv utility to convert from [project_name]_{hist,fm}*.dat files to CSV format. (r69820)
  • To compute statistics of iteration histories, e.g., time-averaged forces and moments, added tail_hist_stats utility that can process [project_name]_{hist,fm}*.dat files. (r69820)
  • Added setup_csv_cases utility to facilitate setting up a series of runs described in a CSV file where the column headers are namelist variable names and each row of parameters for those namelist variables are the corresponding cases to generate. (r69820)

Bug fix

  • An error in the computation of the F1 function was discovered and corrected in the SST 2-eqn model; an additional term intended only for use with the gamma-ret-sst 4-eqn model was being applied by default. (r70357)
  • The code would hang after reporting a time-averaging &boundary_output_variables namelist error. (r68882)
  • The equation for the calculation of ptot in the boundary visualization output has been repaired. (r67240)
  • A bug in which the default slicing direction, y, was never turned off if the user selected another direction was fixed. (r67367)
  • An API change in the CGNS library after version 2.5.3 is now detected and implemented, which allows parallel volume export from the solver via modern CGNS versions. (r67326,r67507)
  • A bug was repaired for adiabatic boundary conditions with specified wall velocity. (r67540)
  • An extremely slight bug in the implementation of the SST turbulence model was corrected. The cross term limit from Wilcox2006 was accidently included in SST. (r67802)
  • A bug was repaired in the Pope correction, used mostly for Wilcox two-equation models; the pope_correction_w98 option incorrectly used Sij_hat in its construction and pope_correction_w06 used Sij, but these should be reversed. (r68448)
  • Format descriptors controlling output of Massoud/DDF input files have been modified to correctly handle values with three-digit negative exponents. (r68596)
  • Fixed format descriptor for writing negative 3-digit exponents correctly in Massoud/DDF files (r68596)
  • Fixed very subtle pathological case when merging tetrahedral VGRID mesh into prismatic grid (r68316)

Version 12.3-66687—May 2013 (perfect gas only)

Known Bug

  • When running --thin_layer The source term in SA model was computed with ULSQ instead of the more robust edge-based GG (later repaired with r69942)

Input Changes

  • Removed—sampling_freq from the command-line options, as the interaction with the &sampling_parameters namelist variable sampling_frequency was problematic. The frequency of sampling output is now governed only via the namelist variable.
  • The vestigial schedule_number in &nonlinear_solver_parameters has been deprecated. Currently a warning is issued for its use, but it will become an error in future versions. (r66592)
  • The capability to read a subset of NSU3D grid format types has been removed. (r65262)


  • The SA model nondimensional working variable farfield boundary condition has been changed to the recommended value of 3. (r64669)
  • In-situ visualization with VisIt now operates on a single mesh entity with individual boundaries accessible via the Subset window. Note: overset simulations are still unsupported by in-situ visualization. (r66436)
  • On mesh input, FUN3D now attempts to correct left-handed elements of all supported types (tetrahedra, pyramid, prism, and hexahedra) by swapping node orderings. (r66392)
  • Cp design is now allowed on solid surfaces (inviscid or viscous) instead of just viscous. (r64842)
  • Power, as defined as the integral of force times velocity over the surface, is now available as an objective/constraint function in the adjoint solver. (r63334)
  • New I/O option available for efficiently storing very frequent/large amounts of volumetric data for unsteady problems (terabytes or more). Specify export_to='native' in &volume_output_variables namelist. This approach relies on parallel asynchronous stream I/O to minimize overhead. (r63907,r66594)
  • During mesh deformation, the mesh on x/y/z = constant boundaries is allowed to deform “in plane”, independently of the boundary condition type. Previously this was limited to symmetry boundaries; non-symmetry BCs require user input in the &boundary_conditions namelist. (r64471)
  • A run time limit can be imposed with duration_limit_in_minutes in &code_run_control namelist (r66058)
  • The file-based communication between FUN3D and the sBOOM sonic boom propagation tool has been eliminated in favor of a new in-core, API-based library call. sBOOM inputs are now specified in the &sboom namelist in fun3d.nml. Linking to the library requires the --with-SBOOM=/path/to/SBOOM option when configuring. (r66122)
  • Loose coupling and tight coupling (though non-maneuvering) capability with the RCAS rotorcraft comprehensive code via in-core data transfer (not file I/O based). Requires RCAS’s sdx library, and uses the “cfdmultirotorsdx” CFD interface to RCAS.
  • Pointwise CAE Plugin source updated for compatibility with the Pointwise SDK v0100r4. This will require the Pointwise SDK v0100r4. Note, plugin source from prior releases of FUN3D are incompatible with the Pointwise SDK v0100r4 (r65915).
  • For aero-structural coupling via Jamshid Samareh’s “Discrete Data Transfer Between Dissimilar Meshes” methodology (aka DDF), FUN3D can now read and write binary .ddfb files, eliminating the need to run the intermediate “toFromDDF” converter on ASCII Tecplot files. To output aerodynamic loads in .ddfb format, use aero_loads_file_format = ‘stream’ in the &massoud_output namelist; to read in a new surface mesh in .ddfb format, use massoud_file_format = ‘stream’ in the &massoud_output namelist. The .ddfb format is recommended to avoid the pitfalls of parsing character strings for numeric values.

Bug fix

  • Corrected problems importing FV-UNS (version > 2.4) FORTRAN Unformatted mesh files. (r66386)
  • The prandtlnumber_turbulent default value is now 0.90 (was 0.72). This changes the eddy-viscosity contribution to the mean-flow energy equation. The value can be controlled with the &turbulent_diffusion_model namelist. (r64976)
  • An array declaration that could result in the wrong offset in the first dimension for grids with all element types present simultaneously. (r63285)
  • Removed superfluous ParMGridGen interface that triggered a compiler bug. (r63570)
  • V12.1 introduced a bug where the --gamma command line option would not change gamma. (r63547)
  • Repaired bug where &sampling_parameters’s plot(N)='serial_history' option would write the 1X of the requested values plus 9X garbage when more than 50 sampling points were requested. (r63966 and r63978)
  • Fixed quad sampling input error-handling by making invalid user-specified quads a fatal error. Previous releases would simply note the error in a subtle manner in the screen output, then incorrectly stop processing all subsequent sampling geometries. (r63996)
  • Various memory leaks. The largest leak involved sampling output and is know to cause the failure of long running jobs. (r65038, r65579, r65580) The code base has been scrubbed of less significant leaks as well. (r65027, r65024, r65018, r65014, r65010, r65009, r65007, r65006, r64996-r64999,r66567)
  • Fixed a subtle problem which would cause very small errors in sensitivity derivatives for sBOOM-based objective functions in the event multiple ground signals were being computed. Sensitivities for the second and any subsequent signals would be slightly incorrect. (r66122)
  • Fixed a bug in boundary slicing which could lead to an undefined value in certain instances when the code made a “helpful” change to a user-set value of le_def or te_def. The bug only manifested itself if performing the same slice at multiple points in time.

Version 12.2-63280—October 2012

Major Enhancements

  • To expand design optimization options, added support for the Sparse Nonlinear OPTimizer (SNOPT).
  • To configure on non-standard MPI installations add the --without-mpicc argument to the configure command see notes for 11.1-46128 for a detailed description of the analogous --without-mpif90. (r60928)
  • Adjoint-based design optimization may now be performed with mixed-element grids for steady or unsteady compressible or incompressible turbulent flows on single-block grids involving static, rigid, or deforming motions, or noninertial reference frames. The extension to overset grids containing mixed elements will appear in a future release.
  • The four-equation Langtry-Menter transition/turbulence model has been implemented.
  • The BAMG 2D mesh adaptation code can be invoked by adapt_library='bamg' in adapt_mechanics namelist.

Minor Enhancements

  • Setting the "Number of processors from which to run adjoint solver" to 0 in ammo.input will now prevent writing the -np option to the mpirun/mpiexec command used to invoke the adjoint solver. This is needed on some HPC machines with PBS queuing systems that determine the number of processors from the scheduling environment. Note: this works only if the corresponding command_line.options file does not include the -np option for the mpirun command.
  • For design optimization, the forces.tec file is now a full Tecplot file including headers, and has been renamed forces.dat according to standard convention.
  • The --adapt_output_metric command line option has been migrated to adapt_export_metric in the &adapt_metric_construction namelist.
  • The rotorcraft “Figure of Merit” cost function may now be used for compressible turbulent flows on tetrahedral or mixed element grids.
  • A rotor propulsive efficiency objective function has been added for use with compressible turbulent flows on tetrahedral or mixed element grids.
  • The SA turbulence model now has eigenvalue smoothing on the convective flux. To recover the previous un-smoothed scheme, set ubar_eps = 0.0 in &turbulence namelist. Jacobians and adjoint are consistent. (r60714) (r60735)
  • Updated file I/O format to correctly interface with Sculptor 3.1 during design optimization.
  • The symmetry boundary condition indices 6661/6662/6663 are now correctly handled in the adjoint solver and may now be used for design optimization cases. The previous workaround “sliding” BC indices 3080 and 4080 are now obsolete.
  • Added lift and drag plotting output for the blade element rotor loading option.
  • The adjoint solver will now continue to evaluate sensitivities with respect to any geometric parameterization variables even if the --show_surface_sensitivity option is engaged. Conversely, this command line option will also now function correctly in the absence of a geometric parameterization.
  • Design optimization for sonic boom mitigation using nearfield pressure targets (boom_targ function name in rubber.data) and coupled SBOOM propagation (sboom function name in rubber.data) can both now handle mixed element grids.
  • The sonic boom objective functions are now controlled by the &sonic_boom namelist. A template is provided in the fun3d.nml template file in the source code distribution. The sonic_boom.input file is now obsolete.
  • The input target pressure file associated with nearfield sonic boom mitigation (boom_targ function name in rubber.data) formerly named pressure_target.tec must now be named pressure_target.dat. Similarly, the output file containing computed pressure signals is now named pressure_signatures.dat rather than pressure_signatures.tec. The pressure target is freestream pressure if pressure_target.dat is not present. (r62159)
  • The cylinder-based sonic boom objective function identified by the boom function name in rubber.data is now obsolete.
  • The Fieldview output format is now C-binary (Fortran-stream) to avoid the complexities of Fortran records larger than 2GB. (r62217)
  • Design optimization using the coupled FUN3D-sboom formulation can now include an arbitrary number of waveforms (i.e., any combination of on-track and off-track locations)
  • Added option to use old-style dfduc3 Jacobians for incompressible cases; these Jacobians may be more robust for some cases. Invoked by setting dfduc3_jacobians = .true. in the &code_run_control namelist.
  • Extended periodic boundary condition to handle periodicity simultaneously in all three Cartesian directions. Limited to one processor applications for now (one-dimensional periodicity may still be used in parallel).
  • Since it is trivial to load multiple files into Tecplot these days, concatenation of solution plotting files during design optimization has been eliminated. Most users build with binary Tecplot I/O support, so this option wasn’t functional in such instances anyway.
  • Ramping the total pressure/total temperature boundary condition (7011) with &component_parameters’s inflow_pt_ramp now works regardless of restarts. (r62877)
  • The default method for storing the time-averaging information has been changed from a separate file for each partition to a single file. The old behavior can be obtained by setting &time_avg_params single_file=0. (r62878)
  • Initial release of source term model for vortex generators – looking for feedback. See these notes for background and solver inputs.

Bug fixes

  • In the event the user explicitly specified a '-np xxx' option for mpirun (or mpiexec, etc.) in command_line.options for the optimization driver, two '-np xxx' options were being supplied to the mpirun command for the adjoint solver. The user-supplied value, if present, now takes precedence. As noted above, if the number of processors specified for the adjoint solution in ammo.input is zero, no '-np xxx' option will be passed to mpirun for the adjoint execution; the solver will instead use as many processors as are allocated in the current queuing environment.
  • Correct periodicity to work with single precision grids. Use the --periodic_tol value to internally match periodic node pairs. (r60911)
  • vgrid_merge_into_prisms, close mapbc unit to allow it to be reopened by gcc gfortran compiler. (r60724)
  • Fixed memory error in grid linearizations of skin friction on quad faces.
  • Fixed bug related to user-specified rotor disk source terms in the actuator disk module.
  • The angle of attack is now taken into account when performing design optimization for sonic boom mitigation using nearfield pressure targets (boom_targ function name in rubber.data) and coupled SBOOM propagation (sboom function name in rubber.data). When using the nearfield boom_targ objective function, the target data specified in pressure_target.dat should be in the rotated coordinate system, which is consistent with the output file pressure_signatures.dat containing the nearfield signature outputs.
  • Repaired --sampling_freq and &sampling_parameters sampling_frequency(:) so they work properly with each other (command line option trumps namelist list options), stop.dat, and other edge cases. (r61539)
  • Repaired Fieldview output with --make_tets by correctly sizing global boundary face counts during boundary quad split. (r62645)
  • Repaired Fieldview output of very large grids by writing as C-binary (Fortran stream) instead of emulating Fortran unformatted. The Fortran records larger than 2 Gigabytes were malformed. (r62217)
  • Repaired Fieldview output to correctly handle iblank and imesh arrays in cases where overset grids are involved. The iblank array is provided to Fieldview as ‘iblankfv’, so as to not interfere with the native iblank internal to Fieldview.

Version 12.1-60521—late March 2012

Major Enhancement

  • Mixed-element adjoint solutions may now be performed for unsteady compressible turbulent flows on single-block grids involving static, rigid, or deforming motions. The extension to overset grids will appear in a future release, as will the combination of incompressible flows with mixed-element grids.

Minor Enhancements

  • Added an objective function based on the RMS value of the stagnation pressure on a circular disk surface cutting through the mesh. Intended as an initial cut at providing design capability for engine inlet flows.
  • Tolerance used in determining periodic node pairs can be controlled using the --periodic_tol command line option.

Bug fixes

  • The adjoint is now correct for element-based boundary conditions dependent on the interior state of the flow. (r60501)
  • The SA adjoint is now correct for element-based boundary conditions. (r60497)

Version 12.0-60308—early March 2012

Note: Due to the move from v11 to v12, all users must execute a new software usage agreement. This process is initiated via the online request form.

Major Changes

  • The sequential grid pre-processor and solution post-processor, party, has been discontinued. (It was deprecated as of v11.) Instead, parallel grid partitioning is done on the fly and solution visualization is performed via co-processing. Most of party’s other functions are available via codes from the utils directory.
  • Merging VGRID boundary-layer tetrahedra into prisms is now performed with vgrid_merge_into_prisms.
  • The specialized adapt_mpi (or adapt) code has been replaced by the --adapt command line option. Feature-based mesh adaptation is now run via the flow solver, and adjoint-based mesh adaptation is now run via the adjoint solver.
  • The refine (grid adaptation and mesh untangling) and knife (cut cell) libraries are now packaged with FUN3D.
  • The ginput.faces translator has been discontinued. Namelist-based input (fun3d.nml) has been standard since v10.5.

Major Enhancements

  • Adjoint solutions for incompressible flow may now be performed on tetrahedral grids for inviscid, laminar, and turbulent steady flows, as well as unsteady flows on static, dynamic, and overset grids.
  • Adjoint solutions may now be performed for steady compressible turbulent flows on mixed-element grids.

Minor Enhancements

  • Added ability to specify phase shifts for forced motion, both in terms of the low-level trig functions and the resulting angle that is used to construct the transform matrix itself. This may be applied to moving bodies, the observer reference frame, or both.
  • The farfield_riem (5000) boundary condition is now allowed for incompressible flow.
  • The viscous_mflux (4010), viscous_unorm (4020), and viscous_mvpln (4030) boundary conditions have been discontinued. These capabilities have been subsumed by the &boundary_conditions namelist.
  • The project_name.initbc file is now ignored. Modeling translating and/or rotating boundaries, e.g., moving ground plane and/or rotating tires, is now specified through the &boundary_conditions namelist wall_velocity, rotation_center, rotation_vector, and rotation_rate variables.
  • The &boundary_conditions namelist adiabatic_wall flag has been removed. To specify adiabatic boundary conditions, set wall_temp_flag(patch#)=.true. and wall_temperature(patch#)=-1.0.
  • The adjoint solver now respects any remove_boundaries_from_force_totals file that may be present in the flow solver directory. I.e., if the user has specified a cost function on all boundaries in rubber.data, the boundaries specified in the remove_boundaries_from_force_totals file will not contribute function linearizations to the adjoint problem.
  • To provide an estimate of where transition to turbulent flow occurs, Spalart’s turbulence index (turbindex) is now available for boundary output.
  • Added a few sanity checks on aeroelastic modal input.
  • The new slice_initial_coords option allows faster slicing for some cases by only computing slice interpolation coefficients once.
  • Added a sample rotor.input file in utils/Rotorcraft.
  • Added ability to use --test_freestream with two-equation turbulence models.
  • To allow specification of how frequently Massoud files are written, added --massoud_output_freq option, which functions like --animation_freq, --sampling_freq, etc.
  • The --supersonic_floors command line option has been removed. For compressible flow, density and pressure are always floored at one-percent of freestream values unless the --full_update command line option is given.
  • Added --show_surface_sensitivity command line option to the steady-flow adjoint solver, which will produce a Tecplot file containing the sensitivities of the user-specified cost function(s) with respect to the x, y, and z-directions and the local surface normal direction. This is helpful if a geometry parameterization is not available or you need guidance when constructing one.
  • Added loose coupling capability with the RCAS rotorcraft comprehensive code, which is compatible with RCAS’s “mrotor_2010” CFD interface.
  • The design optimization framework has been generalized to accommodate multi-objective optimization based on weighted combinations of the composite objective functions already available in the code. The format of the rubber.data file has changed slightly to accommodate a new weight, target, and power for each composite function. These operate in the same manner as the weights, targets, and powers for the low-level component functions used to construct each composite function. See the rubber.data template available in the Adjoint/ directory of the source distribution.
  • To gracefully exit a design optimization run before it has completed, the user may now place a stop.dat file in the ammo/ directory at run-time if desired. Similar to the solvers, the optimization driver will look for this file at each step of the design process and terminate gracefully if a positive integer is present on the first line.
  • The command line option --store_full_stencil for the adjoint solver is now also valid for flux_construction=”vanleer”. This option requires more memory, but typically yields a speedup of 5x in overall wall-clock time.

Bug fixes

  • One-sided finite differences are no longer used to compute boundary viscous fluxes for farfield, tangency, and element-based boundary conditions. The analytic fluxes (zero) are used instead. This should increase robustness for low Reynolds number flows as well as a number of other cases.
  • Modified tetrahedral merging capability to handle a rare pathological situation where the dividing line between two VGRID boundary patches cut across a boundary layer grid on a boundary such that the two triangles comprising a new quad resided on two different boundary patches.
  • The geometric conservation law for the incompressible continuity equation on moving grids has been repaired.
  • Incompressible sampling now give correct values for primitive variables (Eric Lynch).
  • Closed off SA, KE, and HRLES turbulence models in element-based boundary conditions for incompressible flow.
  • Fixed several bugs for moving grids with weakly-enforced viscous boundary conditions. Note: These BCs are rarely, if ever, used as they require the user to alter the this_bc_is_weak_viscous flag in bcs.f90.

Version 11.6-54779—July 2011

Major Enhancements

  • Initial release of adjoint-based design optimization support for steady and unsteady flows on static and dynamic overset grids

Minor Enhancements

  • Users may now use different parameterization schemes within the context of the same problem. For example, on a wing-body configuration, it may be easiest to parameterize the wing with Massoud, but to use Sculptor for a wing-body fillet. Parameterization scheme is now specified for each body in rubber.data and no longer in ammo.input. See the templates for these files in the Adjoint and Design subdirectories of the source distribution.
  • Visualizations of steady and unsteady adjoint solutions may now be performed in the same manner as for flow solutions, using boundary animations, volume animations, and sampling surface animations (such as isosurfaces)
  • Did some streamlining of inverse design for target surface pressures
  • An interface for the commercial optimization packages DOT and BIGDOT is now provided if the user has access to these libraries for adjoint-based design optimization. The lift-constrained drag minimization online tutorial case has been extended to show typical results based on the methods available in these packages.
  • Alpha release of adjoint-based optimization capability using FUN3D formally coupled with SBOOM sonic boom propagation solver.
  • Record lengths for ASCII parameterization data coming into FUN3D may now contain as many as 30,000 characters to handle cases with very many design variables
  • Added the ability to read in a series of transform matrices (as a function of time) to allow specified rigid-grid motion as arbitrary as the user can dream up (and cast as a 4×4 transform matrix). Otherwise, specified motion is limited to a few simple functions built into the code (e.g. constant translation/rotation rate or sinusoidally varying translation/rotation.
  • Added the (highly specialized) ability to perturb generalized forces in the modal aeroelasticity path
  • Adjoint computations for inviscid flows can now be performed on mixed element grids; viscous terms on mixed elements are being worked in our copious spare time

Bug fixes

  • The command line option --outer_loop_krylov for the adjoint solver is now compatible with the mesh adjoint solution at the end of a steady sensitivity analysis
  • Fixed issue in overset partitioning of deforming meshes that potentially allowed some processors to have no nodes that needed deformation. In turn that caused the solver to hang.
  • Fixed a bug in the output of multiple massoud files
  • Fixed complex-number restarts
  • Fixed a very subtle array bounds overwrite that occurred for grid adjoint solutions for steady turbulent flows


  • Format of ammo.input deck for design optimization has been changed to eliminate need for cp slicing info, and to specify optimization method when using DOT/BIGDOT optimization libraries. See template in Design subdirectory of source distribution.
  • When performing design optimization, user must now specify number of processors to be used for adjoint solver. (In most cases, this value will be the total number of processors allocated for your job. However, when running designs on overset grids, SUGGAR++ may be running concurrently on a subset of the available cores during the flow solution. Since SUGGAR++ is not required during the adjoint solution, the adjoint solver must now be told explicitly to run on the same number of cores that the flow solver used, which will NOT be the total number of processors allocated for your job.) See template for ammo.input in the Design subdirectory of source distribution.
  • Restored boundary names (if family names are assigned in the mapbc file) or boundary numbers to the zone title in tecplot boundary output
  • Link to refine-1.7.1

Version 11.5-52754—April 2011

Major Enhancements

  • Geometry parameterizations based on the Sculptor software package may now be used directly with FUN3D for design optimization. See the Design documentation for details, as well as the relevant Sculptor documentation.

Minor Enhancements

  • During design optimization, the Mach number and angle of attack values in rubber.data are now only used if they are active design variables. Otherwise, the values in fun3d.nml will be used.
  • When using the boom_targ cost function to design for a mid-field pressure distribution, an arbitrary number of pressure signals can now be included in the objective function (centerline, horizon, off-track, etc). Furthermore, each point in the target profiles can be given a relative weighting with a magnitude of the user’s choice.
  • To simplify, the --wall_temperature command line argument has been removed. The wall_temperature variable in the &boundary_conditions namelist provides a more general specification. For example, temperature can be specified on a patch-by-patch basis.
  • The code status block has been removed from the top of the rubber.data file used for adjoint-based design and adaptation. See the template in the Adjoint directory of the source code.
  • If mesh movement (and optionally the subsequent untangling) fails during design optimization, the solver will write “autopsy” tecplot files from each processor containing a negative volume(s), just as in the case of dynamic mesh simulations. These output files can be used to quickly locate where the mesh movement is failing in the domain.
  • When a tetrahedral VGRID mesh is merged into prisms using party, the resulting grid is now written out in .b8.ugrid (stream/C-binary) format rather than the traditional Fortran unformatted .r8.ugrid file.
  • If desired, a USM3D-style [project].flo solution file may be written from the flow solver using the command line option --write_usm3d_flo_file. (One potential use is to couple FUN3D with Dick Campbell’s CDISC design software.)
  • File system I/O endianess is now detected. VGrid meshes require big endian I/O, and AFLR3 binary meshes require a .lb8.ugrid or .b8.ugrid suffix for little or big endian, respectively. Similarly, AFLR3 unformatted meshes require a lr8.ugrid or .r8.ugrid suffix as appropriate.

Bug fixes

  • Corrected lumping with mirroring in the new front end of the solver. Previously, the subscripts for labels were over indexing.
  • Corrected partitioning of static overset meshes; previously, metis/parmetis would stop if NO zones were marked as dynamic in the DCI file


  • Link to refine-1.6.3

Version 11.4-50962—December 2010

Major Enhancements

  • The adjoint-based tools are now always built. configure’s --enable-design has been removed.

Minor Enhancements

  • &sampling_parameters namelist sampling_frequency(:) and variable_list(:) has been added as options so the frequency of writing samples and the variables to be output can be varied geometry to geometry. Also, boundary and volume point sampling have been added as additional geometry choices, along with Schlieren imaging.
  • &component_parameters namelist has been added to fun3d.nml to allow the user to track the forces and moments of groupings of boundaries. Mass flow and few select flow parameters can be tracked for flow through boundaries.
  • Screen output has been reduced during start up.
  • To match the user interface used in other areas of the code, the@&flow_initialization@ namelist type_of_volume(:) now requires a string and the indices for (x,y,x) and geometry number have been transposed. Variables effected include: pmin, pmax, center, point1, and point2. For example, instead of pmin(n,:)= 1.0, 0.0, 0.0 where n is the nth geometry, it is now pmin(:,n)= 1,0, 0.0, 0.0. The user_vol_init.input file is now obsolete.
  • All design optimization cases using PORT, NPSOL, and KSOPT now make use of a simple diagonal scaling procedure. Tests have shown that this scaling provides a smoother, more efficient convergence. The optimal result is often better than the unscaled result as well. See the impact of scaling on Tutorial #1 (Max L/D for simple wing using PORT), Tutorial #2 (multipoint Max L/D for simple wing using PORT), and Tutorial #3 (Drag minimization with explicit lift constraint for DPW wing using NPSOL): unscaled result and scaled result .
  • A new command line option --write_mesh has been added to the flow solver. This option will write the mesh in parallel in its current state at the end of a flow solution. This is useful if the mesh has been moved internally within the solver, etc. The result is a binary AFLR3 file named [project]_new.b8.ugrid .
  • The type of grid is no longer specified in the optimization input deck ammo.input. See the template in the Design directory of your source. This information is now automatically gleaned from the fun3d.nml file.
  • When successfully caught, NaN locations are now dumped in Tecplot format so you can scatter plot them along with your geometry/solution to diagnose trouble spots.
  • The Cartesian force outputs cx/cy/cz as well as their pressure and viscous contributions (cxp/cyp/czp, cxv/cyv/czv) may now be used as cost functions in the adjoint solver for compressible flows.
  • Sampling surfaces can now be associated with a moving body, and thereby move in concert with that body. Association of isosurfaces with a body cannot be made however, as it is not applicable.
  • Grid adaptation is now controlled via namelists.
  • When using actuator blades, a non-linear twist distribution can be read from a file. A command line option --use_kdtree was also added to activate a faster tree-based source-to-node search. This option makes the most difference when there are more than about 70k mesh nodes per CPU.
  • Multiple version 4 restart files can now be converted to a single stream I/O restart using --lmpi_io 3 and steps = 0 in fun3d.nml. This bypasses the solver.
  • The pressure box cost function is now controlled by the &pressure_box namelist.
  • Can now visualize the laminar and turbulent volume nodes by outputting a integer variable (iflagslen) via the &sampling_output_variables or &volume_output_variables. If the volume node is “laminar”, the iflagslen value will be negative. If “turbulent”, it will be positive. This allows the user to check the specification of the transition location.
  • Can specify a 2d transition x-location with the --turb_transition command line option. You can use either a upper and lower patch specification or if you only have a single airfoil patch, use a z value to test for the upper and lower surface. The transitional patches must still be specified with a negative boundary number in the mapbc file. The new specifications are given in the fun3d.nml namelist &two_d_trans. (See Chapter 6.1 and 6.2 for details.)
  • The flow solver can now export the solution to single fieldview file via the &volume_output_variables export_to='fv' namelist setting.
  • The repair_vgrid_mesh utility can handle multi-segment cogsg files.
  • Added the ability to use stream/binary option for AFLR3 grids to create rotorcraft overset composite mesh using the dci_gen utility code.
  • Added output of solidity-weighted thrust and torque coefficients for (coupled) rotorcraft cases; also added option to output dimensional values for thrust, torque, etc
  • Added some utility codes and scripts for rotorcraft applications to the release distribution.
  • Added some error corrections if user inputs upper/lower box corners backwards (for sampling).
  • Added 3 additional force/moment outputs for rotorcraft coupling.
  • Added skin-friction and yplus computations so that these quantities could be output in the “pass-through” mode (i.e. read a restart file, output the data for plotting, and stop).
  • Added source for a Pointwise CAE Plug-in for exporting mesh and boundary conditions for FUN3D. The source can be used along with the Pointwise CAE Plugin SDK to create the plugin for Pointwise (see http://www.pointwise.com/plugins/ for details). Files are located in the misc/Pointwise/CaeFUN3D directory.
  • Project name (project_rootname member of the project namelist) can now be overridden by the --project_rootname command line argument. Likewise, --adapt_project can be used to override the adapt_project member of the adapt_mechanics namelist.
  • When requesting AFLR3 composite-grid output from the dci_gen preprocessor (rotorcraft simulations with overset grids) the default is now binary/stream (.b8.ugrid) instead of unformatted (.r8.ugrid) in order to accommodate larger meshes.
  • Added the ability for the user to specify arbitrary rigid-grid motion by reading a file containing a time history of transform matrices and “CG” locations.

Bug fixes

  • Fixed an error in 6DOF for the case where the grid is not scaled 1:1 with the actual geometry
  • Fixed an error in the merging procedure used to generate prismatic meshes from tetrahedral VGRID meshes – correctly handle situations where all four nodes of a tetrahedron in the boundary layer lie on the same no-slip surface
  • The configure script is more portable. It tests the capabilities of the Fortran compiler instead of the compiler name. This fixes a configuration problem with gfortran on Ubuntu and SunOS.
  • Adjoint option --outer_loop_krylov now works with y-symmetry boundary condition.
  • Fixed an error in solution output where turbulent residuals were gathered if ‘residuals’ output was requested, even if the case was not a turbulent one.
  • Fixed an error in which the input xml data (for overset cases) could be lost because between calls it did not have the “save” attribute.

Version 11.3-48116—July 2010

Minor Enhancements

  • To better communicate purpose, renamed utils/cogsg_bc_fixie to utils/repair_vgrid_mesh.
  • If bandaids are specified to be used in the ammo.input deck, the design optimization driver will automatically pass the --bandaid command line option to the solvers. Previously, users had to specify this option explicitly in the command_line.options input file.
  • Force and moment components (total) are now computed during temporal subiterations and are output to the {project}_subhist.dat file
  • Stream I/O flow restarts can be read with or without—freeze_limiter regardless of whether—freeze_limiter was used with an earlier run
  • All I/O required at each time step during unsteady adjoint solutions is now performed asynchronously (Fortran2003-compliant compiler required).
  • Added a cost function to match target pressure distributions along a 1D ray in the field.
  • A copy of the current design variables is automatically saved in the Flow/surface_history directory at the start of each function evaluation during a design optimization.
  • Streamlined the process for using only a selected subset of all solid surfaces in a static aeroelastic problem.
  • Added several rotorcraft utility codes to facilitate the conversion of CFD/CSD data into the UH60 P/DB format.
  • Added—adapt_output_metric command line option to write grid adaptation metric to file

Bug fixes

  • Fixed a serious error in how surface mesh sensitivities for bandaid-parameterized bodies were being loaded in the adjoint solver.
  • Fixed component force summation when there are no flow-through boundaries.
  • Fixed cylindrical sampling.
  • Removed a Fortran 2003 stream I/O feature (POS=), which caused intermittent problems when restarting with different number of processors for some compilers. Stream I/O stills works, but it no longer requires the POS= attribute.
  • Fixed two errors in libsmemrd (HI-ARMS actuator disk model)
  • Corrected an over-indexing error when checking grid consistency. Error only occurred for mixed elements cases, where some processors would have no local tetrahedral elements.
  • Fixed an error where force integration on moving bodies did not honor the user input in “remove_boundaries_from_force_totals”
  • Fixed two “errors” in the 6-DOF module.


  • Known issue: If a VGRID mesh contains a tetrahedral element with all 4 vertices located on the same non-viscous boundary patch (i.e., may occur on curved outer boundaries), FUN3D’s prismatic merging procedure can fail. This will be corrected for the next release.

Version 11.2-46848—May 2010

Major Enhancements

  • Added the ability to load NSU3D unformatted files directly into the solver. Corresponding grid_format value for the &raw_grid namelist is ‘nsu3d’. See the section on v11.x pre- and post-processing for detailed information.

Minor Enhancements

  • To conform to Tecplot ascii file extension conventions, [project]_hist.tec has been renamed [project]_hist.dat.
  • The string lists like boundary_list, which specifies boundary patches to output, now accept ranges, e.g., ‘2, 11-87, 93’.
  • If the variable jacobian_eval_freq is specified in the &code_run_control namelist or via the command line option --jupdate, the automated jacobian updating strategy based on ratios of residual norms will be disabled and the specified frequency will be used instead.
  • If family names are available for the boundary groups, they will be propagated into the [project].forces file.
  • Extended the Fieldview grid reader to read formatted Fieldview files with data beyond the “Elements” section.

Bug fixes

  • Solvers will shut down gracefully if invalid boundary numbers are specified to be output.
  • Corrected the binary search algorithm to function correctly when only three input values are provided.
  • Fixed an uninitialized memory read that occasionally caused problems loading adjoint restart files.
  • Corrected bug in configure script for MPICH2 configurations that mistakenly tries to link against non-existent mpi library (-lmpi)


Version 11.1-46128—April 2010

Major Enhancements

  • Added the ability to load Fieldview formatted and unformatted files directly into the solver. Corresponding grid_format value for the &raw_grid namelist is ‘fieldview’. Note that the fieldview_coordinate_precision variable must also be set. See the section on v11.x pre- and post-processing for detailed information.

Minor Enhancements

  • Changed the way that MPI environment is customized in configuration for HPC systems. The environment variables MPIBIN, MPIINC, MPIF90, and MPIRUN have been replaced by the addition of—with-mpibin, —with-mpiinc,—with-mpif90, and—with-mpiexec respectively. These values have defaults similar to previous versions, but now allow the use of—without-mpi* to signal that the value is not available/needed. For example, if no `mpif90` compiler wrapper is required, use —without-mpif90 and the value of FC will be used directly. Also, the new values are relative to the given—with-mpi value unless they contain one or more ”/” whereby they are considered absolute (Eg. —with-mpi=/usr/local—with-mpibin=mpibin—with-mpif90=myf90 implies the MPI compiler wrapper ”/usr/local/mpibin/myf90” whereas —with-mpi=/usr/local—with-mpif90=/opt/myf90 explicitly specifies the compiler wrapper as ”/opt/myf90”).
  • Changed &raw_grid namelist variable from lump (integer) to patch_lumping (character). The previous values of (0,1,2,3) have been mapped to (‘none’,’bc,’family’,’family’).
  • Changed the file extensions for AFLR3 grid files to match the Mississippi State convention: .ugrid is an ASCII file, .r8.ugrid is a double precision unformatted file, and .b8.ugrid is a stream (or C binary) file.
  • BC files for Fieldview and FAST grid files must now have the .mapbc extension (instead of .fvmapbc and .fastbc, respectively), just like VGRID and AFLR3 formats. All .mapbc files may now contain an optional third column containing family names (the exception being VGRID .mapbc files, which always specify a family name in the 6th column). If family names are available, the boundary patches may be grouped using them, as specified by the patch_lumping variable in the &raw_grid namelist.
  • Provide the user better error feedback in the event a restart file read fails.
  • Grid mirroring is now supported for grids loaded directly into the solver.
  • Replaced the non-standard .hst extensions on moving-body output files with .dat, to use the conventional Tecplot extension for ASCII files
  • Slight change in the ddf file naming paradigm to be consistent with the massoud paradigm since they are supposed (or at least originally intended) to be used together
  • Added an option to write MASSOUD data out from the solver – a function formerly performed by party. Basic command line option is —write_massoud_file
  • Added Fieldview and AFLR3 options for component grids in the dci_gen preprocessor for rotorcraft
  • Moved the input data formerly input via the files move_gmres.input and gmres.input into namelists &elasticity_gmres and &flow_gmres, respectively. These namelists are input via the fun3d.nml file
  • Replaced the source-to-node search used for the HI-ARMS actuator disk library with the more robust search developed for the native FUN3D actuator disk library
  • Replaced the non-standard .tec extensions on aeroelastic history (aehist) and aeroelastic surface (aesurf) files with .dat, to use the conventional Tecplot extension for ASCII files
  • Removed the first two, essentially useless, dependent variables from the subhist file, so that tecplot brings up residual vs subiteration by default. Also replaced the non-standard .tec extension on this file with the Tecplot convention, .dat
  • Moved the &slice_data namelist, formerly input via the file slice_global_bndry.input, into the fun3d.nml file
  • Design optimization driver will now use first flow/adjoint solver executables it finds in the user’s PATH, rather than just looking in the current working directory

Bug fixes

  • Fixed a subtle bug in the read/write format of unformatted AFLR3 files to be consistent with the Mississippi State file format definition. MSU website had a slight error in the published file format versus what their tools actually write. This should fix things for users who have had this problem in the past. Existing AFLR3 files written by FUN3D will no longer be readable (if this is a must, get in touch for a workaround).
  • Fixed a parsing problem with the boundary_list variable in the &boundary_output_variables namelist that previously limited the user to very short lists of boundary IDs.
  • Fixed a restart issue for adapted grids with frozen limiters.
  • Now does an immediate stop after an unsuccessful attempt at correcting negative tet cell volumes via edge swapping is made; before the code would continue on for a while before stopping
  • Fixed an issue with sampling output – wasn’t getting written when restarting and using the command line option—sampling_freq -1
  • The replacement for the file kmetis.c for the ParMetis 3.1.1 distribution is now included in the utils directory, as noted in the Third Party Libraries section of the website


  • There are two known issues that arise with the use of the Intel 11.1 compiler. The sequential preprocessing tool party can exhibit problems when constructing the arrays needed for MPI communication. This should not be a problem for most users, as the use of party is seldom required anymore. Also, a problem can occur when reading adjoint restart files. Both of these issues will be addressed in the next release.

Version 11.0-45226—March 2010

Major Enhancements

  • In most cases, the use of party is no longer required as a preprocessing step. Linking to ParMetis library now required for parallel execution: solver loads raw grid formats directly and partitions internally in parallel. Eliminates [project]_part.i and files; restart information contained in a single file. See new sections on v11.0 pre- and post-processing for detailed information, including options to use MPI-IO layer for parallel file I/O on parallel file systems.
  • Continued improvements to computational performance. See these plots for tetrahedral performance relative to earlier releases, and these plots for mixed-element performance. Simulation is transonic flow using recent AIAA DPW tet/mixed grids consisting of roughly 5 million grid points. Run fully-dense on 32 dual-core nodes. Also see this plot for recent scaling study to 8,192 cores using various grids up to 105 million grid points (600 million elements).
  • Incorporated the HI-ARMS/CREATE/HELIOS actuator disk package developed by the DoD for rotor simulations: Software Module for Engineering Methods of Rotor Dynamics (SMEMRD) version 1.3.1. The FUN3D team does not provide technical support for this capability; users must contact Dave O’Brien for usage details. (The legacy FUN3D actuator disk capability previously developed by Dave O’Brien while at Georgia Tech is still also maintained, supported, and documented here on the FUN3D website.)

Minor Enhancements

  • The default value for the UMUSCL coefficient is now 0.5 for all 3D node-centered computations on grids containing element types other than tetrahedra. This value has been recommended practice for several years for such cases, so it was decided to make it the default. Also removed the ability to specify this parameter from the command line. If user wants a different coefficient, it is available via a separate namelist; get in touch for details.
  • Changed default coefficients associated with the BDF2opt temporal scheme. Traditional coefficients of 0.58 and 0.42 for the BDF3 and BDF2 contributions, respectively, may admit instabilities for long-running simulations. Default coefficients are now 0.48 and 0.52, shown both theoretically and numerically to yield stable solutions. See also AIAA Paper 2010-0122.
  • Added sanity/safety checks for periodic cases. Also added—periodic_tol command line option to control the tolerance for the periodic pair search.
  • All input data previously entered in the file namelist.input should now be placed in fun3d.nml. The existence of a namelist.input file will now cause FUN3D to halt execution, with a warning to the screen output.
  • Removed all co-linear discretization options.
  • To ease use and reduce code maintenance, the “getgrad” executable is now obsolete. This tool used to perform the linearizations of the residuals and cost functions with respect to the grid for a subsequent mesh adjoint solve. These operations are now performed at the tail end of the adjoint solver when the ‘—getgrad’ command line option is invoked. The format of rubber.data has changed slightly to reflect this (see template in Adjoint subdirectory of distribution).
  • To ease use and reduce code maintenance, the “gridmove” executable is now obsolete. This tool was formerly used to deform the grid using linear elasticity as requested by a design optimization procedure, as well as to solve the mesh adjoint equations for a sensitivity analysis. These processes are now performed internally in the front end of the flow solver and the back end of the adjoint solver.
  • Since the partitioning and preprocessing steps have been moved into the front end of the solvers, the “pparty” executable is now obsolete.
  • If a tetrahedral mesh deformation procedure fails, an attempt will be made to locally untangle the problematic cells using the refine library if FUN3D has been configured using ‘—with-refine=...’. Plans are to extend this to other element types soon. (requires refine version >= 1.5.0 )
  • Added flow solver option ‘—embed_grid’ to write out a globally-embedded version of the current mesh. This does not project new points onto the true geometry.
  • Added the ability to output Tecplot flow visualization files in a “pass through” operation in the solver. This allows visualization of the current solution in an existing restart file, without advancing the solution in time or altering a the data in the restart file. In this way the solver can act as party used to for post processing, although much faster since the flow solver can be run in parallel. The pass through output is accomplished by specifying steps=0 when running the solver, plus the usual animation output flags.
  • Added support in the rotorcraft utility code “dci_gen” to allow support of FieldView meshes; support for AFLR3 meshes will soon follow. This does require a little extra user input to dci_gen, to specify whether the component grid is a Vgrid mesh or a FieldView mesh, etc.
  • To streamline throughput on rotorcraft cases, the dci_gen code was modified to create the composite mesh with the blades in a “neutral” position, devoid of any flap, collective, or cyclic settings. In the flow solver, when starting from scratch, the blades are “popped” to the correct settings for the case at hand. This allows one composite grid to be used for a particular configuration without having to have a new composite grid for each flight condition.
  • The specification of which boundaries are output when using the —animation_freq option is no longer accomplished using a separate input file (“boundaries_to_animate”). Instead, this is now done in the &boundary_output_variables namelist, via number_boundaries and boundary_list. The existence of a “boundaries_to_animate” file in the working directory will now cause the solver to exit with a message describing the new procedure.
  • Improved the procedures for determining the leading and trailing edges of “sliced” sections
  • Added the RUN_LOOSE_COUPLING (PBS) script for loose coupling of FUN3D and CAMRAD II; this actually makes running a coupled rotorcraft case practical.
  • Added several rotorcraft utility codes for processing FUN3D and CAMRAD output
  • Added another option for setting the modulus of elasticity, —elasticity 5, which uses slen-squared instead of slen. This helps a few problem cases of mesh deformation.
  • Added an option—reuse_existing_dci_files, so that, among other things, dci files generated from a run with (say) a 2x time step can be reused in a computation with a 1x time step; along the same lines added a script to renumber an existing set of dci files for use with a different time step; also along the same lines added—reset_dci_period to do what the name implies in order to change the time step in a time-periodic case.
  • Added the ability to change turb models when running a time accurate simulation

Bug fixes

  • Fixed minor memory problem in tetrahedral VGRID merging procedure
  • Fixed bug in specifying ‘—limit_near_walls_less’ command line option
  • Fixed a bug in the bounding box option for slicing
  • Fixed the—dci_freq option to work in the current code
  • Fixed a bug in the grid metric computations on symmetry planes, that happened (only) if a static grid transform was utilized
  • Fixed a bug in Tecplot output from the solver that prevented correct output of mixed element grids (with more than one cell type)
  • Fixed a bug in feature-based adaptation metric introduced in 10.8 that causes a seg fault


  • FUN3D is now compatible only with SUGGAR++ and not the older SUGGAR code
  • FUN3D now requires refine version 1.5.0 or later for the unravel API
  • FUN3D now requires MPI-2-compliant MPI libraries when building against MPI (most current MPI flavors are MPI-2 compliant)

Version 10.8-41173—July 2009

Major Enhancements

  • Initial release of time-dependent adjoint capability for static, rigidly-moving, and deforming grids. Initial demos shown at the 2009 AIAA CFD Conference (also included as Applications here on the website)
  • Modified mixed-element merging procedure for VGRID meshes to avoid merging rare pathological splayed-open cells in the baseline tetrahedral grid—cures robustness issues in the solver.
  • Disallowing simultaneous merging/lumping in the preprocessor. This was originally how things were set, but the restriction was removed in 10.7. Pathological grid topologies led to this restriction being re-introduced. Users may still lump the resulting mixed element grid as always.
  • Added option to trim merged mixed element prism stacks to same height across entire boundary layer grid, resulting in no pyramids present.
  • Computer science improvements in mixed element viscous flux Jacobians speed routine up by 35%, yields about 20% decrease in overall runtime.
  • Users should see about a 10% reduction in runtime over 10.7 for tetrahedral solutions due to computer science-related improvements.
  • Streamlined the parallel preprocessor (pparty) to accommodate multicore environments, i.e., many processors with limited memory (as little as 1 GB per core). Tests have been successfully performed using up to 8,196 cores and this should extend to higher core counts. The preprocessing time and memory requirements for large grids (30M+ nodes / 180M+ elements) has been greatly reduced. However, grid mirroring and accounting for implicit lines are currently not implemented. Finally, the mixed-element path through pparty is operational but is undergoing further testing. Please report any issues.
  • Implemented overset flowfield adjoint solutions for steady flows.
  • Support for multipoint optimization using NPSOL

Minor Enhancements

  • Updated design optimization documentation and tutorial cases
  • Design driver can now be told the executable name for running MPI jobs, e.g., mpirun, mpiexec, etc.
  • Design driver now stores off history of surface grids for each body at each design iteration
  • Streamlined input for moving overset grids (&composite_overset_mesh namelist now has only one entry: the input XML file used for the static composite mesh generation)
  • Extended periodic boundary condition to handle periodicity in any of the three Cartesian coordinate directions; solver determines periodicity direction by evaluating surface normals on the periodic boundaries

Bug fixes

  • Fixed bug for moving-grid cases requiring “snapping” of symmetry plane boundaries for strong symmetry enforcement
  • Fixed bug in Tecplot binary output
  • Fixed bug related to slicing through prisms using solution sampling surfaces

Version 10.7-37110—February 2009

  • Added support in party for FieldView FV-UNS version 3.0 files; also added support for single-precision unformatted files and corrected reading of multiple element types in unformatted FV-UNS files.
  • Expanded Tecplot output from the flow solver, largely eliminating the need for Party to do most Tecplot-related post processing.
  • Grid metric and distance function computations moved out of Party and into the flow solver, where they are now performed in parallel.
  • Added HRLES model of AIAA 2008-3854
  • Fixed memory problem when running RANS-based design optimization with explicit constraints
  • Added limited periodic BC for 2D grids extruded in spanwise direction
  • Allow for spatial transforms of bodies parameterized using MASSOUD for design optimization
  • Allow multiple bodies to employ the same set of design variables to maintain consistent shape during design optimization (i.e., blades of a rotor)
  • Made the mixed-element merging procedure for tetrahedral VGRID meshes more efficient and eliminated a subtle error that caused rare instances of doubly-bookkept surface faces at odd-shaped adjacent surface patches. Also improved the feedback loop for degenerate cells/metrics to enable iterative re-merging with higher quality elements. Removed restriction on concurrent boundary patch lumping and element merging.
  • Enabled linking to KSOPT, an optional third-party library for design optimization
  • Support for multipoint optimization using PORT, KSOPT
  • Fixed minor bug in adjoint solver associated with noninertial mode and Dacles-Mariani modification to Spalart model
  • Added command line option ‘—store_full_stencil’ to permit storage of complete linearization for adjoint residual computation rather than traditional nearest neighbor approach. Yields roughly a 5x speedup for adjoint solutions.

Version 10.6.0—August 2008

  • Added ‘—alternate_freestream’ command line option to initialize partially-quiescent cases such as rotors in hover in noninertial mode
  • Linearized noninertial mode in design tools (primarily facespeeds and Coriolis terms) – for example, allows design optimization of rotors in hover
  • Minor changes in format of rubber.data control file for design
  • Added and linearized rotorcraft figure of merit function (actually squared, to avoid a sqrt() of a negative lift in the linearizations) as an available cost function in design tools
  • Linearized Dacles-Mariani modification to Spalart model for use in design tools
  • Linearized farfield_pbck boundary condition in design tools
  • Enabled moment coefficients (and/or their pressure/viscous counterparts) to be used as cost functions for compressible flow in design tools
  • Bug fix for moving mesh GCL terms when more than one element type is present
  • Bug fix for nondimensional rotation rate for rotor cases
  • Enable build procedure to correctly accommodate NPSOL as an optional library

Version 10.5.0—May 2008

  • Primary solver input now specified through fun3d.nml namelist file – see section of manual devoted to flow solver input. Translator capability for legacy ginput.faces decks provided.
  • Format for partition files ([project]_part.i) has changed
  • Much improved propulsion-related boundary conditions for inlets/exhaust. See relevant section of manual, tutorials for information.
  • Improved computational efficiency (see tetrahedral speedup and mixed element speedup over last few releases)
  • Corrected minor problem with energy/pressure on the wall for moving grid/noninertial simulations
  • CGNS output support in party; two CGNS translator utility codes also added
  • The party preprocessor has been instrumented with OpenMP. To use in an OpenMP mode, party must be compiled with -openmp; otherwise party defaults to a single thread. Note, only the preprocessing path within party has been instrumented.
  • Overset capability now requires DiRTlib version 1_25 (or later) and SUGGAR version 2_41 or later
  • The command-line option—dci_on_the_fly now utilizes suggar library calls to a separate process run as part of the fun3d run script. A separate suggar executable is not needed. The new suggar library calls mean that the flow solver must be run with one more processor than there are part files. In addition, that processor must be the first processor in the machine file list, and that processor must have sufficient memory to fit the entire hole-cutting process.
  • Adjoint-based design components (which have been omitted from recent releases) are included in this release. Please do not attempt to undertake FUN3D design optimization unless you are extremely comfortable running the flow solver and you have some very powerful hardware at your disposal.

Version 10.4.1—October 2007

  • Fixed fatal bug in actuator disk capability
  • Autotools build process extended to handle IBM AIX systems
  • Since the appropriate fix has now been incorporated in the latest releases of VGRID, the VGRID “bcfix” subroutine is no longer performed on native VGRID meshes by party or pparty to correct numbering issues for viscous surfaces intersecting symmetry planes

Version 10.4—September 2007

  • New standardized installation procedure, based on the use of GNU autotools
  • Party now capable of merging legacy viscous tetrahedral VGRID meshes into prismatic elements in the boundary layer. Activated through the party command-line option—merge_tets. Requires VGRID .poin1 file.
  • Robust mixed-element solutions via command-line option—umuscl 0.5
  • Thin-layer formulation available for mixed-element solutions using command-line option—thin_layer
  • Depending on compiler/solver options and architecture, wallclock time reduction over v10.3.1 can be as high as 67%
  • Default relaxation scheme is now red-black with global consistency across processors.
  • New implementation for total temperature/total pressure boundary condition available for testing
  • Adjoints available for limited set of actuator disk options
  • Central difference plus scalar dissipation available for testing; use IHANE=5 in ginput.faces,—cd_jac to engage Jacobians on LHS, and —scalar_diss_coeffs to specify kappa values
  • Incompressible implementation of specified normal velocity boundary condition now available
  • Party can now read point-matched multiblock structured Plot3D files and convert them to hexes, using neutral map files (.nmf) generated by V2K .
  • CGNS grid input support in party
  • Aeroelastic solutions using mode shapes now available with the command-line option—aeroelastic_internal – see “Time Accurate – Moving Geometry” section of the manual for more information
  • SUGGAR callable from within the flow solver to compute overset connectivity files “on the fly” for applications such as 6DOF
  • A min-mod limiter is available as IFLIM=3
  • Slices (a la the “box5/6” utility codes) can now be output from the flow solver via the command-line option—slice_freq – see “Time Accurate – Basics” section of the manual for more information
  • Multiple postprocessed output files of the Tecplot and/or Fieldview type can now be obtained in a single postprocessing run of party/pparty via the —multiple_output command line option; e.g. both surface and volume tecplot files can be had in the same postprocessing session
  • Solid wall boundaries can model translating and/or rotating boundaries i.e., ground vehicle with moving ground plane and rotating tires. See FUN3D_90/project_name.initbc for an example.
  • Party and PParty default to a more efficient partitioning approach resulting in better load balancing of nodes, cells, and edges.
  • Simple runtime mesh adaptation based on node movement available for testing.
  • Gradient-based mesh adaptation using refine library available for testing. refine is available via the same channels as FUN3D, but is not included with FUN3D.

Version 10.3.1—May 2006

  • Fixed a bug in parallel partitioning that affected SST turbulence model behavior.

Version 10.3.0—May 2006

  • Fixed a bug in repartitioning time-accurate data with party
  • Added static grid transform (translation/rotation) to be performed at the start of a flow solve (leaves part file unchanged). Triggered via the command-line option—grid_transform and requires namelist &grid_transform data to specify the desired transform
  • Added multiple-mirroring capability to party. For example, a 1/4 grid might be mirrored first in z, then in y to create a full, 360 degree grid, via the command-line options—mirror_z—mirror_y
  • Changed mesh/body motion transforms from incremental (from last time step) to transforms from t=0 to unify forced motion, SUGGAR and 6DOF; the input file grid_motion.schedule, previously used to set grid motion parameters, is deprecated – moving_body.input (a namelist file) now serves the same function (and more).

Version 10.2.0—March 2006

  • Corrected long-standing bug in Menter’s SST model. Significantly improves performance of this option (available for INCOMP=0 and 1)
  • Added the ability to optionally initialize “boxes” of the domain to different values than normally set by values in ginput.faces. Can be useful for flowfields with widely varying conditions, such as an external flowfield with a jet nozzle modeled within the moldline of the vehicle. See flow solver input deck section for details.
  • To aid convergence for supersonic flows or other flowfields using a flux limiter, added the ability to “freeze” the flux limiter after a specified number of timesteps. See documentation accompanying IFLIM in the input deck section.
  • Symmetric Gauss-Seidel relaxation now available through the command line option --sgs.
  • Added the mirroring capability into pparty. By invoking pparty with any mirroring command line option (—mirror_x,—mirror_y, or—mirror_z), a (FAST) mirrored grid will be created. That grid can be subsequently partitioned.
  • The repartitioning capability in pparty has been extended to enable users to repartition adjoint files exclusively of other files.

Version 10.1.0—November 2005

  • Added capability to process boundary condition -4000, the laminar patches for turbulent transition flows, to pparty.
  • Slight modification to nonlinear update formulation. New approach lets solution (pressure/density/energy/turbulence) get really close to zero, but never quite get there. Seems to help robustness in some cases that are “on the brink”
  • Percentage value for clipping nonlinear updates during large transients now available via command line with “—meanflow_talp 0.15” (would set value to 15% for mean-flow eqns) and/or “—turb_talp 0.10” (would set value to 10% for turbulence eqns). Note 15% and 10%, respectively, were the hardwired values for prior releases.

Version 10.0.2—July 2005

  • Added capability to extract pressure signatures along rays in the x-direction. User supplies yz-coordinate pairs (as many as desired) via sonic_boom.input file. Pressures are extracted for plotting at every grid face the ray(s) intersect.
  • Added pressure integral on user-defined integration cylinder cutting through the domain as an objective function. See picture.
  • Fixed an error in the initialization of rotor sources for LoadType=1 and LoadType=2. This bug would cause the resultant disk loading to be garbage. This only applies to use of the --rotor command line option.
  • Switched the rotor formulation to be based on rotor tip speed. This prevents the division by zero errors associated with hover cases (XMACH = 0.0).

Version 10.0.1—February 2005

  • Fixed a fatal compilation error for some versions of the Intel compiler
  • Fixed an error in the rotor module that would cause the solver to crash for all loading models except the blade element model.
  • Three components of vorticity, as well as its magnitude, are now available as standard plotting variables in the Tecplot volume file option of party

Version 10.0—February 2005

Due to a new Langley policy, FUN3D has jumped from Version 3.x to Version 10.0 with this release.

  • Incorporation of rotor source terms to model time-averaged behavior of a rotor or propeller. Four loading models are available: uniform, linear variation along the radius, blade element, and a user specified distribution.
  • Revamped the implementation of noninertial (rotating) reference frame; should be viewed as preliminary, but users should be aware that it is different from previous releases. The fundamental difference is that solutions are now obtained for the absolute velocities as seen by an observer in the noninertial frame, rather than for the relative velocities as seen by an observer in the noninertial frame.
  • In concert with the revamped noninertial frame implementation, party now accepts the same command line options for noninertial reference frame solutions as the flow solver. If party is run with these options, it will query the user as to whether the solution file should be output in terms of absolute velocities or relative velocities; if relative velocities are requested, party uses the command line data to make the conversion.
  • Wall temperature in viscous flows can now be input via the command line option --twall temp where temp is the (real) value of the nondimensional wall temperature
  • Initial implementation of a “tunnel inflow” boundary condition in which total pressure, total temperature, and 2 flow angles are specified at a subsonic inflow boundary. The new boundary condition number is 7000, “totalp_totalt”. The values needed for this BC are input via the command line option --tunnel_inflow PT TT aa bb where PT, TT, aa, bb are real values of P_total/P_infty, T_total/T_infty, alpha (degrees), and beta (degrees), respectively at inflow.
  • Added time-accurate capability for incompressible flows – should be viewed as preliminary
  • Added third-order backward differencing in time, “bdf3”, (itime=3), and “bdf2_opt”, (itime=-3), a blend of second and third order schemes. The bdf3 is not fully A-stable, but bdf2_opt is, so it is a good compromise scheme.
  • Added estimate of temporal error for unsteady flows, which may be used to regulate subiteration convergence via the command line option --temporal_err_control temporal_err_floor where temporal_err_floor is the factor by which the subiteration residual should drop below the temporal error estimate before the subiteration loop is exited. A recommended value is temporal_err_floor = 0.1
  • Added “UMUSCL” scheme for inviscid fluxes analogous to “kappa family” of schemes for structured meshes, implemented via the command line --umuscl kappa where kappa is the upwinding parameter: 0.0 gives the baseline FUN3D scheme, 1.0 is central differencing (don’t use 1.0), and 0.5 leads to a third-order inviscid flux on uniform grids in one dimension.
  • Hypersonic path now evaluates heating in the flow solver alongside usual forces and moments, instead of just in party
  • In regards to viscous VGRID meshes having inconsistent connectivity information between the .cogsg and .bc files on symmetry planes: added a party command line option --bcfix_skip_viscous_patches to skip the “fixing” of the viscous patches, as sometimes the extraction of faces on the viscous boundaries will fail to find all the faces, and viscous patches typically do not have advancing layers that need to be “fixed”. Also added a comment when the default extraction fails to give the user a hint that they should try this command line option.

Version 3.3.1—August 2004

  • Bug fixes for the adjoint error estimation and correction --radembed command line option.
  • Interface compatible with refine library version 1.2.1.

Version 3.3—July 2004

  • First release of suite of sensitivity analysis and optimization components: Adjoint solver, Sensitivity analysis, Mesh movement/Mesh adjoint solver, Optimization driver. Requires lots of processors and substantial hands-on experience with the baseline FUN3D flow solver.
  • Massive overhaul to the user manual section of the website
  • Changed ginput.faces input file format (variables ITIME, DT, DTAU, and CONST_DT). See example in FUN3D_90/ginput.faces.
  • Added [project]_subhist.tec output file for time-accurate cases. This Tecplot file contains the subiteration convergence history for the RMS residuals.
  • Added the --partition_lines option in parallel party, which partitions the grid while leaving the implicit lines intact.
  • First release of moving grid capability. At the present time, only a limited number of movement options are available: 1) translation with constant speed, 2) translation with speed sinusoidally varying in time, 3) rotation with constant angular speed, and 4) rotation with angular speed sinusoidally varying in time. At the present time all grid points move with specified function of time, i.e the mesh moves as a rigid body.

Version 3.2.2—April 2004

  • Added blocksize argument to open statements to improve I/O performance with Intel 7.0 compiler. (Must compile with – DINTEL_COMPILER to invoke this argument.)
  • Eliminated duplicated Jacobian elements on off-diagonals for non-simply connected elements—did not affect results, only additional memory and CPU cost
  • Revised and streamlined USE statements to resolve Internal Compiler errors for Intel7.0, Intel7.1, and Intel8.0.
  • Added a routine to synchronize the status of file deletions for distributed files system (i.e., NFS) with program execution.
  • Added parallel repartitioning to the preprocessor (pparty). This allows existing partitions and solutions (including time-accurate) to be repartitioned in parallel.
  • To address I/O issue of writing parallel partition files, added a command line option (--pparty_interleaf) which allows the user to write out selected groups of partition files concurrently. By default, each processor will write it’s partition out concurrently. An interleaf value of 2, will allow 2 processors at a time to write out their partition concurrently. A value of 1, will allow each processor to write out it’s partition alone.
  • Added an option in sequential party to dump out Tecplot data to interface with Dick Campbell’s CDISC tool.

Version 3.2.1—March 2004

  • Added a command line option --lines_unlumped_bcs which uses an alternate line construction for unlumped viscous boundaries. Also added an output file projectname_badlines.tec which dumps out the lines that may be “bad” (under 15 nodes and over 40 nodes long). The original line construction technique may have problems at concave corners if the corners lie along unlumped viscous patch boundaries. The command line option must be used for both party and the flow solver.
  • Added a command line option --turb_transition which will allow for transition to turbulent. The laminar surfaces are marked by boundary groups—use – 4000 or – 4 boundary type. The turbulent production terms are turned off near these boundaries. The laminar nodes in the volume are marked by setting the iflagslen to a negative number. A laminar node is specified if the nearest surface node is on a laminar boundary. The command line is required for the flow solver only. The mesh must be pre-processed with the – 4000 or – 4 boundary flags. This is not functional for the incomp=2 path and works only for SA perfect gas.
  • Added command line option --fviflagslen to output iflagslen (iflagslen<0 for laminar regions) Fieldview file when partitioning (Party Only)
  • Added command line option --cl_const for the flow solver to drive the solution to a constant cl value which is the argument to the command line option. A new tecplot file projectname_alpha.tec will be generated for this type of run. Note this file does not keep track of prior history. If you restart with a cl_const the initial alpha will be read from the restart file. This is not functional for the incomp=2 path.
  • Added laminar, S-A terms on mixed element grids, but not mature yet. 2D ready for experimentation, 3D not robust yet
  • party_metis and party_nometis have been merged into a single executable party. The inclusion of Metis is controlled by the setting of the METISLIBS variable in Makefile.env. Leave blank for party without Metis capability.
  • Parallel version of party, pparty, now available. Useful for partitioning large cases on distributed clusters. (Very memory-conscious, was a showstopper for party.) Requires PARMETISLIBS to be set in Makefile.env. Requires MPI. Not all functionalities of party are in yet—no line-implicit partitioning, multigrid partitioning not complete yet, mixed elements not fully ready, no repartitioning available yet. Suggest using command line inputs, rather than menus. No [project].msh file is created. Run party —pooper_nomsh@ to view results on global grid.
  • Multigrid algorithm now in flow solver—requires explicit family of grids. RANS cases not robust yet.
  • Party can now handle multiple grids in a family through the use of --ngrid [n]. This is for multigrid solutions. The interpolation data will be generated automatically between each successive pair of grids.
  • Can now dump out S-A dependent variable (nu-wiggle) to Fieldview and Tecplot files
  • Added off-diagonal contributions to laminar terms on the boundaries—optional through the command line option --lam_bc_offds. Useful for low-Re applications.
  • General relaxation schedule implemented—control over sweeps in different parts of domain, ordering, etc. Uses additional input deck—ginput.faces is used if new file is not present.
  • Newton-Krylov capability added; don’t use it
  • Initial work done on user-specified profiles on BCs—not ready for general use yet
  • Slight changes to time-accurate stepping
  • Roe Jacobians can now be used by --roe_jac
  • New fluxes/Jacobians implemented: AUFS (IHANE=4), HLLC (IHANE=3). Use --aufs_jac, --hllc_jac for the corresponding Jacobians (instead of default van Leer LHS).

Version 3.2.0—March 2003

  • Removed for perfect gas path BC index 3010, a strong inviscid boundary condition (it doesn’t work for a general case were boundaries are lumped. Also gives suspect results for sharp t.e.)
  • Removed the strong implementation of the viscous porous boundary but left the subroutines in place. Need to go back and re-visit the implementation of the strong b.c.
  • Fixed a bug in the line_solve.f90 module. Added to the dimension max_nodes_in_line so that the start and stop nodes wouldn’t cause a memory overrun in cases where the line is of maximum number of nodes.
  • Mixed-element (hex, prism, pyramid, tet) inviscid solution capability for compressible and incompressible flows.
  • Strongly coupled SA turbulence model for compressible flows.
  • Automatic generation of complex version of the flow solver. (Ruby script)
  • Several new grid input options in Party (Fieldview, NSU3D and AFLR3) that support mixed-element grids.

Version 3.1.5—October 2002

  • Party now handles mixed elements throughout; not meant for general use yet
  • Prismatic extrusion of FUN2D grids in party
  • Weighted partitioning for viscous grids with implicit lines
  • Implemented implicit line solves for compressible viscous flows
  • Build process overhauled to simplify addition/removal of dependencies
  • Pre-processor directives are used for conditional compiling between sequential/parallel, metis/nometis, and compatibility with NAG compiler
  • Vectorization colors have been removed

Version 3.1.4—July 2002

  • Compilation now requires installation of Ruby scripting language
  • ./Configure must be run in the top level directory now to generate Makefile.env for compilation
  • Format of input deck changed—see FUN3D_90/ginput.faces for example
  • Format of restart files changed to hold more data
  • Post-processing of adjoint solution (party)
  • Generation of embedded grid and solution using party
  • Re-factored the Jacobian storage to be compressed row instead of edge based
  • Added command line options to all codes; options can be seen with --help
  • Added additional skin friction routine based on residual balance
  • Continued internal refactoring of party for mixed elements (not ready yet)
  • Improvements continuing for generic gas path algorithms (not ready yet)
  • Added 2-eqn SST turbulence model (not fully tested yet)
  • Optional modification of source term for Spalart model as suggested by Jack Edwards (NC State)
  • Allow separate time step for turbulence and flow equations
  • MPI modules now constructed using a code generator with templates
  • Entire compressible path explicitly declared as double-precision kind (no need for - r8)
  • Party capable of reading Fieldview-format files (under evaluation)
  • Continuous automatic code documentation generation with Ruby RDoc package
  • Added new BC index 4050, a weak viscous boundary condition
  • Added new BC index 3010, a strong inviscid boundary condition

Version 3.1.3—March 2002

  • Fixed non-dimensionalization bug in incompressible moment computation
  • Moved project name into grid derived type
  • Fixed compiler warnings on DEC Alpha/Fort compiler

Version 3.1.2—February 2002

  • Instituted a libs directory that stores all of the common modules that many of the codes share
  • Moved the viscous strong boundary enforcement after all the boundary fluxes have been added to the residual. This is to avoid any conflicts at the boundary interfaces.
  • Added second-order time accuracy. Laminar has been checked out (see picture ), turbulent being evaluated
  • Added option for Detached Eddy Simulation (still to be tested)
  • Added output routine to party to interface with ParMGridGen . The call is commented out, but is there if/when we need it in the future.
  • Added three new viscous boundary conditions:
    • BC 4010—Constant normal mass flux is set on a viscous boundary. (The value of mass flux is set in the bc_types module and is based on non-dimensional density and velocity. These values will eventually be read into the solver via an auxiliary boundary condition input deck.)
    • BC 4020—Constant normal velocity is set on a viscous boundary. (The value of normal velocity is set in the bc_types module and is based on non-dimensional velocity. These values will eventually be read into the solver via an auxiliary boundary condition input deck.)
    • BC 4030—Constant velocity is set on a viscous boundary. (The value of each Cartesian velocity is set in the bc_types module and is based on non-dimensional velocity. These values will eventually be read into the solver via an auxiliary boundary condition input deck.)

      Note these are strong boundary conditions. The surface velocities are initialized at the beginning of the calculation and not updated. For the normal mass flux and velocity conditions the initial normal direction is based on the boundary point normals calculated in the pre-processor.

  • Changed the output format for tecplot files to fifteen digits so that the viscous layers on tightly packed grids don’t get scrambled.
  • Added projected yplus to the tecplot solution output for viscous cases.
  • Added option to dump out entire volume grid in ASCII Tecplot format.
  • Corrected bugs in the rhs and LHS contributions for the compressible viscous boundary fluxes which are added on the inviscid,symmetry and farfield boundaries.
  • Corrected bugs in the LHS contributions for the incompressible viscous boundary fluxes which are added on the inviscid,symmetry and farfield boundaries.

Version 3.1—October 2001

  • First release of reacting gas chemistry capabilities. Note that this option (INCOMP>1) is currently in its very preliminary development stages and should not be executed by the everyday user. This development is being done under the HEFSS element of the FAAST program.
  • Reference temperature was still hardwired at 460 in subroutine edgejp. Now uses value that comes in through info_module.
  • Added new farfield boundary condition for extrapolation for both compressible and incompressible flow. The grid BC index is 2; the corresponding FUN3D BC index is 5005.
  • Added new farfield boundary condition for specifying back pressure. This value is currently set to freestream, but will be user-defined in the near future. This BC is valid only for compressible flow. The grid BC index is 5010; the corresponding FUN3D BC index is also 5010.
  • Explicitly defined boundary normals in party to be of kind my_r8, so the code will successfully do double-precision file I/O on compilers which don’t have a – r8 flag.
  • The dummy “time” variable in the restart file headers is now written out explicitly as kind my_r8. This is also for double-precision file I/O under compilers not having a – r8 option.
  • Added FELISA grids as an input option. The user supplies formatted .fro (boundary mesh) and .bco (boundary conditions) files, as well as a formatted .gri file (volume mesh). The native FELISA boundary types can either be mapped into the FUN3D format, or the FUN3D boundary indices can be entered directly in the .bco file.
  • Added a fix so that FUN3D-style BC indices can be used in the .fastbc or .mapbc files. If legacy boundary indices (<100) are used, they will be converted as usual to FUN3D format.
  • Renumbered options in party main menu for future expansion
  • By setting the number of existing partitions to be a negative value in party, the user can reconstruct solution files based on the grid coordinates contained in the [project]_part files, rather than the .msh file. This is intended to be used when a grid is moved, and only solution files are needed—note that the metrics are not updated, so this option should NOT be used when repartitioning a grid. The everyday user should not require this option.
  • Added a party output option to write out Tecplot surface files for exchange with MASSOUD. The everyday user should not require this option.
  • Modified the skin friction output in the Tecplot output to be based on the sign of the u velocity. This is so that in a separated region, we actually see a “negative” skin friction.
  • Made minor bug fixes in boundary Jacobians for BC types 6010,6011,6012 (the strong symmetry conditions).
  • Added distance function arrays to end of current distance function record in [project]_part files. These are already in .msh file. This was done to speed up computation of derivatives of the distance function for design. The everyday user should not care about this.
  • No longer write out a surface.dat file when partitioning; we now write out [project]_surf.dat from initial grid processing. This is for design purposes; the everyday user should not care about this.
  • The input deck variables are now broadcasted to all processors as they are being read in, rather than all at once at the end of the reading.
  • The .forces file is now written out at every ITERWRT iterations along with the [project]_hist.tec and restart files.
  • Fixed a bug in the Mach number computation in Tecplot output
  • Fixed a couple of Intel F90 compiler warnings

Version 3.0.2—July 2001

  • Fixed several small warnings from the Intel compiler—couple of tabs, 1h format descriptors, unused format statements.
  • Removed extraneous return statements.
  • Added explicit dimensions to thermo_module; was still using assumed-size arrays.
  • When the explicit symmetry plane BC type was added in v3.0.1, the viscous fluxes were being closed off on symmetry plane boundaries, but the “inviscid” portion of the if statement at the top of this loop was overwritten with “symmetry”, rather than “symmetry” simply being added to the end of the if statement in ADDITION to the “inviscid”. This has now been fixed so that the viscous fluxes on both inviscid and symmetry BC types are closed off appropriately.
  • The viscous flux Jacobians have also been modified on the boundaries for inviscid and symmetry BC types. Neither of these were being rigorously closed off before (since the LHS is just an approximation, we were able to get away with it).
  • Symmetry plane BC types have been added for x- and z-planes. These are now BC types 6001 and 6002, respectively.
  • Added strong enforcement of zero crossflow velocities on symmetry planes. These are BC types 6010, 6011, and 6012. They are for y-, x-, and z-symmetry planes, respectively.
  • The title string at the head of the input deck is now used as the zone title for the Tecplot convergence history output.

Version 3.0.1—June 2001

  • Corrected bug in non-dimensionalization of moments. Individual pressure and viscous components were OK; totals were not.
  • Corrected bug in preprocessor. Inviscid VGRID meshes were being sent through a routine intended solely for viscous grids.
  • Added BC Type 6000 for symmetry planes. They are currently treated exactly the same way as Type 3000 (inviscid), but are not included in force/moment computations.

Version 3.0.0—May 2001

  • Constructed to provide an initial foundation for the HEFSS project
  • Full conversion to Fortran 90 and MPI
  • Generalization of boundary condition specification through derived types
  • Much improved usability for first-time users, especially grid pre/post-processing and domain decomposition
  • Explicit version control using CVS

Version 2.0—July 1999

  • Parallelization using SGI shared-memory directives and domain decomposition
  • Design capability developed through the use of discrete adjoints (reverse mode) and complex variables (forward mode)

Version 1.0—June 1993

  • Solves the RANS equations on tetrahedral meshes on a single processor using a node-based scheme. Core numerics performed in Fortran 77, using a C front end for dynamic memory allocation.

Version 0.1—1989

  • Solves the Euler equations on tetrahedral meshes on a single processor using a cell-centered upwind finite-volume scheme and backward-Euler implicit time integration.
  • Implicit scheme eventually incorporated into USM3D.

1.5. Request Perfect Gas FUN3D

FUN3D is export restricted and can only be given to a “US Person”. The export restriction is in place because: 1) the code is developed by the US Government at US taxpayer expense, 2) the code can be applied to a wide range of fluid dynamic problems, and 3) a number of code features represent leading-edge technology.

A “US person” is a citizen of United States, a lawful permanent resident alien of the US, or someone in the US as a protected political asylee or under amnesty. The word “person” includes US organizations and entities, such as companies or universities – see 22 CFR 120.15 for the full legal definition.

NEW: To request the FUN3D software suite, which will include the refine grid adaptation and mesh untangling library and the knife cut-cell library, please fill out a request for FUN3D on the NASA Software Catalog

NEW:If you plan to perform design optimization with FUN3D, you may also wish to request the MASSOUD and/or Bandaids software as well. These are geometry parameterization tools that may be used with FUN3D. If interested, please fill out a request for MASSOUD/Bandaids on the NASA Software Catalog

1.6. Request High Energy FUN3D

The high-energy gas libraries that allow multiple species and non-equilibrium chemistry are not included in the standard release. Access is granted on a case-by-case basis. If you would like to apply for access to the high-energy gas libraries please fill out the form below or send an email to containing the information requested below and put the phrase “requesting high-energy gas libraries” in the application field below.


Have you completed a FUN3D usage agreement in the past? no yes

“US person” on usage agreement: (e.g., an institution or individual)

Point of contact:

Email address:

Phone number: Extension:

FAX number: (if available)


Proposed application:

How did you discover FUN3D?

1.7. User Manual

The version 13.0 PDF user’s manual is available as NASA TM-2016-219330.

The version 12.9 PDF user’s manual is available as NASA TM-2016-219012.

The version 12.8 PDF user’s manual is available as NASA TM-2015-218807.

The version 12.7 PDF user’s manual is available as NASA TM-2015-218761.

The version 12.6 PDF user’s manual is available as NASA TM-2015-218690.

The version 12.5 PDF user’s manual is available as NASA TM-2014-218520.

The version 12.4 PDF user’s manual is available as NASA TM-2014-218179.