From ab213e407172db55cc06546451b0e1c242d8080c Mon Sep 17 00:00:00 2001 From: NishantSinghhhhh Date: Wed, 4 Mar 2026 17:17:58 +0530 Subject: [PATCH 1/2] Add volume coupling support and related documentation Signed-off-by: NishantSinghhhhh --- _plugins/googlescholar.rb.bak | 31 +++ .../basics/configuration-mapping.md | 14 ++ volume_coupling_notes.txt | 237 ++++++++++++++++++ 3 files changed, 282 insertions(+) create mode 100644 _plugins/googlescholar.rb.bak create mode 100644 volume_coupling_notes.txt diff --git a/_plugins/googlescholar.rb.bak b/_plugins/googlescholar.rb.bak new file mode 100644 index 00000000000..3c05a3a28cd --- /dev/null +++ b/_plugins/googlescholar.rb.bak @@ -0,0 +1,31 @@ +# Attribution: Jonathan Chang +# https://jonathanchang.org/blog/easily-showcase-your-google-scholar-metrics-in-jekyll + +require 'open-uri' +require 'nokogiri' + +module Jekyll + class ScholarStats < Generator + # ID for PreCICE v2 paper + CITATION_ID = '17974677460269868025'.freeze + SCHOLAR_URL = 'http://scholar.google.com/scholar?hl=en&cites='.freeze + def generate(site) + begin + doc = Nokogiri::HTML(URI.parse(SCHOLAR_URL + CITATION_ID).open) + # Search for string saying 'About 123 results (0,03 sec)' + # Split and take second value '123' + citations = doc.css('#gs_ab_md .gs_ab_mdw').text.split[1] + data = { 'id' => CITATION_ID, + 'citations' => citations } + rescue OpenURI::HTTPError, SocketError => e + Jekyll.logger.warn "Fetching citation data failed with: #{e.message}" + data = {} + end + site.data['scholar'] = data + end + end +end + +# Usage in jekyll +# {{ site.data.scholar.id }} +# {{ site.data.scholar.citations }} diff --git a/content/docs/configuration/basics/configuration-mapping.md b/content/docs/configuration/basics/configuration-mapping.md index eaa477c1718..9009f92da41 100644 --- a/content/docs/configuration/basics/configuration-mapping.md +++ b/content/docs/configuration/basics/configuration-mapping.md @@ -188,6 +188,20 @@ The `multiscale-type` which can be either `"spread"` or `"collect"` refers to wh Since the 1D participant likely computes average quantities, e.g., the average pressure and velocity in a pipe, a velocity profile has to be assumed in order to convert data between the 1D and 3D participant for the axial mapping. Currently, a laminar flow profile is imposed by default, but different profiles might be supported in the future. +## Volume coupling + +While preCICE is frequently used for surface coupling (where solvers exchange data at a 2D boundary), it also fully supports volume coupling. In volume coupling, the domains of the coupled solvers overlap in 3D space, and data is exchanged across this overlapping volume. + +Several preCICE adapters currently support volume coupling natively, including the **OpenFOAM adapter** (for `Pressure`, `Velocity`, and `Temperature` over internal fields or `cellSets`) and the **DuMuX adapter**. You can explore practical examples of this in the [Volume-coupled diffusion](tutorials-volume-coupled-diffusion.html), [Volume-coupled flow](tutorials-volume-coupled-flow.html), and [Two-scale heat conduction](tutorials-two-scale-heat-conduction.html) tutorials. + +When configuring data mapping for volume coupling, keep in mind that mapping across a 3D volume involves significantly more data points than a 2D surface, making it computationally more expensive. + +**Recommended Mapping Methods for Volumes:** +* **`nearest-neighbor`**: This is usually the best starting point for volume coupling. It is extremely fast, robust, and requires very little memory, making it highly suitable for massive 3D meshes. +* **`linear-cell-interpolation`**: If you have volumetric connectivity information defined (e.g., tetrahedra in 3D or triangles in 2D), this projection-based method provides a great balance between speed and accuracy for 3D spaces. +* **`mapping:rbf` (Specifically `rbf-pum-direct`)**: If your physics require higher accuracy than a nearest-neighbor approach, the Partition of Unity Method (PUM) is the recommended kernel method. It breaks the massive 3D problem into smaller, localized clusters, keeping the computational cost and memory footprint manageable. + +*Note: It is highly recommended to avoid global RBF methods (`rbf-global-direct` or `rbf-global-iterative`) for large volume coupling setups. Assembling and solving a global system for a dense 3D volume mesh will likely exceed your available memory and compute time.* ## Restrictions for parallel participants As stated above, for parallel participants only `read`-`consistent` and `write`-`conservative` are valid combinations. If want to find out why, have a look at [Benjamin's thesis](https://mediatum.ub.tum.de/doc/1320661/document.pdf), page 85. But what to do if you want a `write`-`consistent` mapping? The trick is to move the mapping to the other participant, then `write` becomes `read`: diff --git a/volume_coupling_notes.txt b/volume_coupling_notes.txt new file mode 100644 index 00000000000..2ef5b718109 --- /dev/null +++ b/volume_coupling_notes.txt @@ -0,0 +1,237 @@ +content/index.html-33-
+content/index.html-34-

+content/index.html:35: preCICE is an open-source coupling library and ecosystem for general partitioned multi-physics and multi-scale simulations, including surface and volume coupling. +content/index.html-36-

+content/index.html-37-

+-- +content/index.html-445-

+content/index.html-446-
+content/index.html:447: Can preCICE be used for volume coupling? +content/index.html-448-
+content/index.html-449-
+-- +content/tutorials/tutorials.md-75-- [Two-scale heat conduction](tutorials-two-scale-heat-conduction.html): A heat conduction scenario with an underlying micro-structure which is resolved to get the constitutive properties on the macro scale. Coupling DuMux and Nutils based solvers. +content/tutorials/tutorials.md-76-- [Turek-Hron FSI3](tutorials-turek-hron-fsi3.html): The well-known fluid-structure interaction benchmark, with OpenFOAM and deal.II. Nutils participants are also available. +content/tutorials/tutorials.md:77:- [Volume-coupled diffusion](tutorials-volume-coupled-diffusion.html): An experimental volume coupling scenario, with two FEniCS solvers. +content/tutorials/tutorials.md:78:- [Volume-coupled flow](tutorials-volume-coupled-flow.html): An experimental volume coupling scenario, coupling a source term coded in Nutils with a flow in OpenFOAM. +content/tutorials/tutorials.md-79- +content/tutorials/tutorials.md-80-## Community projects +-- +content/community/minisymposia/eccomas-coupled-2021.md-27-* **Max Firmbach**: Aeroelastic Simulation of Slender Wings for Electric Aircraft: A Partitioned Approach with DUNE and preCICE +content/community/minisymposia/eccomas-coupled-2021.md-28-* **Yusuke Takahashi**: Numerical Simulation of Fluid-Structure Interaction for Thin Flat Delta Wing at Transonic Speed based on Opensource Software +content/community/minisymposia/eccomas-coupled-2021.md:29:* **Benjamin Maier**: Enabling a Multi-Scale Electro-Mechanical Skeletal Muscle Model for High-Performance Computing Using Volume Coupling +content/community/minisymposia/eccomas-coupled-2021.md-30- +content/community/minisymposia/eccomas-coupled-2021.md-31-Follow the discussion on [the forum](https://precice.discourse.group/t/precice-invited-session-at-eccomas-coupled-2021/448). +-- +content/community/workshops/precice-workshop-2025.md-184- University of Manchester, UK - slides

+content/community/workshops/precice-workshop-2025.md-185- +content/community/workshops/precice-workshop-2025.md:186:

