MASS
Mass Matrix Verification
MASS
is a FORTRAN90 program which
checks the mass matrix computation for a finite
element fluid flow computation.
The code was created by starting with routines extracted from the
POD_BASIS program. The new code computes, factors, and uses
the mass matrix.
This was a tricky process, because the original mass matrix
is computed in another executable program, not controlled by
me but by Professor Hyung-Chun Lee. Thus, an appalling number
of choices must match, including conventions about the ordering of nodes,
the quadrature rule, and so on. (We discovered our disagreements
one by one, and decided how to resolve them!)
After running this program many times, we finally
worked out the set of parameters to be used. We were satisfied
with the results in July 2003.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
MASS is available in
a FORTRAN90 version.
Related Data and Programs:
CASE1_FLOW,
a dataset directory which
contains solutions to a flow problem.
CAVITY_FLOW,
a dataset directory which
contains solutions to flow in a cavity.
CVT_BASIS_FLOW,
a FORTRAN90 program which
can be used to analyze this data, and compute
a small set of "basis vectors" using CVT techniques.
HCELL,
a FORTRAN77 program which
solves the Navier Stokes equations in the H-Cell region.
INOUT,
a FORTRAN77 program which
solves the Navier Stokes equations in the "In-Out" region.
INOUT_FLOW,
a dataset directory which
contains solutions to flow in the "inout" region.
INOUT_FLOW2,
a dataset directory which
contains solutions to flow in the "inout" region.
POD_BASIS_FLOW,
a FORTRAN90 program which
can be used to analyze flow data, and compute
a small set of "basis vectors" using POD techniques.
TCELL_FLOW,
a dataset directory which
contains solutions to flow in
the T-cell region.
TCELL_MASS,
a FORTRAN77 program which
computes the mass matrix for the T-Cell problem.
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.
-
John Burkardt, Max Gunzburger, Hyung-Chun Lee,
Centroidal Voronoi Tessellation-Based Reduced-Order
Modelling of Complex Systems,
SIAM Journal on Scientific Computing,
Volume 28, Number 2, 2006, pages 459-484.
Source Code:
Examples and Tests:
MASS_05 is a run of the program which uses the 500 solutions
associated with the INOUT_FLOW dataset.
List of Routines:
-
MAIN is the main program for MASS.
-
BANDWIDTH_DETERMINE computes the lower bandwidth of a finite element matrix.
-
BASIS_WRITE writes a basis vector to a file.
-
CH_CAP capitalizes a single character.
-
CH_EQI is a case insensitive comparison of two characters for equality.
-
CH_IS_DIGIT returns .TRUE. if a character is a decimal digit.
-
CH_TO_DIGIT returns the integer value of a base 10 digit.
-
DATA_I4VEC_READ reads an dataset of integer vectors stored in a file.
-
DATA_R82_READ reads a data set of pairs of R8 numbers stored in a file.
-
DATA_R82_WRITE writes a data set of pairs of real*8 numbers into a file.
-
DATA_SIZE counts the size of a data set stored in a file.
-
DIGIT_INC increments a decimal digit.
-
DIGIT_TO_CH returns the character representation of a decimal digit.
-
FILE_EXIST reports whether a file exists.
-
FILE_NAME_INC generates the next filename in a series.
-
GET_UNIT returns a free FORTRAN unit number.
-
I4_INPUT prints a prompt string and reads an integer from the user.
-
I4_RANGE_INPUT reads a pair of integers from the user, representing a range.
-
MASS_MATRIX computes the mass matrix.
-
NODE_T6 returns the basis nodes for a 6 node triangle.
-
R8BLT_CHECK checks the dimensions of a banded lower triangular matrix.
-
R8BLT_PRINT prints a band lower triangular matrix.
-
R8BLT_PRINT_SOME prints some of a band lower triangular matrix.
-
REFQBF evaluates a reference element quadratic basis function.
-
R8VEC_PRINT prints an R8VEC.
-
S_EQI is a case insensitive comparison of two strings for equality.
-
S_INPUT prints a prompt string and reads a string from the user.
-
S_OF_I4 converts an integer to a left-justified string.
-
S_REP_CH replaces all occurrences of one character by another.
-
S_TO_I4 reads an integer value from a string.
-
S_TO_R8 reads an R8 value from a string.
-
S_WORD_COUNT counts the number of "words" in a string.
-
SINGULAR_VECTORS computes the desired singular values.
-
R8PBL_CHECK checks the dimensions of a positive definite symmetric band matrix.
-
R8PBL_WRITE writes a symmetric banded matrix to a file.
-
TIMESTAMP prints the current YMDHMS date as a time stamp.
-
TIMESTRING writes the current YMDHMS date into a string.
-
TRIANGLE_UNIT_SET sets a quadrature rule in the unit triangle.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 01 May 2008.