pargeo


Namepargeo JSON
Version 0.3.4 PyPI version JSON
download
home_pagehttps://github.com/Priusds/ParGeo
SummaryGenerate complex two-dimensional geometries for simulations based on mesh discretizations.
upload_time2024-09-07 13:31:42
maintainerTill Schäfer
docs_urlNone
authorRobert Gruhlke
requires_python<4.0,>=3.11
licenseMIT
keywords geometry mesh gmsh composite material fem finite element method
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ParGeo

[**Overview**](#overview)
| [**Installation**](#installation)
| [**Basic Usage**](#basic-usage)
| [**Getting Started**](https://pargeo.readthedocs.io/en/latest/notebooks/getting-started.html)
| [**Documentation**](https://pargeo.readthedocs.io/en/latest/)
| [**Cite**](#cite)

Generate complex two-dimensional geometries for simulations based on mesh discretizations.

![ParGeo Logo](docs/_static/logo.png)

# Overview

With ParGeo you can create complex _domains_, where a domain is a two-dimensional geometry which is described by a collection of shapely [Polygons](https://shapely.readthedocs.io/en/stable/reference/shapely.Polygon.html#shapely.Polygon) and [MultiPolygons](https://shapely.readthedocs.io/en/stable/reference/shapely.MultiPolygon.html#shapely.MultiPolygon) called _subdomains_.

This domain could then be used for mesh generation, to further perform 2D mesh based simulations, like the Finite Element Methods (FEM). We provide mesh generating functionalities based on [Gmsh](https://gmsh.info).

To generate the desired domain you will use the `pargeo.domain.Domain` class and sequentially add subdomains. Each subdomain is associated with a visibility level. The visibility level is an integer, and subdomains with a higher visibility level will cover those with a lower one and be merged with those having the same one.

Following features support you with the domain-generating process:

- **Create Geometries** (`pargeo.geometry`): 
    
    Create common geometries that can easly be transformed into shapely Polygons.

    Following geometries are provided:

    - Box
    - Circle & Ellipse
    - Stellar
    - NStar
    - Raindrop 

- **Transform Geometries** (`pargeo.transform`)

    Pass transforms to your domain while adding new sub-domains. The sub-domain will then be first accordingly transformed before being added to the domain.

    Following transforms are provided:

    - Repeat
    - Periodic
    - Diffeomorphism

- **Impose Constraints** (`pargeo.constraint`)

    Pass constraints to the domain while adding new sub-domains. The new sub-domain is only added, if the constraints are met.
    
    Following constraints are provided:

    - DistanceConstraint

Check out the [documentation](https://pargeo.readthedocs.io/en/latest/) for more information.

## Installation

Install the latest version of ParGeo from PyPI using pip:

```bash
pip install pargeo
``` 

## Basic Usage

Here's a simple example of how to use ParGeo.

```python
from pargeo import write_mesh
from pargeo.domain import Domain
from pargeo.geometry import Box, Circle, Stellar

# Create a domain
background = Box((0, 0), (1, 1)).to_polygon()
domain = Domain(background)

# Add some subdomains
subdomain = Circle((0.3, 0.5), 0.3).to_polygon(refs=50)
domain.add_subdomain(subdomain=subdomain, level=1)

subdomain = Circle((0.7, 0.5), 0.3).to_polygon(refs=50)
domain.add_subdomain(subdomain=subdomain, level=1)

subdomain = Stellar((0.5, 0.3), 0.2).to_polygon(refs=50)
domain.add_subdomain(subdomain=subdomain, level=2)

# Plot the domain
domain.plot()

# Mesh the domain using Gmsh and write the .MSH file
write_mesh(domain, "basic_usage")
```


## Cite

If you use ParGeo in your research, please cite it. You can use the following BibTeX entry:

```bibtex
@software{Schafer_ParGeo_2024,
    author = {Gruhlke, Robert and Schäfer, Till},
    month = feb,
    title = {{ParGeo}},
    url = {https://github.com/Priusds/ParGeo},
    version = {0.3.4},
    year = {2024}
}
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Priusds/ParGeo",
    "name": "pargeo",
    "maintainer": "Till Sch\u00e4fer",
    "docs_url": null,
    "requires_python": "<4.0,>=3.11",
    "maintainer_email": "tillschaefer96@hotmail.it",
    "keywords": "geometry, mesh, gmsh, composite, material, FEM, Finite Element Method",
    "author": "Robert Gruhlke",
    "author_email": "r.gruhlke@fu-berlin.de",
    "download_url": "https://files.pythonhosted.org/packages/e0/fa/486af50f9be5592e4aaf96b203d16727ed6ad9737222b8444e24b35ebe61/pargeo-0.3.4.tar.gz",
    "platform": null,
    "description": "# ParGeo\n\n[**Overview**](#overview)\n| [**Installation**](#installation)\n| [**Basic Usage**](#basic-usage)\n| [**Getting Started**](https://pargeo.readthedocs.io/en/latest/notebooks/getting-started.html)\n| [**Documentation**](https://pargeo.readthedocs.io/en/latest/)\n| [**Cite**](#cite)\n\nGenerate complex two-dimensional geometries for simulations based on mesh discretizations.\n\n![ParGeo Logo](docs/_static/logo.png)\n\n# Overview\n\nWith ParGeo you can create complex _domains_, where a domain is a two-dimensional geometry which is described by a collection of shapely [Polygons](https://shapely.readthedocs.io/en/stable/reference/shapely.Polygon.html#shapely.Polygon) and [MultiPolygons](https://shapely.readthedocs.io/en/stable/reference/shapely.MultiPolygon.html#shapely.MultiPolygon) called _subdomains_.\n\nThis domain could then be used for mesh generation, to further perform 2D mesh based simulations, like the Finite Element Methods (FEM). We provide mesh generating functionalities based on [Gmsh](https://gmsh.info).\n\nTo generate the desired domain you will use the `pargeo.domain.Domain` class and sequentially add subdomains. Each subdomain is associated with a visibility level. The visibility level is an integer, and subdomains with a higher visibility level will cover those with a lower one and be merged with those having the same one.\n\nFollowing features support you with the domain-generating process:\n\n- **Create Geometries** (`pargeo.geometry`): \n    \n    Create common geometries that can easly be transformed into shapely Polygons.\n\n    Following geometries are provided:\n\n    - Box\n    - Circle & Ellipse\n    - Stellar\n    - NStar\n    - Raindrop \n\n- **Transform Geometries** (`pargeo.transform`)\n\n    Pass transforms to your domain while adding new sub-domains. The sub-domain will then be first accordingly transformed before being added to the domain.\n\n    Following transforms are provided:\n\n    - Repeat\n    - Periodic\n    - Diffeomorphism\n\n- **Impose Constraints** (`pargeo.constraint`)\n\n    Pass constraints to the domain while adding new sub-domains. The new sub-domain is only added, if the constraints are met.\n    \n    Following constraints are provided:\n\n    - DistanceConstraint\n\nCheck out the [documentation](https://pargeo.readthedocs.io/en/latest/) for more information.\n\n## Installation\n\nInstall the latest version of ParGeo from PyPI using pip:\n\n```bash\npip install pargeo\n``` \n\n## Basic Usage\n\nHere's a simple example of how to use ParGeo.\n\n```python\nfrom pargeo import write_mesh\nfrom pargeo.domain import Domain\nfrom pargeo.geometry import Box, Circle, Stellar\n\n# Create a domain\nbackground = Box((0, 0), (1, 1)).to_polygon()\ndomain = Domain(background)\n\n# Add some subdomains\nsubdomain = Circle((0.3, 0.5), 0.3).to_polygon(refs=50)\ndomain.add_subdomain(subdomain=subdomain, level=1)\n\nsubdomain = Circle((0.7, 0.5), 0.3).to_polygon(refs=50)\ndomain.add_subdomain(subdomain=subdomain, level=1)\n\nsubdomain = Stellar((0.5, 0.3), 0.2).to_polygon(refs=50)\ndomain.add_subdomain(subdomain=subdomain, level=2)\n\n# Plot the domain\ndomain.plot()\n\n# Mesh the domain using Gmsh and write the .MSH file\nwrite_mesh(domain, \"basic_usage\")\n```\n\n\n## Cite\n\nIf you use ParGeo in your research, please cite it. You can use the following BibTeX entry:\n\n```bibtex\n@software{Schafer_ParGeo_2024,\n    author = {Gruhlke, Robert and Sch\u00e4fer, Till},\n    month = feb,\n    title = {{ParGeo}},\n    url = {https://github.com/Priusds/ParGeo},\n    version = {0.3.4},\n    year = {2024}\n}\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Generate complex two-dimensional geometries for simulations based on mesh discretizations.",
    "version": "0.3.4",
    "project_urls": {
        "Documentation": "https://pargeo.readthedocs.io/en/latest/",
        "Homepage": "https://github.com/Priusds/ParGeo",
        "Repository": "https://github.com/Priusds/ParGeo"
    },
    "split_keywords": [
        "geometry",
        " mesh",
        " gmsh",
        " composite",
        " material",
        " fem",
        " finite element method"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "48e1db1a846ede002c585d7299cef923829859c7df0cb7ac7bd71fd156258613",
                "md5": "898b8d85695223a25107faefcdcaa0d2",
                "sha256": "673a27feeec09375718698cd67da018218fa416e57a25828e3ca854094735d92"
            },
            "downloads": -1,
            "filename": "pargeo-0.3.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "898b8d85695223a25107faefcdcaa0d2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.11",
            "size": 23878,
            "upload_time": "2024-09-07T13:31:40",
            "upload_time_iso_8601": "2024-09-07T13:31:40.780541Z",
            "url": "https://files.pythonhosted.org/packages/48/e1/db1a846ede002c585d7299cef923829859c7df0cb7ac7bd71fd156258613/pargeo-0.3.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e0fa486af50f9be5592e4aaf96b203d16727ed6ad9737222b8444e24b35ebe61",
                "md5": "01e49a462a04bd0cf70c3fdb0220af61",
                "sha256": "ff52bec9ae1f9c53895e5befd9b9fd77297e7439f5f35c07b350455b7ac3192a"
            },
            "downloads": -1,
            "filename": "pargeo-0.3.4.tar.gz",
            "has_sig": false,
            "md5_digest": "01e49a462a04bd0cf70c3fdb0220af61",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.11",
            "size": 21660,
            "upload_time": "2024-09-07T13:31:42",
            "upload_time_iso_8601": "2024-09-07T13:31:42.075638Z",
            "url": "https://files.pythonhosted.org/packages/e0/fa/486af50f9be5592e4aaf96b203d16727ed6ad9737222b8444e24b35ebe61/pargeo-0.3.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-07 13:31:42",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Priusds",
    "github_project": "ParGeo",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pargeo"
}
        
Elapsed time: 0.31956s