trename wall shear stress from tau to tau_x - 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 cbdda5df5cf0c5d7ce15213aa4591a78737b6b4e
(DIR) parent 3c5a8efe14ab698d5695f0ec74d9f0e5074cfdd6
(HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
Date: Wed, 14 Jan 2015 12:22:46 +0100
rename wall shear stress from tau to tau_x
Diffstat:
M python/sphere.py | 12 +++++-------
M src/datatypes.h | 2 +-
M src/device.cu | 7 +++++++
M src/file_io.cpp | 6 +++---
M src/sphere.h | 1 +
5 files changed, 17 insertions(+), 11 deletions(-)
---
(DIR) diff --git a/python/sphere.py b/python/sphere.py
t@@ -251,7 +251,7 @@ class sim:
self.w_sigma0_f = numpy.zeros(1, dtype=numpy.float64)
# Wall shear stress, enforced when wmode == 3
- self.w_tau = numpy.zeros(1, dtype=numpy.float64)
+ self.w_tau_x = numpy.zeros(1, dtype=numpy.float64)
## Bond parameters
# Radius multiplier to the parallel-bond radii
t@@ -564,7 +564,7 @@ class sim:
elif (self.w_sigma0_f != other.w_sigma0_f):
print(52)
return 52
- elif (self.w_tau != other.w_tau):
+ elif (self.w_tau_x != other.w_tau_x):
print(52.5)
return 52.5
elif (self.gamma_wn != other.gamma_wn):
t@@ -1041,7 +1041,7 @@ class sim:
self.w_sigma0_A = numpy.fromfile(fh, dtype=numpy.float64, count=1)
self.w_sigma0_f = numpy.fromfile(fh, dtype=numpy.float64, count=1)
if self.version >= 2.1:
- self.w_tau = numpy.fromfile(fh, dtype=numpy.float64, count=1)
+ self.w_tau_x = numpy.fromfile(fh, dtype=numpy.float64, count=1)
if bonds:
# Inter-particle bonds
t@@ -1330,7 +1330,7 @@ class sim:
fh.write(self.w_sigma0[i].astype(numpy.float64))
fh.write(self.w_sigma0_A.astype(numpy.float64))
fh.write(self.w_sigma0_f.astype(numpy.float64))
- fh.write(self.w_tau.astype(numpy.float64))
+ fh.write(self.w_tau_x.astype(numpy.float64))
fh.write(self.lambda_bar.astype(numpy.float64))
fh.write(self.nb0.astype(numpy.uint32))
t@@ -5349,15 +5349,13 @@ class sim:
def shearStress(self):
'''
Calculates the sum of shear stress values measured on any moving
- particles.
+ particles with a finite and fixed velocity.
:returns: The shear stress in Pa
:return type: numpy.array
'''
fixvel = numpy.nonzero(self.fixvel > 0.0)
- shearvel = self.shearVel()
-
force = numpy.zeros(3)
# Summation of shear stress contributions
(DIR) diff --git a/src/datatypes.h b/src/datatypes.h
t@@ -104,7 +104,7 @@ struct Walls {
int wmode[MAXWALLS]; // Wall modes
Float4* nx; // Wall normal and position
Float4* mvfd; // Wall mass, velocity, force and normal stress
- Float* tau; // Wall shear stress
+ Float* tau_x; // Wall shear stress
};
// Structures containing fluid parameters
(DIR) diff --git a/src/device.cu b/src/device.cu
t@@ -16,6 +16,7 @@
#include "utility.h"
#include "constants.cuh"
#include "debug.h"
+#include "version.h"
#include "sorting.cuh"
#include "contactmodels.cuh"
t@@ -380,6 +381,7 @@ __host__ void DEM::allocateGlobalDeviceMemory(void)
cudaMalloc((void**)&dev_walls_wmode, sizeof(int)*walls.nw);
cudaMalloc((void**)&dev_walls_nx, sizeof(Float4)*walls.nw);
cudaMalloc((void**)&dev_walls_mvfd, sizeof(Float4)*walls.nw);
+ cudaMalloc((void**)&dev_walls_tau_x, sizeof(Float)*walls.nw);
cudaMalloc((void**)&dev_walls_force_pp, sizeof(Float)*walls.nw*np);
cudaMalloc((void**)&dev_walls_acc, sizeof(Float)*walls.nw);
// dev_walls_force_partial allocated later
t@@ -545,6 +547,7 @@ __host__ void DEM::freeGlobalDeviceMemory()
// Wall arrays
cudaFree(dev_walls_nx);
cudaFree(dev_walls_mvfd);
+ cudaFree(dev_walls_tau_x);
cudaFree(dev_walls_force_partial);
cudaFree(dev_walls_force_pp);
cudaFree(dev_walls_acc);
t@@ -631,6 +634,8 @@ __host__ void DEM::transferToGlobalDeviceMemory(int statusmsg)
sizeof(Float4)*walls.nw, cudaMemcpyHostToDevice);
cudaMemcpy( dev_walls_mvfd, walls.mvfd,
sizeof(Float4)*walls.nw, cudaMemcpyHostToDevice);
+ cudaMemcpy( dev_walls_tau_x, walls.tau_x,
+ sizeof(Float)*walls.nw, cudaMemcpyHostToDevice);
// Fluid arrays
if (fluid == 1) {
t@@ -711,6 +716,8 @@ __host__ void DEM::transferFromGlobalDeviceMemory()
sizeof(Float4)*walls.nw, cudaMemcpyDeviceToHost);
cudaMemcpy( walls.mvfd, dev_walls_mvfd,
sizeof(Float4)*walls.nw, cudaMemcpyDeviceToHost);
+ cudaMemcpy( walls.tau_x, dev_walls_tau_x,
+ sizeof(Float)*walls.nw, cudaMemcpyDeviceToHost);
// Fluid arrays
if (fluid == 1 && cfd_solver == 0) {
(DIR) diff --git a/src/file_io.cpp b/src/file_io.cpp
t@@ -202,7 +202,7 @@ void DEM::readbin(const char *target)
// Wall mass (x), velocity (y), force (z), and deviatoric stress (w)
walls.nx = new Float4[walls.nw];
walls.mvfd = new Float4[walls.nw];
- walls.tau = new Float[walls.nw];
+ walls.tau_x = new Float[walls.nw];
for (i = 0; i<walls.nw; ++i)
ifs.read(as_bytes(walls.wmode[i]), sizeof(walls.wmode[i]));
t@@ -220,7 +220,7 @@ void DEM::readbin(const char *target)
}
ifs.read(as_bytes(params.sigma0_A), sizeof(params.sigma0_A));
ifs.read(as_bytes(params.sigma0_f), sizeof(params.sigma0_f));
- ifs.read(as_bytes(walls.tau), sizeof(walls.tau));
+ ifs.read(as_bytes(walls.tau_x), sizeof(walls.tau_x));
// Read bond parameters
ifs.read(as_bytes(params.lambda_bar), sizeof(params.lambda_bar));
t@@ -522,7 +522,7 @@ void DEM::writebin(const char *target)
}
ofs.write(as_bytes(params.sigma0_A), sizeof(params.sigma0_A));
ofs.write(as_bytes(params.sigma0_f), sizeof(params.sigma0_f));
- ofs.write(as_bytes(walls.tau), sizeof(walls.tau));
+ ofs.write(as_bytes(walls.tau_x), sizeof(walls.tau_x));
// Write bond parameters
ofs.write(as_bytes(params.lambda_bar), sizeof(params.lambda_bar));
(DIR) diff --git a/src/sphere.h b/src/sphere.h
t@@ -97,6 +97,7 @@ class DEM {
int *dev_walls_wmode;
Float4 *dev_walls_nx; // normal, pos.
Float4 *dev_walls_mvfd; // mass, velo., force, dev. stress
+ Float *dev_walls_tau_x; // wall shear stress
Float *dev_walls_force_partial; // Pre-sum per wall
Float *dev_walls_force_pp; // Force per particle per wall
Float *dev_walls_acc; // Wall acceleration