The Discrete Particle Method (DPM), aka Discrete Element Method (DEM), simulates the motion and interaction of individual grains and has proven highly successful in modelling granular processes. However, tackling the next generation of challenges—such as multiphysics interactions and multiscale phenomena—requires coupling DPM with continuum solvers for fluids and deformable solids. Additionally, the growing complexity of industrial processes is pushing the limits of DEM, which remains computationally intensive. This calls for flexible, efficient coupling strategies to extend the capabilities of DEM. In this talk, we present the main types of DEM coupling currently used in the field. We focus on three key approaches: Surface coupling, which models the interaction between granular materials and soft or deformable boundaries; Volume coupling, which allows hybrid modelling where some regions are simulated with DEM and others with a continuum approach—enhancing scalability without sacrificing accuracy; Particle–fluid coupling, which models the interaction of particles with a background fluid or thermal field. We also introduce the newly funded European COST network ON-DEM (Open Network on DEM simulations), which aims to accelerate progress in this area. We conclude by discussing the integration of the coupling library preCICE, highlighting its potential as a key enabler for ON-DEM's goals and the broader future of particle simulation.

+content/community/workshops/precice-workshop-2025.md-187- +content/community/workshops/precice-workshop-2025.md-188-

+-- +content/community/workshops/precice-workshop-2020.md-61- +content/community/workshops/precice-workshop-2020.md-62-* 09:00 - 09:30 Jessica Mariño: An efficient way to build preCICE adapters and improve FSI simulations +content/community/workshops/precice-workshop-2020.md:63:* 09:30 - 10:00 Nitish Arya: Volume Coupling using preCICE for an AeroAcoustic simulation +content/community/workshops/precice-workshop-2020.md-64-* 10:00 - 10:30 Benjamin Rüth: High-order and multi-rate time stepping with preCICE +content/community/workshops/precice-workshop-2020.md-65-* 10:30 - 11:00 Coffee Break +-- +content/community/workshops/precice-workshop-2020.md-112-

In this work, we present our preliminary results on the 6-way coupling of 3 numerical solvers: XDEM for the Discrete Element Method (DEM), OpenFOAM for Computation Fluid Dynamics (CFD), and deal.II for Finite Element Method (FEM). We relied on the existing preCICE adapters for OpenFOAM and deal.II and we have implemented a new preCICE adapter for the eXtended Discrete Element Method (XDEM), an innovative DEM software developed at the University of Luxembourg. The XDEM adapter permits coupling of the particulate phase of DEM with CFD and FEM: +content/community/workshops/precice-workshop-2020.md-113-- DEM+FEM is a surface coupling that performs the exchange of surface forces and displacement between the particles and a deformable solid; +content/community/workshops/precice-workshop-2020.md:114:- DEM+CFD is a volume coupling that performs the exchange of porosity, momentum, drag force and buoyancy between the particles and the fluid. +content/community/workshops/precice-workshop-2020.md-115-Put together with the pre-existing CFD+FEM coupling, we obtain a 6-way coupled multi-physics solver for particles, fluid and deformable solids. We have tested and evaluated our multi-physics solver on the tutorial case “Cylinder with a flap” derived from the benchmarking case of Turek and Hron, that we extended to include a particulate phase solved by XDEM. +content/community/workshops/precice-workshop-2020.md-116-

+-- +content/community/workshops/precice-workshop-2020.md-135- +content/community/workshops/precice-workshop-2020.md-136- +content/community/workshops/precice-workshop-2020.md:137:
Nitish Arya: Volume Coupling using preCICE for an AeroAcoustic simulation +content/community/workshops/precice-workshop-2020.md-138-

Authors: Nitish Arya
+content/community/workshops/precice-workshop-2020.md-139-Affiliation: Indian Institute of Technology

