本文整理汇总了C++中fsi::vector::array方法的典型用法代码示例。如果您正苦于以下问题:C++ vector::array方法的具体用法?C++ vector::array怎么用?C++ vector::array使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类fsi::vector
的用法示例。
在下文中一共展示了vector::array方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getSourceTerm
void ESDIRK::getSourceTerm(
const bool /*corrector*/,
const int k,
const int /*sweep*/,
const scalar deltaT,
fsi::vector & rhs,
fsi::vector & qold
)
{
assert( k <= nbStages - 1 );
qold = this->qold;
// Compute the time step from the stage deltaT
if ( dt < 0 )
{
// first time step, first prediction step
dt = deltaT / A( k, k );
}
assert( dt > 0 );
rhs.setZero();
// Calculate sum of the stage residuals
for ( int iStage = 0; iStage < k; iStage++ )
rhs += A( k, iStage ) * F.row( iStage ).transpose();
rhs.array() *= dt;
this->stageIndex = k;
}
示例2: solve
void TubeFlowLinearizedFluidSolver::solve(
const fsi::vector & a,
fsi::vector & p
)
{
this->a = a.array() - a0;
std::cout << "Solve fluid domain" << std::endl;
// Construct right hand size of linear system
fsi::vector b( 2 * N ), x( 2 * N );
b.setZero();
for ( int i = 1; i < N - 1; i++ )
{
// Continuity equation rhs
b( i ) = dx / dt * ( an( i ) - this->a( i ) );
b( i ) += 0.5 * u0 * ( this->a( i - 1 ) - this->a( i + 1 ) );
// Momentum equation rhs
b( i + N ) = u0 * dx / dt * ( an( i ) - this->a( i ) );
b( i + N ) += 0.5 * u0 * u0 * ( this->a( i - 1 ) - this->a( i + 1 ) );
b( i + N ) += a0 * dx / dt * un( i );
}
// Boundary conditions
// Velocity inlet condition
b( 0 ) = u0 / 10.0 * std::pow( std::sin( M_PI * timeIndex * tau ), 2 );
// Pressure inlet
b( N ) = 0;
// Velocity outlet condition
b( N - 1 ) = 0;
// Pressure outlet condition
b( 2 * N - 1 ) = -cmk * rho * un( N - 1 ) + pn( N - 1 );
// Solve for x
x = lu.solve( b );
// Retrieve solution
u = x.head( N );
this->p = x.tail( N );
// Return pressure p
p = this->p.array() + p0;
data.col( 0 ) = p;
}