PyFreeFEM
PyFreeFEM is a python package interfacing
FreeFEM scripts with Python. .edp scripts
become small modules that can be used as building blocks of a main
python project.
PyFreeFEM is different from the alternative pyFreeFEM module from Olivier Devauchelle, which has been developped rather simultaneously for similar purposes.
Features
PyFreeFEM has the following capabilities:
-
Running FreeFEM
.edpscripts that support python input parameters:from pyfreefem import FreeFemRunner FreeFemRunner("script.edp").execute({'f':'x+1','N':10, 'THREEDIM':0})
-
Executing portions of
.edpscripts conditionally to python input parameters by using special preprocessing instructions:DEFAULT (THREEDIM,0) IF THREEDIM mesh3 Th=cube($N,$N,$N); ELSE mesh Th=square($N,$N); ENDIF
-
Automated imports and exports of data structures (floats, arrays, matrices, meshes) from FreeFEM to Python and vice-versa:
from pyfreefem import FreeFemRunner fem_matrix=""" IMPORT "io.edp" mesh Th=square($N,$N); fespace Fh1(Th,P1); varf laplace(u,v)=int2d(Th)(dx(u)*dx(v)+dy(u)*dy(v)); matrix A = laplace(Fh1,Fh1,tgv=-2); exportMatrix(A);""" #Get the sparse matrix (scipy csc_matrix format) A: runner = FreeFemRunner(fem_matrix) exports = runner.execute({'N':100}) A = exports['A'] print('A=\n',A.todense())
-
Flexible debugging and capturing of FreeFEM standard output: running the previous script with
runner = FreeFemRunner(fem_matrix,debug=10) exports = runner.execute({'N':100},verbosity=0)
yields the following output:
$ python test.py Write /tmp/pyfreefem_xsd1x5dw/run.edp Reset directory /tmp/pyfreefem_xsd1x5dw/ffexport FreeFem++ /tmp/pyfreefem_xsd1x5dw/run.edp -v 0 -nw Saved /tmp/pyfreefem_xsd1x5dw/ffexport/matrix_A Finished in (0.06s) A= [[ 1. -0.5 0. ... 0. 0. 0. ] [-0.5 2. -0.5 ... 0. 0. 0. ] [ 0. -0.5 2. ... 0. 0. 0. ] ... [ 0. 0. 0. ... 2. -0.5 0. ] [ 0. 0. 0. ... -0.5 2. -0.5] [ 0. 0. 0. ... 0. -0.5 1. ]]
Contribute and support
- Issue tracker: https://gitlab.com/florian.feppon/pyfreefem/-/issues
- Source code: https://gitlab.com/florian.feppon/pyfreefem
If I am not responding on the issue tracker, feel free to send me an email to florian.feppon[at]kuleuven.be
Citation
Please cite the following reference when using this package:
FEPPON, Florian. Shape and topology optimization of multiphysics systems. 2019. Université Paris-Saclay. Thèse préparée à l'École polytechnique.
@phdthesis{feppon2020,
author = {Feppon, Florian},
title = {Shape and topology optimization of multiphysics systems},
school = {Th\`{e}se de doctorat de l'Universit'{e} Paris-Saclay pr'{e}par'{e}e
\`a l''{E}cole polytechnique},
year = {2019}
}
Licence
PyFreeFEM is a free software distributed under the terms of the GNU General Public Licence GPL3.
Metadata
Release files for pyfreefem 1.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyfreefem-1.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Release files / pyfreefem-1.1.5-py3-none-any.whl
| Download URL | pyfreefem-1.1.5-py3-none-any.whl |
|---|---|
| Size | 58.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4534847ed40db26da5ab9db20562df2a0535f9d27a22b615f96599188827e119
|
|
BLAKE2b-256 checksum How to use checksums |
be065a2d0ffc82e82c1801c281ba539d3d5bfa0cd5d0ba672f8f1f8083bc2b53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.3
|