FLOW3
A Finite Element Code for Fluid Flow
FLOW3
is a FORTRAN90 program which
uses the finite element method to solve for the steady state
velocity and pressure of an incompressible fluid in a 2D flow region.
FLOW3 writes a graphics dump file that can be read in
and plotted by
DISPLAY3.
Usage:
flow3 < input_file > output_file
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
FLOW3 is available in
a FORTRAN90 version
Related Data and Programs:
BUMP,
a FORTRAN90 program which
solves a fluid flow problem
in a channel including a bump which obstructs and redirects the flow.
CHANNEL,
a FORTRAN90 program which
solves a fluid flow problem in a channel.
FEM,
a data directory which
contains a description of the data files
that can be used to describe a finite element model.
FEM_IO,
a MATLAB library which
reads and writes
the node, element and data files that define a finite element model.
FEM2D_PACK,
a FORTRAN90 library which
contains utilities for 2D finite element calculations.
FEM2D_POISSON,
a FORTRAN90 program which
solves Poisson's equation
on a square, using the finite element method.
FLOW5,
a FORTRAN90 program which
is a later version of the FLOW3 program.
HCELL,
a FORTRAN77 program which
computes the pressure
and velocity for a Navier Stokes flow in an "H"-shaped region.
INOUT,
a FORTRAN77 program which
computes the pressure
and velocity for a Navier Stokes flow in a square region with
an inlet and an outlet.
MHD_CONTROL,
a FORTRAN90 program which
tries to control the evolution of an MHD system so that a particular
state is achieved.
MHD_FLOW,
a FORTRAN90 program which
models the evolution of an MHD system.
NAST2D,
a C++ program which
computes the pressure
and velocity for a Navier Stokes flow.
NAST2D_F90,
a FORTRAN90 program which
solves the 2D Navier Stokes equations with heat,
by Griebel, Dornseifer and Neunhoeffer
TCELL,
a FORTRAN77 program which
computes the pressure
and velocity for a Navier Stokes flow in a "T"-shaped region.
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:
-
flow3_input.txt,
a description of some of the problems;
-
flow3_input001.txt, input file for problem 1;
-
flow3001.txt, output file for problem 1;
-
flow3_march001.txt, marching file for problem 1;
-
flow3_input002.txt, input file for problem 2;
-
flow3_input003.txt, input file for problem 3;
-
flow3_input004.txt, input file for problem 4;
-
flow3_input005.txt, input file for problem 5;
-
flow3_input006.txt, input file for problem 6;
-
flow3_input007.txt, input file for problem 7;
-
flow3_input008.txt, input file for problem 8;
-
flow3_input009.txt, input file for problem 9;
-
flow3_input751.txt,
input file for problem 751;
-
flow3_input796.txt,
input file for problem 796;
List of Routines:
-
MAIN is the main program for FLOW3.
-
AFTER shuts down files and stops.
-
BSP evaluates the basis functions associated with pressure.
-
BUMP_BC computes the boundary conditions for velocity sensitivities.
-
BUMP_BC1 computes the value of the boundary conditions for the
-
BUMP_BC2 evaluates the velocity sensitivity boundary conditions.
-
BUMP_COST evaluates the cost of the bump control.
-
BUMP_DER differentiates the bump control cost with respect to the parameters.
-
BUMP_FX measures the residual in the bump sensitivity equations.
-
BUMP_SEN sets up the right hand side F associated with the
-
BUMP_SPL sets up or updates the spline data that describes the bump.
-
CH_CAP capitalizes a single character.
-
CHKDAT performs some simple checks on the input data.
-
CHKOPT is called at the end of an optimization to check the results.
-
CHRCTD accepts a string of characters, and tries to extract a
-
CHRCTI accepts a STRING of characters and reads an integer
-
COST_GRADIENT returns the gradient of the cost functional.
-
CUBSPL is given data and boundary conditions for a cubic
-
DISC_COST computes the discrepancy cost integrals.
-
DISC_DER computes the derivative of the discrepancy cost integrals
-
DMEMRY allows the user to define the name of a real
-
FLO_SPL_SET sets up or updates the spline data that describes the inflow.
-
FLO_SPL_VAL computes boundary velocities specified by a parameterized spline.
-
FLODUV differentiates the parabolic inflow with respect to parameter.
-
FLOSEN sets up the right hand side F associated with the
-
FLOSOL is given a set of flow parameters in PARA, and an
-
FPRIME computes the jacobian of the Navier Stokes or Stokes functions.
-
FPRNAB computes the jacobian of the Navier Stokes or Stokes residual
-
FX computes the residual of the Navier Stokes or Stokes equations.
-
GET_COST determines the cost of a solution G given a target solution GTAR.
-
GET_UNIT returns a free FORTRAN unit number.
-
GETDU estimates spatial derivatives of state variables at nodes.
-
GETDU4 uses the Zienkiewicz-Zhou technique to attempt to improve the
-
GETFIX computes GRADF, a correction for the finite difference
-
GETGRD estimates the derivatives of the variables with respect to parameters.
-
GETSEN computes the sensitivities of the state variables U, V and
-
GQUAD1 returns the weights and abscissas for a 1 dimensional,
-
HELLO prints out an introductory message.
-
ILAENV is called from the LAPACK routines to choose problem-dependent
-
IMEMRY allows the user to define the name of an integer variable,
-
INIT initializes the program parameters.
-
INPUT reads user input of the form "name = value".
-
INTERV computes LEFT, the maximum value of I so that
-
ISAMAX finds the index of the vector element of maximum absolute value.
-
LBASE evalualates the IVAL-th Lagrange polynomial.
-
LMEMRY allows the user to define the name of a logical variable,
-
LSAME returns .TRUE. if CA is the same letter as CB regardless of
-
LSPOLY evaluates a polynomial in (1, x, y, x*x, xy, y*y) at (x,y)..
-
MARCH carries out a one, two or three dimensional "march".
-
MARCH_FILE_OPEN opens the marching file.
-
NAMELS reads a line of user input which is similar in form
-
NEWTON solves the nonlinear system of equations.
-
NODE_SET assigns numbers to the nodes.
-
NODNAB returns the neighbor index number of node J relative to node I.
-
NUSEN sets the right hand side of the NU_INV sensitivity equation.
-
OSOLVE carries out the optimization algorithm for a fixed grid,
-
PLDX evaluates the derivative of a piecewise linear function.
-
PLDX1 evaluates the X derivative of a piecewise linear basis function.
-
PLOT_FILE_OPEN opens the plotting file.
-
PLOT_FILE_WRITE writes geometry and solution information to a plot file.
-
PLVAL evaluates a piecewise linear function at a given point.
-
PLVAL1 evaluates the piecewise linear basis function.
-
PPVALU evaluates a piecewise polynomial function or its derivative.
-
PQDX evaluates the derivative of a piecewise quadratic function.
-
PQDX1 evaluates the X derivative of the piecewise quadratic basis function.
-
PQVAL evaluates a piecewise quadratic function at a given point.
-
PQVAL1 evaluates the piecewise quadratic basis function.
-
PR_BUMP prints out the boundary conditions for the bump sensitivities,
-
PR_COST1 prints out the current cost function.
-
PR_COST2 prints out the current cost function.
-
PR_COST_SEN prints out the cost sensitivities.
-
PR_DAT prints the user input file data.
-
PR_DISC prints the discrepancy along the profile line.
-
PR_DU2 prints out a comparison of the original dUdY vector and
-
PR_FX3 prints out the maximum of the P, U, and V residuals.
-
PR_GS2 prints the maximum finite coefficient differences and sensitivities.
-
PR_PARAMETER prints out the current parameters.
-
PR_PROFILE prints out the solution along the profile line.
-
PR_PUV prints the nodal values of the finite differences and sensitivities.
-
PR_SOLUTION prints out information about a single solution.
-
PR_SPL_DATA prints the raw spline data for the simple cases ISHAPE = 1 or 2.
-
PR_SPLN prints a spline interpolant or its derivatives.
-
PR_WORK reports the amount of work carried out.
-
PROBAS orthonormalizes N vectors of length M.
-
PROJEC projects an M vector into an N dimensional subspace.
-
QBF evaluates a quadratic basis function in a nonisoparametric element.
-
QSOLVE seeks an optimal set of parameter values.
-
REFBSP evaluates a linear basis function in the reference triangle.
-
REFQBF evaluates one of the six quadratic basis functions,
-
RINT_TO_RINT maps a real interval to another real interval.
-
RSOLVE computes the flow solution for a given set of parameters.
-
R4VEC_EVEN returns N real values, evenly spaced between ALO and AHI.
-
S_BEFORE_SS_COPY copies a string up to a given substring.
-
S_BLANK_DELETE removes blanks from a string, left justifying the remainder.
-
S_CAP replaces any lowercase letters by uppercase ones in a string.
-
S_EQI is a case insensitive comparison of two strings for equality.
-
SCOPY copies a vector, x, to a vector, y.
-
SDOT forms the dot product of two vectors.
-
SETBAN computes the half band width of the Jacobian matrix.
-
SETBAS evaluates the basis functions at each quadrature point.
-
SETNAB sets up the node neighbor array.
-
SETQXY sets the abscissas and weights for a quadrature rule on a triangle.
-
SGBSCN scans a matrix stored in LINPACK/LAPACK "general band" mode,
-
SGBTF2 computes an LU factorization of a real m-by-n band matrix A
-
SGBTRF computes an LU factorization of a real m-by-n band matrix A
-
SGBTRS solves a system of linear equations
-
SGEMM performs one of the matrix-matrix operations
-
SGEMV performs one of the matrix-vector operations
-
SGER performs the rank 1 operation
-
SGETF2 computes an LU factorization of a general m-by-n matrix A
-
SGETRF computes an LU factorization of a general M-by-N matrix A
-
SGETRS solves a system of linear equations
-
SLASWP performs a series of row interchanges on the matrix A.
-
SOLCON computes the flow solution for a given set of parameters.
-
SSCAL scales a vector by a constant.
-
SSWAP interchanges two vectors.
-
STBSV solves one of the systems of equations
-
STRSM solves one of the matrix equations
-
TIMESTAMP prints the current YMDHMS date as a time stamp.
-
TRANS calculates the mapping from reference to physical elements.
-
UPVALQ evaluates sensitivities at a quadrature point in a given element.
-
UVAL evaluates the velocities and pressure at any point in a given element.
-
UVALQ evaluates the velocities and pressure, and their X and Y
-
XERBLA is an error handler for the LAPACK routines.
-
XOFXSI is given the XSI, ETA coordinates of a point in an
-
XY_PRINT prints the X and Y coordinates of the nodes.
-
XY_SET sets the X and Y coordinates of the nodes.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 18 January 2007.