FEM3D_SAMPLE\
Evaluate a Finite Element Function of a 3D Argument {#fem3d_sample-evaluate-a-finite-element-function-of-a-3d-argument align=”center”}
===================================================
FEM3D_SAMPLE is a C++ program which can evaluate a finite element
function of a 3D argument.
The current version of the program can only handle tetrahedral finite
element meshes using linear basis functions.
The current version of the program uses a NAIVE search algorithm to
locate points within the mesh. It is intended that this search algorithm
be replaced by a Delaunay search.
Usage: {#usage align=”center”}
fem3d_sample fem_prefix sample_prefix
where fem_prefix is the common prefix for the FEM files:
- fem_prefix_nodes.txt, the node coordinates.
- fem_prefix_elements.txt, the nodes that make up each
element;
- fem_prefix_values.txt, the values defined at each node.
and sample_prefix is the common prefix for the SAMPLE files, for
which the node file is input, and the values file is created by the
program:
- sample_prefix_nodes.txt, the node coordinates where samples
are desired.
- sample_prefix_values.txt, the values computed at each sample
node.
Licensing: {#licensing align=”center”}
The computer code and data files described and made available on this
web page are distributed under the GNU LGPL
license.
Languages: {#languages align=”center”}
FEM3D_SAMPLE is available in a C++
version and a FORTRAN77
version and a FORTRAN90
version and a MATLAB
version.
FEM_IO, a C++ library which reads
or writes node, element and data files defining a finite element model.
FEM_TO_TEC, a MATLAB program
which converts FEM models into TEC graphics files.
FEM1D_SAMPLE, a C++
program which samples a scalar or vector finite element function of one
variable, defined by FEM files, returning
interpolated values at the sample points.
FEM2D_SAMPLE, a C++
program which samples a scalar or vector finite element function of 2
variables defined by FEM files, returning interpolated values at the
sample points.
FEM3D, a data directory which contains
examples of 3D FEM files, three text files that describe a 3D finite
element geometry;
FEM3D_PACK, a C++ library
which contains utilities for 3D finite element calculations.
FEM3D_PROJECT, a C++
program which projects a function F(X,Y,Z), given as a data, into a
given finite element space of piecewise linear tetrahedral elements.
HISTOGRAM_DATA_2D_SAMPLE,
a C++ program which demonstrates how to construct a Probability Density
Function (PDF) from a frequency table over a 2D domain, and then to use
that PDF to create new samples.
Reference: {#reference align=”center”}
- Hans Rudolf Schwarz,\
Finite Element Methods,\
Academic Press, 1988,\
ISBN: 0126330107,\
LC: TA347.F5.S3313.
- Gilbert Strang, George Fix,\
An Analysis of the Finite Element Method,\
Cambridge, 1973,\
ISBN: 096140888X,\
LC: TA335.S77.
- Olgierd Zienkiewicz,\
The Finite Element Method,\
Sixth Edition,\
Butterworth-Heinemann, 2005,\
ISBN: 0750663200,\
LC: TA640.2.Z54.
Source Code: {#source-code align=”center”}
Examples and Tests: {#examples-and-tests align=”center”}
SQ is FEM data for the function f(x,y,z)=x\^2+2*y\^2-z\^2, on a
5x5x5 grid of nodes in the cube [0,4]x[0,4]x[0,4], organized into
linear linear tetrahedrons. The sample data seeks the values of this
function on a 4x4x4 evenly spaced grid.
List of Routines: {#list-of-routines align=”center”}
- MAIN is the main program for FEM3D_SAMPLE.
- BASIS_MN_TET4: all bases at N points for a T4 element.
- CH_CAP capitalizes a single character.
- CH_EQI is true if two characters are equal, disregarding case.
- CH_TO_DIGIT returns the integer value of a base 10 digit.
- FEM3D_EVALUATE samples an FEM function on a T4 tet mesh.
- FILE_COLUMN_COUNT counts the number of columns in the first
line of a file.
- FILE_ROW_COUNT counts the number of row records in a file.
- I4_MAX returns the maximum of two I4’s.
- I4_MIN returns the minimum of two I4’s.
- I4_UNIFORM returns a scaled pseudorandom I4.
- I4COL_COMPARE compares columns I and J of an I4COL.
- I4COL_SORT_A ascending sorts an I4COL.
- I4COL_SWAP swaps two columns of an I4COL.
- I4I4I4_SORT_A ascending sorts a triple of I4’s.
- I4MAT_DATA_READ reads data from an I4MAT file.
- I4MAT_HEADER_READ reads the header from an I4MAT file.
- R4_ABS returns the absolute value of an R4.
- R4_NINT returns the nearest integer to an R4.
- R4_UNIFORM_01 returns a unit pseudorandom R4.
- R8_HUGE returns a “huge” R8.
- R8_MAX returns the maximum of two R8’s.
- R8_MIN returns the minimum of two R8’s.
- R8_NINT returns the nearest integer to an R8.
- R8MAT_DATA_READ reads the data from an R8MAT file.
- R8MAT_HEADER_READ reads the header from an R8MAT file.
- R8MAT_SOLVE uses Gauss-Jordan elimination to solve an N by N
linear system.
- R8MAT_WRITE0 writes an R8MAT file with no header.
- R8VEC_IS_NONNEGATIVE is true if all entries in an R8VEC are
nonnegative.
- S_LEN_TRIM returns the length of a string to the last
nonblank.
- S_TO_I4 reads an I4 from a string.
- S_TO_I4VEC reads an I4VEC from a string.
- S_TO_R8 reads an R8 from a string.
- S_TO_R8VEC reads an R8VEC from a string.
- S_WORD_COUNT counts the number of “words” in a string.
- SORT_HEAP_EXTERNAL externally sorts a list of items into
ascending order.
- TET_MESH_NEIGHBOR_TETS determines tetrahedron neighbors.
- TET_MESH_SEARCH_NAIVE naively searches a tet mesh.
- TETRAHEDRON_BARYCENTRIC returns the barycentric coordinates of
a point.
- TIMESTAMP prints the current YMDHMS date as a time stamp.
You can go up one level to the C++ source codes.
Last revised on 07 August 2009.