← Back to team overview

yade-users team mailing list archive

[Question #692174]: Thermal conduction in clumps

 

New question #692174 on Yade:
https://answers.launchpad.net/yade/+question/692174

Hello

I am trying to use the thermal conduction scheme in clump particles. I have a column of 6 spheres. The top  sphere is stand alone with 400 K fixed temperature boundary condition but the remaining 5 spheres make up two clumps with initial temperature of 100 K. When running the model, heat is transferred from the top sphere to its neighboring sphere belonging to a clump. However, there is no conduction within the clump itself so the rest of spheres in the model remain at 100 K temperature. 

My question is how to get the thermal engine to conduct heat within clumps themselves? Here is the code:

from yade import pack
from numpy import arange
import itertools
import random
import numpy as np
import shutil
from yade import plot
thermalCond = 2. #W/(mK)
heatCap = 710. #J(kg K) 
t0 = 100. #K
rad=0.003
intRadius=1

mn,mx=Vector3(0,0,0),Vector3(0.01,0.01,0.06) # corners of the initial packing

O.materials.append(FrictMat(young=6e6,poisson=.4,frictionAngle=0,density=2600,label='frictionless'))

walls=aabbWalls([mn,mx],material='frictionless')
wallIds=O.bodies.append(walls)

SPack=pack.regularOrtho(pack.inAlignedBox(mn,mx),radius=rad,gap=-1.e-5,material='frictionless')
O.bodies.appendClumped([SPack[0],SPack[1]])
O.bodies.appendClumped([SPack[2],SPack[3],SPack[4]])
O.bodies.append([SPack[5]])


ThermalEngine = ThermalEngine(dead=1,label='thermal');

newton=NewtonIntegrator(damping=0.2)
O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intRadius),Bo1_Box_Aabb()]),
	InteractionLoop(
		[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intRadius),Ig2_Box_Sphere_ScGeom()],
		[Ip2_FrictMat_FrictMat_FrictPhys()],
		[Law2_ScGeom_FrictPhys_CundallStrack()],label="iloop"
	),
	FlowEngine(dead=1,label="flow",multithread=False),
	ThermalEngine,	GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.1),
	newton
]
for o in O.bodies:
	o.dynamic=False

flow.dead=0
flow.defTolerance=0.3#-1 #
flow.meshUpdateInterval=200#-1 
flow.useSolver=4
flow.permeabilityFactor=-0.7e-7 #1
flow.viscosity=10
flow.bndCondIsPressure=[0,0,0,0,0,0]
flow.bndCondValue=[0,0,0,0,0,0]
flow.boundaryUseMaxMin=[0,0,0,0,0,0]
flow.thermalEngine=True
flow.debug=False
flow.fluidRho = 1000
flow.fluidCp = 4184
flow.fluidK = 0.650
flow.bndCondIsTemperature=[0,0,0,0,0,1]
flow.thermalEngine=True
flow.thermalBndCondValue=[0,0,0,0,0,400]

flow.tZero=t0
flow.pZero=0
thermal.dead=0
thermal.conduction=True
thermal.thermoMech=False
thermal.advection=False
thermal.fluidThermoMech = False
thermal.solidThermoMech = False
thermal.fluidConduction= False

thermal.bndCondIsTemperature=[0,0,0,0,0,1]
thermal.thermalBndCondValue=[0,0,0,0,0,400]
thermal.tsSafetyFactor=0
thermal.particleDensity=2600
thermal.particleT0=t0
thermal.particleCp=heatCap
thermal.particleK=thermalCond
thermal.particleAlpha =11.6e-3
thermal.useKernMethod=False

flow.updateTriangulation=True

O.run(1,1)
flow.dead=1

def ColorScaler():
	for s in O.bodies:
		s.shape.color=scalarOnColorScale(s.state.temp,100,400)

O.engines=O.engines+[PyRunner(command='ColorScaler()',iterPeriod=100)]
def history():
	plot.addData(
		t=O.time,
		i = O.iter,
		Particle1 = SPack[0].state.temp,
		Particle2 = SPack[1].state.temp,
		Particle3 = SPack[2].state.temp,
		Particle4 = SPack[3].state.temp,
		Particle5 = SPack[4].state.temp,
		Particle6 = SPack[5].state.temp,
)

O.engines=O.engines+[PyRunner(iterPeriod=500,command='history()',label='recorder')]
plot.plots={'t':(('Particle1','b-'),('Particle2','b--'),('Particle3','k-'),('Particle4','r-'),('Particle5','g-'),('Particle6','k--'))} #
#VTKrec.dead=0



plot.plot()

O.run(100000,1)



-- 
You received this question notification because your team yade-users is
an answer contact for Yade.