diff --git a/LICENSE.txt b/LICENSE.txt index 71b5554..0287a7d 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright 2025-2026 Jonathan Demaeyer +Copyright 2025-2026 Jonathan Demaeyer and Oisín Hamilton Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.md b/README.md index 592b0f2..94a3824 100644 --- a/README.md +++ b/README.md @@ -23,15 +23,30 @@ LayerCake has been designed with geophysics in mind, although it may be useful f ## About -(c) 2025-2026 Jonathan Demaeyer +(c) 2025-2026 Jonathan Demaeyer and Oisín Hamilton -See [LICENSE.txt](./LICENSE.txt) for license information. +See [LICENSE.txt](https://github.com/Climdyn/LayerCake/blob/main/LICENSE.txt) for license information. ## Installation ### With pip -Not yet available. +The easiest way to install and run LayerCake is to use [pip](https://pypi.org/). +Type in a terminal + + pip install layercake-model + +and you are set! + +Additionally, you can clone the repository + + git clone https://github.com/Climdyn/LayerCake.git + +and perform a test by running the script + + python examples/atmospheric/barotropic_one_layer.py + +to see if everything runs smoothly (this should take less than 5 minutes). ### With Anaconda @@ -64,12 +79,30 @@ To build the documentation, please run (with the conda environment activated): You may need to install [make](https://www.gnu.org/software/make/) if it is not already present on your system. Once built, the documentation is available [here](./documentation/build/html/index.html). +The documentation is also available online at https://climdyn.github.io/LayerCake/. In particular, +please consider reading the [User guide](https://climdyn.github.io/LayerCake/files/user_guide.html#). + ## Examples A few examples are available in the [examples](./examples) folder. More examples will be provided as the code is -developed. +further developed. + +## Dependencies + +LayerCake needs mainly: + +* [Numpy](https://numpy.org/) for numeric support +* [sparse](https://sparse.pydata.org/) for sparse multidimensional arrays support +* [Numba](https://numba.pydata.org/) for code acceleration +* [Sympy](https://www.sympy.org/) for symbolic manipulation of inner products + +Check the YAML file [environment.yml](https://raw.githubusercontent.com/Climdyn/LayerCake/main/environment.yml) for the dependencies. ## Contributing LayerCake is in beta development phase, bug reports and tests of the features are welcome. Please simply raise an issue on [Github](https://github.com/Climdyn/LayerCake/issues). + +If you want to contribute actively to the development, please contact the main authors. +In addition, if you have made changes that you think will be useful to others, please feel free to suggest these as a pull request +on the [LayerCake Github repository](https://github.com/Climdyn/LayerCake/pulls). diff --git a/documentation/source/files/general_information.rst b/documentation/source/files/general_information.rst index eb24703..3ab0ee0 100644 --- a/documentation/source/files/general_information.rst +++ b/documentation/source/files/general_information.rst @@ -17,9 +17,9 @@ LayerCake has been designed with geophysics in mind, although it may be useful f About ----- -(c) 2025-2026 Jonathan Demaeyer +© 2025-2026 Jonathan Demaeyer and Oisín Hamilton -See `LICENSE.txt <../../../../LICENSE.txt>`_ for license information. +See `LICENSE.txt `_ for license information. Installation ------------ @@ -27,7 +27,22 @@ Installation With pip ~~~~~~~~ -Not yet available. +The easiest way to install and run LayerCake is to use `pip `_. +Type in a terminal :: + + pip install layercake-model + +and you are set! + +Additionally, you can clone the repository :: + + git clone https://github.com/Climdyn/LayerCake.git + +and perform a test by running the script :: + + python examples/atmospheric/barotropic_one_layer.py + +to see if everything runs smoothly (this should take less than 5 minutes). With Anaconda ~~~~~~~~~~~~~ @@ -62,14 +77,39 @@ To build the documentation, please run (with the conda environment activated): : You may need to install `make `_ if it is not already present on your system. Once built, the documentation is available `here <../index.html>`_. +The documentation is also available online at https://climdyn.github.io/LayerCake/. In particular, +please consider reading the `User guide `_. + Examples -------- A few examples are available in the `examples <../../../../examples>`_ folder. More examples will be provided as the code is -developed. +further developed. + +Dependencies +------------ + +LayerCake needs mainly: + + +* `Numpy`_ for numeric support +* `sparse`_ for sparse multidimensional arrays support +* `Numba`_ for code acceleration +* `Sympy`_ for symbolic manipulation of inner products + +Check the YAML file `environment.yml `_ for the dependencies. Contributing ------------ LayerCake is in beta development phase, bug reports and tests of the features are welcome. Please simply raise an issue on `Github `_. + +If you want to contribute actively to the development, please contact the main authors. +In addition, if you have made changes that you think will be useful to others, please feel free to suggest these as a pull request +on the `LayerCake Github repository `_. + +.. _Numba: https://numba.pydata.org/ +.. _Sympy: https://www.sympy.org/ +.. _sparse: https://sparse.pydata.org/ +.. _Numpy: https://numpy.org/ diff --git a/documentation/source/files/tricks.rst b/documentation/source/files/tricks.rst index 385dcdb..e409400 100644 --- a/documentation/source/files/tricks.rst +++ b/documentation/source/files/tricks.rst @@ -152,7 +152,7 @@ variables: If this environment variable is not defined, then LayerCake default behavior is to use threads. * The :code:`LAYERCAKE_PARALLEL_INTEGRATION` environment variable controls the Sympy symbolic integration parallelization. If set to :code:`none`, the parallelization will be deactivated. - Otherwise, it will parallelized using processes. + Otherwise, it will be parallelized using processes. If this environment variable is not defined, then LayerCake default behavior is to parallelize using processes. For example, diff --git a/layercake/__init__.py b/layercake/__init__.py index acfebf7..ed59343 100644 --- a/layercake/__init__.py +++ b/layercake/__init__.py @@ -12,3 +12,5 @@ __all__ = ['Parameter', 'ParameterField', 'FunctionField', 'Field', 'Expression', 'SymbolicBasis', 'vorticity_advection', 'Jacobian', 'OperatorTerm', 'ProductOfTerms', 'AdditionOfTerms', 'LinearTerm', 'ConstantTerm', 'Equation', 'Laplacian', 'D', 'Layer', 'Cake'] + +__version__ = '1.0.2a0' diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..831d6ba --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,61 @@ + +# pyproject.toml + +[build-system] +requires = ["setuptools", "wheel"] + +[project] +requires-python = ">=3.10" +name = "layercake_model" +version = "1.0.2-alpha" +description = "A framework to design systems of partial differential equations (PDEs), and convert them to ordinary differential equations (ODEs) via Galerkin-type expansions. " +readme = "README.md" +authors = [ + { name = "Jonathan Demaeyer", email = "jodemaey@meteo.be" }, + { name = "Oisín Hamilton", email = "ush.hamilton@gmail.com" }, +] +license = "BSD-3-Clause" +license-files = [ "LICENSE.txt" ] +classifiers = [ + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", + "Operating System :: OS Independent", + "Development Status :: 4 - Beta", +# "Development Status :: 5 - Production/Stable", + "Intended Audience :: Science/Research", + "Topic :: Scientific/Engineering", + "Topic :: Scientific/Engineering :: Atmospheric Science", + +] +keywords = ["pde", "symbolic-computation", "ode-model"] +dependencies = [ + "matplotlib", + "numpy", + "numba", + "scipy", + "sympy", + "sparse", + "pebble", +] + +[project.urls] +homepage = "https://github.com/Climdyn/LayerCake" +documentation = "https://climdyn.github.io/LayerCake/" + +[tool.setuptools] +packages = ["layercake", + "layercake.arithmetic", + "layercake.arithmetic.symbolic", + "layercake.arithmetic.terms", + "layercake.bakery", + "layercake.basis", + "layercake.formatters", + "layercake.inner_products", + "layercake.utils", + "layercake.variables", + ]