Numerical Software

  AFEPack     WiKindx  

AFEPack:AFEPack is a C++ library for (adaptive) finite element developping. Please visit its homepage for further information. It is designed for numerical technique researcher and a practiced user can improve his/her efficiency greatly with this package. It had only been tested on Redhat Linux version greater than 7.1. Please let me know if you can use it successfully on other operating system. The source tarball can be downloaded here which is updated regularly for about one time per week.
the lastest version of AFEPack is now available from CVS repository with the following command line:
    cvs export -D now AFEPack
General Guide to Install AFEPack:
  1. Please instal deal.II at first. You can get this package here. I used the linear algebraic library of deal.II that you need only compile the base and lac part of deal.II. Detailed steps followed as:
    1. download the source package of deal.II (version <= 3.1, higher version untested);
    2. uncompress the package to /usr/local/deal.II;
    3. cd /usr/local/deal.II and run ./configure;
    4. compile with "make base lac";
    5. make the symbolic link of the head files and library files of deal.II to the system diesctory. On my PC as:
          [rli@circus /usr/local/include]$ ln -s ../deal.II/base/include/base .
      [rli@circus /usr/local/include]$ ln -s ../deal.II/lac/include/lac .
      [rli@circus /usr/local/lib]$ ln -s ../deal.II/base/lib/lib* .
      [rli@circus /usr/local/lib]$ ln -s ../deal.II/lac/lib/lib* .
  2. I modified two head files of deal.II. Please replaced with the files here. One of them is lac/sparsity_pattern.h , please replace with this file; the other is lac/sparse_matrix.h, please replace with this file;
  3. It is time now to compile AFEPack. Please get the source package of AFEPack and compress it to such as /usr/local/AFEPack;
  4. generate configure script with automake and autoconf;
  5. run ./configure [-enable-debug=no] to get Makefile ;
  6. run make to compile;
  7. make the symbolic links of the head files and library files of AFEPack with:
        [rli@circus /usr/local/include]$ ln -s ../AFEPack/library/include AFEPack 
    [rli@circus /usr/local/lib]$ ln -s ../AFEPack/library/lib/lib* .
    You can do this with make install, too.
  8. You are already at the moment to coding with AFEPack. See online document for detailed description (The document is in /usr/local/AFEPack/doc).
You can now go to the example directory to compile and study a list of examples and small tools I provided which are very helpful and useful for studying how to code with AFEPack. You can solve a lot of problems by directly modifying one of the examples.

It is of my personal research interest to develop this package instead of funding support that the document updating is often not so quickly. Please give me an email if you are in trouble or have any problems and advices in using this package. You are welcomed if you would like to contribute to this package.

Related Downloads:
AFEPack Change Log:
## ChangeLog

* Use the boost::iostream::filtering_istream to permit shell script style
  comments in the text library file in the template data. So for user please
  put boost to some directory can be found be the compiler!

* A bug in renumerateElement is corrected.

* Lasy mode is added to adapt the code for really large scale computation.
  Under such case, we only handle the node basis functions and the element
  image building is not implemented at all. The user should make the vertices
  of the element to be stored in correct order. In the class IrregularMesh,
  a method lazyRegularize is provided to generate a mesh only store the 
  information of elements and nodes. Dirty tricks!

* Add the POSIX threads support. The support mainly includes the interface
  to call a member function or a non-member function by a new thread.
  Class ThreadManager will take care of the threads. Functions provided
  by POSIX thread library are still avaible in the thread functions. You
  should guarantee the code is thread safe yourself.

* Add the order-0 Raviart-Thomas element on rectangle and twin-triangle.

* in FEMFunction::writeEasyMeshData and FEMFunction::writeOpenDXData,
  the bug to save incorrect data when the nodes is not sorted is removed.

* class DBMesh is revised that the bug in setting boundary marker is

* A serious bug removed from Element::buildGeometryImage.

* Rename the AMGSolver::init member function as AMGSolver::reinit which
  is more nature.

* Add the support to vector value basis function finite element space.
  This is a big upgrade of the whole library. A list of files are revised
  including TemplateElement, FEMSpace, BilinearOperator, etc. There is
  only one vector value template element in the library currently, which
  is the order-0 Raviart-Thomas element on triangles.
* A bug is removed from file Operator.template.h in function
        template <class value_type, int DIM>
        void Operator::L2Project(FEMFunction <value_type, DIM> & f0, 
	                         FEMFunction <value_type, DIM> & f1, 
                                 Method method, 
                                 int algebric_accuracy);

* All examples are revised and a list of simple tools provided in the example

* Add an example to solve a viscous Burgers equation using class MovingMesh.

* Modified the prototype of some member function of class AMGSolver,
  AMGOptimizer, AMGPreconditioner. The original ones have some problems
  in a "const" modifier.

* Debug the Makefile problem in directory "template".

* Add the mechenism to use Algebraic Multigrid Method as a pre-conditioner
  of the solvers in deal.II.

* Add the optimization mechenism for finite element space. With this 
  mechenism, the efficiency of the numerical integration can be improved 
  if it should be taken for more than one time because it can save the 
  integration information in memory.

* Add the class DGFEMSpace to handle Discontinuous Garlerkin Finite
  Element Space.

* Add the class MovingMesh as the derivative class of Mesh which can
  be used as a general mesh while with a provided monitor, the mesh
  can move according the monitor.

* Since version 1.5, the package is planed to be released. The package
  now is comparative stable while there must be a lot of bugs still that
  it at most is an Alpha version. :-)


* This is a web-based database system. The objection of this website is to share information of our group members to improve our efficiency;
* It is coding with PHP + MySql. The original source code is from WiKindx. I added the user managing system for using it in multi-user environment, and some other extensions as contribution records and translated it into Chinese
* You are welcomed even if you are not our group members;
* Even if you would not like to join the club, you can retrieve informations from this website;