Introduction
Introduction Statistics Contact Development Disclaimer Help
tset pressure ghost nodes before used to determine pressure gradient - sphere -…
git clone git://src.adamsgaard.dk/sphere
Log
Files
Refs
LICENSE
---
commit c1320ca03e314dc185fe2eb8ba8c9566b6006ab8
parent 0285d52a7249a194ceed526710d22e6a2c473c9a
Author: Anders Damsgaard <[email protected]>
Date: Thu, 5 Jun 2014 07:40:12 +0200
set pressure ghost nodes before used to determine pressure gradient
Diffstat:
M src/device.cu | 5 +++++
M src/navierstokes.cuh | 81 +++--------------------------…
2 files changed, 13 insertions(+), 73 deletions(-)
---
diff --git a/src/device.cu b/src/device.cu
t@@ -915,6 +915,11 @@ __host__ void DEM::startTime()
cudaThreadSynchronize();
checkForCudaErrorsIter("Post findFaceDivTau", iter);
+ setNSghostNodes<Float><<<dimGridFluid, dimBlockFluid>>>(
+ dev_ns_p, ns.bc_bot, ns.bc_top);
+ cudaThreadSynchronize();
+ checkForCudaErrorsIter("Post setNSghostNodes(dev_ns_p)", iter);
+
// Per particle, find the fluid-particle interaction force f_pf
// and apply it to the particle
findInteractionForce<<<dimGrid, dimBlock>>>(
diff --git a/src/navierstokes.cuh b/src/navierstokes.cuh
t@@ -2843,75 +2843,6 @@ __device__ Float dragCoefficient(Float re)
return cd;
}
-// Determine the fluid-particle interaction drag force per fluid unit volume
-// based on the Ergun (1952) equation for dense packed cells (phi <= 0.8), and
-// the Wen and Yu (1966) equation for dilate suspensions (phi > 0.8). Procedure
-// outlined in Shamy and Zeghal (2005) and Goniva et al (2010). Other
-// interaction forces, such as the pressure gradient in the flow field (pressu…
-// force), particle rotation (Magnus force), particle acceleration (virtual ma…
-// force) or a fluid velocity gradient leading to shear (Saffman force).
-/*__global__ void findInteractionForce(
- Float* dev_ns_phi, // in
- Float* dev_ns_d_avg, // in
- Float3* dev_ns_vp_avg, // in
- Float3* dev_ns_v, // in
- Float3* dev_ns_fi) // out
-{
- // 3D thread index
- const unsigned int x = blockDim.x * blockIdx.x + threadIdx.x;
- const unsigned int y = blockDim.y * blockIdx.y + threadIdx.y;
- const unsigned int z = blockDim.z * blockIdx.z + threadIdx.z;
-
- // Check that we are not outside the fluid grid
- if (x < devC_grid.num[0] && y < devC_grid.num[1] && z < devC_grid.num[2]) {
-
- const unsigned int cellidx = idx(x,y,z);
-
- __syncthreads();
- const Float phi = dev_ns_phi[cellidx];
- const Float3 vf_avg = dev_ns_v[cellidx];
-
- Float d_avg;
- Float3 vp_avg;
- if (phi < 0.999) {
- __syncthreads();
- d_avg = dev_ns_d_avg[cellidx];
- vp_avg = dev_ns_vp_avg[cellidx];
- } else { // cell is empty
- d_avg = 1.0; // some value different from 0
- vp_avg = vf_avg;
- }
-
- const Float3 v_rel = vf_avg - vp_avg;
- const Float v_rel_length = length(v_rel);
-
- const Float not_phi = 1.0 - phi;
- const Float re = (phi*devC_params.rho_f*d_avg)/devC_params.mu
- * v_rel_length;
- const Float cd = dragCoefficient(re);
-
- Float3 fi = MAKE_FLOAT3(0.0, 0.0, 0.0);
- if (v_rel_length > 0.0) {
- if (phi <= 0.8) // Ergun equation
- fi = (150.0*devC_params.mu*not_phi*not_phi/(phi*d_avg*d_avg)
- + 1.75*not_phi*devC_params.rho_f*v_rel_length/d_avg)
- *v_rel;
- else if (phi < 0.999) // Wen and Yu equation
- fi = (3.0/4.0*cd*not_phi*pow(phi,
- -2.65)*devC_params.mu*devC_params.rho_f
- *v_rel_length/d_avg)*v_rel;
- }
-
- __syncthreads();
- dev_ns_fi[cellidx] = fi;
- //dev_ns_fi[cellidx] = MAKE_FLOAT3(0.0, 0.0, 0.0);
-
-#ifdef CHECK_NS_FINITE
- checkFiniteFloat3("fi", x, y, z, fi);
-#endif
- }
-}*/
-
// Find particle-fluid interaction force as outlined by Zhou et al. 2010, and
// originally by Gidaspow 1992.
__global__ void findInteractionForce(
t@@ -3010,8 +2941,12 @@ __global__ void findInteractionForce(
const Float3 f_pf = f_d + f_p + f_v;
#ifdef CHECK_NS_FINITE
- //printf("%d [%d,%d,%d]\tV_p=%f Re=%f Cd=%f chi=%f\n",
- //i, i_x, i_y, i_z, V_p, Re, Cd, chi);
+ printf("%d [%d,%d,%d]\tV_p=%f Re=%f Cd=%f chi=%f\n"
+ " f_d=%f,%f,%f f_p=%f,%f,%f f_v=%f,%f,%f\n",
+ i, i_x, i_y, i_z, V_p, Re, Cd, chi,
+ f_d.x, f_d.y, f_d.z,
+ f_p.x, f_p.y, f_p.z,
+ f_v.x, f_v.y, f_v.z);
checkFiniteFloat3("f_d", i_x, i_y, i_z, f_d);
checkFiniteFloat3("f_p", i_x, i_y, i_z, f_p);
checkFiniteFloat3("f_v", i_x, i_y, i_z, f_v);
t@@ -3317,8 +3252,8 @@ __global__ void findFaceDivTau(
(v_z_zp - 2.0*v_z + v_z_zn)/(dz*dz));
__syncthreads();
- printf("div_tau [%d,%d,%d] = %f, %f, %f\n", x,y,z,
- div_tau_x, div_tau_y, div_tau_z);
+ //printf("div_tau [%d,%d,%d] = %f, %f, %f\n", x,y,z,
+ //div_tau_x, div_tau_y, div_tau_z);
dev_ns_div_tau_x[faceidx] = div_tau_x;
dev_ns_div_tau_y[faceidx] = div_tau_y;
dev_ns_div_tau_z[faceidx] = div_tau_z;
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.