+-- +content/docs/couple-your-code/step-by-step/couple-your-code-defining-mesh-connectivity.md-12-There are two types of connectivity, which depend on the type of coupling. +content/docs/couple-your-code/step-by-step/couple-your-code-defining-mesh-connectivity.md-13-For surface coupling in 2D, mesh connectivity boils down to defining edges between vertices. In 3D, you need to define triangles and / or quads. +content/docs/couple-your-code/step-by-step/couple-your-code-defining-mesh-connectivity.md:14:For volume coupling in 2D, mesh connectivity boils down to defining triangles and / or quads between vertices. In 3D, you need to define tetrahedra introduced in version `2.5.0`. +content/docs/couple-your-code/step-by-step/couple-your-code-defining-mesh-connectivity.md-15- +content/docs/couple-your-code/step-by-step/couple-your-code-defining-mesh-connectivity.md-16-All kind of connectivity can be built up directly from vertices. Triangles and quads also allow us to define them using edge IDs. +-- +content/docs/configuration/basics/configuration-mapping.md-189-Since the 1D participant likely computes average quantities, e.g., the average pressure and velocity in a pipe, a velocity profile has to be assumed in order to convert data between the 1D and 3D participant for the axial mapping. Currently, a laminar flow profile is imposed by default, but different profiles might be supported in the future. +content/docs/configuration/basics/configuration-mapping.md-190- +content/docs/configuration/basics/configuration-mapping.md:191:## Volume coupling +content/docs/configuration/basics/configuration-mapping.md-192- +content/docs/configuration/basics/configuration-mapping.md:193:While preCICE is frequently used for surface coupling (where solvers exchange data at a 2D boundary), it also fully supports volume coupling. In volume coupling, the domains of the coupled solvers overlap in 3D space, and data is exchanged across this overlapping volume. +content/docs/configuration/basics/configuration-mapping.md-194- +content/docs/configuration/basics/configuration-mapping.md:195:When configuring data mapping for volume coupling, keep in mind that mapping across a 3D volume involves significantly more data points than a 2D surface, making it computationally more expensive. +content/docs/configuration/basics/configuration-mapping.md-196- +content/docs/configuration/basics/configuration-mapping.md-197-**Recommended Mapping Methods for Volumes:** +content/docs/configuration/basics/configuration-mapping.md:198:* **`nearest-neighbor`**: This is usually the best starting point for volume coupling. It is extremely fast, robust, and requires very little memory, making it highly suitable for massive 3D meshes. +content/docs/configuration/basics/configuration-mapping.md-199-* **`linear-cell-interpolation`**: If you have volumetric connectivity information defined (e.g., tetrahedra), this projection-based method provides a great balance between speed and accuracy for 3D spaces. +content/docs/configuration/basics/configuration-mapping.md-200-* **`mapping:rbf` (Specifically `rbf-pum-direct`)**: If your physics require higher accuracy than a nearest-neighbor approach, the Partition of Unity Method (PUM) is the recommended kernel method. It breaks the massive 3D problem into smaller, localized clusters, keeping the computational cost and memory footprint manageable. +content/docs/configuration/basics/configuration-mapping.md-201- +content/docs/configuration/basics/configuration-mapping.md:202:*Note: It is highly recommended to avoid global RBF methods (`rbf-global-direct` or `rbf-global-iterative`) for large volume coupling setups. Assembling and solving a global system for a dense 3D volume mesh will likely exceed your available memory and compute time.* +content/docs/configuration/basics/configuration-mapping.md-203- +content/docs/configuration/basics/configuration-mapping.md-204-## Restrictions for parallel participants +-- +content/docs/fundamentals/fundamentals-roadmap.md-28-- [GPU support for partition-of-unity radial-basis-function data mapping](https://github.com/precice/precice/pull/2346) +content/docs/fundamentals/fundamentals-roadmap.md-29-- [Extendable and modular system tests](https://github.com/orgs/precice/projects/12) +content/docs/fundamentals/fundamentals-roadmap.md:30:- [Volume coupling for OpenFOAM](https://github.com/orgs/precice/projects/9) +content/docs/fundamentals/fundamentals-roadmap.md-31-- [Standardization of adapter and tooling configurations](https://github.com/precice/preeco-orga/issues/18) +content/docs/fundamentals/fundamentals-roadmap.md-32-- Tutorials for mesh-particle coupling +-- +imported/openfoam-adapter/Interface.C-329- else if (locationType_ == LocationType::volumeCenters) +imported/openfoam-adapter/Interface.C-330- { +imported/openfoam-adapter/Interface.C:331: // The volume coupling implementation considers the mesh points in the volume and +imported/openfoam-adapter/Interface.C-332- // on the boundary patches in order to take the boundary conditions into account +imported/openfoam-adapter/Interface.C-333- +-- +imported/openfoam-adapter/Interface.C-447- couplingDataWriter->setPatchIDs(patchIDs_); +imported/openfoam-adapter/Interface.C-448- +imported/openfoam-adapter/Interface.C:449: // Set the names of the cell sets to be coupled (for volume coupling) +imported/openfoam-adapter/Interface.C-450- couplingDataWriter->setCellSetNames(cellSetNames_); +imported/openfoam-adapter/Interface.C-451- +-- +imported/openfoam-adapter/Interface.C-480- couplingDataReader->setLocationsType(locationType_); +imported/openfoam-adapter/Interface.C-481- +imported/openfoam-adapter/Interface.C:482: // Set the names of the cell sets to be coupled (for volume coupling) +imported/openfoam-adapter/Interface.C-483- couplingDataReader->setCellSetNames(cellSetNames_); +imported/openfoam-adapter/Interface.C-484- +-- +imported/openfoam-adapter/CouplingDataUser.H-35- std::vector patchIDs_; +imported/openfoam-adapter/CouplingDataUser.H-36- +imported/openfoam-adapter/CouplingDataUser.H:37: //- Names of the OpenFOAM cell sets to be coupled (for volume coupling) +imported/openfoam-adapter/CouplingDataUser.H-38- std::vector cellSetNames_; +imported/openfoam-adapter/CouplingDataUser.H-39- +-- +imported/openfoam-adapter/Interface.H-43- std::vector patchIDs_; +imported/openfoam-adapter/Interface.H-44- +imported/openfoam-adapter/Interface.H:45: //- Names of the OpenFOAM cell sets to be coupled (for volume coupling) +imported/openfoam-adapter/Interface.H-46- std::vector cellSetNames_; +imported/openfoam-adapter/Interface.H-47- +-- +imported/openfoam-adapter/CHANGELOG.md-24-### Added +imported/openfoam-adapter/CHANGELOG.md-25- +imported/openfoam-adapter/CHANGELOG.md:26:- Added a locationType for volume coupling and implemented the respective functionality (over all internal fields) for Pressure and Velocity (FF) and Temperature (FF) [#255](https://github.com/precice/openfoam-adapter/pull/255). +imported/openfoam-adapter/CHANGELOG.md:27:- Added volume coupling over one or multiple domain regions specified by OpenFOAM cellSets (for Pressure and Velocity (FF) and Temperature (FF))[#270](https://github.com/precice/openfoam-adapter/pull/270). +imported/openfoam-adapter/CHANGELOG.md-28-- Added phase variable and flux coupling for interFOAM in the FF module [#308](https://github.com/precice/openfoam-adapter/pull/308). +imported/openfoam-adapter/CHANGELOG.md-29-- Added custom inletOutlet boundary conditions for pressure and velocity to the FF module [#281](https://github.com/precice/openfoam-adapter/pull/281). +-- +imported/openfoam-adapter/docs/README.md-9-## What is this? +imported/openfoam-adapter/docs/README.md-10- +imported/openfoam-adapter/docs/README.md:11:This preCICE adapter is a plug-in (function object) for OpenFOAM, which can work with any recent version of OpenFOAM (.com / .org, see [supported OpenFOAM versions](https://precice.org/adapter-openfoam-support.html)). It supports fluid-structure interaction (fluid part), conjugate heat transfer (fluid and solid parts), and fluid-fluid simulations, while it is also easily extensible. Besides surface coupling, the adapter also supports volume coupling (overlapping domains). +imported/openfoam-adapter/docs/README.md-12- +imported/openfoam-adapter/docs/README.md-13-## What can it do? +-- +imported/openfoam-adapter/docs/README.md-32-- Phase flux (phi) (read + write) +imported/openfoam-adapter/docs/README.md-33- +imported/openfoam-adapter/docs/README.md:34:In addition, the adapter supports the following fields in a volume coupling setup: +imported/openfoam-adapter/docs/README.md-35- +imported/openfoam-adapter/docs/README.md-36-- Temperature (write) +-- +imported/openfoam-adapter/docs/README.md-67-The fluid-fluid coupling module was added by Gerasimos Chourdakis, in the context of his dissertation. [#67](https://github.com/precice/openfoam-adapter/pull/67). Further contributions in this direction by Markus Mühlhäußer ([master's thesis](https://mediatum.ub.tum.de/node?id=1696254&change_language=en)[^5], [related publication](https://mediatum.ub.tum.de/node?id=1732401&change_language=en)[^6]). +imported/openfoam-adapter/docs/README.md-68- +imported/openfoam-adapter/docs/README.md:69:The volume coupling functionality was contributed by Tina Vladimirova, in the context of her [interdisciplinary project](https://mediatum.ub.tum.de/1734883)[^7], based on previous work by various community contributors. +imported/openfoam-adapter/docs/README.md-70- +imported/openfoam-adapter/docs/README.md-71-The adapter is [easily extensible](https://precice.org/adapter-openfoam-extend.html). +-- +imported/openfoam-adapter/docs/README.md-91-[DOI: 10.23967/c.coupled.2023.014](https://doi.org/10.23967/c.coupled.2023.014) +imported/openfoam-adapter/docs/README.md-92- +imported/openfoam-adapter/docs/README.md:93:[^7]: Tina Vladimirova. Design, implementation, and validation of a volume coupling extension for the OpenFOAM-preCICE adapter. IDP report, School of Computation, Information and Technology, Technical University of Munich, 2023.
+imported/openfoam-adapter/docs/README.md-94-URL: https://mediatum.ub.tum.de/1734883 +imported/openfoam-adapter/docs/README.md-95- +-- +imported/openfoam-adapter/docs/config.md-74-The `volumeCenters` location is currently implemented for fluid-fluid coupling (`Pressure` and `Velocity`) and conjugate heat transfer (`Temperature`). +imported/openfoam-adapter/docs/config.md-75- +imported/openfoam-adapter/docs/config.md:76:The `cellSets` field can be used to specify one or multiple coupling regions (defined by OpenFOAM `cellSets`) for volume coupling. The field can only be used with the `volumeCenters` location and it is optional. If no `cellSets` are specified, the full domain will be coupled. +imported/openfoam-adapter/docs/config.md-77- +imported/openfoam-adapter/docs/config.md-78-The values for `readData` and `writeData` +-- +imported/openfoam-adapter/docs/config.md-275- mesh Fluid-Mesh; +imported/openfoam-adapter/docs/config.md-276- patches (interface); +imported/openfoam-adapter/docs/config.md:277: // For volume coupling specify volumeCenters +imported/openfoam-adapter/docs/config.md-278- locations faceCenters; +imported/openfoam-adapter/docs/config.md-279- +-- +imported/openfoam-adapter/docs/config.md-299-``` +imported/openfoam-adapter/docs/config.md-300- +imported/openfoam-adapter/docs/config.md:301:Explicitly setting `locations volumeCenters;` in preciceDict is required for volume coupling. If omitted, it defaults to surface coupling on `faceCenters`. Volume coupling data is always assumed as values for now, i.e., cannot set volume gradient. +imported/openfoam-adapter/docs/config.md-302- +imported/openfoam-adapter/docs/config.md-303-When reading on the OpenFOAM side, the Generic module automatically detects the boundary condition type of the coupled patch to apply the received data. The boundary condition must be respected, therefore the data received is applied either as a `fixedValue` or `fixedGradient` boundary condition, determined by the type set in the `0/` files. +-- +imported/openfoam-adapter/docs/config.md-305-The `operation surface-normal-gradient;` is currently only supported for scalar field surface writing. The operation `gradient` as well as the option `flip-normal` are not yet supported by the adapter. +imported/openfoam-adapter/docs/config.md-306- +imported/openfoam-adapter/docs/config.md:307:### Volume coupling +imported/openfoam-adapter/docs/config.md-308- +imported/openfoam-adapter/docs/config.md-309-Besides surface coupling on the domain boundaries, the OpenFOAM adapter also supports coupling overlapping domains, which can be the complete domain, or regions of it. In contrast to surface coupling, though, reading volume data (source terms) requires a few additional configuration steps compared to writing data. +-- +imported/openfoam-adapter/docs/config.md-368-{% endexperimental %} +imported/openfoam-adapter/docs/config.md-369- +imported/openfoam-adapter/docs/config.md:370:#### Volume coupling over a domain region +imported/openfoam-adapter/docs/config.md-371- +imported/openfoam-adapter/docs/config.md:372:For reading values only over a region of the domain, we use the OpenFOAM [`cellSet` class](https://www.openfoam.com/documentation/guides/latest/api/classFoam_1_1cellSet.html) to define one or multiple volume coupling regions. You can define one or multiple `cellSets` in the `system/topoSetDict`: +imported/openfoam-adapter/docs/config.md-373- +imported/openfoam-adapter/docs/config.md-374-```C++ +-- +imported/preeco-orga/guidelines/guideline-adapters-dumux.md-23-- [x] R.1: Several application cases are available as tutorials, such as the [`tutorials-two-scale-heat-conduction`](https://precice.org/tutorials-two-scale-heat-conduction.html) +imported/preeco-orga/guidelines/guideline-adapters-dumux.md-24-- [x] R.2: [`README.md`](https://github.com/precice/dumux-adapter/blob/develop/README.md) +imported/preeco-orga/guidelines/guideline-adapters-dumux.md:25: - [ ] application background and/or nature of coupling (e.g., surface vs. volume coupling; transient or steady-state; ...) +imported/preeco-orga/guidelines/guideline-adapters-dumux.md-26- - [ ] what data can be read and written for a coupling +imported/preeco-orga/guidelines/guideline-adapters-dumux.md-27- - [x] which target solver versions are supported +-- +imported/preeco-orga/guidelines/guidelines-adapters.md-50-- [ ] R.1: The adapter is accompanied by one or more application cases to test it, covering an extensive part of the claimed functionality. These test cases must fulfill the required criteria of the [application case guidelines](community-guidelines-application-cases.html). +imported/preeco-orga/guidelines/guidelines-adapters.md-51-- [ ] R.2: There is a `README.md` file (for integrated adapters: a solver documentation section) with at least the following information (or links to related resources): +imported/preeco-orga/guidelines/guidelines-adapters.md:52: - [ ] application background and/or nature of coupling (e.g., surface vs. volume coupling; transient or steady-state; ...) +imported/preeco-orga/guidelines/guidelines-adapters.md-53- - [ ] what data can be read and written for a coupling +imported/preeco-orga/guidelines/guidelines-adapters.md-54- - [ ] which target solver versions are supported +-- +imported/tutorials/volume-coupled-diffusion/README.md-2-title: Volume coupled diffusion +imported/tutorials/volume-coupled-diffusion/README.md-3-permalink: tutorials-volume-coupled-diffusion.html +imported/tutorials/volume-coupled-diffusion/README.md:4:keywords: FEniCS, Diffusion, Volume Coupling +imported/tutorials/volume-coupled-diffusion/README.md:5:summary: This tutorial illustrates volume coupling with a simple example. +imported/tutorials/volume-coupled-diffusion/README.md-6---- +imported/tutorials/volume-coupled-diffusion/README.md-7- +-- +imported/tutorials/volume-coupled-diffusion/README.md-10-## Setup +imported/tutorials/volume-coupled-diffusion/README.md-11- +imported/tutorials/volume-coupled-diffusion/README.md:12:This case illustrates how to implement volume coupling in a simple toy problem. Two diffusion problems are coupled via volume terms. One domain (the source) has constant non-zero Dirichlet boundary conditions. The other domain (the drain) has Neumann boundary conditions and a zero Dirichlet boundary condition at the right edge of the domain. The quantity u flows from the source to the drain. +imported/tutorials/volume-coupled-diffusion/README.md-13- +imported/tutorials/volume-coupled-diffusion/README.md-14-![Case setup of volume-coupled-diffusion case](images/tutorials-volume-coupled-diffusion-setup.png) +-- +imported/tutorials/two-scale-heat-conduction/macro-nutils/macro.py-45- mesh_name = "Macro-Mesh" +imported/tutorials/two-scale-heat-conduction/macro-nutils/macro.py-46- +imported/tutorials/two-scale-heat-conduction/macro-nutils/macro.py:47: # Define Gauss points on entire domain as coupling mesh (volume coupling from macro side) +imported/tutorials/two-scale-heat-conduction/macro-nutils/macro.py-48- couplingsample = topo.sample('gauss', degree=2) # mesh vertices are Gauss points +imported/tutorials/two-scale-heat-conduction/macro-nutils/macro.py-49- vertex_ids = participant.set_mesh_vertices(mesh_name, couplingsample.eval(ns.x)) +-- +imported/tutorials/channel-transport-particles/README.md-2-title: Channel transport with particles +imported/tutorials/channel-transport-particles/README.md-3-permalink: tutorials-channel-transport-particles.html +imported/tutorials/channel-transport-particles/README.md:4:keywords: volume coupling, particles, OpenFOAM, MercuryDPM, transport, just-in-time mapping +imported/tutorials/channel-transport-particles/README.md-5-summary: A CFD problem is coupled to a particles in a uni-directional way for particles tracing. +imported/tutorials/channel-transport-particles/README.md-6---- +-- +imported/tutorials/volume-coupled-flow/README.md-2-title: Volume-coupled flow +imported/tutorials/volume-coupled-flow/README.md-3-permalink: tutorials-volume-coupled-flow.html +imported/tutorials/volume-coupled-flow/README.md:4:keywords: volume coupling, OpenFOAM, source terms +imported/tutorials/volume-coupled-flow/README.md-5-summary: A dummy source participant is coupled to a fluid in a uni-directional way over a region of the domain. The coupling enforces source terms on that region. +imported/tutorials/volume-coupled-flow/README.md-6---- +-- +imported/tutorials/volume-coupled-flow/README.md-18-![Ux](images/tutorials-volume-coupled-flow-Ux.png) +imported/tutorials/volume-coupled-flow/README.md-19- +imported/tutorials/volume-coupled-flow/README.md:20:This case is a convenient starting point for volume coupling where OpenFOAM is a reading participant. The writing Nutils participant (dummy source) can be replaced by a more complex solver according to the user's needs. +imported/tutorials/volume-coupled-flow/README.md-21- +imported/tutorials/volume-coupled-flow/README.md-22-## Configuration +-- +imported/tutorials/channel-transport/README.md-2-title: Channel transport +imported/tutorials/channel-transport/README.md-3-permalink: tutorials-channel-transport.html +imported/tutorials/channel-transport/README.md:4:keywords: volume coupling, chemistry, OpenFOAM, Nutils, species, transport, remeshing +imported/tutorials/channel-transport/README.md-5-summary: A CFD problem is coupled to a transport (of, e.g., a chemistry species) in a uni-directional way. +imported/tutorials/channel-transport/README.md-6---- +-- +imported/tutorials/CHANGELOG.md-20- - [Partitioned flow over a heated plate](https://precice.org/tutorials-flow-over-heated-plate-partitioned-flow.html) +imported/tutorials/CHANGELOG.md-21- - [Partitioned pipe: two-phase](https://precice.org/tutorials-partitioned-pipe-two-phase.html) ([#418](https://github.com/precice/tutorials/pull/418)) +imported/tutorials/CHANGELOG.md:22:- Added new volume coupling cases/tutorials with OpenFOAM: +imported/tutorials/CHANGELOG.md-23- - Added an OpenFOAM case in the [channel transport](https://precice.org/tutorials-channel-transport.html) tutorial [#315](https://github.com/precice/tutorials/pull/315). +imported/tutorials/CHANGELOG.md-24- - Added a new tutorial [volume-coupled flow](https://precice.org/tutorials-volume-coupled-flow.html) [#350](https://github.com/precice/tutorials/pull/350). +-- +imported/dumux-adapter/docs/overview.md-12-## Supported features +imported/dumux-adapter/docs/overview.md-13- +imported/dumux-adapter/docs/overview.md:14:- Surface and volume coupling as demonstrated in the two tutorial cases [free-flow-over-porous-media](https://precice.org/tutorials-free-flow-over-porous-media-2d.html) and [two-scale-heat-conduction](https://precice.org/tutorials-two-scale-heat-conduction.html). +imported/dumux-adapter/docs/overview.md-15-- Any data field can be exchanged. The adapter does not have any awareness of the physical definition of the exchanged fields. +imported/dumux-adapter/docs/overview.md-16-- In the configuration, one mesh can be set for each interface, and multiple data fields can be read or written on each interface. Multiple interfaces can be configured. From 36aa3bbf678d337d4a48f12ff431c7bf766a10aa Mon Sep 17 00:00:00 2001 From: NishantSinghhhhh Date: Wed, 4 Mar 2026 17:44:49 +0530 Subject: [PATCH 2/2] Add volume coupling support and related documentation Signed-off-by: NishantSinghhhhh --- volume_coupling_notes.txt | 237 -------------------------------------- 1 file changed, 237 deletions(-) delete mode 100644 volume_coupling_notes.txt diff --git a/volume_coupling_notes.txt b/volume_coupling_notes.txt deleted file mode 100644 index 2ef5b718109..00000000000 --- a/volume_coupling_notes.txt +++ /dev/null @@ -1,237 +0,0 @@ -content/index.html-33-
-content/index.html-34-

