ARBY4
Reduced Basis Fluid Flow Code
ARBY4
is a FORTRAN90 program which
analyzes a 2D fluid flow using the reduced
basis method.
The reduced basis idea is related to the finite element method.
In the finite element method, a completely arbitrary basis is
set up. The reduced basis method seeks, instead, to use a much
smaller set of basis functions which somehow represent the most
typical behaviors of the solution.
Such a basis set might be determined by computing lots of solution
vectors, or from theoretical considerations. It can also be
determined by taking the state equations, repeatedly
differentiating them with respect to a parameter, and solving the
resulting systems. This then allows a sort of Taylor expansion
of the solution with the parameter acting as the independent
variable.
In a true Taylor expansion, the coefficients of the
basis vectors are strictly determined by the size of the increment
in the independent variable. But in this approach, it is assumed
that although the Taylor coefficients may quickly become inaccurate,
the corresponding Taylor basis vectors will still be useful
for representing the solution. It remains, then, to determine
the now unknown coefficients.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
ARBY4 is available in
a FORTRAN90 version.
Related Data and Programs:
BUMP,
a FORTRAN90 program which
seeks the appropriate channel inflow and bump shape which will cause the flow to most
closely match a given downflow profile.
CHANNEL,
a FORTRAN90 program which
seeks the appropriate channel inflow which will cause the flow to most
closely match a given downflow profile.
TOMS611,
a FORTRAN90 library which
minimizes a functional. It is used by ARBY4.
Reference:

Janet Peterson,
The Reduced Basis Method for Incompressible Viscous Flow Calculations,
SIAM Journal of Scientific and Statistical Computing,
Volume 10, Number 4, pages 777786, July 1989.
Source Code
Examples and Tests

test08_input.txt, sample input #8.

test08_output.txt, sample output #8.

test09_input.txt, sample input #9.

test09_output.txt, sample output #9.

test10_input.txt, sample input #10.

test10_output.txt, sample output #10.

test11_input.txt, sample input #11.

test11_output.txt, sample output #11.

test12_input.txt, sample input #12.

test12_output.txt, sample output #12.
List of Routines

ARBY4 solves a fluid flow problem which has several parameters.

DIFFPRB estimates the jacobian of the reduced function, using finite differences.

DIFSENFL computes a central difference estimate for the first NCOFRB

DIFSENRB estimates the reduced sensitivities using finite differences.

FLOWBC computes the specified boundary values at a given position.

FPBCRB evaluates the jacobian of the reduced boundary conditions.

FPFERB evaluates the reduced basis jacobian directly.

FPFL computes the jacobian of the Navier Stokes residual function

FPIRB computes the jacobian of the reduced basis solution GRB

FPRB evaluates the reduced basis jacobian directly.

FXBCRB evaluates the reduced boundary conditions.

FXFERB evaluates the finite element portion of the reduced function.

FXFL computes the residual of the Navier Stokes equations,

FXFL2RB projects a full residual into a reduced residual.

FXIRB computes the residual of the reduced basis solution GRB

FXRB evaluates the boundary conditions and finite element equations

GETGSEN computes the coefficients of the sensitivity matrix S,

GETBCRB computes the vectors that will be placed into the set

GETFERB computes the finite element reduced basis vectors

GETSENFL computes the matrix SENFL of sensitivity vectors.

GETSENRB computes the value of the reduced sensitivities by

GFL2RB projects a full solution vector GFL into GRB, the

GRB2FL computes the full solution GFL represented by a set of

HELLO prints the program name, date of revision, time and date,

HELP prints out a list of the interactive commands which the

INIT sets problem data to default values.

NEWTFL is given an initial estimate of the solution of the full

NEWTRB is given an initial estimate of the solution of the reduced

OPTDIFFL optimizes the full problem, without gradient information.

OPTDIFRB optimizes the reduced problem, without gradient information.

PICFL carries out simple iteration on the full Navier Stokes equations.

PICMFERB evaluates the simple iteration matrix for a reduced problem.

PICMFL computes the Picard iteration matrix for the full Navier Stokes equations.

PICRB carries out simple iteration on the reduced Navier Stokes equations.

PICVFERB computes the finite element portion of the right hand

PICVFL computes the right hand side for Picard iteration on the

REYSEN sets up the right hand side RHS associated with the ISENth

TEST2 compares U, V, and P for the full solution and the reduced

TEST3 verifies that RB*RFACT = SENFL

TEST4 ???

TEST5 is given the QR factors of the reduced basis matrix, and

PRUVPFL prints the values of velocity and pressure for all nodes

PRUVPRB prints the values of the reduced velocity and pressure

UVPRB is given:

BMPCST evaluates the cost of the bump control.

BMPSPL sets up or updates the spline data that describes the bump.

BSP computes the value and spatial derivatives of the linear basis

CAPCHR accepts a STRING of characters and replaces any lowercase

CAVITY sets up the standard driven cavity problem.

CAVITY2 sets up the H C Lee driven cavity problem.

CHANNL sets up the standard channel problem.

CHRCTD accepts a string of characters, and tries to extract a

CHRCTI accepts a STRING of characters and reads an integer

