

                                                pyOptFEMP1


             pyOptFEMP1 is a Python package providing simple and efficient
             vectorized routines for P1-Lagrange Finite Element Methods in any dimension
		 

This toolbox contains different optimization techniques to perform the assembly
of P1 finite element matrices in Matlab and Octave,  from the standard approach (base version and OptV1)
to recent vectorized ones (OptV2, OptV and OptVS), without any low level language used.

Versions
----------
  * Version 0.1b0 (beta version)  
    We have implemented the assembly of :
    - the Mass Matrix, 
    - the Weighted Mass Matrix,
    - the Stiffness Matrix,
    - the Elasticity Stiffness Matrix in 2D and 3D.

Requirements
--------------
    Needs Python with Numpy, Scipy, matplotlib
    see F. Cuvelier homepage <www.math.univ-paris13.fr/~cuvelier>

Testing and Working
----------------------
    Ubuntu 14.04 LTS (x86_64) with
        Python 3.4.0 (Numpy 1.8.2, Scipy 0.13.3, Matplotlib 1.3.1)
        Python 2.7.6 (Numpy 1.8.2, Scipy 0.13.3, Matplotlib 1.3.1)

Quick testing
---------------
To use the pyOptFEMP1 package and run some benchs :
  from benchtools import *

  [Lndof,Tcpu]=benchMass(3,['OptV1','OptV2','OptV','OptVS'],range(5,30,5))
  [Lndof,Tcpu]=benchStiff(4,['OptV2','OptV','OptVS'],[5,7,11],nbruns=1,isplot=True)
  [Lndof,Tcpu]=benchStiffElas(2,['OptV2','OptV','OptVS'],range(100,600,100),nbruns=1,isplot=True)
  [Lndof,Tcpu]=benchMassW(2,['OptV1','OptV2','OptV','OptVS'],range(50,300,50))
  ...
  Use help for more informations
  
License issues
-----------------
pyOptFEMP1 is published under the terms of the GNU General Public License.

pyOptFEMP1 is free software: you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later version.

pyOptFEMP1 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program.
If not, see http://www.gnu.org/licenses/.

Software using source files of this project or significant parts of it,
should include the following attribution notice:
% --------------------------------------------------------------------
% ATTRIBUTION NOTICE:
% This product includes software developed for the mOptFEMP1 project at
% (C) University Paris XIII, Galilee Institute, LAGA, France.
%
% pyOptFEMP1 is a Python software package for P1-Lagrange Finite Element Methods in any dimension.
% The project is maintained by
%   F. Cuvelier, C. Japhet and G. Scarella.
% --------------------------------------------------------------------