-content/index.html:35: preCICE is an open-source coupling library and ecosystem for general partitioned multi-physics and multi-scale simulations, including surface and volume coupling. -content/index.html-36-

-content/index.html-37-

--- -content/index.html-445-

-content/index.html-446-
-content/index.html:447: Can preCICE be used for volume coupling? -content/index.html-448-
-content/index.html-449-
--- -content/tutorials/tutorials.md-75-- [Two-scale heat conduction](tutorials-two-scale-heat-conduction.html): A heat conduction scenario with an underlying micro-structure which is resolved to get the constitutive properties on the macro scale. Coupling DuMux and Nutils based solvers. -content/tutorials/tutorials.md-76-- [Turek-Hron FSI3](tutorials-turek-hron-fsi3.html): The well-known fluid-structure interaction benchmark, with OpenFOAM and deal.II. Nutils participants are also available. -content/tutorials/tutorials.md:77:- [Volume-coupled diffusion](tutorials-volume-coupled-diffusion.html): An experimental volume coupling scenario, with two FEniCS solvers. -content/tutorials/tutorials.md:78:- [Volume-coupled flow](tutorials-volume-coupled-flow.html): An experimental volume coupling scenario, coupling a source term coded in Nutils with a flow in OpenFOAM. -content/tutorials/tutorials.md-79- -content/tutorials/tutorials.md-80-## Community projects --- -content/community/minisymposia/eccomas-coupled-2021.md-27-* **Max Firmbach**: Aeroelastic Simulation of Slender Wings for Electric Aircraft: A Partitioned Approach with DUNE and preCICE -content/community/minisymposia/eccomas-coupled-2021.md-28-* **Yusuke Takahashi**: Numerical Simulation of Fluid-Structure Interaction for Thin Flat Delta Wing at Transonic Speed based on Opensource Software -content/community/minisymposia/eccomas-coupled-2021.md:29:* **Benjamin Maier**: Enabling a Multi-Scale Electro-Mechanical Skeletal Muscle Model for High-Performance Computing Using Volume Coupling -content/community/minisymposia/eccomas-coupled-2021.md-30- -content/community/minisymposia/eccomas-coupled-2021.md-31-Follow the discussion on [the forum](https://precice.discourse.group/t/precice-invited-session-at-eccomas-coupled-2021/448). --- -content/community/workshops/precice-workshop-2025.md-184- University of Manchester, UK - slides

