Skip to main content

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.

Official documentation

Features

PyFreeFEM has the following capabilities:

  • Running FreeFEM .edp scripts that support python input parameters:

    from pyfreefem import FreeFemRunner   
    FreeFemRunner("script.edp").execute({'f':'x+1','N':10, 'THREEDIM':0})
    
  • Executing portions of .edp scripts 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

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)

Table of built distributions (wheels) for pyfreefem 1.1.5
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.1.5 This release

1 release file

1.1.4

2 release files

1.1.3

2 release files

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.2

1 release file

1.0.1

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page