FEM2D_SAMPLE 
  Evaluate a Finite Element Function of a 2D Argument
    
    
    
      FEM2D_SAMPLE
      is a C++ program which
      can evaluate a finite element function of a 2D argument.
    
    
      The current version of the program can only handle finite element
      meshes which are made of piecewise linear triangles of order 3 or 6.
    
    
      Usage:
    
    
      
        fem2d_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:
    
    
      The computer code and data files described and made available on this web page
      are distributed under
      the GNU LGPL license.
    
    
      Languages:
    
    
      FEM2D_SAMPLE is available in
      a C++ version and
      a FORTRAN90 version and
      a MATLAB version.
    
    
      Related Data and Programs:
    
    
      
      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,
      a data directory which
      contains examples of 2D FEM files,
      three text files that describe a 2D finite element geometry;
    
    
      
      FEM2D_HEAT,
      a C++ program which
      solves the
      time dependent heat equation in the unit square.
    
    
      
      FEM2D_PACK,
      a C++ library which
      includes utitlies for 2D finite element calculations.
    
    
      
      FEM2D_POISSON,
      a C++ program which
      solves Poisson's equation
      on a square, using the finite element method.
    
    
      
      FEM2D_POISSON_LINEAR,
      a C++ program which
      solves the 2D Poisson equation on a rectangle, using the finite element method,
      and piecewise linear triangular elements.
    
    
      
      FEM2D_PROJECT,
      a C++ program which
      projects a function F(X,Y) into a given finite element space
      of piecewise linear triangular elements.
    
    
      
      FEM3D_SAMPLE,
      a C++ program which
      evaluates a finite element function defined on 3D tetrahedral mesh.
    
    
      
      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:
    
    
      
        - 
          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:
    
    
      
    
    
      Examples and Tests:
    
    
      SQ is FEM data for the function f(x,y)=x^2+y^2, on a 5x5 grid
      of nodes, organized into linear triangles.  The sample data seeks the values
      of this function on a 4x4 evenly spaced grid.
      
    
    
      List of Routines:
    
    
      
        - 
          MAIN is the main program for FEM2D_SAMPLE.
        
 
        - 
          BASIS_MN_T3: all bases at N points for a T3 element.
        
 
        - 
          BASIS_MN_T6: all bases at N points for a T6 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.
        
 
        - 
          GRID_SAMPLE samples a (scalar) FE function on a T3 or T6 triangulation.
        
 
        - 
          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.
        
 
        - 
          GET_SEED returns a random seed for the random number generator.
        
 
        - 
          I4_MAX returns the maximum of two integers.
        
 
        - 
          I4_MIN returns the smaller of two integers.
        
 
        - 
          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.
        
 
        - 
          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_WRITE writes an R8MAT file.
        
 
        - 
          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.
        
 
        - 
          TIMESTAMP prints the current YMDHMS date as a time stamp.
        
 
        - 
          TRIANGULATION_ORDER3_NEIGHBOR_TRIANGLES determines triangle neighbors.
        
 
        - 
          TRIANGULATION_ORDER6_NEIGHBOR_TRIANGLES determines triangle neighbors.
        
 
        - 
          TRIANGULATION_SEARCH_DELAUNAY searches a triangulation for a point.
        
 
      
    
    
      You can go up one level to 
      the C++ source codes.
    
    
    
      Last revised on 08 August 2009.