Introduction
Introduction Statistics Contact Development Disclaimer Help
tadd script to plot macroscopic properties at different rates (changing mu) - s…
git clone git://src.adamsgaard.dk/sphere
Log
Files
Refs
LICENSE
---
commit 9811528026d02512bc27bee5e7f51d1f8a5dd27a
parent 8a6f7f461ad9ed1702a9e8afc61b27f02c0d4dbb
Author: Anders Damsgaard <[email protected]>
Date: Fri, 6 Feb 2015 11:01:01 +0100
add script to plot macroscopic properties at different rates (changing mu)
Diffstat:
A python/halfshear-darcy-strength-di… | 224 +++++++++++++++++++++++++++…
1 file changed, 224 insertions(+), 0 deletions(-)
---
diff --git a/python/halfshear-darcy-strength-dilation-rate.py b/python/halfshea…
t@@ -0,0 +1,224 @@
+#!/usr/bin/env python
+import matplotlib
+matplotlib.use('Agg')
+matplotlib.rcParams.update({'font.size': 18, 'font.family': 'serif'})
+matplotlib.rc('text', usetex=True)
+matplotlib.rcParams['text.latex.preamble']=[r"\usepackage{amsmath}"]
+import shutil
+
+import os
+import sys
+import numpy
+import sphere
+from permeabilitycalculator import *
+import matplotlib.pyplot as plt
+
+pressures = True
+zflow = False
+contact_forces = False
+
+#sigma0_list = numpy.array([1.0e3, 2.0e3, 4.0e3, 10.0e3, 20.0e3, 40.0e3])
+sigma0 = 20000.0
+#k_c_vals = [3.5e-13, 3.5e-15]
+k_c = 3.5e-15
+#k_c = 3.5e-13
+mu_f_vals = [1.797e-06, 1.204e-06, 1.797e-08]
+#velfac_vals = [0.5, 1.0, 2.0]
+velfac = 1.0
+
+
+shear_strain = [[], [], [], []]
+friction = [[], [], [], []]
+dilation = [[], [], [], []]
+p_min = [[], [], [], []]
+p_mean = [[], [], [], []]
+p_max = [[], [], [], []]
+f_n_mean = [[], [], [], []]
+f_n_max = [[], [], [], []]
+v_f_z_mean = [[], [], [], []]
+
+fluid=True
+
+# wet shear
+for c in numpy.arange(0,len(mu_f_vals)):
+ mu_f = mu_f_vals[c]
+
+ # halfshear-darcy-sigma0=20000.0-k_c=3.5e-13-mu=1.797e-06-velfac=1.0-shear
+ sid = 'halfshear-darcy-sigma0=' + str(sigma0) + '-k_c=' + str(k_c) + \
+ '-mu=' + str(mu_f) + '-velfac=' + str(velfac) + '-shear'
+ #sid = 'halfshear-sigma0=' + str(sigma0) + '-c_v=' + str(c_v) +\
+ #'-c_a=0.0-velfac=1.0-shear'
+ if os.path.isfile('../output/' + sid + '.status.dat'):
+
+ sim = sphere.sim(sid, fluid=fluid)
+ shear_strain[c] = numpy.zeros(sim.status())
+ friction[c] = numpy.zeros_like(shear_strain[c])
+ dilation[c] = numpy.zeros_like(shear_strain[c])
+
+ sim.readlast(verbose=False)
+ sim.visualize('shear')
+ shear_strain[c] = sim.shear_strain
+ #shear_strain[c] = numpy.arange(sim.status()+1)
+ #friction[c] = sim.tau/sim.sigma_eff
+ friction[c] = sim.tau/1000.0#/sim.sigma_eff
+ dilation[c] = sim.dilation
+
+ # fluid pressures and particle forces
+ if pressures or contact_forces:
+ p_mean[c] = numpy.zeros_like(shear_strain[c])
+ p_min[c] = numpy.zeros_like(shear_strain[c])
+ p_max[c] = numpy.zeros_like(shear_strain[c])
+ f_n_mean[c] = numpy.zeros_like(shear_strain[c])
+ f_n_max[c] = numpy.zeros_like(shear_strain[c])
+ for i in numpy.arange(sim.status()):
+ if pressures:
+ sim.readstep(i, verbose=False)
+ iz_top = int(sim.w_x[0]/(sim.L[2]/sim.num[2]))-1
+ p_mean[c][i] = numpy.mean(sim.p_f[:,:,0:iz_top])/1000
+ p_min[c][i] = numpy.min(sim.p_f[:,:,0:iz_top])/1000
+ p_max[c][i] = numpy.max(sim.p_f[:,:,0:iz_top])/1000
+
+ if contact_forces:
+ sim.findNormalForces()
+ f_n_mean[c][i] = numpy.mean(sim.f_n_magn)
+ f_n_max[c][i] = numpy.max(sim.f_n_magn)
+
+ if zflow:
+ v_f_z_mean[c] = numpy.zeros_like(shear_strain[c])
+ for i in numpy.arange(sim.status()):
+ v_f_z_mean[c][i] = numpy.mean(sim.v_f[:,:,:,2])
+
+ else:
+ print(sid + ' not found')
+
+ # produce VTK files
+ #for sid in sids:
+ #sim = sphere.sim(sid, fluid=True)
+ #sim.writeVTKall()
+
+
+if zflow or pressures:
+ fig = plt.figure(figsize=(8,10))
+else:
+ fig = plt.figure(figsize=(8,8)) # (w,h)
+#fig = plt.figure(figsize=(8,12))
+#fig = plt.figure(figsize=(8,16))
+fig.subplots_adjust(hspace=0.0)
+
+#plt.subplot(3,1,1)
+#plt.ticklabel_format(style='sci', axis='y', scilimits=(0,0))
+
+if zflow or pressures:
+ ax1 = plt.subplot(311)
+ ax2 = plt.subplot(312, sharex=ax1)
+ ax3 = plt.subplot(313, sharex=ax1)
+else:
+ ax1 = plt.subplot(211)
+ ax2 = plt.subplot(212, sharex=ax1)
+#ax3 = plt.subplot(413, sharex=ax1)
+#ax4 = plt.subplot(414, sharex=ax1)
+#alpha = 0.5
+alpha = 1.0
+#ax1.plot(shear_strain[0], friction[0], label='dry', linewidth=1, alpha=alpha)
+#ax2.plot(shear_strain[0], dilation[0], label='dry', linewidth=1)
+#ax4.plot(shear_strain[0], f_n_mean[0], '-', label='dry', color='blue')
+#ax4.plot(shear_strain[0], f_n_max[0], '--', color='blue')
+
+color = ['b','g','r','c']
+#color = ['g','r','c']
+for c, mu_f in enumerate(mu_f_vals):
+
+ print('c = {}, mu_f = {}'.format(c, mu_f))
+
+ if numpy.isclose(mu_f, 1.797e-6):
+ label = 'ref. shear velocity'
+ elif numpy.isclose(mu_f, 1.204-6):
+ label = 'ref. shear velocity$\\times 0.67$'
+ elif numpy.isclose(mu_f, 1.797e-8):
+ label = 'ref. shear velocity$\\times 0.01$'
+ else:
+ label = '$\\mu_\\text{{f}}$ = {:.3e} Pa s'.format(mu_f)
+
+ ax1.plot(shear_strain[c][1:], friction[c][1:], \
+ label=label, linewidth=1,
+ alpha=alpha, color=color[c])
+
+ ax2.plot(shear_strain[c][1:], dilation[c][1:], \
+ label=label, linewidth=1,
+ color=color[c])
+
+ if zflow:
+ ax3.plot(shear_strain[c][1:], v_f_z_mean[c][1:],
+ label=label, linewidth=1)
+
+ if pressures:
+ #ax3.plot(shear_strain[c][1:], p_max[c][1:], '-' + color[c], alpha=0.5)
+ ax3.plot(shear_strain[c][1:], p_mean[c][1:], '-' + color[c], \
+ label=label, linewidth=1)
+ #ax3.plot(shear_strain[c][1:], p_min[c][1:], '-' + color[c], alpha=0.5)
+
+ #ax3.fill_between(shear_strain[c][1:], p_min[c][1:], p_max[c][1:],
+ #where=p_min[c][1:]<=p_max[c][1:], facecolor=color[c],
+ #interpolate=True, alpha=0.5)
+
+ #ax4.plot(shear_strain[c][1:], f_n_mean[c][1:], '-' + color[c],
+ #label='$c$ = %.2f' % (cvals[c-1]), linewidth=2)
+ #ax4.plot(shear_strain[c][1:], f_n_max[c][1:], '--' + color[c])
+ #label='$c$ = %.2f' % (cvals[c-1]), linewidth=2)
+
+#ax4.set_xlabel('Shear strain $\\gamma$ [-]')
+if zflow or pressures:
+ ax3.set_xlabel('Shear strain $\\gamma$ [-]')
+else:
+ ax2.set_xlabel('Shear strain $\\gamma$ [-]')
+
+#ax1.set_ylabel('Shear friction $\\tau/\\sigma\'$ [-]')
+ax1.set_ylabel('Shear stress $\\tau$ [kPa]')
+ax2.set_ylabel('Dilation $\\Delta h/(2r)$ [-]')
+if zflow:
+ ax3.set_ylabel('$\\boldsymbol{v}_\\text{f}^z h$ [ms$^{-1}$]')
+if pressures:
+ ax3.set_ylabel('Mean fluid pressure $\\bar{p}_\\text{f}$ [kPa]')
+#ax4.set_ylabel('Particle contact force $||\\boldsymbol{f}_\\text{p}||$ [N]')
+
+#ax1.set_xlim([200,300])
+#ax3.set_ylim([595,608])
+
+plt.setp(ax1.get_xticklabels(), visible=False)
+if zflow or pressures:
+ plt.setp(ax2.get_xticklabels(), visible=False)
+#plt.setp(ax2.get_xticklabels(), visible=False)
+#plt.setp(ax3.get_xticklabels(), visible=False)
+
+ax1.grid()
+ax2.grid()
+if zflow or pressures:
+ ax3.grid()
+#ax4.grid()
+
+legend_alpha=0.5
+ax1.legend(loc='upper right', prop={'size':18}, fancybox=True,
+ framealpha=legend_alpha)
+ax2.legend(loc='lower right', prop={'size':18}, fancybox=True,
+ framealpha=legend_alpha)
+if zflow or pressures:
+ ax3.legend(loc='upper right', prop={'size':18}, fancybox=True,
+ framealpha=legend_alpha)
+#ax4.legend(loc='best', prop={'size':18}, fancybox=True,
+ #framealpha=legend_alpha)
+
+ax1.set_xlim([0.0, 0.2])
+ax2.set_xlim([0.0, 0.2])
+#ax1.set_ylim([0.0, 1.0])
+if pressures:
+ #ax3.set_ylim([-1400, 900])
+ ax3.set_ylim([-490, 490])
+
+plt.tight_layout()
+plt.subplots_adjust(hspace=0.05)
+#filename = 'shear-' + str(int(sigma0/1000.0)) + 'kPa-stress-dilation.pdf'
+filename = 'halfshear-darcy-rate.pdf'
+#print(os.getcwd() + '/' + filename)
+plt.savefig(filename)
+shutil.copyfile(filename, '/home/adc/articles/own/2/graphics/' + filename)
+print(filename)
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.