-content/community/workshops/precice-workshop-2025.md-185- -content/community/workshops/precice-workshop-2025.md:186:

The Discrete Particle Method (DPM), aka Discrete Element Method (DEM), simulates the motion and interaction of individual grains and has proven highly successful in modelling granular processes. However, tackling the next generation of challenges—such as multiphysics interactions and multiscale phenomena—requires coupling DPM with continuum solvers for fluids and deformable solids. Additionally, the growing complexity of industrial processes is pushing the limits of DEM, which remains computationally intensive. This calls for flexible, efficient coupling strategies to extend the capabilities of DEM. In this talk, we present the main types of DEM coupling currently used in the field. We focus on three key approaches: Surface coupling, which models the interaction between granular materials and soft or deformable boundaries; Volume coupling, which allows hybrid modelling where some regions are simulated with DEM and others with a continuum approach—enhancing scalability without sacrificing accuracy; Particle–fluid coupling, which models the interaction of particles with a background fluid or thermal field. We also introduce the newly funded European COST network ON-DEM (Open Network on DEM simulations), which aims to accelerate progress in this area. We conclude by discussing the integration of the coupling library preCICE, highlighting its potential as a key enabler for ON-DEM's goals and the broader future of particle simulation.

-content/community/workshops/precice-workshop-2025.md-187-
-content/community/workshops/precice-workshop-2025.md-188-

--- -content/community/workshops/precice-workshop-2020.md-61- -content/community/workshops/precice-workshop-2020.md-62-* 09:00 - 09:30 Jessica Mariño: An efficient way to build preCICE adapters and improve FSI simulations -content/community/workshops/precice-workshop-2020.md:63:* 09:30 - 10:00 Nitish Arya: Volume Coupling using preCICE for an AeroAcoustic simulation -content/community/workshops/precice-workshop-2020.md-64-* 10:00 - 10:30 Benjamin Rüth: High-order and multi-rate time stepping with preCICE -content/community/workshops/precice-workshop-2020.md-65-* 10:30 - 11:00 Coffee Break --- -content/community/workshops/precice-workshop-2020.md-112-

