本文整理汇总了C++中TestCase::EvaluateRayleighStrength方法的典型用法代码示例。如果您正苦于以下问题:C++ TestCase::EvaluateRayleighStrength方法的具体用法?C++ TestCase::EvaluateRayleighStrength怎么用?C++ TestCase::EvaluateRayleighStrength使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TestCase
的用法示例。
在下文中一共展示了TestCase::EvaluateRayleighStrength方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: EvaluateTestCase
void GridPatchCartesianGLL::EvaluateTestCase(
const TestCase & test,
const Time & time,
int iDataIndex
) {
// Initialize the data at each node
if (m_datavecStateNode.size() == 0) {
_EXCEPTIONT("InitializeData must be called before InitialConditions");
}
if (iDataIndex >= m_datavecStateNode.size()) {
_EXCEPTIONT("Invalid iDataIndex (out of range)");
}
// Check dimensionality
if ((m_grid.GetModel().GetEquationSet().GetDimensionality() == 2) &&
(m_nVerticalOrder != 1)
) {
_EXCEPTIONT("VerticalOrder / Dimensionality mismatch:\n"
"For 2D problems vertical order must be 1.");
}
// Evaluate topography
EvaluateTopography(test);
// Physical constants
const PhysicalConstants & phys = m_grid.GetModel().GetPhysicalConstants();
// Initialize the topography at each node
for (int i = 0; i < m_box.GetATotalWidth(); i++) {
for (int j = 0; j < m_box.GetBTotalWidth(); j++) {
m_dataTopography[i][j] =
test.EvaluateTopography(
phys,
m_dataLon[i][j],
m_dataLat[i][j]);
if (m_dataTopography[i][j] >= m_grid.GetZtop()) {
_EXCEPTIONT("TestCase topography exceeds model top.");
}
// Gal-Chen and Sommerville vertical coordinate
for (int k = 0; k < m_grid.GetRElements(); k++) {
m_dataZLevels[k][i][j] =
m_dataTopography[i][j]
+ m_grid.GetREtaLevel(k)
* (m_grid.GetZtop() - m_dataTopography[i][j]);
}
for (int k = 0; k <= m_grid.GetRElements(); k++) {
m_dataZInterfaces[k][i][j] =
m_dataTopography[i][j]
+ m_grid.GetREtaInterface(k)
* (m_grid.GetZtop() - m_dataTopography[i][j]);
}
/*
// Schar Exponential Decay vertical coordinate
for (int k = 0; k < m_grid.GetRElements(); k++) {
m_dataZLevels[k][i][j] = m_grid.GetZtop() * m_grid.GetREtaLevel(k) +
m_dataTopography[i][j] * sinh(m_grid.GetZtop() * (1.0 - m_grid.GetREtaLevel(k)) / m_dSL) /
sinh(m_grid.GetZtop() / m_dSL);
}
for (int k = 0; k <= m_grid.GetRElements(); k++) {
m_dataZInterfaces[k][i][j] = m_grid.GetZtop() * m_grid.GetREtaInterface(k) +
m_dataTopography[i][j] * sinh(m_grid.GetZtop() * (1.0 - m_grid.GetREtaInterface(k)) / m_dSL) /
sinh(m_grid.GetZtop() / m_dSL);
}
*/
}
}
// Initialize the Rayleigh friction strength at each node
if (test.HasRayleighFriction()) {
for (int i = 0; i < m_box.GetATotalWidth(); i++) {
for (int j = 0; j < m_box.GetBTotalWidth(); j++) {
for (int k = 0; k < m_grid.GetRElements(); k++) {
m_dataRayleighStrengthNode[k][i][j] =
test.EvaluateRayleighStrength(
m_dataZLevels[k][i][j],
m_dataLon[i][j],
m_dataLat[i][j]);
}
for (int k = 0; k < m_grid.GetRElements(); k++) {
m_dataRayleighStrengthREdge[k][i][j] =
test.EvaluateRayleighStrength(
m_dataZInterfaces[k][i][j],
m_dataLon[i][j],
m_dataLat[i][j]);
}
}
}
}
// Buffer vector for storing pointwise states
const EquationSet & eqns = m_grid.GetModel().GetEquationSet();
int nComponents = eqns.GetComponents();
int nTracers = eqns.GetTracers();
DataVector<double> dPointwiseState;
dPointwiseState.Initialize(nComponents);
//.........这里部分代码省略.........