ConductionIndirect_SurrLayer class
Contents
Description
This is a sub-class of the ConductionIndirect class for the implementation of the Surrounding Layer indirect heat conduction model.
This model assumes that each particle is surrounded by a fluid layer, of a given thickness, through which heat is transferred when it intersects the surface of another particle. In this case, heat flow paths are parallel to the to the normal direction between particles.
For multi-size particles, the rate of heat transfer is given by:
Where:
If :
If :
For mono-size particles, the analytical solution for the integral is:
Where:
If :
If :
If :
If :
Notation:
: Temperature difference between elements i and j
: Radius of particles i and j (or p when mono-size)
: Contact radius
: Distance between the center of the particles
: Thermal conductivity of particles i and j, and interstitial fluid f
: Effective contact conductivity
: Minimum separation distance of surfaces (input)
: Thickness of a partilce's surrounding layer (input)
References:
- A.B. Morris, S. Pannala, Z. Ma and C.M. Hrenya. A conductive heat transfer model for particle flows over immersed surfaces, Int. J. Heat Mass Transf., 89:1277-1289, 2015 (analytical solution for mono-sized particles)
classdef ConductionIndirect_SurrLayer < ConductionIndirect
Public properties
properties (SetAccess = public, GetAccess = public) coeff double = double.empty; % heat transfer coefficient layer double = double.empty; % surrounding fluid layer thickness (ratio of particle radius) dist_min double = double.empty; % minimum separation distance of surfaces tol_abs double = double.empty; % absolute tolerance for numerical integration tol_rel double = double.empty; % relative tolerance for numerical integration end
Constructor method
methods function this = ConductionIndirect_SurrLayer() this = this@ConductionIndirect(ConductionIndirect.SURROUNDING_LAYER); this = this.setDefaultProps(); end end
Public methods: implementation of super-class declarations
methods %------------------------------------------------------------------ function this = setDefaultProps(this) this.layer = 0.4; this.dist_min = 2.75*1e-8; this.tol_abs = 1e-10; this.tol_rel = 1e-6; end %------------------------------------------------------------------ function this = setFixParams(this,int,drv) this.coeff = this.heatTransCoeff(int,drv); end %------------------------------------------------------------------ function this = setCteParams(this,~,~) end %------------------------------------------------------------------ function this = evalHeatRate(this,int,drv) if (isempty(this.coeff)) h = this.heatTransCoeff(int,drv); else h = this.coeff; end this.total_hrate = h * (int.elem2.temperature-int.elem1.temperature); end end
Public methods: sub-class specifics
methods %------------------------------------------------------------------ function h = heatTransCoeff(this,int,drv) if (int.kinemat.gen_type == int.kinemat.PARTICLE_PARTICLE) h = this.evalIntegralParticleParticle(int,drv); else % Assumption: walls are always considered as lines h = this.analyticSolutionParticleWall(int,drv); end end %------------------------------------------------------------------ function h = evalIntegralParticleParticle(this,int,drv) % Needed properties Rc = int.kinemat.contact_radius; R1 = int.elem1.radius; R2 = int.elem2.radius; Ri = min(R1,R2); Rj = max(R1,R2); Lj = this.layer*Rj; kf = drv.fluid.conduct; d = int.kinemat.distc; S = this.dist_min; % Parameters RjLj2 = (Rj+Lj)^2; if (d <= sqrt(RjLj2-Ri^2)) rsf = Ri; else rsf = sqrt(RjLj2-((RjLj2-Ri^2+d^2)/(2*d))^2); end % Evaluate integral numerically fun = @(r) 2*pi*r/max(S,d-sqrt(R1^2-r^2)-sqrt(R2^2-r^2)); try h = kf * integral(fun,Rc,rsf,'ArrayValued',true,'AbsTol',this.tol_abs,'RelTol',this.tol_rel); catch h = 0; end end %------------------------------------------------------------------ function h = analyticSolutionParticleWall(this,int,drv) % Needed properties Rp = int.elem1.radius; L = this.layer*Rp; kf = drv.fluid.conduct; d = int.kinemat.dist; dc = int.kinemat.distc; S = this.dist_min; % Parameters a = (dc-Rp)/Rp; if (d > Rp+S) rin = 0; else rin = sqrt(1-(S/Rp-a-1)^2); end if (a > sqrt(((Rp+L)/Rp)^2-1)-1) rout = sqrt(((Rp+L)/Rp)^2-(a+1)^2); else rout = 1; end b = sqrt(1-rout^2); c = sqrt(1-rin^2); % Analytic solution of integral h = 2*pi*kf*Rp*((a+1)*log(abs(b-a-1)/abs(a-c+1))+b-c); end end
end