Commit 150f2ca0 authored by Daniele de Grazia's avatar Daniele de Grazia Committed by Dave Moxey

Modification for Euler 1D

(cherry picked from commit 24f1d307)
parent 489da6e0
......@@ -181,9 +181,13 @@ namespace Nektar
switch (normals.num_elements())
{
case 1:
// do nothing
{ // do nothing
const int nq = inarray[0].num_elements();
const int vx = (int)vecLocs[i][0];
Vmath::Vmul (nq, inarray [vx], 1, normals [0], 1,
outarray[vx], 1);
break;
}
case 2:
{
const int nq = inarray[0].num_elements();
......@@ -268,9 +272,13 @@ namespace Nektar
switch (normals.num_elements())
{
case 1:
// do nothing
{ // do nothing
const int nq = normals[0].num_elements();
const int vx = (int)vecLocs[i][0];
Vmath::Vmul (nq, inarray [vx], 1, normals [0], 1,
outarray[vx], 1);
break;
}
case 2:
{
const int nq = normals[0].num_elements();
......
......@@ -33,7 +33,9 @@
//
///////////////////////////////////////////////////////////////////////////////
#include <StdRegions/StdSegExp.h>
#include <StdRegions/StdSegExp.h>
#include <LibUtilities/Foundations/InterpCoeff.h>
using namespace std;
......@@ -260,7 +262,52 @@ namespace Nektar
* \param inarray: array of physical quadrature points to be transformed
*
* \param outarray: the coeffficients of the expansion
*/
*/
void StdSegExp::v_ReduceOrderCoeffs(
int numMin,
const Array<OneD, const NekDouble> &inarray,
Array<OneD, NekDouble> &outarray)
{
int n_coeffs = inarray.num_elements();
Array<OneD, NekDouble> coeff(n_coeffs);
Array<OneD, NekDouble> coeff_tmp(n_coeffs,0.0);
Array<OneD, NekDouble> tmp;
Array<OneD, NekDouble> tmp2;
int nmodes0 = m_base[0]->GetNumModes();
int numMax = nmodes0;
Vmath::Vcopy(n_coeffs,inarray,1,coeff_tmp,1);
const LibUtilities::PointsKey Pkey0(
nmodes0, LibUtilities::eGaussLobattoLegendre);
LibUtilities::BasisKey b0(m_base[0]->GetBasisType(),nmodes0,Pkey0);
LibUtilities::BasisKey bortho0(LibUtilities::eOrtho_A,nmodes0,Pkey0);
LibUtilities::InterpCoeff1D(
b0, coeff_tmp, bortho0, coeff);
Vmath::Zero(n_coeffs,coeff_tmp,1);
int cnt = 0;
for (int i = 0; i < numMin+1; ++i)
{
Vmath::Vcopy(numMin,
tmp = coeff+cnt,1,
tmp2 = coeff_tmp+cnt,1);
cnt = i*numMax;
}
LibUtilities::InterpCoeff1D(
bortho0, coeff_tmp, b0, outarray);
}
void StdSegExp::v_FwdTrans(const Array<OneD, const NekDouble>& inarray,
Array<OneD, NekDouble> &outarray)
......
......@@ -215,6 +215,15 @@ namespace Nektar
STD_REGIONS_EXPORT virtual DNekMatSharedPtr v_CreateStdMatrix(
const StdMatrixKey &mkey);
//---------------------------------------
// Operator evaluation functions
//---------------------------------------
STD_REGIONS_EXPORT virtual void v_ReduceOrderCoeffs(
int numMin,
const Array<OneD, const NekDouble> &inarray,
Array<OneD, NekDouble> &outarray);
private:
};
......
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