CVT_BASIS - Determine a Reduced Basis for PDE Solutions
CVT_BASIS tries to extract a few representative behavior
modes from a set of data.
Specifically, a partial differential equation (PDE) has been
defined, specifying the time dependent flow of a fluid through
a region. The PDE specification includes a parameter ALPHA
whose value strongly affects the behavior of the flow. The
steady state solution S0 is computed for a particular value
of ALPHA. Then the time dependent problem is solved over a
fixed time interval, with ALPHA varying from time to time.
A set of several hundred solutions S(T(I),ALPHA(I)) are saved.
The need is to try to extract from this solution data the
typical modes of behavior of the solution. Such a set of modes
may then be used as a finite element basis that is highly tuned
to the physics of the problem, so that a very small set of
basis functions can be used to closely approximate the behavior
of the solution over a range of values of ALPHA.
The method of extracting information from the solution data
uses a form of K-Means clustering.
The program will try to cluster the data, that is, to organize
the data by defining a number of cluster centers, which are
also points in N dimensional space, and assigning each record
to the cluster associated with a particular center.
The method of assigning data aims to minimize the cluster energy,
which is taken to be the sum of the squares of the distances of
each data point from its cluster center.
In some contexts, it makes sense to use the usual Euclidean sort
of distance. In others, it may make more sense to replace each
data record by a normalized version, and to assign distance
by computing angles between the unit vectors.
-
Reference 1:
-
Du and Gunzburger,
Centroidal Voronoi Tesselations: Applications and Algorithms,
SIAM Review, Volume 41, 1999, pages 637-676.
-
Reference 2:
-
Wendy Martinez and Angel Martinez,
Computational Statistics Handbook with MATLAB,
Chapman and Hall / CRC, 2002.
The PDE solution data files for the first region are available in the
CVT basis data directory.
The PDE solution data files for the T-Cell region are available in the
CVT basis T-CELL data directory.
Files you may copy include:
One way of using the program is to investigate the cluster energy
as the number of clusters increases. You may copy a set of
files associated with such a computation:
-
cvt_run_01.inp, an input file that
computes the energy of a set of data for cluster sizes 1 to 8.
-
cvt_run_01.out, the output of the run.
-
raw.txt, cluster size versus energy,
for input to GNUPLOT.
-
gnuplot_raw.inp, some input to
GNUPLOT to plot the "raw" data.
-
raw.eps, the results of the command
"gnuplot < gnuplot_raw.inp > raw.eps".
-
raw2.txt,
1/cluster size versus energy, for input to GNUPLOT.
-
gnuplot_raw2.inp,
some input to GNUPLOT to plot the "raw2" data.
-
raw2.eps, the results of the command
"gnuplot < gnuplot_raw2.inp > raw2.eps".
Another way of using the program is to pick a single cluster size.
In this case, the program searches for a good clustering, and writes
out the representatives (centroids) of the clusters. You may copy
a set of files associated with such a computation:
-
cvt_run_02.inp, an
input file that computes the energy of a set of data for cluster
size 8.
-
cvt_run_02.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
The third run preprocesses the input data by subtracting appropriate
multiples of the steady state solution.
-
cvt_run_03.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 8.
-
cvt_run_03.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
Run #4 preprocesses the input data by subtracting appropriate
multiples of the steady state solution, and computes 4
basis functions.
Run #5 preprocesses the input data by subtracting appropriate
multiples of the steady state solution, and computes 8
basis functions.
-
cvt_run_05.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 8.
-
cvt_run_05.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
Run #6 preprocesses the input data by subtracting appropriate
multiples of the steady state solution, and computes 16
basis functions.
-
cvt_run_06.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 16.
-
cvt_run_06.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
-
gen_009.txt, centroid #9.
-
gen_010.txt, centroid #10.
-
gen_011.txt, centroid #11.
-
gen_012.txt, centroid #12.
-
gen_013.txt, centroid #13.
-
gen_014.txt, centroid #14.
-
gen_015.txt, centroid #15.
-
gen_016.txt, centroid #16.
Run #7 is like Run #4, but we only use the odd numbered data files
(1, 3, 5, ... through 401, for a total of 201 data files).
Run #8 is like run #5, but we only use the odd numbered data files
(1, 3, 5, ... through 401, for a total of 201 data files).
-
cvt_run_08.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 8.
-
cvt_run_08.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
Run #9 is like run #6, but we only use the odd numbered data files
(1, 3, 5, ... through 401, for a total of 201 data files).
-
cvt_run_09.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 16.
-
cvt_run_09.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
-
gen_009.txt, centroid #9.
-
gen_010.txt, centroid #10.
-
gen_011.txt, centroid #11.
-
gen_012.txt, centroid #12.
-
gen_013.txt, centroid #13.
-
gen_014.txt, centroid #14.
-
gen_015.txt, centroid #15.
-
gen_016.txt, centroid #16.
Run #10 is like Run #4, but we normalize the data.
Run #11 is like run #5, but we normalize the data.
-
cvt_run_11.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 8.
-
cvt_run_11.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
Run #12 is like run #6, but we normalize the data.
-
cvt_run_12.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 16.
-
cvt_run_12.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
-
gen_009.txt, centroid #9.
-
gen_010.txt, centroid #10.
-
gen_011.txt, centroid #11.
-
gen_012.txt, centroid #12.
-
gen_013.txt, centroid #13.
-
gen_014.txt, centroid #14.
-
gen_015.txt, centroid #15.
-
gen_016.txt, centroid #16.
Run #13 works with 500 flow solutions in the T-Cell region.
We subtract 5/3 of steady solution from 1-250, and 1/3 from 251
through 500. We DON'T normalize the results.
Run #14 is like run #13, but for cluster size 8.
-
cvt_run_14.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 8.
-
cvt_run_14.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
Run #15 is like run #13, but for cluster size 16.
-
cvt_run_15.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 16.
-
cvt_run_15.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
-
gen_009.txt, centroid #9.
-
gen_010.txt, centroid #10.
-
gen_011.txt, centroid #11.
-
gen_012.txt, centroid #12.
-
gen_013.txt, centroid #13.
-
gen_014.txt, centroid #14.
-
gen_015.txt, centroid #15.
-
gen_016.txt, centroid #16.
Run #16 works with 500 flow solutions in the T-Cell region.
We subtract 5/3 of steady solution from 1-250, and 1/3 from 251
through 500. We NORMALIZE the results.
Run #17 is like run #16, but for cluster size 8.
-
cvt_run_17.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 8.
-
cvt_run_17.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
Run #18 is like run #16, but for cluster size 16.
-
cvt_run_18.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 16.
-
cvt_run_18.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
-
gen_009.txt, centroid #9.
-
gen_010.txt, centroid #10.
-
gen_011.txt, centroid #11.
-
gen_012.txt, centroid #12.
-
gen_013.txt, centroid #13.
-
gen_014.txt, centroid #14.
-
gen_015.txt, centroid #15.
-
gen_016.txt, centroid #16.
Run #19 works with 500 flow solutions in the T-Cell region.
We subtract 5/3 of steady solution from 1-250, and 1/3 from 251
through 500. We do NOT normalize the results. Then we discard
half the data, keeping the EVEN steps, 2, 4, ..., 500.
Run #20 is like run #19, but for cluster size 8.
-
cvt_run_20.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 8.
-
cvt_run_20.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
Run #21 is like run #19, but for cluster size 16.
-
cvt_run_21.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 16.
-
cvt_run_21.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
-
gen_009.txt, centroid #9.
-
gen_010.txt, centroid #10.
-
gen_011.txt, centroid #11.
-
gen_012.txt, centroid #12.
-
gen_013.txt, centroid #13.
-
gen_014.txt, centroid #14.
-
gen_015.txt, centroid #15.
-
gen_016.txt, centroid #16.
Run #22 is like run #13, but for cluster size 2.
Run #23 is like run #16, but for cluster size 2.
Run #24 is like run #19, but for cluster size 2.
Run #25 works with 500 flow solutions in the INOUT region.
We subtract 5/3 of steady solution from 1-250, and 1/3 from 251
through 500. We DON'T normalize the results.
Run #26 is like run #25, but for cluster size 4.
Run #27 is like run #25, but for cluster size 8.
-
cvt_run_27.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 8.
-
cvt_run_27.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
Run #28 is like run #25, but for cluster size 16.
-
cvt_run_28.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 16.
-
cvt_run_28.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
-
gen_009.txt, centroid #9.
-
gen_010.txt, centroid #10.
-
gen_011.txt, centroid #11.
-
gen_012.txt, centroid #12.
-
gen_013.txt, centroid #13.
-
gen_014.txt, centroid #14.
-
gen_015.txt, centroid #15.
-
gen_016.txt, centroid #16.
Run #29 works with 500 flow solutions in the INOUT region.
We subtract 5/3 of steady solution from 1-250, and 1/3 from 251
through 500. We NORMALIZE the results.
Run #30 is like run #29, but for cluster size 4.
Run #31 is like run #29, but for cluster size 8.
-
cvt_run_31.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 8.
-
cvt_run_31.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
Run #32 is like run #29, but for cluster size 16.
-
cvt_run_32.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 16.
-
cvt_run_32.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
-
gen_009.txt, centroid #9.
-
gen_010.txt, centroid #10.
-
gen_011.txt, centroid #11.
-
gen_012.txt, centroid #12.
-
gen_013.txt, centroid #13.
-
gen_014.txt, centroid #14.
-
gen_015.txt, centroid #15.
-
gen_016.txt, centroid #16.
Run #33 works with 500 flow solutions in the INOUT region.
We subtract 5/3 of steady solution from 1-250, and 1/3 from 251
through 500. We DON'T normalize the results. However, before
we proceed, we DROP the ODD numbered results.
Run #34 is like run #33, but for cluster size 4.
Run #35 is like run #33, but for cluster size 8.
-
cvt_run_35.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 8.
-
cvt_run_35.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
Run #36 is like run #33, but for cluster size 16.
-
cvt_run_36.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 16.
-
cvt_run_36.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
-
gen_009.txt, centroid #9.
-
gen_010.txt, centroid #10.
-
gen_011.txt, centroid #11.
-
gen_012.txt, centroid #12.
-
gen_013.txt, centroid #13.
-
gen_014.txt, centroid #14.
-
gen_015.txt, centroid #15.
-
gen_016.txt, centroid #16.
Run #37 works with 500 flow solutions in the CAVITY region.
We subtract 5/3 of steady solution from 1-250, and 1/3 from 251
through 500. We DON'T normalize the results.
Run #38 is like run #37, but for cluster size 4.
Run #39 is like run #37, but for cluster size 8.
-
cvt_run_39.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 8.
-
cvt_run_39.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
Run #40 is like run #37, but for cluster size 16.
-
cvt_run_40.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 16.
-
cvt_run_40.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
-
gen_009.txt, centroid #9.
-
gen_010.txt, centroid #10.
-
gen_011.txt, centroid #11.
-
gen_012.txt, centroid #12.
-
gen_013.txt, centroid #13.
-
gen_014.txt, centroid #14.
-
gen_015.txt, centroid #15.
-
gen_016.txt, centroid #16.
Run #41 works with 500 flow solutions in the CAVITY region.
We subtract 5/3 of steady solution from 1-250, and 1/3 from 251
through 500. We NORMALIZE the results.
Run #42 is like run #41, but for cluster size 4.
Run #43 is like run #41, but for cluster size 8.
-
cvt_run_43.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 8.
-
cvt_run_43.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
Run #44 is like run #41, but for cluster size 16.
-
cvt_run_44.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 16.
-
cvt_run_44.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
-
gen_009.txt, centroid #9.
-
gen_010.txt, centroid #10.
-
gen_011.txt, centroid #11.
-
gen_012.txt, centroid #12.
-
gen_013.txt, centroid #13.
-
gen_014.txt, centroid #14.
-
gen_015.txt, centroid #15.
-
gen_016.txt, centroid #16.
Run #45 works with 500 flow solutions in the CAVITY region.
We subtract 5/3 of steady solution from 1-250, and 1/3 from 251
through 500. We DON'T normalize the results. However, before
we proceed, we DROP the ODD numbered results.
Run #46 is like run #45, but for cluster size 4.
Run #47 is like run #45, but for cluster size 8.
-
cvt_run_47.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 8.
-
cvt_run_47.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
Run #48 is like run #45, but for cluster size 16.
-
cvt_run_48.inp, an
input file that computes the energy of a set of preprocessed
data for cluster size 16.
-
cvt_run_48.out, the
output of the run.
-
gen_001.txt, centroid #1.
-
gen_002.txt, centroid #2.
-
gen_003.txt, centroid #3.
-
gen_004.txt, centroid #4.
-
gen_005.txt, centroid #5.
-
gen_006.txt, centroid #6.
-
gen_007.txt, centroid #7.
-
gen_008.txt, centroid #8.
-
gen_009.txt, centroid #9.
-
gen_010.txt, centroid #10.
-
gen_011.txt, centroid #11.
-
gen_012.txt, centroid #12.
-
gen_013.txt, centroid #13.
-
gen_014.txt, centroid #14.
-
gen_015.txt, centroid #15.
-
gen_016.txt, centroid #16.
The list of routines includes:
-
CVT_BASIS seeks to minimize the cost of clustering data.
-
ANALYSIS_NORMAL computes the energy for a range of number of clusters.
-
ANALYSIS_RAW computes the energy for a range of number of clusters.
-
CH_IS_DIGIT returns .TRUE. if a character is a decimal digit.
-
CH_TO_DIGIT returns the integer value of a base 10 digit.
-
CLUSTER_CENSUS computes and prints the population of each cluster.
-
CLUSTER_ENERGY_COMPUTATION computes the cluster energies of a clustering.
-
CLUSTER_INITIALIZE_RAW initializes the cluster centers to random values.
-
DATA_TO_GNUPLOT writes data to a file suitable for processing by GNUPLOT.
-
DIGIT_INC increments a decimal digit.
-
DIGIT_TO_CH returns the character representation of a decimal digit.
-
FILE_COLUMN_COUNT counts the number of columns in the first line of a file.
-
FILE_EXIST reports whether a file exists.
-
FILE_LINE_COUNT counts the number of lines in a file.
-
FILE_NAME_INC generates the next filename in a series.
-
GET_UNIT returns a free FORTRAN unit number.
-
HMEANS_NORMAL seeks the minimal energy of a cluster of a given size.
-
HMEANS_RAW seeks the minimal energy of a cluster of a given size.
-
I_INPUT prints a prompt string and reads an integer from the user.
-
I_RANDOM returns a random integer in a given range.
-
I_RANGE_INPUT reads a pair of integers from the user, representing a range.
-
KMEANS_RAW tries to improve a partition of points.
-
NEAREST_POINT finds the center point nearest a data point.
-
POINT_GENERATE generates data points for the problem.
-
POINT_PRINT prints out the values of the data points.
-
R_RANDOM returns a random real in a given range.
-
RANDOM_INITIALIZE initializes the FORTRAN 90 random number seed.
-
RVEC_NORM2 returns the 2-norm of a vector.
-
RVEC_RANGE_INPUT reads two real vectors from the user, representing a range.
-
RVEC_UNIT_EUCLIDEAN normalizes a N-vector in the Euclidean norm.
-
S_INPUT prints a prompt string and reads a string from the user.
-
S_OF_I converts an integer to a left-justified string.
-
S_REP_CH replaces all occurrences of one character by another.
-
S_TO_I reads an integer value from a string.
-
TIMESTAMP prints the current YMDHMS date as a time stamp.
-
TOTAL_ENERGY_COMPUTATION computes the total energy of a given clustering.
-
WORD_COUNT counts the number of "words" in a string.
Return to the FORTRAN software page.
Last revised on 20 June 2002.