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 777-786, 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 ISEN-th
-
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 I-th 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 IVAL-th 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 M-by-N 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.