Skip to content

Commit

Permalink
v1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
fdmatoz committed Aug 24, 2023
0 parents commit 452a1c3
Show file tree
Hide file tree
Showing 1,135 changed files with 474,971 additions and 0 deletions.
70 changes: 70 additions & 0 deletions .github/workflows/deploy_docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#MIT License
#
#Copyright (c) 2023 Daniel Matoz Fernandez
#
#Permission is hereby granted, free of charge, to any person obtaining a copy
#of this software and associated documentation files (the "Software"), to deal
#in the Software without restriction, including without limitation the rights
#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
#copies of the Software, and to permit persons to whom the Software is
#furnished to do so, subject to the following conditions:
#
#The above copyright notice and this permission notice shall be included in all
#copies or substantial portions of the Software.
#
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
#SOFTWARE.

# Pymember Documentation Deployer
# Date: 2023-08-12
name: Deploy Documentation


# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the "main" branch
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9

- name: Install dependencies
run: |
sudo apt install -y doxygen
python -m pip install --upgrade pip
pip install Sphinx pydata-sphinx-theme
pip install sphinx-design
pip install sphinxcontrib-bibtex
pip install breathe exhale
pip install numpydoc
- name: Build documentation
run: |
sphinx-build -b html ./docs ./docs/_build/html
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/_build/html
106 changes: 106 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
#Edited 13-08-2023
CMakeCache.txt
CMakeFiles
Makefile
cmake_install.cmake
.DS_Store
*.so
*.pyd
*.dll
*.sln
*.sdf
*.opensdf
*.vcxproj
*.filters
example.dir
Win32
x64
Release
Debug
.vs
CTestTestfile.cmake
Testing
autogen
MANIFEST
/.ninja_*
/*.ninja
/docs/.build
*.py[co]
*.egg-info
*~
.*.swp
.DS_Store
/dist
/build
/cmake/
.cache/
sosize-*.txt
pybind11Config*.cmake
pybind11Targets.cmake
#cuda
*.i
*.ii
*.gpu
*.ptx
*.cubin
*.fatbin
# Prerequisites
*.d

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod
*.smod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app

# vscode
.vscode/
pymembrane/cppmodule/.vscode/
pymembrane/cppmodule/src/.vscode/

# vscode
.history/

# python
__pycache__/
*.pyc
pymembrane/__pycache__/
pymembrane/cppmodule/__pycache__/
.ipynb_checkpoints/


# vtk
*.vtk
*.vtp
*.vtu

# vscode
pymembrane/cppmodule/build/*

# exception to the rule
!pymembrane/cppmodule/build/.gitkeep

21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2023 Daniel Matoz Fernandez

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
99 changes: 99 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

<p align="center">
<img height="300" src="docs/_static/logo-github.png">
</p>

### Overview:

PyMembrane is an advanced simulation software crafted to model liquid and elastic membranes. This robust tool captures the essence of these membranes through a coarse-grained representation built on unstructured, triangulated two-dimensional meshes that are positioned within a three-dimensional space.

### Technicalities:

- **Programming Language:** At its core, PyMembrane is constructed in C++. This ensures rapid and efficient computations even for the most complex simulations.

- **User Interface:** The software sports an intuitive Python interface, melding the power of C++ with the simplicity of Python. This unique blend facilitates quick setup, execution, and analysis phases.

- **Software Engineering:** PyMembrane is grounded in modern software engineering principles, ensuring a design that is both modular and robust. This modular architecture not only guarantees consistency but also ensures that the software remains easy to maintain.

- **Customization:** A distinguishing feature of PyMembrane is its inherent flexibility. The software is built with standardized C++ interfaces, simplifying the addition of new force models or motion equation integrators.

- **Efficiency:** The software harnesses widely recognized data structures for its unstructured meshes. This ensures prompt mesh operations and accurate force computations.

### Extendibility:

The modular design is the backbone of PyMembrane, promoting straightforward implementation of custom extensions. This ensures that as the research realm evolves, PyMembrane can seamlessly adapt, accommodating new features with ease. This emphasis on adaptability and user-centric design positions PyMembrane as a top-tier choice for membrane simulations.

## Getting Started

PyMembrane is not just about powerful computations; it's also about simplicity. With an assortment of templates tailored for typical simulations, bolstered by comprehensive documentation, users can effortlessly configure and initiate research-grade simulations.

### Installation

#### Prerequisites

- Currently supported on Linux and Mac OSX.
- Required installations: Python, associated libraries, and suitable compilers.
- Recommended to use [Miniconda](https://docs.conda.io/en/latest/miniconda.html).

##### Steps:

1. Ensure a C++14 or later standard-supported C/C++ compiler is present.

2. Clone the repository:
```bash
git clone https://github.com/fdmatoz/pymembrane.git
```

3. Create a new conda environment:
```bash
conda create -n PYMEMB python=3.8 numpy
```

3. Activate the environment:
```bash
conda activate PYMEMB
```

5. Install necessary packages in the conda environment:
```bash
conda install -c anaconda cmake
```

6. Issues with VTK libraries? PyMembrane utilizes [VTK](https://vtk.org/download/) for VTP files, viewable with [ParaView](https://www.paraview.org/). On Linux, use a package manager (e.g., apt) for VTK libraries. For Mac OSX, let PyMembrane fetch and compile VTK locally.

### Installing the PyMembrane Python Module

From the `pymembrane` directory, execute:
```bash
python setup.py install
```

**Note**: Without Anaconda, you might need root access. The `python setup.py install --user` option is currently unsupported.

### Visualizing Results

Results often use formats like .vtk or .json. Employ visualization tools or the provided scripts for analyzing simulation results. [Paraview](https://www.paraview.org/) is recommended for visualizing mesh files and attributes.

# Documentation & Community

- **Detailed Documentation**: For an in-depth understanding, visit the [official documentation](https://fdmatoz.github.io/PyMembrane/).

- **Community Interaction**: Engage with the PyMembrane community through forums, chats, or on GitHub.

## Quick Start: The Disclination Problem

View the [basic example](./docs/Examples/desclination.md) for a hands-on introduction.

# Cite Us



# About

PyMembrane 2023 by [Daniel Matoz Fernandez](http://www.danielmatoz.com).

# License

Distributed under the [MIT license](LICENSE.txt).

Loading

0 comments on commit 452a1c3

Please sign in to comment.