CHRDB1 accepts a string of characters and removes all

CHRUP2 copies STRING into STRNG2, up to, but not including, the

DDETFL computes the determinant of a double precision band matrix

DDETRB computes the determinant of a double precision matrix

DELHMS returns the number of seconds between TIME1 and TIME2.

DFACFL factors a double precision band matrix by elimination.

DFACRB factors a double precision dense matrix.

DIFSET computes the NCOF coefficients for a centered finite difference

DISCST computes the discrepancy integrals for the pressure,

DSOLFL solves the linear system

DSOLRB solves the linear system

DVEQ returns .TRUE. if the N elements of the double precision

DVNEQ returns .TRUE. if any of the N elements of the double precision

FACT computes the (real) factorial of a nonnegative integer.

GETCST is given the value of the solution, GFL, the target

GQUAD1 returns the weights and abscissas for a 1 dimensional,

GRID computes the X or Y coordinate of the Ith gridpoint.

INTPRS interpolates the pressure at the midside nodes.

L2NORM computes the "big" L2 norm of the velocity over the flow region,

LBASE evalualates the IVALth Lagrange polynomial based

LEQI is a case insensitive comparison of two strings for

LEQIDB is a case insensitive comparison of two strings for

NBINOM calculates the number of combinations of M things taken N

NRMFLO returns norms of a flow solution or flow residual.

PCVAL evaluates a piecewise constant function at a given point.

PLDX evaluates the derivative of a piecewise linear function with

PLDX1 evaluates the X derivative of the piecewise linear

PLTOPN opens the plotting file.

PLVAL evaluates a piecewise linear function at a given point.

PLVAL1 evaluates the piecewise linear polynomial which is 1

PQDX evaluates the derivative of a piecewise quadratic function with

PQDX1 evaluates the X derivative of the piecewise quadratic

PQVAL evaluates a piecewise quadratic function at a given point.

PQVAL1 evaluates the piecewise quadratic polynomial which is 1

PRBMAT prints all nonzero entries of rows ILO to IHI, columns JLO to

PRDAT prints the problem information.

PRDMAT prints out a portion of a dense matrix.

PRELEM prints out data about one or more elements.

PRFXFLN prints out the norm of a full residual.

PRGRB prints out the reduced basis solution.

PRINDX prints out the integer variables that define the

PRMATFL prints entries from a matrix A associated with a full

PRPAR prints out the current parameters.

PRSENN prints out the norms of the sensitivities.

PRVECFL prints out some entries of a vector indexed by node number.

PRVECRB prints out entries ILO through IHI of a vector.

PRXY prints the X and Y coordinates of each node.

QBF evaluates a particular quadratic basis function at a point

REFBSP evaluates one of the three linear basis functions,

REFQBF evaluates one of the six quadratic basis functions,

SETBAN computes NLBAND, the lower band width of the Jacobian matrix

SETGEO is given a set of flow parameters in PAR, and an

SETLOG determines some data that depends on the user input.

SETNOD assigns numbers to the nodes and elements, decides which

SETPFL computes the value of the finite element basis functions at

SETPRB is given:

SETQ3 sets the abscissas and weights for a three point quadrature

SETXY sets the X and Y coordinates of the nodes.

STEP sets up a forward facing step problem.

TARGET is called to save the current parameters and solution

TRANS calculates the biquadratic transformation which maps the

UVPFL evaluates the velocities and pressure, and their X and Y

UVPNRM returns the "norm" of the solution. Here, the norm of

UVPQFL evaluates the velocities and pressure, and their X and Y

UVPQRB is given:

WRDIS writes information to a file which can be used to create

WRTEC writes out information which can be used for with the

XOFXSI is given the XSI, ETA coordinates of a point in an

DASUM takes the sum of the absolute values of the entries of

DAXPY adds a multiple of one vector to another.

DCOPY copies a vector X to a vector Y.

DDOT forms the dot product of two vectors.

DGBTF2 ???

DGBTRF ???

DGBTRS ???

DGEMM ???

DGEMV ???

DGEQR2 computes a QR factorization of a real m by n matrix A:

DGEQRF computes a QR factorization of a real MbyN matrix A:

DGER ???

DGETF2 ???

DGETRF ???

DGETRS ???

DLAPY2 returns sqrt(x**2+y**2), avoiding overflow.

DLARF ???

DLARFB ???

DLARFT ???

DLASWP ???

DNRM2 returns the euclidean norm of a vector.

DORG2R ???

DORGQR ???

DSCAL scales a vector by a constant.

DSWAP interchanges two vectors.

DTBSV ???

DTRMM ???

DTRMV ???

DTRSM ???

IDAMAX FINDS THE INDEX OF ELEMENT HAVING MAX. ABSOLUTE VALUE.

ILAENV ???

LSAME ???

XERBLA is an error handler for the LAPACK routines.

DLAMCH ???

DLAMC1 ???

DLAMC2 ???

DLAMC3 is intended to force A and B to be stored prior to doing

DLAMC4 ???

DLAMC5 ???

DLARFG ???
You can go up one level to
the FORTRAN90 source codes.
Last revised on 13 December 2007.