In this work, we present our preliminary results on the 6-way coupling of 3 numerical solvers: XDEM for the Discrete Element Method (DEM), OpenFOAM for Computation Fluid Dynamics (CFD), and deal.II for Finite Element Method (FEM). We relied on the existing preCICE adapters for OpenFOAM and deal.II and we have implemented a new preCICE adapter for the eXtended Discrete Element Method (XDEM), an innovative DEM software developed at the University of Luxembourg. The XDEM adapter permits coupling of the particulate phase of DEM with CFD and FEM: -content/community/workshops/precice-workshop-2020.md-113-- DEM+FEM is a surface coupling that performs the exchange of surface forces and displacement between the particles and a deformable solid; -content/community/workshops/precice-workshop-2020.md:114:- DEM+CFD is a volume coupling that performs the exchange of porosity, momentum, drag force and buoyancy between the particles and the fluid. -content/community/workshops/precice-workshop-2020.md-115-Put together with the pre-existing CFD+FEM coupling, we obtain a 6-way coupled multi-physics solver for particles, fluid and deformable solids. We have tested and evaluated our multi-physics solver on the tutorial case “Cylinder with a flap” derived from the benchmarking case of Turek and Hron, that we extended to include a particulate phase solved by XDEM. -content/community/workshops/precice-workshop-2020.md-116-

--- -content/community/workshops/precice-workshop-2020.md-135- -content/community/workshops/precice-workshop-2020.md-136- -content/community/workshops/precice-workshop-2020.md:137:
Nitish Arya: Volume Coupling using preCICE for an AeroAcoustic simulation -content/community/workshops/precice-workshop-2020.md-138-

Authors: Nitish Arya
-content/community/workshops/precice-workshop-2020.md-139-Affiliation: Indian Institute of Technology

