Skip to main content

Generate files and folder structure for a coupled simulation with preCICE.

Project description

preCICE Case Generate

preCICE case-generate is a python based utility designed to simplify the generation of preCICE application cases. Such cases consist of the central precice-config.xml file which defines all sorts of connections and relations between involved solvers, as well as adapter-config.json files for each solver.

These files involve a lot of complex elements and modifiers, which are often times not needed. This tool introduces a simpler, easier to read and write topology.yaml file, which covers a wide range of features of the precice-config.xml file, yet with only a fraction of the complexity. An overview over the topology.yaml file can be found in precicecasegenerate/schemas/README.md.

Key Features

  • Automated preCICE configuration generation
  • YAML-based input parsing
  • Flexible topology description support
  • Comprehensive error logging and handling
  • Simple command-line interface

Getting Started

Prerequisites

Required dependencies are:

  • Python ≥ 3.10
  • pip
  • git for cloning the repository :)
  • preCICE Config Graph (will be installed during the setup)
  • pyyaml
  • jsonschema

Optional dependencies are:

Manual Installation

  1. Clone the repository
git clone https://github.com/precice/case-generate.git
cd case-generate
  1. Create a virtual environment
# On Unix/macOS
python -m venv venv
source venv/bin/activate

# On Windows
python -m venv venv
.\venv\Scripts\activate
  1. Install the project
# Upgrade pip and install build tools
python -m pip install --upgrade pip
pip install build

# Install the project in editable mode
pip install -e .

Optional dependencies for testing can be installed via

pip install -e ".[dev]"

Using Setup Scripts

Unix/macOS

./setup_scripts/install_dependencies.sh

Windows

.\setup_scripts\install_dependencies.ps1

Verifying Installation

  • Test the CLI tool
precice-case-generate --help

Usage

Command-Line Interface

Generate a preCICE configuration file from a YAML topology called topology.yaml:

precice-case-generate path/to/topology.yaml

The only required argument is the path/to/topology.yaml.

The precice-case-generate tool supports the following optional parameters:

  • -o, --output-path: Destination path for the generated folder.

    • Default: ./_generated/
    • Description: Choose a specific output location for the _generated/ directory.
  • -v, --verbose: Enable verbose console logging.

    • Default: Disabled
    • Description: Provides detailed logging information during execution.

[!NOTE] While it is not expected, the topology generation might fail or produce faulty configuration files. This might happen in situations where the topology.yaml contains multiple edge cases, such as many data exchanges with the same data-tag. The preCICE Config Check is designed to identify and alert to such errors.

Examples

Valid topology.yaml <-> application case pairs can be found in the examples/ directory. They include the preCICE tutorials 1-4 as well as some more complex simulations.

Configuration

  1. Prepare a YAML topology file describing your multi-physics simulation setup.
  2. Use the command-line interface to generate the preCICE configuration.
  3. preCICE Case Generate will create the necessary configuration files in the _generated/ directory.

Creating Topologies with MetaConfigurator

You can create a topology for your preCICE simulation using the online MetaConfigurator. We provide a preloaded schema to help you get started:

  1. Open the MetaConfigurator with the preloaded schema: MetaConfigurator link

  2. Use the interactive interface to define your topology:

    • The preloaded schema provides a structured way to describe your simulation components
  3. Once complete, export your topology as a YAML file

    • Save the generated YAML file
    • Use precice-case-generate to create your preCICE application case and configuration files
    • Validate the generated preCICE config with config-checker

Documentation

The template for our topology.yaml file can be found in the schemas folder.

Alongside it, you will find README.md, which explains the topology's parameters.

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/new-feature)
  3. Commit your changes (git commit -m 'Add new feature')
  4. Push to the branch (git push origin feature/new-feature)
  5. Open a Pull Request

Troubleshooting

  • Ensure all dependencies are correctly installed
  • Verify the format of your input YAML file
  • Check the generated logs (./.logs) for detailed process information

If all else fails, open a pull request describing the issue you are encountering.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

precice_case_generate-1.0.0.tar.gz (33.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

precice_case_generate-1.0.0-py3-none-any.whl (38.2 kB view details)

Uploaded Python 3

File details

Details for the file precice_case_generate-1.0.0.tar.gz.

File metadata

  • Download URL: precice_case_generate-1.0.0.tar.gz
  • Upload date:
  • Size: 33.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for precice_case_generate-1.0.0.tar.gz
Algorithm Hash digest
SHA256 253911d162c2a4240497225a5300220754fe4892e6df841316a265e07bbcd05b
MD5 e616533ea12b1978788bb78b43e7284a
BLAKE2b-256 2721b41d14a0c0d82c8a013565032ab4321655b66292d3a058c0685e431a191f

See more details on using hashes here.

Provenance

The following attestation bundles were made for precice_case_generate-1.0.0.tar.gz:

Publisher: release.yml on precice/case-generate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file precice_case_generate-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for precice_case_generate-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5811bffa259a5599d30783cbb7a37660f514e931743c969f13d193c589275853
MD5 1907902a50319813060585319572ef11
BLAKE2b-256 517504b1b967e5007747f65ac5bfc344794cedad9eb2572c1d734cabd1385032

See more details on using hashes here.

Provenance

The following attestation bundles were made for precice_case_generate-1.0.0-py3-none-any.whl:

Publisher: release.yml on precice/case-generate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page