Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
208 changes: 208 additions & 0 deletions READMEPostprocess.md
Original file line number Diff line number Diff line change
@@ -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;
}
);
}





```