--- -content/docs/couple-your-code/step-by-step/couple-your-code-defining-mesh-connectivity.md-12-There are two types of connectivity, which depend on the type of coupling. -content/docs/couple-your-code/step-by-step/couple-your-code-defining-mesh-connectivity.md-13-For surface coupling in 2D, mesh connectivity boils down to defining edges between vertices. In 3D, you need to define triangles and / or quads. -content/docs/couple-your-code/step-by-step/couple-your-code-defining-mesh-connectivity.md:14:For volume coupling in 2D, mesh connectivity boils down to defining triangles and / or quads between vertices. In 3D, you need to define tetrahedra introduced in version `2.5.0`. -content/docs/couple-your-code/step-by-step/couple-your-code-defining-mesh-connectivity.md-15- -content/docs/couple-your-code/step-by-step/couple-your-code-defining-mesh-connectivity.md-16-All kind of connectivity can be built up directly from vertices. Triangles and quads also allow us to define them using edge IDs. --- -content/docs/configuration/basics/configuration-mapping.md-189-Since the 1D participant likely computes average quantities, e.g., the average pressure and velocity in a pipe, a velocity profile has to be assumed in order to convert data between the 1D and 3D participant for the axial mapping. Currently, a laminar flow profile is imposed by default, but different profiles might be supported in the future. -content/docs/configuration/basics/configuration-mapping.md-190- -content/docs/configuration/basics/configuration-mapping.md:191:## Volume coupling -content/docs/configuration/basics/configuration-mapping.md-192- -content/docs/configuration/basics/configuration-mapping.md:193:While preCICE is frequently used for surface coupling (where solvers exchange data at a 2D boundary), it also fully supports volume coupling. In volume coupling, the domains of the coupled solvers overlap in 3D space, and data is exchanged across this overlapping volume. -content/docs/configuration/basics/configuration-mapping.md-194- -content/docs/configuration/basics/configuration-mapping.md:195:When configuring data mapping for volume coupling, keep in mind that mapping across a 3D volume involves significantly more data points than a 2D surface, making it computationally more expensive. -content/docs/configuration/basics/configuration-mapping.md-196- -content/docs/configuration/basics/configuration-mapping.md-197-**Recommended Mapping Methods for Volumes:** -content/docs/configuration/basics/configuration-mapping.md:198:* **`nearest-neighbor`**: This is usually the best starting point for volume coupling. It is extremely fast, robust, and requires very little memory, making it highly suitable for massive 3D meshes. -content/docs/configuration/basics/configuration-mapping.md-199-* **`linear-cell-interpolation`**: If you have volumetric connectivity information defined (e.g., tetrahedra), this projection-based method provides a great balance between speed and accuracy for 3D spaces. -content/docs/configuration/basics/configuration-mapping.md-200-* **`mapping:rbf` (Specifically `rbf-pum-direct`)**: If your physics require higher accuracy than a nearest-neighbor approach, the Partition of Unity Method (PUM) is the recommended kernel method. It breaks the massive 3D problem into smaller, localized clusters, keeping the computational cost and memory footprint manageable. -content/docs/configuration/basics/configuration-mapping.md-201- -content/docs/configuration/basics/configuration-mapping.md:202:*Note: It is highly recommended to avoid global RBF methods (`rbf-global-direct` or `rbf-global-iterative`) for large volume coupling setups. Assembling and solving a global system for a dense 3D volume mesh will likely exceed your available memory and compute time.* -content/docs/configuration/basics/configuration-mapping.md-203- -content/docs/configuration/basics/configuration-mapping.md-204-## Restrictions for parallel participants --- -content/docs/fundamentals/fundamentals-roadmap.md-28-- [GPU support for partition-of-unity radial-basis-function data mapping](https://github.com/precice/precice/pull/2346) -content/docs/fundamentals/fundamentals-roadmap.md-29-- [Extendable and modular system tests](https://github.com/orgs/precice/projects/12) -content/docs/fundamentals/fundamentals-roadmap.md:30:- [Volume coupling for OpenFOAM](https://github.com/orgs/precice/projects/9) -content/docs/fundamentals/fundamentals-roadmap.md-31-- [Standardization of adapter and tooling configurations](https://github.com/precice/preeco-orga/issues/18) -content/docs/fundamentals/fundamentals-roadmap.md-32-- Tutorials for mesh-particle coupling --- -imported/openfoam-adapter/Interface.C-329- else if (locationType_ == LocationType::volumeCenters) -imported/openfoam-adapter/Interface.C-330- { -imported/openfoam-adapter/Interface.C:331: // The volume coupling implementation considers the mesh points in the volume and -imported/openfoam-adapter/Interface.C-332- // on the boundary patches in order to take the boundary conditions into account -imported/openfoam-adapter/Interface.C-333- --- -imported/openfoam-adapter/Interface.C-447- couplingDataWriter->setPatchIDs(patchIDs_); -imported/openfoam-adapter/Interface.C-448- -imported/openfoam-adapter/Interface.C:449: // Set the names of the cell sets to be coupled (for volume coupling) -imported/openfoam-adapter/Interface.C-450- couplingDataWriter->setCellSetNames(cellSetNames_); -imported/openfoam-adapter/Interface.C-451- --- -imported/openfoam-adapter/Interface.C-480- couplingDataReader->setLocationsType(locationType_); -imported/openfoam-adapter/Interface.C-481- -imported/openfoam-adapter/Interface.C:482: // Set the names of the cell sets to be coupled (for volume coupling) -imported/openfoam-adapter/Interface.C-483- couplingDataReader->setCellSetNames(cellSetNames_); -imported/openfoam-adapter/Interface.C-484- --- -imported/openfoam-adapter/CouplingDataUser.H-35- std::vector patchIDs_; -imported/openfoam-adapter/CouplingDataUser.H-36- -imported/openfoam-adapter/CouplingDataUser.H:37: //- Names of the OpenFOAM cell sets to be coupled (for volume coupling) -imported/openfoam-adapter/CouplingDataUser.H-38- std::vector cellSetNames_; -imported/openfoam-adapter/CouplingDataUser.H-39- --- -imported/openfoam-adapter/Interface.H-43- std::vector patchIDs_; -imported/openfoam-adapter/Interface.H-44- -imported/openfoam-adapter/Interface.H:45: //- Names of the OpenFOAM cell sets to be coupled (for volume coupling) -imported/openfoam-adapter/Interface.H-46- std::vector cellSetNames_; -imported/openfoam-adapter/Interface.H-47- --- -imported/openfoam-adapter/CHANGELOG.md-24-### Added -imported/openfoam-adapter/CHANGELOG.md-25- -imported/openfoam-adapter/CHANGELOG.md:26:- Added a locationType for volume coupling and implemented the respective functionality (over all internal fields) for Pressure and Velocity (FF) and Temperature (FF) [#255](https://github.com/precice/openfoam-adapter/pull/255). -imported/openfoam-adapter/CHANGELOG.md:27:- Added volume coupling over one or multiple domain regions specified by OpenFOAM cellSets (for Pressure and Velocity (FF) and Temperature (FF))[#270](https://github.com/precice/openfoam-adapter/pull/270). -imported/openfoam-adapter/CHANGELOG.md-28-- Added phase variable and flux coupling for interFOAM in the FF module [#308](https://github.com/precice/openfoam-adapter/pull/308). -imported/openfoam-adapter/CHANGELOG.md-29-- Added custom inletOutlet boundary conditions for pressure and velocity to the FF module [#281](https://github.com/precice/openfoam-adapter/pull/281). --- -imported/openfoam-adapter/docs/README.md-9-## What is this? -imported/openfoam-adapter/docs/README.md-10- -imported/openfoam-adapter/docs/README.md:11:This preCICE adapter is a plug-in (function object) for OpenFOAM, which can work with any recent version of OpenFOAM (.com / .org, see [supported OpenFOAM versions](https://precice.org/adapter-openfoam-support.html)). It supports fluid-structure interaction (fluid part), conjugate heat transfer (fluid and solid parts), and fluid-fluid simulations, while it is also easily extensible. Besides surface coupling, the adapter also supports volume coupling (overlapping domains). -imported/openfoam-adapter/docs/README.md-12- -imported/openfoam-adapter/docs/README.md-13-## What can it do? --- -imported/openfoam-adapter/docs/README.md-32-- Phase flux (phi) (read + write) -imported/openfoam-adapter/docs/README.md-33- -imported/openfoam-adapter/docs/README.md:34:In addition, the adapter supports the following fields in a volume coupling setup: -imported/openfoam-adapter/docs/README.md-35- -imported/openfoam-adapter/docs/README.md-36-- Temperature (write) --- -imported/openfoam-adapter/docs/README.md-67-The fluid-fluid coupling module was added by Gerasimos Chourdakis, in the context of his dissertation. [#67](https://github.com/precice/openfoam-adapter/pull/67). Further contributions in this direction by Markus Mühlhäußer ([master's thesis](https://mediatum.ub.tum.de/node?id=1696254&change_language=en)[^5], [related publication](https://mediatum.ub.tum.de/node?id=1732401&change_language=en)[^6]). -imported/openfoam-adapter/docs/README.md-68- -imported/openfoam-adapter/docs/README.md:69:The volume coupling functionality was contributed by Tina Vladimirova, in the context of her [interdisciplinary project](https://mediatum.ub.tum.de/1734883)[^7], based on previous work by various community contributors. -imported/openfoam-adapter/docs/README.md-70- -imported/openfoam-adapter/docs/README.md-71-The adapter is [easily extensible](https://precice.org/adapter-openfoam-extend.html). --- -imported/openfoam-adapter/docs/README.md-91-[DOI: 10.23967/c.coupled.2023.014](https://doi.org/10.23967/c.coupled.2023.014) -imported/openfoam-adapter/docs/README.md-92- -imported/openfoam-adapter/docs/README.md:93:[^7]: Tina Vladimirova. Design, implementation, and validation of a volume coupling extension for the OpenFOAM-preCICE adapter. IDP report, School of Computation, Information and Technology, Technical University of Munich, 2023.
-imported/openfoam-adapter/docs/README.md-94-URL: https://mediatum.ub.tum.de/1734883 -imported/openfoam-adapter/docs/README.md-95- --- -imported/openfoam-adapter/docs/config.md-74-The `volumeCenters` location is currently implemented for fluid-fluid coupling (`Pressure` and `Velocity`) and conjugate heat transfer (`Temperature`). -imported/openfoam-adapter/docs/config.md-75- -imported/openfoam-adapter/docs/config.md:76:The `cellSets` field can be used to specify one or multiple coupling regions (defined by OpenFOAM `cellSets`) for volume coupling. The field can only be used with the `volumeCenters` location and it is optional. If no `cellSets` are specified, the full domain will be coupled. -imported/openfoam-adapter/docs/config.md-77- -imported/openfoam-adapter/docs/config.md-78-The values for `readData` and `writeData` --- -imported/openfoam-adapter/docs/config.md-275- mesh Fluid-Mesh; -imported/openfoam-adapter/docs/config.md-276- patches (interface); -imported/openfoam-adapter/docs/config.md:277: // For volume coupling specify volumeCenters -imported/openfoam-adapter/docs/config.md-278- locations faceCenters; -imported/openfoam-adapter/docs/config.md-279- --- -imported/openfoam-adapter/docs/config.md-299-``` -imported/openfoam-adapter/docs/config.md-300- -imported/openfoam-adapter/docs/config.md:301:Explicitly setting `locations volumeCenters;` in preciceDict is required for volume coupling. If omitted, it defaults to surface coupling on `faceCenters`. Volume coupling data is always assumed as values for now, i.e., cannot set volume gradient. -imported/openfoam-adapter/docs/config.md-302- -imported/openfoam-adapter/docs/config.md-303-When reading on the OpenFOAM side, the Generic module automatically detects the boundary condition type of the coupled patch to apply the received data. The boundary condition must be respected, therefore the data received is applied either as a `fixedValue` or `fixedGradient` boundary condition, determined by the type set in the `0/` files. --- -imported/openfoam-adapter/docs/config.md-305-The `operation surface-normal-gradient;` is currently only supported for scalar field surface writing. The operation `gradient` as well as the option `flip-normal` are not yet supported by the adapter. -imported/openfoam-adapter/docs/config.md-306- -imported/openfoam-adapter/docs/config.md:307:### Volume coupling -imported/openfoam-adapter/docs/config.md-308- -imported/openfoam-adapter/docs/config.md-309-Besides surface coupling on the domain boundaries, the OpenFOAM adapter also supports coupling overlapping domains, which can be the complete domain, or regions of it. In contrast to surface coupling, though, reading volume data (source terms) requires a few additional configuration steps compared to writing data. --- -imported/openfoam-adapter/docs/config.md-368-{% endexperimental %} -imported/openfoam-adapter/docs/config.md-369- -imported/openfoam-adapter/docs/config.md:370:#### Volume coupling over a domain region -imported/openfoam-adapter/docs/config.md-371- -imported/openfoam-adapter/docs/config.md:372:For reading values only over a region of the domain, we use the OpenFOAM [`cellSet` class](https://www.openfoam.com/documentation/guides/latest/api/classFoam_1_1cellSet.html) to define one or multiple volume coupling regions. You can define one or multiple `cellSets` in the `system/topoSetDict`: -imported/openfoam-adapter/docs/config.md-373- -imported/openfoam-adapter/docs/config.md-374-```C++ --- -imported/preeco-orga/guidelines/guideline-adapters-dumux.md-23-- [x] R.1: Several application cases are available as tutorials, such as the [`tutorials-two-scale-heat-conduction`](https://precice.org/tutorials-two-scale-heat-conduction.html) -imported/preeco-orga/guidelines/guideline-adapters-dumux.md-24-- [x] R.2: [`README.md`](https://github.com/precice/dumux-adapter/blob/develop/README.md) -imported/preeco-orga/guidelines/guideline-adapters-dumux.md:25: - [ ] application background and/or nature of coupling (e.g., surface vs. volume coupling; transient or steady-state; ...) -imported/preeco-orga/guidelines/guideline-adapters-dumux.md-26- - [ ] what data can be read and written for a coupling -imported/preeco-orga/guidelines/guideline-adapters-dumux.md-27- - [x] which target solver versions are supported --- -imported/preeco-orga/guidelines/guidelines-adapters.md-50-- [ ] R.1: The adapter is accompanied by one or more application cases to test it, covering an extensive part of the claimed functionality. These test cases must fulfill the required criteria of the [application case guidelines](community-guidelines-application-cases.html). -imported/preeco-orga/guidelines/guidelines-adapters.md-51-- [ ] R.2: There is a `README.md` file (for integrated adapters: a solver documentation section) with at least the following information (or links to related resources): -imported/preeco-orga/guidelines/guidelines-adapters.md:52: - [ ] application background and/or nature of coupling (e.g., surface vs. volume coupling; transient or steady-state; ...) -imported/preeco-orga/guidelines/guidelines-adapters.md-53- - [ ] what data can be read and written for a coupling -imported/preeco-orga/guidelines/guidelines-adapters.md-54- - [ ] which target solver versions are supported --- -imported/tutorials/volume-coupled-diffusion/README.md-2-title: Volume coupled diffusion -imported/tutorials/volume-coupled-diffusion/README.md-3-permalink: tutorials-volume-coupled-diffusion.html -imported/tutorials/volume-coupled-diffusion/README.md:4:keywords: FEniCS, Diffusion, Volume Coupling -imported/tutorials/volume-coupled-diffusion/README.md:5:summary: This tutorial illustrates volume coupling with a simple example. -imported/tutorials/volume-coupled-diffusion/README.md-6---- -imported/tutorials/volume-coupled-diffusion/README.md-7- --- -imported/tutorials/volume-coupled-diffusion/README.md-10-## Setup -imported/tutorials/volume-coupled-diffusion/README.md-11- -imported/tutorials/volume-coupled-diffusion/README.md:12:This case illustrates how to implement volume coupling in a simple toy problem. Two diffusion problems are coupled via volume terms. One domain (the source) has constant non-zero Dirichlet boundary conditions. The other domain (the drain) has Neumann boundary conditions and a zero Dirichlet boundary condition at the right edge of the domain. The quantity u flows from the source to the drain. -imported/tutorials/volume-coupled-diffusion/README.md-13- -imported/tutorials/volume-coupled-diffusion/README.md-14-![Case setup of volume-coupled-diffusion case](images/tutorials-volume-coupled-diffusion-setup.png) --- -imported/tutorials/two-scale-heat-conduction/macro-nutils/macro.py-45- mesh_name = "Macro-Mesh" -imported/tutorials/two-scale-heat-conduction/macro-nutils/macro.py-46- -imported/tutorials/two-scale-heat-conduction/macro-nutils/macro.py:47: # Define Gauss points on entire domain as coupling mesh (volume coupling from macro side) -imported/tutorials/two-scale-heat-conduction/macro-nutils/macro.py-48- couplingsample = topo.sample('gauss', degree=2) # mesh vertices are Gauss points -imported/tutorials/two-scale-heat-conduction/macro-nutils/macro.py-49- vertex_ids = participant.set_mesh_vertices(mesh_name, couplingsample.eval(ns.x)) --- -imported/tutorials/channel-transport-particles/README.md-2-title: Channel transport with particles -imported/tutorials/channel-transport-particles/README.md-3-permalink: tutorials-channel-transport-particles.html -imported/tutorials/channel-transport-particles/README.md:4:keywords: volume coupling, particles, OpenFOAM, MercuryDPM, transport, just-in-time mapping -imported/tutorials/channel-transport-particles/README.md-5-summary: A CFD problem is coupled to a particles in a uni-directional way for particles tracing. -imported/tutorials/channel-transport-particles/README.md-6---- --- -imported/tutorials/volume-coupled-flow/README.md-2-title: Volume-coupled flow -imported/tutorials/volume-coupled-flow/README.md-3-permalink: tutorials-volume-coupled-flow.html -imported/tutorials/volume-coupled-flow/README.md:4:keywords: volume coupling, OpenFOAM, source terms -imported/tutorials/volume-coupled-flow/README.md-5-summary: A dummy source participant is coupled to a fluid in a uni-directional way over a region of the domain. The coupling enforces source terms on that region. -imported/tutorials/volume-coupled-flow/README.md-6---- --- -imported/tutorials/volume-coupled-flow/README.md-18-![Ux](images/tutorials-volume-coupled-flow-Ux.png) -imported/tutorials/volume-coupled-flow/README.md-19- -imported/tutorials/volume-coupled-flow/README.md:20:This case is a convenient starting point for volume coupling where OpenFOAM is a reading participant. The writing Nutils participant (dummy source) can be replaced by a more complex solver according to the user's needs. -imported/tutorials/volume-coupled-flow/README.md-21- -imported/tutorials/volume-coupled-flow/README.md-22-## Configuration --- -imported/tutorials/channel-transport/README.md-2-title: Channel transport -imported/tutorials/channel-transport/README.md-3-permalink: tutorials-channel-transport.html -imported/tutorials/channel-transport/README.md:4:keywords: volume coupling, chemistry, OpenFOAM, Nutils, species, transport, remeshing -imported/tutorials/channel-transport/README.md-5-summary: A CFD problem is coupled to a transport (of, e.g., a chemistry species) in a uni-directional way. -imported/tutorials/channel-transport/README.md-6---- --- -imported/tutorials/CHANGELOG.md-20- - [Partitioned flow over a heated plate](https://precice.org/tutorials-flow-over-heated-plate-partitioned-flow.html) -imported/tutorials/CHANGELOG.md-21- - [Partitioned pipe: two-phase](https://precice.org/tutorials-partitioned-pipe-two-phase.html) ([#418](https://github.com/precice/tutorials/pull/418)) -imported/tutorials/CHANGELOG.md:22:- Added new volume coupling cases/tutorials with OpenFOAM: -imported/tutorials/CHANGELOG.md-23- - Added an OpenFOAM case in the [channel transport](https://precice.org/tutorials-channel-transport.html) tutorial [#315](https://github.com/precice/tutorials/pull/315). -imported/tutorials/CHANGELOG.md-24- - Added a new tutorial [volume-coupled flow](https://precice.org/tutorials-volume-coupled-flow.html) [#350](https://github.com/precice/tutorials/pull/350). --- -imported/dumux-adapter/docs/overview.md-12-## Supported features -imported/dumux-adapter/docs/overview.md-13- -imported/dumux-adapter/docs/overview.md:14:- Surface and volume coupling as demonstrated in the two tutorial cases [free-flow-over-porous-media](https://precice.org/tutorials-free-flow-over-porous-media-2d.html) and [two-scale-heat-conduction](https://precice.org/tutorials-two-scale-heat-conduction.html). -imported/dumux-adapter/docs/overview.md-15-- Any data field can be exchanged. The adapter does not have any awareness of the physical definition of the exchanged fields. -imported/dumux-adapter/docs/overview.md-16-- In the configuration, one mesh can be set for each interface, and multiple data fields can be read or written on each interface. Multiple interfaces can be configured.