44 namespace MultiRegions
52 "FullLinearSpaceWithLowEnergyBlock",
54 "Full Linear space and low energy block preconditioning");
64 const boost::shared_ptr<GlobalLinSys> &plinsys,
83 Array<OneD, NekDouble>& pInOut,
93 Array<OneD, NekDouble>& pInput)
121 const Array<OneD, NekDouble>& pInput,
122 Array<OneD, NekDouble>& pOutput)
124 int nGlobal = pInput.num_elements();
126 Array<OneD, NekDouble> OutputLowEnergy(nGlobal, 0.0);
127 Array<OneD, NekDouble> tmp(nGlobal, 0.0);
128 Array<OneD, NekDouble> OutputLinear(nGlobal, 0.0);
129 Array<OneD, NekDouble> InputLinear(nGlobal, 0.0);
138 m_linSpacePrecon->DoPreconditionerWithNonVertOutput(InputLinear, OutputLinear, tmp);
140 m_lowEnergyPrecon->DoMultiplybyInverseTransposedTransformationMatrix(OutputLinear,pOutput);
142 Vmath::Vadd(nGlobal,pOutput,1,OutputLowEnergy,1,pOutput,1);