MATLAB Answers

PDE tool box, internal heat generation and BC conditions

12 views (last 30 days)
juan ugalde
juan ugalde on 22 May 2019
Commented: juan ugalde on 24 May 2019
Dear all,
I am currently using the PDE tool box to model the thermal behavior of a cylindrical lithium-ion battery (2D,x-y). The main experiment consists on cycling a battery inside a climatic chamber. The cell has a heat generation which is used as InternalHeatSource (Joule heat [W]) and the heat exchange with the climatic chamber is only done by convection.
After running the model, I got some weird results which I suspect are due to the internal heat generation or boundary conditions functions. As a result, I would like to know if the following settings are correct:
  • Thermal prorperties : Thermal conductivities given as c=[kx ; ky] [W/ m.K], Density [W/m^3], specific heat capacity [J/ kg.K], geometry in [m]
  • Boundary conditions : Convection coefficient h [W/m^2], (equal to 10(natural convection) in my case) and Ambient Temperture [°C]
thermalBC(Thermal,'Edge',[1 2 3 4], 'ConvectionCoefficient',10,'AmbientTemperature',25)
  • Internal heat generation: The value (heatSourceValue) is given to internalHeatSource in [W/m^3]
HeatSource= @(region,state) heatSourceFun(region,state,IntHeat);
function heatSourceValue = heatSourceFun(region,state,IntHeat)
Volume_cell= (0.07)*pi*(0.0105)^2; % Battery volume in m^3
if isnan(state.time)
heatSourceValue= NaN(size(region.y));
elseif state.time==0
heat=abs(IntHeat(1,2)- (mean(state.u)+273.15)*IntHeat(1,3));
heatSourceValue= (heat/Volume_cell)*ones(size(region.y));
elseif state.time<= max(IntHeat(:,1))
heat=abs(IntHeat(floor(state.time),2)-(mean(state.u)+273.15)*IntHeat(floor(state.time),3));% floor = arrondir
heatSourceValue= (heat/Volume_cell)*ones(size(region.y));
else
heatSourceValue= zeros(size(region.y));
end
When I look at the results, the temperature estimations given by the model are considerably higher than the results measured by the surface-mounted thermocouples.
Thanks in advance,
Juan.

  2 Comments

Ravi Kumar
Ravi Kumar on 22 May 2019
Hi Juan,
Is your model axisymmetric. You say "cylindrical lithium-ion battery (2D,x-y)", what does this mean? If its axisymmetric, then you need some additional modificaiton to formulaiton of the probelm to solve.
Regards,
Ravi
juan ugalde
juan ugalde on 22 May 2019
Hi Ravi,
The model geometry is indeed axisymettric. The cylinder is approched as a 2D surface.
Thanks
Juan

Sign in to comment.

Answers (1)

Ravi Kumar
Ravi Kumar on 22 May 2019
If the problem is axisymmetric, then you need follow the approach similar to this example:
Note that you have to account for the axisymmetric modification in all your operations, like postprocessing, all of which might not be covered in the example. Let me know if you get you temperature distribution matches expectaion using the axisymmetric approach.
Regards,
Ravi

  3 Comments

juan ugalde
juan ugalde on 23 May 2019
Dear Ravi,
I changed the geometry of the surface as well as the boundary conditions as presented in the cylidrical rod example. When the heat source is 0, the results are not far from the experiments. However, when I add a heat source, either using a constant / battery volume or my handle function, the results are not coherent at all.
The heat generation is well know, (1-3W), so to issue must be somewhere else. Could you please take a look at my code?
Thanks again,
Sincerely,
Juan.
Thermal=createpde('thermal','transient');
para= struct;
%%%%%%%%Parametres%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
para.rho=2845;
para.c=800;
para.kx=30;
para.ky=0.2;
c = [para.kx; para.ky];
convectioncoeff=15;
para.InitialTemperature=25;
Thermal.StefanBoltzmannConstant = 5.670373E-8;
%%%%%%% Geometrie%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
R1 = [3,4,-0.035,0.035,0.035,-0.035,0,0,0.0105,0.0105]';
g=decsg(R1);
geometryFromEdges(Thermal,g);
hmax = .0025; % element size0.0025
generateMesh(Thermal,'Hmax',hmax);
%
figure;
hold on
box on
pdegplot(Thermal,'EdgeLabels','on');
pdeplot(Thermal)
axis equal
%%Proprietes%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
thermalProperties(Thermal,'ThermalConductivity',c,...
'MassDensity',para.rho,...
'SpecificHeat',para.c);
load('Cycle_vector.mat')
IntHeat = Cycle_vector;
HeatSource= @(region,state) heatSourceFun(region,state,IntHeat);% Same as in first comment
internalHeatSource(Thermal,HeatSource);
% Cell heat generation = 1-3W
% Cell volume = 0.07*(0.0105^2)*pi : 7cm high, 2.1cm diameter
%Boundaries%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
thermalBC(Thermal,'Edge',3, 'ConvectionCoefficient',convectioncoeff,'AmbientTemperature',25,'Emissivity',0.41);
thermalBC(Thermal,'Edge',2, 'ConvectionCoefficient',convectioncoeff,'AmbientTemperature',25,'Emissivity',0.41);
thermalBC(Thermal,'Edge',4, 'ConvectionCoefficient',convectioncoeff,'AmbientTemperature',25,'Emissivity',0.41);
thermalIC(Thermal,para.InitialTemperature);
%Solve%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
tlist=1:1:2000;
thermalresults = solve(Thermal,tlist);
T = thermalresults.Temperature;
Modele_plot_transient;
Ravi Kumar
Ravi Kumar on 24 May 2019
Can you also provide the heatSourceFun and Cycle_vector.mat. Let me know if you want to send this data privately.
Regards,
Ravi
juan ugalde
juan ugalde on 24 May 2019
Dear Ravi,
I tried to add the attachements to this message but it didn't work. Can I send them to you in private?
Thanks again,
Juan.

Sign in to comment.

Sign in to answer this question.