Package PyFreeFEM for interfacing Python and FreeFEM.
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyfreefem-1.1.0-py3-none-any.whl.
File metadata
- Download URL: pyfreefem-1.1.0-py3-none-any.whl
- Upload date:
- Size: 28.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81eae9a364e75986a70a77ddc55cc5a06c207dbc03c4989686d8aefbbf5a6faf
|
|
| MD5 |
441c822a55a08a5ec0770759eb26004a
|
|
| BLAKE2b-256 |
d90d325f7417e1669793032da0a025907157e5292a7c4010df300dbc5fb759ec
|