

                                                mOptFEMPk


                   mOptFEMPk is a MATLAB library providing simple and efficient
	           vectorized routines for Pk-Lagrange Finite Element Methods in 2D and 3D
		 

This toolbox contains two techniques to perform the assembly of Pk-Lagrange 
finite element matrices in Matlab, the standard algorithm (OptV0)
and vectorized algorithm (OptV2), without any low level language used.
The more efficient version (OptV2) is entirely vectorized (without loop) and without any quadrature formula.

We have implemented the assembly of :
    - the Mass Matrix, 
    - the Weighted Mass Matrix,
    - the Stiffness Matrix.
    - the Stiffness Elasticity Matrix
for k in {1,...,5} (2D) and k in {1,2} (3D)


Versions
----------
  * Version beta0 (under development)

Requirements
--------------
    Needs Matlab
    see F. Cuvelier homepage <www.math.univ-paris13.fr/~cuvelier/software>

Testing and Working
----------------------
    Ubuntu 14.04 LTS (x86_64) with
        Matlab R2012b

Quick testing
---------------
To test the mOptFEMPk toolbox, you must initialize path directory using init_mOptFEMPk function.

* validations
    run functions validMassPk, validMassWPk, validStiffPk or validStiffElasPk. For example,
       validMassPk(2,3) 
       validMassWPk(3,2)
       validStiffPk(2,5)
       validStiffElasPk(3,2,0)
    Use help function for details
 
* samples
    Run script samplePk01 and samplePk02. The first one use hypercube mesh. The second one use 
    a mesh of the unit disk in 2D and a mesh of the sphere in 3D. One can modify some parameters 
    in these scripts.

License issues
-----------------
mOptFEMPk is published under the terms of the GNU General Public License.

mOptFEMPk 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.

mOptFEMPk 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 mOptFEMPk project at
% (C) University Paris XIII, Galilee Institute, LAGA, France.
%
% mOptFEMPk is a MATLAB software package for some Pk-Lagrange Finite Element
% Methods in 2D and 3D.
% The project is maintained by
% F. Cuvelier and G. Scarella.
% For Online Documentation and Download we refer to
% <www.math.univ-paris13.fr/~cuvelier/software>
% --------------------------------------------------------------------
