some questions about conductive heat flux between DEM particles
Hello!
I am trying to use the thermal conduction scheme in packings of spherical particles. The top temperature of spheres are 5K and the bottom are 1K. When running the model, I can get the heat flux of the solid boundary by using thermalBndFlux[1].
However, when I increase the internal friction angle of the spheres, I find that the heat flux in heat balance at the solid boundary is bigger. I can't understand it. Actually I want to get the effective thermal conductivity of the 3D packed particles system using Fourier's law.
The principle is: keff=q*L/(A*deltaT)
keff(W/mk): Effective thermal conductivity;
q(W): The total heat flow out of the boundary plane in steady-state;
L(m): Depth of specimen;
A(m2): Cross sectional area of specimen;
deltaT(K): Temperature difference between upper and lower boundaries.
Under normal circumstances, the larger the porosity of the sample, the smaller the effective thermal conductivity, but I got the opposite result. Did I make any mistakes in the simulation?
Thanks
Lin
Here is a MWE:
from __future__ import print_function
from yade import pack,plot,timing,os
from numpy import arange
import matplotlib;
import itertools
import random
import numpy as np
import shutil
#import pylab
# Particles
density=2650
poisson=0.31
young=29e9
damp=0.25
number=2000
frictionangle=0
thermalCond = 3. #W/(mK)
heatCap = 2130. #J(kg K)
t0 = 1. #K
deltaT=4.0 #k
# Walls
walldensity=0
wallfrictionangle=0
wallpoisson=0.5
wallyoung=30000e9
# Compress
compress=-50000 #pa
# Corners of the initial packing
mn,mx=Vector3(
# Materials
O.materials.
O.materials.
wallIds=
#PSD
psdSizes,
#pylab.
sp=pack.
sp.makeCloud(
#pylab.
#pylab.legend()
sp.toSimulation
O.trackEnergy=True
triax=TriaxialS
wall_bottom_id = wallIds[2],
wall_top_id = wallIds[3],
wall_left_id = wallIds[0],
wall_right_id = wallIds[1],
wall_back_id = wallIds[4],
wall_front_id = wallIds[5],
thickness=
internalComp
stressMask=7,
goal1=compress,
goal2=compress,
goal3=compress,
#dead=True,
)
newton=
ThermalEngine = ThermalEngine(
O.engines=[
ForceResetter(),
InsertionSort
InteractionLoop(
),
triax,
FlowEngine(
ThermalEngine, GlobalStiffness
newton
]
triax.dead=False
while 1:
O.run(1000, True)
unb=unbalance
s1=triax.
s2=triax.
s3=triax.
volume = (O.bodies[
Porosity=
mStress=
#disx=
#disy=
#disz=
#print(
#if unb<0.1 and abs(triax.
print('unbalanced force',
if unb<0.05 and abs(compress-
#if Porosity < 0.45:
break
for o in O.bodies:
o.dynamic=False
flow.dead=0
thermal.dead=0
thermal.debug=False
thermal.
thermal.
thermal.
thermal.
thermal.
thermal.
thermal.
thermal.
thermal.
thermal.
thermal.
thermal.
thermal.
thermal.
#thermal.
thermal.
timing.reset()
flow.updateTria
O.dt=0.1e-3
O.dynDt=False
flow.emulateAct
flow.dead=1
def ColorScaler():
for s in O.bodies:
s.shape.
O.engines=
def checktemp():
q=thermal.
disx=
disy=
disz=
keff=
if thermal.
plot.
else:
print(keff)
print("The test is finished!")
O.pause()
O.engines=
def addPlotData():
volume = (O.bodies[
Porosity=
plot.addData(
t=O.time,
i = O.iter,
porosity=
flux4=
flux5=
disx=
disy=
disz=
)
O.engines=
plot.plots=
plot.plot()
O.run()
#pylab.show()
[1]https:/
Question information
- Language:
- English Edit question
- Status:
- Answered
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Last query:
- Last reply:
Can you help with this problem?
Provide an answer of your own, or ask Lin 1999 for more information if necessary.