... | ... | @@ -109,7 +109,7 @@ This figure shows the total time for solving PISO with different preconditioner/ |
|
|
|
|
|
1. credits to @Serge.
|
|
|
|
|
|
#### Standard case
|
|
|
**_Standard case_**
|
|
|
|
|
|
The standard cavity case setup does not meet the microbenchmark requirements because of the following issues.
|
|
|
|
... | ... | @@ -117,7 +117,7 @@ The standard cavity case setup does not meet the microbenchmark requirements bec |
|
|
* The iteration number of the linear solver per time step n_iter differs for every time step if tolerance is setup as the convergence criterion. The iteration number also fluctuates significantly, whereby on average it decreases during the run and reaches a certain plateau at some point (for 1M case after 0.34s).
|
|
|
* The iteration number n_iter is also dependent on the mesh size and the decomposition.
|
|
|
|
|
|
#### Adjusting to a microbenchmark
|
|
|
**_Adjusting to a microbenchmark_**
|
|
|
|
|
|
Considering the above arguments the case is altered. It has to be adapted to the profiling requirements meaning that a compromise between the fast execution, representativeness, repeatability and simple handling needs to be achieved:
|
|
|
|
... | ... | @@ -128,7 +128,7 @@ Considering the above arguments the case is altered. It has to be adapted to the |
|
|
* The iteration number is the same for a mesh of a certain size independent of the decomposition.
|
|
|
* Representativeness: The present cavity case aims to reproduce the solver behavior from t=0s up to the point where the iteration number reaches the plateau mentioned above. This time point differs for different mesh sizes, which is accounted for in the provided benchmark. In this way, the case is representative for the initial transient of the cavity case.
|
|
|
|
|
|
#### General overview
|
|
|
**_General overview_**
|
|
|
|
|
|
Important characteristics of the case are summarized here.
|
|
|
|
... | ... | @@ -144,18 +144,18 @@ Important characteristics of the case are summarized here. |
|
|
* Only _fixedIter_ setup should be used for profiling.
|
|
|
* `renumberMesh` utility is used to reduce the bandwidth of the matrix.
|
|
|
|
|
|
#### Instructions
|
|
|
**_Instructions_**
|
|
|
|
|
|
One of the major issues of the cavity test case is the fact that the iteration number of the linear solver grows with increasing mesh size if the linear solver tolerance is set. Thus, the two following approaches are possible.
|
|
|
|
|
|
#### Mesh size unchanged
|
|
|
**_Mesh size unchanged_**
|
|
|
|
|
|
If one of the provided cases is used without changes, only _fixedIter_ setup is utilized. Simply run the Allrun script. For example:
|
|
|
|
|
|
1. `cd 1M/fixedIter`
|
|
|
2. `./Allrun`
|
|
|
|
|
|
#### Mesh size changed
|
|
|
**_Mesh size changed_**
|
|
|
|
|
|
If the mesh size is changed an additional run with _fixedTol_ needs to be performed to determine an iteration number which is representative for the case. The procedure is the following.
|
|
|
|
... | ... | @@ -169,11 +169,11 @@ If the mesh size is changed an additional run with _fixedTol_ needs to be perfor |
|
|
2. Adjust `maxIter` in the 'system/fvSolution' to the value `iter_run` read from the 'log.python3' of the _fixedTol_ setup
|
|
|
3. `./Allrun`
|
|
|
|
|
|
#### Remark
|
|
|
**_Remark_**
|
|
|
|
|
|
Besides the mesh size the iteration number also depends on the number of partitions the case is decomposed into (it grows with the increasing partition number) and on the decomposition method. In our experiments, e.g. for 64M case, the iteration number with 1024 partitions was 50% higher than with 32 partitions. The `maxIter` of the _fixedIter_ setups of 1M and 8M cases are setup according to the _fixedTol_ runs with 32 partitions and in case of 64M with 1024 partitions. In all cases scotch was used as the decomposition method. The general recommendation is to follow the procedure above. Then, for a strong scaling analysis the `maxIter` stays constant, which simplifies Optionally, adjusting `maxIter` for every run (when the decomposition method or number of partitions alters) accordingly to the 2nd approach described above may be considered.
|
|
|
|
|
|
#### Methodology
|
|
|
**_Methodology_**
|
|
|
|
|
|
This section describes how the cases were set up. It serves for informative purposes only and is not a part of the microbenchmark.
|
|
|
|
... | ... | @@ -190,7 +190,7 @@ This section describes how the cases were set up. It serves for informative purp |
|
|
* Compute the sample size of time steps needed for 95% confidence level with 1% error and given $`dt_{wcAv}`$, $`dt_{wcStd}`$ according to this formula: $`n_{dt} = 1.96^2*dt_{wcStd}^2/(dt_{wcAv}*0.01)^2`$
|
|
|
* Several runs to evaluate $`n_{dt}`$ on both a workstation and on a HPC were performed. The highest $`n_{dt}`$ was found to be 13. Finally, it is set to 15 to be aligned with the _fixedTol_ setup.
|
|
|
|
|
|
#### General remarks
|
|
|
General remarks
|
|
|
|
|
|
* Fixing the iteration number per time step n_iter is not based on a fixed tolerance run up to the stationary state (t=1s), which may be argued to be the actual representative case. During the run with fixed tolerance, n_iter decreases and the average value n_iterAv of the complete run would be relatively low. If the same case is run with a fixed iteration number of n_iterAv, which is too low to achieve the needed convergence, the run might end in a failure.
|
|
|
* CFL number of 1 is too high for the cases to depict the start-up process of the flow correctly, which may be seen when mean Co of two cases with different mesh sizes is analyzed. Co=1 is chosen because this is closer to the industrial setups.
|
... | ... | |