77 Time& runTime =
problem->_runTime();
78 volVectorField& U =
problem->_U();
79 volScalarField& p =
problem->pThermo().p();
80 volScalarField& E =
problem->pThermo().he();
81 pimpleControl& pimple =
problem->_pimple();
82 volScalarField _nut(
problem->turbulence->nut());
83 instantList Times = runTime.times();
84 runTime.setEndTime(finalTime);
85 runTime.setTime(Times[1], 1);
86 runTime.setDeltaT(timeStep);
87 nextWrite = startTime;
89 bool correctPhi =
problem->correctPhi;
90 bool checkMeshCourantNo =
problem->checkMeshCourantNo;
91 bool moveMeshOuterCorrectors =
problem->moveMeshOuterCorrectors;
92 scalar cumulativeContErr =
problem->cumulativeContErr;
93#include "HyperRedSolvers.H"
99 List<label>& uniqueMagicPoints,
100 Eigen::MatrixXd&
Modes)
102 dynamicFvMesh& mesh =
problem->meshPtr();
103 int s = uniqueMagicPoints.size();
105 int m =
Modes.cols();
110 for (
int k = 0; k < uniqueMagicPoints.size(); ++k)
112 int magicPoint = uniqueMagicPoints[k];
113 Eigen::SparseVector<double> vec = S.row(magicPoint);
114 Eigen::RowVectorXd tempB = Eigen::RowVectorXd::Zero(m);
116 for (Eigen::SparseVector<double>::InnerIterator it(vec); it; ++it)
118 tempB += it.value() *
Modes.row(it.index());
122 double volume = 1.0 / mesh.V()[magicPoint];
123 B.row(k) = tempB * volume;
124 b(k) = volume * se(magicPoint);
127 std::tuple<Eigen::MatrixXd, Eigen::VectorXd> HRSys;
128 HRSys = std::make_tuple(B, b);
std::tuple< Eigen::MatrixXd, Eigen::VectorXd > HyperReducedSys(Eigen::SparseMatrix< double > &S, Eigen::VectorXd &se, List< label > &MagicPoints, Eigen::MatrixXd &Modes)
It assembles the reduced oeprators using the modes.