Introduction
Introduction Statistics Contact Development Disclaimer Help
tadd force chain statistics script - sphere - GPU-based 3D discrete element met…
git clone git://src.adamsgaard.dk/sphere
Log
Files
Refs
LICENSE
---
commit dfce171595e257cf25c6fc52744f673663865807
parent 2dc0f7a74374dce778a1b3b77efdf4349c924ace
Author: Anders Damsgaard <[email protected]>
Date: Mon, 23 Feb 2015 10:40:30 +0100
add force chain statistics script
Diffstat:
A python/halfshear-darcy-forcechainm… | 96 +++++++++++++++++++++++++++…
1 file changed, 96 insertions(+), 0 deletions(-)
---
diff --git a/python/halfshear-darcy-forcechainmapper.py b/python/halfshear-darc…
t@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+import matplotlib
+matplotlib.use('Agg')
+#matplotlib.rcParams.update({'font.size': 18, 'font.family': 'serif'})
+matplotlib.rcParams.update({'font.size': 7, 'font.family': 'sans-serif'})
+matplotlib.rc('text', usetex=True)
+matplotlib.rcParams['text.latex.preamble']=[r"\usepackage{amsmath}"]
+import shutil
+
+import os
+import sys
+import numpy
+import sphere
+import matplotlib.pyplot as plt
+
+sids =\
+ ['halfshear-darcy-sigma0=80000.0-k_c=3.5e-13-mu=1.04e-07-ss=10000.0-A=…
+ #['halfshear-darcy-sigma0=80000.0-k_c=3.5e-13-mu=1.797e-06-ss=10000.0-…
+outformat = 'pdf'
+fluid = True
+#threshold = 100.0 # [N]
+
+
+
+for sid in sids:
+
+ sim = sphere.sim(sid, fluid=fluid)
+
+ #nsteps = 2
+ #nsteps = 10
+ nsteps = sim.status()
+
+ t = numpy.empty(nsteps)
+ n = numpy.empty(nsteps)
+ coordinationnumber = numpy.empty(nsteps)
+ nkept = numpy.empty(nsteps)
+
+ for i in numpy.arange(nsteps):
+ sim.readstep(i+1)
+ t[i] = sim.currentTime()
+ #n[i] = countLoadedContacts(sim, threshold)
+
+ if i > 0:
+ loaded_contacts_prev = numpy.copy(loaded_contacts)
+ pairs_prev = numpy.copy(sim.pairs)
+
+ loaded_contacts = sim.findLoadedContacts(
+ threshold = sim.currentNormalStress()*2.)
+ #sim.currentNormalStress()/1000.)
+ n[i] = numpy.size(loaded_contacts)
+
+ sim.findCoordinationNumber()
+ coordinationnumber[i] = sim.findMeanCoordinationNumber()
+
+ nfound = 0
+ if i > 0:
+ for a in loaded_contacts[0]:
+ for b in loaded_contacts_prev[0]:
+ if (sim.pairs[:,a] == pairs_prev[:,b]).all():
+ nfound += 1;
+
+ nkept[i] = nfound
+
+ print coordinationnumber[i]
+ print nfound
+
+ #fig = plt.figure(figsize=[8,8])
+ fig = plt.figure(figsize=[3.5,7])
+
+ ax1 = plt.subplot(3,1,1)
+ #ax1.plot(t, n)
+ ax1.semilogy(t, n, 'k')
+ ax1.set_xlabel('Time $t$ [s]')
+ #ax1.set_ylabel(\
+ #'Heavily loaded contacts $||\\boldsymbol{{f}}_n|| \\geq {}$ N'.fo…
+ #threshold))
+ ax1.set_ylabel(\
+ 'Heavily loaded contacts $\sigma_c \\geq \\sigma_0\\times 4$ Pa')
+ #'Heavily loaded contacts $||\\boldsymbol{{\sigma}}_c|| \\geq \\si…
+
+ ax2 = plt.subplot(3,1,2)
+ ax2.semilogy(t, n - nkept, 'k')
+ ax2.set_xlabel('Time $t$ [s]')
+ ax2.set_ylabel(\
+ 'New heavily loaded contacts $\sigma_c \\geq \\sigma_0\\times 4$ P…
+ #'Heavily loaded contacts $||\\boldsymbol{{\sigma}}_c|| \\geq \\si…
+
+ ax3 = plt.subplot(3,1,3)
+ #ax3.semilogy(t, coordinationnumber)
+ ax3.plot(t, coordinationnumber, 'k')
+ ax3.set_xlabel('Time $t$ [s]')
+ ax3.set_ylabel('Coordination number $z$')
+
+
+
+ plt.savefig(sid + '-nloaded.' + outformat)
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.