Mentions légales du service

Skip to content
Snippets Groups Projects
Commit dbc6c248 authored by ALI Olivier's avatar ALI Olivier :monkey_face:
Browse files

Merge branch 'release/1.0.1'

parents d742e029 e535ea91
No related branches found
No related tags found
No related merge requests found
Pipeline #223159 failed
Showing
with 274 additions and 676 deletions
......@@ -85,6 +85,9 @@ target/
# svn
.svn
.cache/
.pytest_cache/
# coverage
.coverage
......@@ -102,4 +105,6 @@ doc/*.ipynb
*.h5
*.xdmf
doc/notebook.rst
doc/README.rst
doc/tutorials.rst
*jitfailure-dolfin*/
......@@ -36,8 +36,7 @@ coverage:
- conda env create -f conda/env.yaml
- source activate bvpy
- conda install conda-bld/linux-64/bvpy-*
- nosetests -v -x
- coverage report
- pytest --cov=bvpy -v -x
retry:
max: 2
when: runner_system_failure
......@@ -109,7 +108,6 @@ pages:
- if: '$CI_COMMIT_BRANCH == "master"'
when: on_success
docker_build_deploy:
image: docker:latest
stage: deploy
......
......@@ -47,11 +47,11 @@
"namespace_method": "pkg_util"
},
"test": {
"suite_name": "nose"
"suite_name": "pytest"
},
"version": {
"major": 1,
"minor": 0,
"post": 0
"post": 1
}
}
......@@ -3,11 +3,11 @@
"coverage": "Wdw0A46bthKCXu+bEDTYhUqOiC6oO1z6vr7BJzujMEDHrqYW6nwpebmtffbKEeQtJ+CllE6GyQ/S+E7WsGRN7g=="
},
".gitignore": {
"git": "PQc3hvWK2Bkdaz48B41hV3wb8vasE0g/tt4SgjNxfsaUQQhe7V17qjwtDkE6q9ySjgQDSww10SmmibMnn8gT/A=="
"git": "77pwFZlnA/vkpAcyacCHkz6TTwwEUrNQspX9U4c8JSQ39A5NazBHfQFpmcWz/3L46HRH+X+RJ+4jFW9RXvs4MA=="
},
"AUTHORS.rst": {
"doc.authors": "8m7WJgCsHuCrAK8j/orSy/0v36/TEHawg8zn8Fu98kw0G5doIGOSaOLizrkp3e/TCOaxTeCqFHaFmHMByRfgFA==",
"doc.contributors": "4ogNKmPWl19ent0JBpc2GefSpdxSyIp17Yq2XIzy5qF7fu6/rkRWPH+NvC1qURedbsgGOO10huCWl+opq16MfA=="
"doc.contributors": "pi2IMJvG9beHzzq+o4FlhAA4ncMolpvZrv9pDljrVTdaiwfXeiTySLkG7Rr1N57HcZAb5lJ9dRe1w5l+qOXtTg=="
},
"CONTRIBUTING.rst": {},
"HISTORY.rst": {},
......@@ -28,20 +28,20 @@
"sphinx": "E9sFsnXAm9uPYBn7f0Qb6edct0UKizsXRIJyjZISRCjHbT2HldXK4GIj1yO69R/OVSfnmdAX5lzXQ4wONQNFgA=="
},
"requirements.txt": {
"reqs": "UY5N7ID42/r9fOX60LaDbFpZbuuklWjYPbn0oq7n3f2WOZ5MnrYZmCatYavLkr8alDbpcD5nN12JBNa52txGzA=="
"reqs": "T02TvsmYi9qrLOKFmlKzraUSIwfedls+Z0iG0JzFrz4SlI/wb3QrTsPofbdJV2KE2GA/Q3/j5YeZaVHnC5nN6g=="
},
"requirements_minimal.txt": {
"reqs": "AWuoxM/eZa+Zy1+ouKN+Lrc/SBs640mRZm3y4E/rbAOGZuvR7CtvYjlndWAzxwLd5fQj99R6tu0YJ/9TeDcx9w=="
},
"setup.cfg": {
"sphinx": "mYLeHXWNqXwTk9eWxY4wTrltnDTrAHQvl0l+kosuIfAgrbAuhWMgySq4WR2Y855Q5HDAtGZY7Pnt+BAU6niXIg==",
"test.nose": "8BEO3bAAzFeAdtXqubagljVsKlDTTlPhxqeM7FqH6eWNEjAPsfMimlW5LBo35uzE2WbJh7gL4SpkKuNlMU/LsA==",
"test.pytest": "vmiIOMqGhuXJBom/KrWFzvETfJmbSMcLkvZ6XDTcFWl7XRHJgu1tcb4eHn97TgcziEqpfD96M5qO0DV3z3S+CQ==",
"test.nose": "vmiIOMqGhuXJBom/KrWFzvETfJmbSMcLkvZ6XDTcFWl7XRHJgu1tcb4eHn97TgcziEqpfD96M5qO0DV3z3S+CQ==",
"test.pytest": "R5P5XMaQxSXsNQJ3hXYY45iLvnl8Mbec6XuIaFTum52gym+wTM2TfEbW/N2doHNaCkpdAWg07oblbYi15AwQkA==",
"wheel": "vUJZkCvbK4LQuEURneKnX/SNIwhJ9/9EaT5T6Uw1K1fauKFFiHnq1DTDES7cgBD0OANelyvwCCZO/rV4Iok+ag=="
},
"setup.py": {
"pysetup.call": "t30iIuCMd/sWxStR2XNYb8bCBgwanhKt8YYn2VKACyAqL5cKFRUWpVRIpAR+uxXUZ9PYYy2csMmECcONnRZE8w==",
"pysetup.kwds": "f4aACD9E05zMLYsGLGCmuXYWoJYRxvBWIPnYpSODKQihBS2+4TDmMjPDlKAUsZrUN88JKQhdIOxsqmZMdV0+OQ=="
"pysetup.kwds": "cAzFCKINVCtdrW5WhuidyviQrjIRX8YUv/rk3SF+rIsw8qmZw/sHOk10U61j0JP5yPh3jTQcLE3CRoC59uJl7A=="
},
"src/bvpy/__init__.py": {
"src": "L2dZgUBRC5qv3o09+1CbMcgYfQtR1ZNSvP8KlP8REQazZiAQAktALjpCC2ijdxvKPv/tN9KsZrzNW+lZMszSfg==",
......
{
"base": "5.1.9",
"coverage": "5.1.9",
"doc": "5.1.9",
"git": "5.1.9",
"license": "5.1.9",
"pysetup": "5.1.9",
"reqs": "5.1.9",
"sphinx": "5.1.9",
"src": "5.1.9",
"test": "5.1.9",
"version": "5.1.9"
"base": "5.2.0",
"coverage": "5.2.0",
"doc": "5.2.0",
"git": "5.2.0",
"license": "5.2.0",
"pysetup": "5.2.0",
"reqs": "5.2.0",
"sphinx": "5.2.0",
"src": "5.2.0",
"test": "5.2.0",
"version": "5.2.0"
}
\ No newline at end of file
......@@ -16,11 +16,6 @@ Contributors
.. {# pkglts, doc.contributors
* Florian <florian.gacon@inria.fr>
* Olivier Ali <olivier.ali@inria.fr>
* Florian <florian.gacon@gmail.com>
* GACON Florian <florian.gacon@inria.fr>
* Christophe Godin <christophe.godin@inria.fr>
* ALI Olivier <olivier.ali@inria.fr>
.. #}
This diff is collapsed.
========================
``bvpy``
========================
Welcome
-------
.. {# pkglts, doc
**Bvpy** is a python library, based on `FEniCS <https://fenicsproject.org/>`_ and `GMSH <http://gmsh.info/>`_, to easily implement and study numerically Boundary Value Problems (BVPs) as well as Initial Boundary Value Problems (IBVPs) through the Finite Element Method (FEM).
.. #}
Initially built up in the context of developmental biology and morphomechanics, **Bvpy** proposes an intuitive API as close as possible to the formal definition of BVPs. Its purpose is to enable users to quickly and efficiently estimate the behavior of a wide variety of fields (scalars, vectors, tensors) on biologically relevant structures (Riemannian and non-Rieamannian manifolds), inspired by biophysical and biochemical processes (morphogene patterning, active matter mechanics, diffusion-reaction processes, active transports...).
Package providing tools to solve BVP (Boundary Value Problem) and IBVP (Initial Boundary Value Problem).
Despite this biological motivation, the **Bvpy** library has been implemented in an *agnostic* manner that makes it suitable for many other scientific context.
It rely on FEniCS finite element library (https://fenicsproject.org/) and GMSH (http://gmsh.info/).
The doc can be found `here <https://mosaic.gitlabpages.inria.fr/bvpy>`_.
.. sidebar:: **Bvpy**
:Lead Development: Florian Gacon
:Lead Development: Florian Gacon
:Coordination: Olivier Ali
:Coordination: Olivier Ali
:Active team: Inria project team `Mosaic <https://team.inria.fr/mosaic/>`_
:Active team: Inria project team `Mosaic <https://team.inria.fr/mosaic/>`_
:Institutes: `Inria <http://www.inria.fr>`_
:Institutes: `Inria <http://www.inria.fr>`_
:Language: Python
:Language: Python
:Supported OS: Linux, MacOS
:Supported OS: Linux, MacOS
:Licence: `Cecill-C`
:Licence: `LGPL`
:Funding: Inria ADT Gnomon (Christophe Godin)
:Funding: Inria ADT Gnomon (Christophe Godin)
Documentation
-------------
The documentation can be found `here <https://mosaic.gitlabpages.inria.fr/bvpy/>`_.
A quick introduction to boundary-value problems and Initial-Boundary-value problems, as well as a the general philosophy behind the **Bvpy** library development can be found `here <https://mosaic.gitlabpages.inria.fr/bvpy/general_introduction.html>`_.
A detailed description of the main classes and models of the library can be found `here <https://mosaic.gitlabpages.inria.fr/bvpy/library_description.html>`_.
Some tutorials explaining basic manipulations are gathered `here <https://mosaic.gitlabpages.inria.fr/bvpy/tutorials.html>`_.
Requirements
------------
* Python 3.7+
* FEniCS
* GMSH
Installation
......@@ -49,7 +67,7 @@ You will need conda in order to install ``bvpy``, you can download it `here <ht
.. code-block:: bash
conda install -c mosaic -c conda-forge bvpy
conda install -c conda-forge bvpy
- From docker
......@@ -72,14 +90,46 @@ And use the URL on the terminal to open the tutorials.
Test
----
If you install ``bvpy`` from anaconda install ``nose`` and ``coverage`` inside your environment:
If you install ``bvpy`` from anaconda install ``pytest`` and ``pytest-cov`` inside your environment:
.. code-block:: bash
conda install -c conda-forge nose coverage
conda install -c conda-forge pytest pytest-cov
And then run at the root of the project:
.. code-block:: bash
nosetests -v
pytest -v
Support
-------
If you encounter an error or need help, please `raise an issue <https://gitlab.com/oali/bvpy/-/issues>`_.
Contributing
------------
Bvpy is a is a collaborative project and contributions are welcome. If you want to contribute, please contact the `coordinator <mailto:olivier.ali@inria.fr>`_ prior to any `merge request <https://gitlab.com/oali/bvpy/-/merge_requests>`_ and
check the `gitlab merge request guidelines <https://docs.gitlab.com/ee/development/contributing/merge_request_workflow.html>`_ if needed.
Citation
--------
If you are using Bvpy in a published work, please use this bibtex entry as reference:
.. code-block::
@article{gacon_2021,
doi = {xxx},
url = {xxx},
year = {2021},
publisher = {xxx},
volume = {x},
number = {xx},
pages = {xxxx},
author = {Florian Gacon and Christophe Godin and Olivier Ali},
title = {BVPy: A FEniCS-based Python package to ease the expression and study
of boundary value problems in Biology.},
journal = {Journal of Open Source Software}
}
......@@ -7,8 +7,8 @@ dependencies:
- ipython
- numpy
- python-gmsh=4.5.6
- nose
- coverage
- pytest
- pytest-cov
- meshio
- fenics
- importlib_metadata
......@@ -21,3 +21,4 @@ dependencies:
- make
- nbsphinx
- recommonmark
- typing_extensions
......@@ -20,7 +20,6 @@ requirements:
- ipython
- numpy
- python-gmsh=4.5.6
- nose
- meshio
- fenics
- importlib_metadata
......
data/tutorial_results/tuto_7_result_3_paraview_snapshot.gif.png

1.1 MiB

doc/_static/logo_repo.png

156 KiB

......@@ -22,6 +22,12 @@ import sys
def setup(app):
app.add_css_file('css/custom.css')
# -------------------- Import Readme --------------------
os.system('cp ../README.rst .')
print('import file: README.rst')
# -------------------- Import Notebooks --------------------
for file in os.listdir('.'):
......@@ -36,11 +42,12 @@ to_import = ['bvpy_tutorial_domain.ipynb',
'bvpy_tutorial_3_vforms.ipynb',
'bvpy_tutorial_4_bnd_cond.ipynb',
'bvpy_tutorial_5_reaction_diffusion.ipynb',
'bvpy_tutorial_6_linear_elasticity.ipynb']
'bvpy_tutorial_6_linear_elasticity.ipynb',
'bvpy_tutorial_7_hyper_elasticity.ipynb']
for i in notebooks:
if '.' != i[0] and i in to_import:
print('import file:'+i)
print('import file: '+i)
os.system('cp ../tutorials/'+i+' '+i)
......@@ -150,9 +157,9 @@ copyright = u"2020, bvpy"
#
# The short X.Y version.
version = "1.0.0"
version = "1.0.1"
# The full version, including alpha/beta/rc tags.
release = "1.0.0"
release = "1.0.1"
# The language for content autogenerated by Sphinx. Refer to documentation
......
.. include:: substitutions.txt
.. image:: https://gitlab.inria.fr/mosaic/bvpy/badges/develop/coverage.svg
:target: https://gitlab.inria.fr/mosaic/bvpy
========================
Bvpy
========================
.. image:: https://gitlab.inria.fr/mosaic/work-in-progress/bvpy/badges/develop/coverage.svg
:target: https://gitlab.inria.fr/mosaic/work-in-progress/bvpy
.. image:: https://gitlab.inria.fr/mosaic/work-in-progress/bvpy/badges/develop/pipeline.svg
:target: https://gitlab.inria.fr/mosaic/work-in-progress/bvpy/pipelines
.. image:: https://gitlab.inria.fr/mosaic/bvpy/badges/master/pipeline.svg
:target: https://gitlab.inria.fr/mosaic/bvpy/pipelines
.. image:: https://anaconda.org/mosaic/bvpy/badges/platforms.svg
:target: https://anaconda.org/MOSAIC/bvpy
:target: https://anaconda.org/conda-forge/bvpy
.. image:: https://anaconda.org/mosaic/bvpy/badges/version.svg
:target: https://anaconda.org/MOSAIC/bvpy
.. image:: https://img.shields.io/conda/vn/conda-forge/bvpy.svg
:target: https://anaconda.org/conda-forge/bvpy
.. image:: https://anaconda.org/mosaic/bvpy/badges/license.svg
:target: https://cecill.info/licences/Licence_CeCILL-C_V1-en.txt
:target: https://www.gnu.org/licenses/lgpl-3.0.txts
.. image:: https://anaconda.org/mosaic/bvpy/badges/latest_release_date.svg
:target: https://anaconda.org/MOSAIC/bvpy
.. image:: https://anaconda.org/conda-forge/bvpy/badges/latest_release_date.svg
:target: https://anaconda.org/conda-forge/bvpy
.. image:: https://anaconda.org/mosaic/bvpy/badges/downloads.svg
:target: https://anaconda.org/MOSAIC/bvpy
.. image:: https://anaconda.org/conda-forge/bvpy/badges/downloads.svg
:target: https://anaconda.org/conda-forge/bvpy
.. toctree::
:caption: Table of contents
......@@ -37,86 +31,4 @@ Bvpy
Sources <_dvlpt/modules>
Welcome
-------
**Bvpy** is a python library, based on `FEniCS <https://fenicsproject.org/>`_ and `GMSH <http://gmsh.info/>`_, to easily implement and study numerically Boundary Value Problems (BVPs) as well as Initial Boundary Value Problems (IBVPs) through the Finite Element Method (FEM).
Initially built up in the context of developmental biology and morphomechanics, **Bvpy** proposes an intuitive API as close as possible to the formal definition of BVPs given in eq.$(\ref{eq:bvp})$. Its purpose is to enable users to quickly and efficiently estimate the behavior of a wide variety of fields (scalars, vectors, tensors) on biologically relevant structures (Riemannian and non-Rieamannian manifolds), inspired by biophysical and biochemical processes (morphogene patterning, active matter mechanics, diffusion-reaction processes, active transports...).
Despite this biological motivation, the **Bvpy** library has been implemented in an *agnostic* manner that makes it suitable for many other scientific context.
.. sidebar:: |name|
:Lead Development: Florian Gacon
:Coordination: Olivier Ali
:Active team: Inria project team `Mosaic <https://team.inria.fr/mosaic/>`_
:Institutes: `Inria <http://www.inria.fr>`_
:Language: Python
:Supported OS: Linux, MacOS
:Licence: `Cecill-C`
:Funding: Inria ADT Gnomon (Christophe Godin)
Requirements
------------
* Python 3.6+
* FEniCS
* GMSH
Installation
------------
In order to install ``bvpy`` you will need `conda <https://docs.conda.io/projects/conda/en/latest/user-guide/install/>`_.
* From sources:
.. code-block:: bash
git clone https://gitlab.inria.fr/mosaic/bvpy.git
cd bvpy
conda env create -f conda/env.yaml -n bvpy-dev
conda activate bvpy-dev
python setup.py develop --prefix=$CONDA_PREFIX
* On `Anaconda Cloud <https://anaconda.org/mosaic/bvpy>`_:
.. code-block:: bash
conda install -c mosaic -c conda-forge bvpy
Documentation
-------------
A quick introduction to boundary-value problems and Initial-Boundary-value problems, as well as a the general philosophy behind the **Bvpy** library development can be found :ref:`here<general_introduction>`.
A detailed description of the main classes and moduels of the library can be found :ref:`here<library_description>`.
Some tutorials explaining basic manipulations are gathered :ref:`here<tutorials>`.
.. Finally, the technical description (docblocks) of all the classes and modules can be found :ref:`here<_src>`.
Contents
--------
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
Licence
-------
You can distribute and/or modify **Bvpy** under the terms of the Inria licence. If **Bvpy** contributes to a project that leads to a scientific publication, please acknowledge this work by Citing the project.z
.. include:: README.rst
.. _library_description:
.. math::
\newcommand{\euclid}[1]{\mathbb{R}^{#1}}
\newcommand{\pos}{\boldsymbol{x}}
\newcommand{\field}{u}
\newcommand{\source}{g}
\newcommand{\body}{\Omega}
\newcommand{\surf}{\partial\body}
\newcommand{\grad}[1]{\boldsymbol{\nabla}(#1)}
\newcommand{\tline}{[t_0, t_{\infty}]}
Library description
###################
......@@ -42,7 +51,7 @@ The purpose of the first four modules listed below is to provide the library wit
Domains
-------
The ``bvpy.domains`` module contains the classes that can be used to implement the notion of integration domain, $\body$ in eq.($\ref{eq:bvp}$). It is built around the (abstract) mother class ``AbstractDomain``. All *domain classes* used as arguments for *BVPs*/*IBVPs* inherits from it. The ``AbstractDomain`` encompasses two complementary description of the integration domain:
The ``bvpy.domains`` module contains the classes that can be used to implement the notion of integration domain, :math:`\body` in :ref:`eq.(1)<eq_bvp>`. It is built around the (abstract) mother class ``AbstractDomain``. All *domain classes* used as arguments for *BVPs*/*IBVPs* inherits from it. The ``AbstractDomain`` encompasses two complementary description of the integration domain:
* A ``gmsh.model`` called the *geometry* of the domain and set by the ``geometry()`` abstract method.
* A ``fenics.mesh`` called the *mesh* of the domain and produced by the ``discretize()`` method. Note that this method is not automatically called at instanciation but either by high-end functions such as ``plot()`` (from the ``bvpy.utils.visu`` module) or `bvp.solve()`.
......@@ -119,7 +128,7 @@ The second class of sub-module specifically tackles the problem differential sy
\strain = \text{sym}\big(\grad{\mathbf{u}} \big)
\end{cases}
where $\mathbf{u}$ stands for the displacement field. The tensor $\stiffness$ accounts for the linear stiffness tensor of the considered material.
where :math:`\mathbf{u}` stands for the displacement field. The tensor $\stiffness$ accounts for the linear stiffness tensor of the considered material.
The latter encompasses hyper-elastic equations, *i.e.* valid beyond the linear deformation regime. They corresponds to the same general mathematical definition given above but with another strain definition:
......
.. _tutorials:
Tutorials
*********
.. toctree::
:titlesonly:
:maxdepth: 1
bvpy_tutorial_domain
bvpy_tutorial_1_hello_world
bvpy_tutorial_2_domains
bvpy_tutorial_3_vforms
bvpy_tutorial_4_bnd_cond
bvpy_tutorial_5_reaction_diffusion
bvpy_tutorial_6_linear_elasticity
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment