tuse correct face index function for writing face velocities - sphere - GPU-based 3D discrete element method algorithm with optional fluid coupling
(HTM) git clone git://src.adamsgaard.dk/sphere
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit 4df908f08d8b32257ec0e176f7a620382d798e98
(DIR) parent e07f904c139196389023592dc85028e8cd657a3b
(HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Sat, 28 Jun 2014 14:56:31 +0200
use correct face index function for writing face velocities
Diffstat:
M src/file_io.cpp | 6 +++---
M src/navierstokes.cpp | 2 +-
M src/navierstokes.cuh | 15 +++++++++------
3 files changed, 13 insertions(+), 10 deletions(-)
---
(DIR) diff --git a/src/file_io.cpp b/src/file_io.cpp
t@@ -471,9 +471,9 @@ void DEM::writebin(const char *target)
//ofs.write(as_bytes(ns.v[i].x), sizeof(Float));
//ofs.write(as_bytes(ns.v[i].y), sizeof(Float));
//ofs.write(as_bytes(ns.v[i].z), sizeof(Float));
- ofs.write(as_bytes(ns.v_x[i]), sizeof(Float));
- ofs.write(as_bytes(ns.v_y[i]), sizeof(Float));
- ofs.write(as_bytes(ns.v_z[i]), sizeof(Float));
+ ofs.write(as_bytes(ns.v_x[vidx(x,y,z)]), sizeof(Float));
+ ofs.write(as_bytes(ns.v_y[vidx(x,y,z)]), sizeof(Float));
+ ofs.write(as_bytes(ns.v_z[vidx(x,y,z)]), sizeof(Float));
ofs.write(as_bytes(ns.p[i]), sizeof(Float));
ofs.write(as_bytes(ns.phi[i]), sizeof(Float));
ofs.write(as_bytes(ns.dphi[i]), sizeof(Float));
(DIR) diff --git a/src/navierstokes.cpp b/src/navierstokes.cpp
t@@ -21,7 +21,7 @@ void DEM::initNSmem()
ns.ny = grid.num[1];
ns.nz = grid.num[2];
unsigned int ncells = NScells();
- //unsigned int ncells_st = NScellsVelocity();
+ unsigned int ncells_st = NScellsVelocity();
ns.p = new Float[ncells]; // hydraulic pressure
ns.v = new Float3[ncells]; // hydraulic velocity
(DIR) diff --git a/src/navierstokes.cuh b/src/navierstokes.cuh
t@@ -2291,15 +2291,15 @@ __global__ void findPredNSvelocities(
//// Neumann BCs
// Free slip
- if ((z == 0 && bc_bot == 1) || (z == nz-1 && bc_top == 1))
- v_p.z = v.z;
+ /*if ((z == 0 && bc_bot == 1) || (z == nz-1 && bc_top == 1))
+ v_p.z = v.z;*/
// No slip
- if ((z == 0 && bc_bot == 2) || (z == nz-1 && bc_top == 2)) {
+ /*if ((z == 0 && bc_bot == 2) || (z == nz-1 && bc_top == 2)) {
v_p.x = 0.0;
v_p.y = 0.0;
v_p.z = 0.0;
- }
+ }*/
#ifdef REPORT_V_P_COMPONENTS
t@@ -2830,8 +2830,11 @@ __global__ void updateNSvelocity(
e_down);
}*/
- //if ((z == 0 && bc_bot == 1) || (z == nz-1 && bc_top == 1))
- //v.z = 0.0;
+ if ((z == 0 && bc_bot == 1) || (z == nz-1 && bc_top == 1))
+ v.z = 0.0;
+
+ if ((z == 0 && bc_bot == 2) || (z == nz-1 && bc_top == 2))
+ v = MAKE_FLOAT3(0.0, 0.0, 0.0);
// Check the advection term using the Courant-Friedrichs-Lewy condition
if (v.x*ndem*devC_dt/dx