FLOW6
A Finite Element Code for Fluid Flow
FLOW6
is a FORTRAN90 program which
uses the finite element method to solve for the steady state
velocity and pressure in a two dimensional fluid flow region.
The fluid flow is presumed to be incompressible, and time-independent.
The governing equations are the Navier Stokes equations with the
continuity equation.
FLOW6 was derived from the
FLOW5 code.
Alterations and new features include:
-
Both 3 and 7 point quadrature rules;
-
The no penetration wall condition has been extended to walls that
are not along a coordinate direction;
-
The elements are now in "standard" form;
-
A new free slip boundary condition is being added;
-
Boundary conditions handled by BOUNDARY routine.
FLOW6 writes node and element data files that may
be read in and plotted by
DISPLAY5.
Languages:
FLOW6 is available in
a FORTRAN90 version
Related Data and Programs:
BUMP
is a FORTRAN90 program which solves a fluid flow problem
in a channel including a bump which obstructs and redirects the flow.
CHANNEL is a program which computes the pressure
and velocity for a Navier Stokes flow in a channel. It is
available in
a FORTRAN77 version and
a FORTRAN90 version.
FEM2D_PACK
is a FORTRAN90 library which
contains utilities for 2D finite element calculations.
TOMS866
a MATLAB library which
is the Incompressible Flow Iterative Solution Software;
this library is commonly called IFISS;
this is ACM TOMS algorithm 866.
Reference:
-
Max Gunzburger,
Finite Element Methods for Viscous Incompressible Flows,
A Guide to Theory, Practice, and Algorithms,
Academic Press, 1989,
ISBN: 0-12-307350-2,
LC: TA357.G86.
Source Code:
Examples and Tests:
-
cavity.tec,
solution data suitable
for input to the graphics program TECPLOT;
-
cavity.txt, printed output.
-
cavity_elements.txt, element information
suitable for input to the graphics program DISPLAY5.
-
cavity_uvp.txt, node information
suitable for input to the graphics program DISPLAY5.
-
cavity_u.txt, the finite element coefficient
vector.
List of Routines:
-
MAIN solves a 2D steady incompressible flow using finite elements.
-
BANDWIDTH computes the lower band width of the Jacobian matrix.
-
BOUNDARY_INTEGRAL sets data useful for boundary integrals.
-
BOUNDARY_INTEGRAL_FREESLIP sets boundary integral data for the freeslip.
-
BOUNDARY_INTEGRAL_STEP sets boundary integral data for the step.
-
BOUNDARY_INTEGRAL_PRINT prints data useful for boundary integrals.
-
BOUNDARY_SHAPE returns the tangent and normal vectors along the boundary.
-
BOUNDARY_SHAPE_CAVITY returns the boundary of the cavity problem.
-
BOUNDARY_SHAPE_CHANNEL returns the boundary of the channel problem.
-
BOUNDARY_SHAPE_FREESLIP returns the boundary of the freeslip problem.
-
BOUNDARY_SHAPE_STEP returns the boundary of the step problem.
-
BOUNDARY_VALUE evaluates boundary condition functions.
-
COEF_READ reads the coefficient data from a file.
-
COEF_WRITE writes the coefficient data to a file for possible restart.
-
DGB_CHECK checks the dimensions of a general band matrix.
-
DGB_FA factors a matrix stored in LINPACK general band storage.
-
DGB_PRINT prints nonzero entries of a banded matrix.
-
DGB_SL solves a system factored by DGB_FA.
-
DVEC_AMAX returns the maximum absolute value in a real vector.
-
ELEMENT_PRINT prints out the elements.
-
ELEMENT_WRITE writes element information to a file.
-
EQUATION_PRINT prints the equation types.
-
FP computes the jacobian matrix A of the Navier Stokes residual.
-
FP_PRINT prints information about the jacobian.
-
FP_DIF estimates the jacobian matrix by finite differences.
-
FX computes the residual RES of the Navier Stokes equations.
-
GEOMETRY sets up the geometry for any problem.
-
GEOMETRY_CAVITY sets up the geometry for the cavity problem.
-
GEOMETRY_CHANNEL sets up the geometry for the channel problem.
-
GEOMETRY_FREESLIP sets up the geometry for the freeslip problem.
-
GEOMETRY_STEP sets up the geometry for the step problem.
-
GET_UNIT returns a free FORTRAN unit number.
-
HELLO says hello, prints the program name, date and limits.
-
INIT zeroes out data used by the program.
-
NEWTON applies Newton iteration, seeking a solution of FX(G) = 0.
-
NODE_WRITE writes solution information to a file.
-
PRESS_INTERP interpolates pressure values at non-pressure nodes.
-
REF_BF_L3 evaluates a reference element linear basis function.
-
REF_BF_Q6 evaluates shape functions for a 6 node triangle.
-
REF_MAP_Q6 returns the interpolation map for data on a 6 node triangle.
-
REF_QUAD1 sets abscissas and wquad1s for 1D Gauss-Legendre quadrature.
-
REF_QUAD2 sets up the 2D reference triangle quadrature rule.
-
SETBAS evaluates the basis functions at each quadrature point.
-
STOKES solves the Stokes equations.
-
TECPLOT_WRITE writes out solution information for use with TECPLOT.
-
TRANS_Q6 calculates the biquadratic reference element transformation.
-
UVP_NORM_H1 returns the H1 norm of the solution.
-
UVP_NORM_L2 returns the L2 norms of velocity magnitude, and pressure.
-
UVP_NORM_LMAX returns the infinity norms of velocity magnitude, and pressure.
-
UVP_PRINT prints out the solution.
-
UVP_QUAD_VALUE evaluates U, V and P at a quadrature point in a given element.
-
UVP_VALUE evaluates U, V and P at any point in a given element.
-
X_OF_XSI computes X and Y given XSI and ETA coordinates.
-
XY_PRINT prints the X and Y coordinates of the nodes.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 12 November 2006.