This commit is contained in:
HomaFarahani 2025-06-08 14:57:01 +03:30 committed by GitHub
commit 58a00a4352
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 208 additions and 0 deletions

208
READMEPostprocess.md Normal file
View File

@ -0,0 +1,208 @@
# phasicFlow `processDataDict` File Explanation
## Problem definition
There is a rotating drum with the diameter 0.24 m and the length 0.1 m rotating at 11.6 rpm. It is filled with 30,000 4-mm spherical particles. The timestep for integration is 0.00001 s.The problem is to postprocessing some data such as velocity, position, one, mass.
## Setting up the case
To postprocess these data, we should configurate `processDataDict` file. The code is divided into the following two main parts: 1. Time Control Configuration 2. Components.
## Time Control Configuration
### `defaultTimeControl`
Defines default time management for processing tasks:
```cpp
defaultTimeControl
{
timeControl timeStep; //Time stepping mode
startTime 0; //Start time for post-processing
executionInterval 10000; //Interval between processing events
}
```
## Components
Each entry in the `components` section specifies a different post-processing task as shown below. After running the code, a file with the same name is generated in the simulation folder, containing the data.
### 1. `velocityProb`
- **Purpose**: Probe the y-component of velocity for specific particles.
```cpp
velocityProb
{
processMethod particleProbe; //probes at selected particles
processRegion centerPoints; //at particle centers
timeControl default; //Uses default time control.
selector id; //selected particles by particle ID
ids (0 10 20 100 1000); //list of particle IDs that has beeen selected arbitrarily.
field component(velocity,y); //y-component of velocity
}
```
### 2. `positionProb`
- **Purpose**: Probe positions at randomly selected points.
```cpp
positionProb
{
processMethod particleProbe;
processRegion centerPoints;
timeControl settingsDict; //Uses `settingsDict` time control.
selector randomPoints; //selects by random points.
randomPointsInfo
{
begin 0; //start of rang
end 20000; //end of rang
number 20; //number of points
}
field position;
}
```
### 3. `alongALine`
- **Purpose**: Compute statistics along a line, dividing it into spheres (probes).
```cpp
alongALine
{
processMethod arithmetic;
processRegion line;
// 10 spheres with radius 0.01 along the straight line defined by p1 and p2
lineInfo
{
p1 ( 0 0 0.05);
p2 (0.084 -0.084 0.05);
nSpheres 10;
radius 0.01;
}
timeControl simulationTime; //custom time control.
executionInterval 0.1;
startTime 0.4;
operations
(
avVelocity1 // Average velocity magnitude (mass-weighted, with fluctuation)
{
function average;
field mag(velocity);
fluctuation2 yes;
phi mass;
}
numberDensity1 //Number density (normalized by volume, threshold 10)
{
function sum;
field one;
divideByVolume yes;
threshold 10;
}
parCount1 //Particle count (sum)
{
function sum;
field one;
}
volFrac1 //Volume fraction (normalized by volume, threshold 4)
{
function sum;
field volume;
divideByVolume yes;
threshold 4;
}
);
}
```
### 4. `alongALine2`
- **Purpose**: Compute Gaussian-distributed statistics along a line.
```cpp
alongALine2
{
processMethod GaussianDistribution;
processRegion line;
// 10 spheres with radius 0.01 along the straight line defined by p1 and p2
lineInfo
{
p1 ( 0 0 0.05);
p2 (0.084 -0.084 0.05);
nSpheres 10;
radius 0.01;
}
timeControl timeStep;
executionInterval 100;
startTime 0;
operations
(
avVelocity //Average velocity magnitude (mass-weighted)
{
function average;
field mag(velocity);
phi mass;
}
bulkDensity //Bulk density (sum of mass, volume-normalized, threshold 5)
{
function sum;
field mass;
phi one;
divideByVolume yes;
threshold 5;
}
parCount //Particle count
{
function sum;
field one;
}
volFrac //Volume fraction (volume-normalized, threshold 4)
{
function sum;
field volume;
divideByVolume yes;
threshold 4;
}
);
}
```