Skip to content
Snippets Groups Projects
Commit d80e7ec9 authored by Soeren Peters's avatar Soeren Peters
Browse files

Fix scaling F to C for cpu and gpu.

parent 10d943ae
No related branches found
No related tags found
1 merge request!209Unified Refinement (CF and FC) for gpu and cpu.
...@@ -61,7 +61,9 @@ private: ...@@ -61,7 +61,9 @@ private:
real calcPressBNE(); real calcPressBNE();
void calcInterpolatedVelocity(real x, real y, real z,real& vx1, real& vx2, real& vx3) override; void calcInterpolatedVelocity(real x, real y, real z,real& vx1, real& vx2, real& vx3) override;
void calcInterpolatedShearStress(real x, real y, real z,real& tauxx, real& tauyy, real& tauzz,real& tauxy, real& tauxz, real& tauyz) override; void calcInterpolatedShearStress(real x, real y, real z,real& tauxx, real& tauyy, real& tauzz,real& tauxy, real& tauxz, real& tauyz) override;
void calcMoments(const real* const f, real omega, real& rho, real& vx1, real& vx2, real& vx3,
real& kxy, real& kyz, real& kxz, real& kxxMyy, real& kxxMzz);
void calcInterpolatedCoefficiets(const D3Q27ICell& icell, real omega, real eps_new) override;
void calcInterpolation(const D3Q27ICell& icell, real* icellC); void calcInterpolation(const D3Q27ICell& icell, real* icellC);
}; };
......
...@@ -167,10 +167,15 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible( ...@@ -167,10 +167,15 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible(
if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]); if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]);
readDistributionFromList(distribution, distFine, k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM); readDistributionFromList(distribution, distFine, k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM);
vf::lbm::calculateMomentsOnSourceNodes(distribution.f, omegaF, drho_MMP, vx1_MMP, vx2_MMP, vx3_MMP, vf::lbm::calculateMomentsOnSourceNodes(distribution.f, omegaF, drho_MMP, vx1_MMP, vx2_MMP, vx3_MMP,
kxyFromfcNEQ_MMP, kyzFromfcNEQ_MMP, kxzFromfcNEQ_MMP, kxxMyyFromfcNEQ_MMP, kxxMzzFromfcNEQ_MMP); kxyFromfcNEQ_MMP, kyzFromfcNEQ_MMP, kxzFromfcNEQ_MMP, kxxMyyFromfcNEQ_MMP, kxxMzzFromfcNEQ_MMP);
// calculateMomentsOnSourceNodes( distFine, omegaF,
// k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM, drho_MMP, vx1_MMP, vx2_MMP, vx3_MMP,
// kxyFromfcNEQ_MMP, kyzFromfcNEQ_MMP, kxzFromfcNEQ_MMP, kxxMyyFromfcNEQ_MMP, kxxMzzFromfcNEQ_MMP);
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// source node TSE = PMP // source node TSE = PMP
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -186,10 +191,14 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible( ...@@ -186,10 +191,14 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible(
if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]); if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]);
calculateMomentsOnSourceNodes( distFine, omegaF, readDistributionFromList(distribution, distFine, k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM);
k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM, drho_PMP, vx1_PMP, vx2_PMP, vx3_PMP, vf::lbm::calculateMomentsOnSourceNodes(distribution.f, omegaF, drho_PMP, vx1_PMP, vx2_PMP, vx3_PMP,
kxyFromfcNEQ_PMP, kyzFromfcNEQ_PMP, kxzFromfcNEQ_PMP, kxxMyyFromfcNEQ_PMP, kxxMzzFromfcNEQ_PMP); kxyFromfcNEQ_PMP, kyzFromfcNEQ_PMP, kxzFromfcNEQ_PMP, kxxMyyFromfcNEQ_PMP, kxxMzzFromfcNEQ_PMP);
// calculateMomentsOnSourceNodes( distFine, omegaF,
// k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM, drho_PMP, vx1_PMP, vx2_PMP, vx3_PMP,
// kxyFromfcNEQ_PMP, kyzFromfcNEQ_PMP, kxzFromfcNEQ_PMP, kxxMyyFromfcNEQ_PMP, kxxMzzFromfcNEQ_PMP);
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// source node BSE = PMM // source node BSE = PMM
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -205,10 +214,14 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible( ...@@ -205,10 +214,14 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible(
if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]); if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]);
calculateMomentsOnSourceNodes( distFine, omegaF, readDistributionFromList(distribution, distFine, k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM);
k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM, drho_PMM, vx1_PMM, vx2_PMM, vx3_PMM, vf::lbm::calculateMomentsOnSourceNodes(distribution.f, omegaF, drho_PMM, vx1_PMM, vx2_PMM, vx3_PMM,
kxyFromfcNEQ_PMM, kyzFromfcNEQ_PMM, kxzFromfcNEQ_PMM, kxxMyyFromfcNEQ_PMM, kxxMzzFromfcNEQ_PMM); kxyFromfcNEQ_PMM, kyzFromfcNEQ_PMM, kxzFromfcNEQ_PMM, kxxMyyFromfcNEQ_PMM, kxxMzzFromfcNEQ_PMM);
// calculateMomentsOnSourceNodes( distFine, omegaF,
// k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM, drho_PMM, vx1_PMM, vx2_PMM, vx3_PMM,
// kxyFromfcNEQ_PMM, kyzFromfcNEQ_PMM, kxzFromfcNEQ_PMM, kxxMyyFromfcNEQ_PMM, kxxMzzFromfcNEQ_PMM);
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// source node BNW = MPM // source node BNW = MPM
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -234,10 +247,14 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible( ...@@ -234,10 +247,14 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible(
if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]); if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]);
calculateMomentsOnSourceNodes( distFine, omegaF, readDistributionFromList(distribution, distFine, k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM);
k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM, drho_MPM, vx1_MPM, vx2_MPM, vx3_MPM, vf::lbm::calculateMomentsOnSourceNodes(distribution.f, omegaF, drho_MPM, vx1_MPM, vx2_MPM, vx3_MPM,
kxyFromfcNEQ_MPM, kyzFromfcNEQ_MPM, kxzFromfcNEQ_MPM, kxxMyyFromfcNEQ_MPM, kxxMzzFromfcNEQ_MPM); kxyFromfcNEQ_MPM, kyzFromfcNEQ_MPM, kxzFromfcNEQ_MPM, kxxMyyFromfcNEQ_MPM, kxxMzzFromfcNEQ_MPM);
// calculateMomentsOnSourceNodes( distFine, omegaF,
// k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM, drho_MPM, vx1_MPM, vx2_MPM, vx3_MPM,
// kxyFromfcNEQ_MPM, kyzFromfcNEQ_MPM, kxzFromfcNEQ_MPM, kxxMyyFromfcNEQ_MPM, kxxMzzFromfcNEQ_MPM);
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// source node TNW = MPP // source node TNW = MPP
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -252,10 +269,14 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible( ...@@ -252,10 +269,14 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible(
k_MMM = neighborZfine[k_MMM]; k_MMM = neighborZfine[k_MMM];
if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]); if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]);
calculateMomentsOnSourceNodes( distFine, omegaF, readDistributionFromList(distribution, distFine, k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM);
k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM, drho_MPP, vx1_MPP, vx2_MPP, vx3_MPP, vf::lbm::calculateMomentsOnSourceNodes(distribution.f, omegaF, drho_MPP, vx1_MPP, vx2_MPP, vx3_MPP,
kxyFromfcNEQ_MPP, kyzFromfcNEQ_MPP, kxzFromfcNEQ_MPP, kxxMyyFromfcNEQ_MPP, kxxMzzFromfcNEQ_MPP); kxyFromfcNEQ_MPP, kyzFromfcNEQ_MPP, kxzFromfcNEQ_MPP, kxxMyyFromfcNEQ_MPP, kxxMzzFromfcNEQ_MPP);
// calculateMomentsOnSourceNodes( distFine, omegaF,
// k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM, drho_MPP, vx1_MPP, vx2_MPP, vx3_MPP,
// kxyFromfcNEQ_MPP, kyzFromfcNEQ_MPP, kxzFromfcNEQ_MPP, kxxMyyFromfcNEQ_MPP, kxxMzzFromfcNEQ_MPP);
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// source node TNE = PPP // source node TNE = PPP
...@@ -272,10 +293,15 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible( ...@@ -272,10 +293,15 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible(
if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]); if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]);
calculateMomentsOnSourceNodes( distFine, omegaF,
k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM, drho_PPP, vx1_PPP, vx2_PPP, vx3_PPP, readDistributionFromList(distribution, distFine, k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM);
vf::lbm::calculateMomentsOnSourceNodes(distribution.f, omegaF, drho_PPP, vx1_PPP, vx2_PPP, vx3_PPP,
kxyFromfcNEQ_PPP, kyzFromfcNEQ_PPP, kxzFromfcNEQ_PPP, kxxMyyFromfcNEQ_PPP, kxxMzzFromfcNEQ_PPP); kxyFromfcNEQ_PPP, kyzFromfcNEQ_PPP, kxzFromfcNEQ_PPP, kxxMyyFromfcNEQ_PPP, kxxMzzFromfcNEQ_PPP);
// calculateMomentsOnSourceNodes( distFine, omegaF,
// k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM, drho_PPP, vx1_PPP, vx2_PPP, vx3_PPP,
// kxyFromfcNEQ_PPP, kyzFromfcNEQ_PPP, kxzFromfcNEQ_PPP, kxxMyyFromfcNEQ_PPP, kxxMzzFromfcNEQ_PPP);
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// source node BNE = PPM // source node BNE = PPM
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -291,10 +317,15 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible( ...@@ -291,10 +317,15 @@ template<bool hasTurbulentViscosity> __global__ void scaleFC_compressible(
if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]); if(hasTurbulentViscosity) omegaF = omegaFine/ (c1o1 + c3o1*omegaFine*turbulentViscosityFine[k_000]);
calculateMomentsOnSourceNodes( distFine, omegaF,
k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM, drho_PPM, vx1_PPM, vx2_PPM, vx3_PPM, readDistributionFromList(distribution, distFine, k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM);
vf::lbm::calculateMomentsOnSourceNodes(distribution.f, omegaF, drho_PPM, vx1_PPM, vx2_PPM, vx3_PPM,
kxyFromfcNEQ_PPM, kyzFromfcNEQ_PPM, kxzFromfcNEQ_PPM, kxxMyyFromfcNEQ_PPM, kxxMzzFromfcNEQ_PPM); kxyFromfcNEQ_PPM, kyzFromfcNEQ_PPM, kxzFromfcNEQ_PPM, kxxMyyFromfcNEQ_PPM, kxxMzzFromfcNEQ_PPM);
// calculateMomentsOnSourceNodes( distFine, omegaF,
// k_000, k_M00, k_0M0, k_00M, k_MM0, k_M0M, k_0MM, k_MMM, drho_PPM, vx1_PPM, vx2_PPM, vx3_PPM,
// kxyFromfcNEQ_PPM, kyzFromfcNEQ_PPM, kxzFromfcNEQ_PPM, kxxMyyFromfcNEQ_PPM, kxxMzzFromfcNEQ_PPM);
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
//! - Set the relative position of the offset cell {-1, 0, 1} //! - Set the relative position of the offset cell {-1, 0, 1}
......
...@@ -51,33 +51,33 @@ __device__ __inline__ void readDistributionFromList(vf::lbm::Distribution27 &dis ...@@ -51,33 +51,33 @@ __device__ __inline__ void readDistributionFromList(vf::lbm::Distribution27 &dis
unsigned int &k_MM0, unsigned int &k_M0M, unsigned int &k_0MM, unsigned int &k_MM0, unsigned int &k_M0M, unsigned int &k_0MM,
unsigned int &k_MMM) unsigned int &k_MMM)
{ {
distribution.f[vf::lbm::dir::PZZ] = (dist.f[DIR_000])[k_000]; distribution.f[DIR_000] = (dist.f[DIR_000])[k_000];
distribution.f[vf::lbm::dir::MZZ] = (dist.f[DIR_P00])[k_000]; distribution.f[DIR_P00] = (dist.f[DIR_P00])[k_000];
distribution.f[vf::lbm::dir::ZPZ] = (dist.f[DIR_M00])[k_M00]; distribution.f[DIR_M00] = (dist.f[DIR_M00])[k_M00];
distribution.f[vf::lbm::dir::ZMZ] = (dist.f[DIR_0P0])[k_000]; distribution.f[DIR_0P0] = (dist.f[DIR_0P0])[k_000];
distribution.f[vf::lbm::dir::ZZP] = (dist.f[DIR_0M0])[k_0M0]; distribution.f[DIR_0M0] = (dist.f[DIR_0M0])[k_0M0];
distribution.f[vf::lbm::dir::ZZM] = (dist.f[DIR_00P])[k_000]; distribution.f[DIR_00P] = (dist.f[DIR_00P])[k_000];
distribution.f[vf::lbm::dir::PPZ] = (dist.f[DIR_00M])[k_00M]; distribution.f[DIR_00M] = (dist.f[DIR_00M])[k_00M];
distribution.f[vf::lbm::dir::MMZ] = (dist.f[DIR_PP0])[k_000]; distribution.f[DIR_PP0] = (dist.f[DIR_PP0])[k_000];
distribution.f[vf::lbm::dir::PMZ] = (dist.f[DIR_MM0])[k_MM0]; distribution.f[DIR_MM0] = (dist.f[DIR_MM0])[k_MM0];
distribution.f[vf::lbm::dir::MPZ] = (dist.f[DIR_PM0])[k_0M0]; distribution.f[DIR_PM0] = (dist.f[DIR_PM0])[k_0M0];
distribution.f[vf::lbm::dir::PZP] = (dist.f[DIR_MP0])[k_M00]; distribution.f[DIR_MP0] = (dist.f[DIR_MP0])[k_M00];
distribution.f[vf::lbm::dir::MZM] = (dist.f[DIR_P0P])[k_000]; distribution.f[DIR_P0P] = (dist.f[DIR_P0P])[k_000];
distribution.f[vf::lbm::dir::PZM] = (dist.f[DIR_M0M])[k_M0M]; distribution.f[DIR_M0M] = (dist.f[DIR_M0M])[k_M0M];
distribution.f[vf::lbm::dir::MZP] = (dist.f[DIR_P0M])[k_00M]; distribution.f[DIR_P0M] = (dist.f[DIR_P0M])[k_00M];
distribution.f[vf::lbm::dir::ZPP] = (dist.f[DIR_M0P])[k_M00]; distribution.f[DIR_M0P] = (dist.f[DIR_M0P])[k_M00];
distribution.f[vf::lbm::dir::ZMM] = (dist.f[DIR_0PP])[k_000]; distribution.f[DIR_0PP] = (dist.f[DIR_0PP])[k_000];
distribution.f[vf::lbm::dir::ZPM] = (dist.f[DIR_0MM])[k_0MM]; distribution.f[DIR_0MM] = (dist.f[DIR_0MM])[k_0MM];
distribution.f[vf::lbm::dir::ZMP] = (dist.f[DIR_0PM])[k_00M]; distribution.f[DIR_0PM] = (dist.f[DIR_0PM])[k_00M];
distribution.f[vf::lbm::dir::PPP] = (dist.f[DIR_0MP])[k_0M0]; distribution.f[DIR_0MP] = (dist.f[DIR_0MP])[k_0M0];
distribution.f[vf::lbm::dir::MPP] = (dist.f[DIR_PPP])[k_000]; distribution.f[DIR_PPP] = (dist.f[DIR_PPP])[k_000];
distribution.f[vf::lbm::dir::PMP] = (dist.f[DIR_MPP])[k_M00]; distribution.f[DIR_MPP] = (dist.f[DIR_MPP])[k_M00];
distribution.f[vf::lbm::dir::MMP] = (dist.f[DIR_PMP])[k_0M0]; distribution.f[DIR_PMP] = (dist.f[DIR_PMP])[k_0M0];
distribution.f[vf::lbm::dir::PPM] = (dist.f[DIR_MMP])[k_MM0]; distribution.f[DIR_MMP] = (dist.f[DIR_MMP])[k_MM0];
distribution.f[vf::lbm::dir::MPM] = (dist.f[DIR_PPM])[k_00M]; distribution.f[DIR_PPM] = (dist.f[DIR_PPM])[k_00M];
distribution.f[vf::lbm::dir::PMM] = (dist.f[DIR_MPM])[k_M0M]; distribution.f[DIR_MPM] = (dist.f[DIR_MPM])[k_M0M];
distribution.f[vf::lbm::dir::MMM] = (dist.f[DIR_PMM])[k_0MM]; distribution.f[DIR_PMM] = (dist.f[DIR_PMM])[k_0MM];
distribution.f[vf::lbm::dir::ZZZ] = (dist.f[DIR_MMM])[k_MMM]; distribution.f[DIR_MMM] = (dist.f[DIR_MMM])[k_MMM];
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment