porousmicrotransport
OpenFOAM solvers for flow and transport in porous media in paper-based microfluidics
Science Score: 57.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 12 DOI reference(s) in README -
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.3%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
OpenFOAM solvers for flow and transport in porous media in paper-based microfluidics
Basic Info
Statistics
- Stars: 25
- Watchers: 3
- Forks: 2
- Open Issues: 1
- Releases: 1
Topics
Metadata Files
README.md
porousMicroTransport[^porousMicroTransport] is a set of additional solvers and related libraries for OpenFOAM developed for the purposes of simulating flow and transport in porous media, with an emphasis on paper-based microfluidics
Installation
porousMicroTransport requires OpenFOAM, as distributed by OpenCFD (openfoam.com). Compatible OpenFOAM versions are v2112, v2206, v2212, v2306, v2312, v2406, v2412 and v2506.
Versions produced by the OpenFOAM Foundation (openfoam.org) (e.g. OpenFOAM 11, OpenFOAM 12) are not compatible. macOS users may want to consider OpenFOAM.app.
With styro
porousMicroTransport can be installed with the styro package manager:
sh
styro install porousmicrotransport
Install from source
Optional: reagency
porousMicroTransport can be used with the optional reagency library for reaction modeling. To install porousMicroTransport with reagency, clone the reagency repository alongside porousMicroTransport, and install the former first:
sh
git clone https://github.com/gerlero/reagency.git
reagency/Allwmake -j
Download
Download the source code of porousMicroTransport, or clone this repository with Git:
sh
git clone https://github.com/gerlero/porousMicroTransport.git
Compile and install
To build and install porousMicroTransport, just invoke the top-level Allwmake script:
sh
cd porousMicroTransport
./Allwmake -j
If necessary, activate/source the correct OpenFOAM environment before running Allwmake.
Test
Optionally, you can verify the installation of porousMicroTransport by running the included test suite (requires Python 3.7 or later):
sh
tests/Alltest
Docker image
Alternatively, porousMicroTransport is also available in the form of Docker images. These images include porousMicroTransport precompiled and ready to use. Assuming Docker is installed, the following command will run the latest image and mount the current directory so that you can access the files inside:
sh
docker run --rm -it -v $PWD:/root -w /root microfluidica/porousmicrotransport
Or, if you use OpenFOAM's openfoam-docker script (which takes care of making the working directory available inside the container):
sh
openfoam-docker -image=microfluidica/porousmicrotransport
A slimmer image variant that does not include source code, development tools or tutorial cases is available as microfluidica/porousmicrotransport:slim.
Docker images can also be used with other compatible containerization software, such as Podman and Singularity/Apptainer.
Solvers
moistureDiffusivityFoam
(Unsaturated) capillarity-driven flow in a porous medium, governed by the moisture diffusivity equation[^Bear]:
$$\frac{\partial\theta}{\partial t} - \nabla\cdot\left[D\nabla\theta\right] = 0$$
where $\theta$ is the moisture content and $D$ is a saturation-dependent diffusivity as defined by an unsaturated flow model.
porousMicroTransportFoam
Transport by steady flow of any number of species in a porous medium, with optional reactions between the species. For each species (concentration $C$), the governing equation is:
$$\frac{\partial Rd \theta C}{\partial t} + \nabla\cdot\left[UC\right] - \nabla\cdot\left[\theta D{eff}\nabla C\right] = \theta F$$
where $F$ is a reaction term (see below), $R_d$ is defined as:
$$Rd = 1 + \frac{\rhos\left(1 - \varepsilon\textrm{tot}\right)Kd}{\theta}$$
and $D_{eff}$ is defined as:
$$D{eff} = \left(\frac{DM}{\tau} + \alphaT|V|\right)I + \left(\alphaL - \alpha_T\right)\frac{VV}{|V|}$$
with $I$ the identity tensor and $V$ the true velocity of the fluid ($=U/\theta$).
moistureDiffusivityTransportFoam
Capillary flow + reactive transport in a porous medium, coupling the moisture diffusivity equation for flow with the previous transport equation.
Case layout
The layout of porousMicroTransport cases follows many conventions of porousMultiphaseFoam, especially in field names and entries in the transportProperties dictionary. This allows for easy conversion of cases from porousMultiphaseFoam to porousMicroTransport (and to some extent, vice versa).
Common fields
These variable fields are defined in the time directories:
theta: moisture content (scalar). Optional forporousMicroTransportFoamU: Darcy velocity (vector). Optional for flow solvers
Common porous medium properties
Defined as scalar fields in constant or as dictionary entries in transportProperties:
epsorthetamax: effective porosity ($\varepsilon$)K: intrinsic permeability. Flow solvers onlyrs: particle density ($\rhos$). _Transport solvers onlyepsTotal: total porosity ($\varepsilon\textrm{tot}$). _Transport solvers onlytau: diffusive tortuosity ($\tau$). Transport solvers onlyalphaT: transverse dispersion coefficient ($\alphaT$). _Transport solvers onlyalphaL: longitudinal dispersion coefficient ($\alphaL$). _Transport solvers only
Phase properties
Flow solvers only.
Set these in a phase.theta subdictionary in transportProperties:
rho: densitymu: dynamic viscosity
Moisture content options
Flow solvers only.
Defined as scalar fields in constant or as dictionary entries in transportProperties:
thetamin: minimum (a.k.a. residual) moisture contentthetamax: maximum moisture content (usually equal to the porosity)
Unsaturated flow models
Flow solvers only.
Supported models of unsaturated flow are:
BrooksAndCorey: Brooks and Corey[^BrooksAndCorey] model- In coefficient dictionary
BrooksAndCoreyCoeffs:pc0,alpha,n,l(optional)
- In coefficient dictionary
VanGenuchten: Van Genuchten[^VanGenuchten] model- In coefficient dictionary
VanGenuchtenCoeffs:pc0,morn,l(optional)
- In coefficient dictionary
LETxs: LETx + LETs model[^LET]- In coefficient dictionary
LETCoeffs:pc0,Lw,Ew,Tw,Ls,Es,Ts
- In coefficient dictionary
LETd: LETd[^Validity] model- In coefficient dictionary
LETCoeffs:pc0,L,E,T
- In coefficient dictionary
To choose a model for your simulation, set the unsaturatedFlowModel entry in transportProperties. Then set the model-specific parameters in the corresponding coefficient subdictionary.
Special boundary conditions for flow
Flow solvers only.
Besides the standard OpenFOAM boundary conditions (e.g. zeroGradient, fixedValue), the solvers support these additional boundary conditions for theta:
darcyGradPressure: follow the boundary condition set for velocity (same asdarcyGradPressurein porousMultiphaseFoam).exhaustible: models an inlet reservoir with a fixed volume of fluid that is gradually depleted as fluid flows into the domain. Aremainingentry is required (volume remaining in the reservoir).
Transported species
Transport solvers only.
A species list in transportProperties contains the names of all transported species.
Each species must also define its own scalar concentration field (named the same as the species).
For each species, the following entries can be set in transportProperties:
Dm: molecular diffusivity ($D_M$)Kd: partitioning coefficient ($K_d$)
Reactions
Transport solvers only.
Reactions are defined in a reactions subdictionary in transportProperties. The reactions dictionary contains a list of subdictionaries, each of which defines a single reaction. A reaction can have an arbitrary name and should contain the following entries:
reaction: reaction equation. E.g."A^2 + B = 2C + D", whereA,B,CandDare names of defined specieskf: forward rate constantkr: optional reverse rate constant (for reversible reactions)
Automatic timestep control
To enable automatic timestep adjustment, set adjustTimeStep to yes in system/controlDict. Then, configure it as follows:
For flow, set a
tolerancevalue inside aPicarddictionary insystem/fvSolutionFor transport, add a
maxDeltaCand/orrelMaxDeltaCentry insystem/controlDict
Tutorials
Sample cases are available in the tutorials directory.
Related projects
porousMultiphaseFoam[^porousMultiphaseFoam]: toolbox for OpenFOAM for modeling multiphase flow and transport. porousMicroTransport is mostly compatible with porousMultiphaseFoam in terms of case definitions, and can be installed alongside it.
electroMicroTransport[^electroMicroTransport]: toolbox for OpenFOAM dedicated to electromigrative separations. It includes support for modeling separations in paper-based media, and can also be installed alongside porousMicroTransport.
[^porousMicroTransport]: Gerlero, G. S., Guerenstein, Z. I., Franck, N., Berli, C. L. A., & Kler, P. A. (2024). Comprehensive numerical prototyping of paper-based microfluidic devices using open-source tools. Talanta Open, 10, 100350. https://doi.org/10.1016/j.talo.2024.100350
[^Bear]: Bear, J., & Cheng, A. H. D. (2010). Modeling groundwater flow and contaminant transport (Vol. 23, p. 834). Dordrecht: Springer. https://doi.org/10.1007/978-1-4020-6682-5
[^porousMultiphaseFoam]: Horgue, P., Renard, F., Gerlero, G. S., Guibert, R., & Debenest, G. (2022). porousMultiphaseFoam v2107: An open-source tool for modeling saturated/unsaturated water flows and solute transfers at watershed scale. Computer Physics Communications, 273, 108278. https://doi.org/10.1016/j.cpc.2021.108278
[^electroMicroTransport]: Gerlero, G. S., Damián, S. M., & Kler, P. A. (2021). electroMicroTransport v2107: Open-source toolbox for paper-based electromigrative separations. Computer Physics Communications, 269, 108143. https://doi.org/10.1016/j.cpc.2021.108143
[^BrooksAndCorey]: Brooks, R., & Corey, T. (1964). Hydraulic properties of porous media. Hydrology Papers Colorado State University. https://mountainscholar.org/bitstream/handle/10217/61288/HydrologyPapers_n3.pdf
[^VanGenuchten]: Van Genuchten, M. T. (1980). A closed‐form equation for predicting the hydraulic conductivity of unsaturated soils. Soil Science Society of America Journal, 44(5), 892-898. https://doi.org/10.2136/sssaj1980.03615995004400050002x
[^LET]: Lomeland, F. (2018). Overview of the LET family of versatile correlations for flow functions. In: Proceedings of the International Symposium of Core Analysts, SCA2018-056 http://www.jgmaas.com/SCA/2018/SCA2018-056.pdf
[^Validity]: Gerlero, G. S., Valdez, A. R., Urteaga, R., & Kler, P. A. (2022). Validity of capillary imbibition models in paper-based microfluidic applications. Transport in Porous Media, 141(2), 359-378. https://doi.org/10.1007/s11242-021-01724-w
Owner
- Name: Gabriel Gerlero
- Login: gerlero
- Kind: user
- Location: Santa Fe, Argentina
- Company: @microfluidica
- Repositories: 10
- Profile: https://github.com/gerlero
Information Systems Engineer. PhD candidate in Computational Mechanics at CIMEC. Physics TA at UNL. Santa Fe Microfluidics Group (GSaM).
Citation (CITATION.cff)
cff-version: 1.2.0
preferred-citation:
type: article
authors:
- given-names: Gabriel S.
family-names: Gerlero
- given-names: Zahar I.
family-names: Guerenstein
- given-names: Nicolás
family-names: Franck
- given-names: Claudio L. A.
family-names: Berli
- given-names: Pablo A.
family-names: Kler
title: Comprehensive numerical prototyping of paper-based microfluidic devices using open-source tools
journal: Talanta Open
year: 2024
volume: 10
start: 100350
end: 100350
doi: 10.1016/j.talo.2024.100350
GitHub Events
Total
- Issues event: 1
- Watch event: 8
- Delete event: 10
- Issue comment event: 1
- Push event: 14
- Pull request event: 17
- Create event: 9
Last Year
- Issues event: 1
- Watch event: 8
- Delete event: 10
- Issue comment event: 1
- Push event: 14
- Pull request event: 17
- Create event: 9
Committers
Last synced: over 1 year ago
Top Committers
| Name | Commits | |
|---|---|---|
| Gabriel Gerlero | g****o | 220 |
| dependabot[bot] | 4****] | 21 |
| davidh456 | d****e@g****m | 5 |
| pabloakler | p****r@g****m | 2 |
Dependencies
- PyFoam ==2021.6 test
- numpy >=1.21.6,<2 test
- pytest >=7.1.1,<8 test
- actions/checkout v3 composite
- ammaraskar/gcc-problem-matcher master composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/metadata-action v5 composite
- docker/setup-buildx-action v3 composite
- docker/setup-qemu-action v3 composite
- actions/checkout v4 composite
- peter-evans/dockerhub-description v3 composite
- dev latest build
- opencfd/openfoam-dev ${FOAM_VERSION} build
- opencfd/openfoam-run ${FOAM_VERSION} build
