Commit af9dd9ff authored by Andrea Cassinelli's avatar Andrea Cassinelli

Added documentation for phase sampling feature

parent 241b242d
......@@ -27,6 +27,39 @@ In the following we document the filters implemented. Note that some filters are
solver-specific and will therefore only work for a given subset of the available
\subsection{Phase sampling}
This feature is currently only supported for filters derived from the
FieldConvert filter: AverageFields, MovingAverage, ReynoldsStresses.
When analysing certain time-dependent problems, it might be of interest to
activate a filter in a specific physical phase and with a certain period
(for instance, to carry out phase averaging).
The simulation time can be written as
$t = m \mathcal{T} + n_{\mathcal{T}} \mathcal{T}$,
where $m$ is an integer representing the number of periods $\mathcal{T}$
elapsed, and $0 \leq n_{\mathcal{T}} \leq 1$ is the phase.
This feature can be activated by adding the two parameters below to the
filter of interest:
\textbf{Option name} & \textbf{Required} & \textbf{Default} &
\textbf{Description} \\
\inltt{PhaseAveragePeriod} & \cmark & &
Period $\mathcal{T}$\\
\inltt{PhaseAveragePhase} & \cmark & &
Phase $n_{\mathcal{T}}$.\\
Since this feature checks the current phase every \inltt{SampleFrequency},
for best results it is recommended to set \inltt{SampleFrequency}$=1$.
\subsection{FieldConvert checkpoints}
......@@ -111,20 +111,6 @@ FilterFieldConvert::FilterFieldConvert(
// (Derived classes need to override this if needed)
m_sampleFrequency = m_outputFrequency;
// If phase average is computed, m_sampleFrequency is the frequency
// used to check for sampling. In general it would be best to set it to 1.
// Phase average option
// it = pParams.find("PhaseAverage");
// if (it == pParams.end())
// {
// m_phaseAverage = false;
// }
// else
// {
// LibUtilities::Equation equ(
// m_session->GetExpressionEvaluator(), it->second);
// m_phaseAverage = round(equ.Evaluate());
// }
auto itPeriod = pParams.find("PhaseAveragePeriod");
auto itPhase = pParams.find("PhaseAveragePhase");
......@@ -139,11 +125,13 @@ FilterFieldConvert::FilterFieldConvert(
LibUtilities::Equation equPhase(
m_session->GetExpressionEvaluator(), itPhase->second);
m_phaseAveragePhase = equPhase.Evaluate();
// Check that phase is within required limits
// Error if only one of the required params for PhaseAverage is present
ASSERTL0((itPeriod != pParams.end() && itPhase != pParams.end()),
"The phase average feature requires both 'PhaseAveragePeriod' and "
"The phase sampling feature requires both 'PhaseAveragePeriod' and "
"'PhaseAveragePhase' to be set.");
m_numSamples = 0;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment