Saved in:
| Main Author: | |
|---|---|
| Format: | Recurso digital |
| Language: | |
| Published: |
Zenodo
2025
|
| Online Access: | https://doi.org/10.5281/zenodo.16364924 |
| Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
Table of Contents:
- <div dir="auto"> <h1>PorousFreezeThaw</h1> <p>A snapshot of the GitHub repository <a href="https://github.com/radixsorth/PorousFreezeThaw">https://github.com/radixsorth/PorousFreezeThaw</a></p> Numerical solvers for:</div> <ul> <li>simulation of freezing and thawing of water in porous media at pore scale</li> <li>DEM simulation of spherical particle dynamics (for creating a porous bed of particles at the bottom of a container)</li> </ul> <p dir="auto">This repository contains supplementary materials for the manuscripts</p> <p dir="auto"><strong>Pavel Strachota - Three-dimensional phase-field simulations of water freezing and thawing at pore-scale</strong></p> <p dir="auto">and</p> <p dir="auto"><strong>Pavel Strachota - DEM Simulations of Settling of Spherical Particles using a Soft Contact Model and Adaptive Time Stepping</strong></p> <p dir="auto">The directory structure is as follows:</p> <div> <pre>── apps<br>│ ├── intertrack-hybrid-S-freezing # C source code of the freezing/thawing simulator<br>│ │ ├── data<br>│ │ ├── OUTPUT<br>│ │ └── results # results (case settings files "Params", log files, visualizations)<br>│ │ ├── 100_low-resolution<br>│ │ ├── 200_medium-resolution<br>│ │ │ └── Movies-with-temperature-field<br>│ │ ├── 400_high-resolution<br>│ │ │ ├── Movies-without-temperature-field<br>│ │ │ └── Movies-with-temperature-field<br>│ │ └── PhysRevE-2025<br>│ │ └── 200_medium-resolution<br>│ │ └── Movies-with-temperature-field<br>│ ├── sphere-collider # C source code of the full DEM simulator<br>│ │ └── OUTPUT<br>│ └── sphere-collider-MATLAB # MATLAB code of the basic DEM simulator (more cases)<br>│ ├── results # results produced in MATLAB (workspace snapshots, videos, logs)<br>│ │ ├── 100-spheres-for-porous-bed<br>│ │ ├── 100-spheres-high_elevation<br>│ │ ├── 200-spheres-for-porous-bed-1<br>│ │ └── 200-spheres-for-porous-bed-2<br>│ └── source-code<br>│ └── plots</pre> <div> </div> </div> <p dir="auto"><em>(software infrastructure and modules needed to build the apps are below)</em></p> <div> <pre><code>├── include ├── lib ├── libsource │ ├── dataIO │ ├── exprsion │ ├── screen │ └── strings ├── modules │ ├── cparser │ ├── evsubst │ ├── mprintf │ ├── pparser │ ├── RK_Asolver │ ├── RK_csolver │ ├── RK_MPI_Asolver │ ├── RK_MPI_SAsolver │ ├── RK_MPI_SAsolver_hybrid │ ├── RK_MPI_SAsolver_hybrid2 │ └── RK_solver ├── _settings └── _template └── AVS </code></pre> <div> </div> </div> <div dir="auto"> <h2>DEM simulator of spherical particle dynamics (MATLAB)</h2> </div> <p dir="auto">Run the <code>spheres.m</code> script using a recent MATLAB distribution (anything newer than R2020a will do). The source code is heavily commented. The script requires that a <code>plots</code> directory exists in its path where the visualization of the simulation is stored in the form of a series of images.</p> <div dir="auto"> <h2>Building the binaries of the simulators written in C</h2> </div> <p dir="auto">The code of the simulators is written in C and C++. For easy compilation, the following software environment is required:</p> <ul> <li>Linux operating system</li> <li>any recent <code>gcc</code> compiler with OpenMP support</li> <li>an MPI library with development files, such as OpenMPI</li> <li><code>make</code></li> </ul> <p dir="auto">To build the software, run <code>make_all</code> in the <code>porous-freeze-thaw-simulator</code> directory.</p> <div dir="auto"> <h2>Freezing and thawing simulations in porous media</h2> </div> <p dir="auto">The binaries of the simulator will be placed in</p> <p dir="auto"><code>porous-freeze-thaw-simulator/apps/intertrack-hybrid-S-freezing</code></p> <p dir="auto">To run the simulation of with the default parameters settings (the <code>Params</code> file), issue the command</p> <div> <pre><code>./Run M N </code></pre> <div> </div> </div> <p dir="auto">where <code>M</code> is the number of MPI ranks and <code>N</code> is the number of OpenMP threads. If <code>N</code> is omitted, it defaults to 1. If both <code>M</code> and <code>N</code> are omitted, one single-threaded process is launched.</p> <p dir="auto">The positions of the sphere centers are contained in the <code>data/spheres_positions.txt</code> file. This path is currently hardcoded in <code>equation.c</code></p> <div dir="auto"> <h2>DEM simulations of spherical particle settling</h2> </div> <p dir="auto">The binaries of the simulator will be placed in</p> <p dir="auto"><code>porous-freeze-thaw-simulator/apps/sphere-collider</code></p> <p dir="auto">All parameters are contained in the source file <code>spheres.c</code>. This file is a symlink to one of the version of the simulator:</p> <ul> <li><code>spheres_basic.c</code> ... the basic version with repulsive forces only</li> <li><code>spheres_friction.c</code> ... the version with friction</li> <li><code>spheres_friction_angular.c</code> ... the version with friction and rotation</li> </ul> <p dir="auto">To select one of the versions for compilation (point the symlink to one of the source code variants), one may type e.g.:</p> <p dir="auto"><code>./Select.sh spheres_basic.c</code></p> <p dir="auto">Then modify the source file and run <code>make</code> again.</p>