mae 239-termpaper-20mar2013-mklein

Upload: matthew-klein

Post on 03-Apr-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    1/16

    UNIVERSITY OF CALIFORNIA, DAVIS

    Transient 2d Heat Transfer with

    Convective Boundary Conditions using

    the Finite Element Method

    The development of a MATLAB code

    Matthew Klein

    3/20/2013

    This paper will discuss the development of a MATLAB based code that uses the Finite Element

    Method to solve a 2d transient heat conduction problem with convective boundary conditions. It

    was specifically developed to meet the course requirements of MAE 239 as well as act as a tool for

    Dr. Parks Green Transportation Lab in conducting battery pack thermal management studies.

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    2/16

    INTRODUCTION

    Electrochemical devices have characteristics that are greatly temperature dependent. This includes

    both the instantaneous electrical performance as well as the long term lifetime performance. For

    lithium ion batteries generally low temperature cycling and high temperature storage accelerate

    degradation. Thus the lithium ion battery packs in electric vehicles require thermal management

    systems in order to control the power capability, lifetime, and of greatest importance to maintain

    safe operation. The thermal properties of the batteries and heat transfer system must be

    thoroughly analyzed in order to optimize the design and control strategies used to maintain the

    proper temperature of the battery at all times. A commonly shared convention in this field is to

    control the battery such that the largest temperature difference within the battery pack is 2 C.

    This value is selected based on the temperature sensitivity of the performance of lithium batteries

    and is likely to be highly conservative, therefore leaving much room for optimization. Pouch cells

    are a popular choice for many reasons and are typically stacked and compressed into modules.

    This only leaves the edges open for cooling and will then create temperature gradients along the

    face of the cell. If one were to understand how that affects performance the cell dimensions and

    control strategies and heat transfer system could be optimized for the best instantaneous vehicle

    power and long term life. Thus it is the goal of my research to shed new light on understanding the

    performance effects of an electric vehicles battery based on how the heat is removed from the cells

    (i.e. cell temperature gradient to performance relationship) and how that also couples into the long

    term performance. As a start to that end a 2d transient FEM model will be developed here to aid in

    system characterization.

    BACKGROUND AND OBJECTIVES

    Figure 1,Figure 2Figure 3 show different views of the particular battery module under

    investigation. In Figure 1 the chill plate that is used to transfer heat to/from the module is shown in

    an exploded view. Of primary interest with the design of the chill plate is its capability to transfer

    heat with an even temperature distribution across its surface in order to achieve a balanced

    temperature distribution within the electrochemical cells (to maintain balanced electrical

    performance). The goal here will be to learn how to create a thermal FE model to quantify the heat

    transfer capabilities of the cells based on temperature gradient limitations. In the end a model

    containing the coupled electrochemical-thermal effects within the cell and the coupled thermal-

    fluid effects between the module and the chill plate will be needed, but as a project of this

    magnitude is infeasible for a quarter long term project it was decided to focus on the temperature

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    3/16

    distribution in two dimensions within a cell as an introductory learning example of the

    development of a FEM code.

    Figure 1 - Exploded view of the battery module chill plate

    Figure 2 - Assembled battery module in CAD

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    4/16

    Figure 3 - Exploded view of the full battery module

    Typically a FEM package will contain three main sections: 1) Pre-proccesor, 2) Solver, and 3) Post-

    processor. In a class setting most attention is paid on section 2, the solving of the FEM equations,

    e.g. solving the Differential Equation in a discretized domain using shape functions of varying

    orders and applying Galerkins approach to the Method of Weighted Residuals. However, as

    important as this is obviously, a good code is really nothing without proper attention being paid to

    sections 1 and 3 as well. And before actually developing ones own code it is difficult to fully

    understand how much attention does need to be paid there. In all actuality those are likely to be

    the largest areas of focus for a company developing a package for industry. Think of it this way, it is

    the job of a company creating a commercial package to disconnect the user as much as possible

    from the gritty details and allow for them as intuitively as possible to solve their problem. Thus

    large amounts of work must be done behind the scenes to take their part, create an advanced mesh,

    create the global equations for that mesh, solve the system and then present those results in a clear

    and understandable fashion. Certainly no easy task and thus the reason why companies like ANSYS,

    COMSOL, etc., are able to charge so much for their products.

    Here a relatively simple example is undertaken to begin to get a flavor of what it takes to create a

    FEM package from scratch. Thus, the final objective here will be to create a code in MATLAB that

    can solve for the temperature distribution in a 2d, time dependent heat conduction problem that

    has convective boundary conditions. The capability to control the internal heat generation and the

    convection coefficient as a function of time will be added as well to study the temperature gradients

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    5/16

    as a function of the control strategy being used. Additionally, this paper will be written in a way

    that walks the reader through the development process, in an albeit streamlined version of the

    story. The intent here is for it to possibly serve as a learning tool for future generations of students

    working on a similar project.

    METHODS

    SYSTEM GENERATION CODE

    PRE-PROCESSING

    The resulting code that was developed to meet this projects objective has two main parts. The first

    m-file has an initial section which is dedicated to the insertion of material parameters as well as the

    number of elements that are to be used for the rectangular mesh. Following that the convective

    boundary coefficients and temperatures are defined. After all inputs are defined the elemental

    matrices are computed. First the x,y coordinates for all of the nodes are determined. This is done

    by the function called elementCoordsand is shown below:

    function [n_coords] = elementCoords(n_ele_x,n_ele_y,dx,dy)

    n_coords = zeros((n_ele_x+1)*(n_ele_y+1),2);for j = 1:(n_ele_y+1)

    for i = 1:(n_ele_x+1)n_coords(i+(j-1)*(n_ele_x+1),1) = dx*(i-1);n_coords(i+(j-1)*(n_ele_x+1),2) = dy*(j-1);

    endend

    The key to that function is the determination of the index based on the nodal numbering scheme.

    Next the nodal numbers that apply to each element are located. This is commonly referred to as the

    element connectivity. This utilizes the function findElemNodes, which is displayed below:

    function [elem_nodes] = findElemNodes(n_ele_x,n_ele_y)

    elem_nodes = zeros(n_ele_x*n_ele_y,4);for j = 1:n_ele_y

    for i = 1:n_ele_x

    k=i+(j-1)*n_ele_x;elem_nodes(k,1) = k+(j-1);elem_nodes(k,2) = (k+1)+(j-1);elem_nodes(k,3) = (k+(n_ele_x+2))+(j-1);elem_nodes(k,4) = (k+(n_ele_x+1))+(j-1);

    endend

    After this, based on the entered number of x- and y-elements a function determines which elements

    fall into one of three categories: 1) Core elements, 2) Corner elements and 3) Boundary elements.

    For the boundary elements those are refined further into which are bottom, right, top and left. The

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    6/16

    elements are separated as such to allow for proper boundary condition application. Hence the core

    elements have no external B.C. being applied, the corners take in two different B.C.s and the

    boundaries take in a single B.C. on one of its sides based on whether that is located on the bottom,

    right, etc. The function findElemsfollows:

    function [core_elems,corner_elems,bott_elems,top_elems,right_elems,left_elems] =findElems(n_ele_x,n_ele_y)

    % Core elementsnum_core_elems = (n_ele_x-2)*(n_ele_y-2);core_elems = zeros(num_core_elems,1);for j = 1:(n_ele_y-2)

    for i = 1:(n_ele_x-2)k=i+(j-1)*(n_ele_x-2);core_elems(k) = (n_ele_x+2) + (i-1) + (j-1)*n_ele_x;

    endend% Corner elements%num_corner_elems = 4; % fixed at four as this is a simple rectangular mesh and thus

    must have four cornerscorner_elems(1) = 1; % bottom left cornercorner_elems(2) = n_ele_x; % bottom right cornercorner_elems(3) = n_ele_x*n_ele_y; % top right cornercorner_elems(4) = n_ele_x*n_ele_y - (n_ele_x-1); % top left corner

    % Bottom elementsnum_bott_elems = (n_ele_x - 2);bott_elems = zeros(num_bott_elems,1);for i = 1:num_bott_elems

    bott_elems(i) = 1+i;end

    % Top elementsnum_top_elems = (n_ele_x - 2);

    top_elems = zeros(num_top_elems,1);for i = 1:num_top_elemstop_elems(i) = (n_ele_x*n_ele_y - (n_ele_x-2))+(i-1);

    end

    % Right elementsnum_right_elems = (n_ele_y - 2);right_elems = zeros(num_right_elems,1);for i = 1:num_right_elems

    right_elems(i) = 2*n_ele_x + (i-1)*n_ele_x;end

    % Left elementsnum_left_elems = (n_ele_y - 2);left_elems = zeros(num_left_elems,1);for i = 1:num_left_elems

    left_elems(i) = n_ele_x+1 + (i-1)*n_ele_x;end

    %--------------------------------------------------------------------------

    All of this preliminary work described above essentially develops the mesh and prepares which

    elements will get which boundary conditions as well as who is connected to who.

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    7/16

    ELEMENTEQUATIONFORMULATION

    Finally, with the completion of the above it is now time to assemble the global system of equations

    to prepare it for time-stepping. The equation below describes the general differential equation

    being solved here and is used in the application of MWR via Galerkins approach. This is the general

    D.E. for transient two-dimensional heat conduction with internal heat generation Q.

    (

    )

    (

    )

    The equations are derived for a 4-noded rectangular element using linear shape functions. Here a

    function was developed using MATLABs built in symbolic function solver to do the error prone

    work of integrating the set of equations developed through the use of the MWR. An example of the

    code is below:

    % This code is currently written to symbolically create the matrices% derived using Galerkin's method on the MWR function for a 2-d square% element heat transfer problem. The boundaries are currently set with% convection and one of the edges has dramatically larger convection due to% the chill plate.function [C,Ktot,Rtot] = SymbolicEqns_LinearShape(dx,dy,h,Tamb,rho,cp)% clc;close;clear;% rho = 2250;% cp = 980;% h=[5 0 0 0];% Tamb = [298 0 0 0];% dx = .1; %m% dy = .1; %m

    xc = dx/2;

    yc = dy/2;y1 = 0;x1 = 0;y2 = dy;x2 = dx;% rho = 2200; %kg/m^3, average density of the lithium battery% cp = 980; %J/(kg-K), average specific heat of the lithium battery

    kx = 25; %W/(m-K), thermal conductivity of the Li-batt in the x-directionky = 25; %W/(m-K), thermal conductivity of the Li-batt in the y-direction

    h1 = h(1); %W/(m^2-K), heat transfer coefficient at the bottom edge of the cellh2 = h(2); %W/(m^2-K), heat transfer coefficient at the right edge of the cellh3 = h(3); %W/(m^2-K), heat transfer coefficient at the top edge of the cellh4 = h(4); %W/(m^2-K), heat transfer coefficient at the left edge of the cell

    Te1 = Tamb(1);Te2 = Tamb(2);Te3 = Tamb(3);Te4 = Tamb(4);

    % Shape functionssyms xypsi = 2*(x-xc)/dx; eta = 2*(y-yc)/dy;N1 = .25*(1-psi)*(1-eta);N2 = .25*(1+psi)*(1-eta);N3 = .25*(1+psi)*(1+eta);

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    8/16

    N4 = .25*(1-psi)*(1+eta);

    % derviatives of the shape functions to be used for temperature gradient% interpolationdN1_dx = diff(N1,x);dN2_dx = diff(N2,x);dN3_dx = diff(N3,x);dN4_dx = diff(N4,x);dN1_dy = diff(N1,y);dN2_dy = diff(N2,y);dN3_dy = diff(N3,y);dN4_dy = diff(N4,y);

    % Create matrices of the shape functions and the derivatives

    N_row = [N1 N2 N3 N4];N_mat = N_row'*N_row;

    B_mat = [dN1_dx dN2_dx dN3_dx dN4_dx; dN1_dy dN2_dy dN3_dy dN4_dy];

    BT_B = B_mat'*B_mat;

    %% Perform integration in order to get element matrices C and K

    % Get [C] matrixC1 = int(N_mat,x,x1,x2);C = rho*cp*int(C1,y,y1,y2);

    % Get [Kcond] matrix

    D = [kx 0;0 ky];BT_Bcond = B_mat'*D*B_mat;

    Kc = int(int(BT_Bcond,x,x1,x2),y,y1,y2);

    % Get the [Kconv] matrices; there's one for each boundary (four for the squareelement)Kh1 = h1*int(subs(N_mat,y,y1),x,x1,x2);Kh2 = h2*int(subs(N_mat,x,x2),y,y1,y2);Kh3 = h3*int(subs(N_mat,y,y2),x,x1,x2);Kh4 = h4*int(subs(N_mat,x,x1),y,y1,y2);

    Ktot = Kc + (Kh1 + Kh2 + Kh3 + Kh4);

    %% Finally the right side vectors are to be derived

    % Internal heat generationQ = 0;R_Q1 = int(N_row',x,x1,x2);R_Q = int(R_Q1,y,y1,y2);R_Q = Q*R_Q;

    % Convective resistance termR_h1 = h1*Te1*int(subs(N_row',y,y1),x,x1,x2);R_h2 = h2*Te2*int(subs(N_row',x,x2),y,y1,y2);R_h3 = h3*Te3*int(subs(N_row',y,y2),x,x1,x2);R_h4 = h4*Te4*int(subs(N_row',x,x1),y,y1,y2);

    Rtot = R_Q + (R_h1 + R_h2 + R_h3 + R_h4);

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    9/16

    The general form of the resulting equation from the MWR is as follows:

    This simplifies to:

    where,

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    10/16

    This is the general equation for three-dimensions and includes constant temperature, heat fluxes

    and radiative heat loads, however in this case the additional loads mentioned here are done away

    with as well as the third z-dimension. Thus as can be seen in the above code (function:

    SymbolicEqns_LinearShape) first some parameter initialization is performed, then the linear

    shape functions are created and then differentiated with respect to each spatial dimension. The N

    vector and NTN matrix is generated as well as the B and BTB matrices. Finally, once these matrices

    are constructed from the shape functions and there partial spatial derivatives the C, K and R

    matrices and vector may be computed through integration. Again for the integration the MATLAB

    symbolic function is applied.

    SYSTEMEQUATIONASSEMBLY

    The three outputs from the symbolic element solver are sent to the assemblefunction which

    performs the scattering of the elemental values to the respective locations in the globally sized

    matrix based on the nodal values for each element. That code is shown below for the core

    elements:

    function [Kcores1,Ccores1,Rcores1] =assemble(Ktot_core,Ctot_core,Rtot_core,core_elems,dof,elem_nodes,Kcores1,Ccores1,Rcores1)

    for i = 1:length(core_elems)nodes = elem_nodes(core_elems(i),:);name = ['K_' num2str(i)];Kcores.(name) = zeros(dof,dof);Kcores.(name)(nodes(1),nodes(1)) = Ktot_core(1,1);Kcores.(name)(nodes(1),nodes(2)) = Ktot_core(1,2);Kcores.(name)(nodes(1),nodes(3)) = Ktot_core(1,3);Kcores.(name)(nodes(1),nodes(4)) = Ktot_core(1,4);Kcores.(name)(nodes(2),nodes(1)) = Ktot_core(2,1);Kcores.(name)(nodes(2),nodes(2)) = Ktot_core(2,2);Kcores.(name)(nodes(2),nodes(3)) = Ktot_core(2,3);Kcores.(name)(nodes(2),nodes(4)) = Ktot_core(2,4);Kcores.(name)(nodes(3),nodes(1)) = Ktot_core(3,1);Kcores.(name)(nodes(3),nodes(2)) = Ktot_core(3,2);Kcores.(name)(nodes(3),nodes(3)) = Ktot_core(3,3);Kcores.(name)(nodes(3),nodes(4)) = Ktot_core(3,4);Kcores.(name)(nodes(4),nodes(1)) = Ktot_core(4,1);Kcores.(name)(nodes(4),nodes(2)) = Ktot_core(4,2);Kcores.(name)(nodes(4),nodes(3)) = Ktot_core(4,3);Kcores.(name)(nodes(4),nodes(4)) = Ktot_core(4,4);

    Kcores1 = Kcores.(name) + Kcores1;

    Ccores.(name) = zeros(dof,dof);Ccores.(name)(nodes(1),nodes(1)) = Ctot_core(1,1);Ccores.(name)(nodes(1),nodes(2)) = Ctot_core(1,2);Ccores.(name)(nodes(1),nodes(3)) = Ctot_core(1,3);Ccores.(name)(nodes(1),nodes(4)) = Ctot_core(1,4);Ccores.(name)(nodes(2),nodes(1)) = Ctot_core(2,1);Ccores.(name)(nodes(2),nodes(2)) = Ctot_core(2,2);Ccores.(name)(nodes(2),nodes(3)) = Ctot_core(2,3);Ccores.(name)(nodes(2),nodes(4)) = Ctot_core(2,4);Ccores.(name)(nodes(3),nodes(1)) = Ctot_core(3,1);

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    11/16

    Ccores.(name)(nodes(3),nodes(2)) = Ctot_core(3,2);Ccores.(name)(nodes(3),nodes(3)) = Ctot_core(3,3);Ccores.(name)(nodes(3),nodes(4)) = Ctot_core(3,4);Ccores.(name)(nodes(4),nodes(1)) = Ctot_core(4,1);Ccores.(name)(nodes(4),nodes(2)) = Ctot_core(4,2);Ccores.(name)(nodes(4),nodes(3)) = Ctot_core(4,3);Ccores.(name)(nodes(4),nodes(4)) = Ctot_core(4,4);

    Ccores1 = Ccores.(name) + Ccores1;

    Rcores.(name) = zeros(dof,1);Rcores.(name)(nodes(1)) = Rtot_core(1);Rcores.(name)(nodes(2)) = Rtot_core(2);Rcores.(name)(nodes(3)) = Rtot_core(3);Rcores.(name)(nodes(4)) = Rtot_core(4);

    Rcores1 = Rcores.(name) + Rcores1;end

    In that function it loops through based on the number of the type of elements it is working on.

    Shown for example is for the core elements and hence it uses the number of core elements. It is

    computing the globally sized matrix for each element and then simply adding that to the previously

    calculated matrix to assemble the full system. This is then performed for all of the different sets of

    elements. Finally, after the global matrix is generated for each set of elements those are all summed

    together to create the truly full system of equations. This finally finishes the system generation

    code and this information is then saved to be loaded by the time-stepping code and then finally the

    data must be visualized in some useful manner.

    SOLVING:TIME-STEPPING SCHEME

    Here a simple Euler forward time stepping scheme was employed. Below is the basic Eulerequation as well as it shown in a simplified form to compute the new temperatures:

    []

    [] []

    [][[] [] ]Where C, K, and fn are equivalent to the C, K, and R computed for the system, respectively. This

    equation is iterated on for as long as one would like to perform a simulation. For thermal systems

    selection of the time step size is rather important. If the step size is too large the data will be

    complete garbage. Here the following equation was used to compute the necessary step size based

    on the systems physical parameters.

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    12/16

    It was found here that the actual time step needed to be much smaller for the system to run.

    clc;close;clear;

    load('GlobalSys_6by6_030713.mat');

    n_ele_x = 6;n_ele_y = 6;dof = (n_ele_x+1)*(n_ele_y+1);%% Numerical Integration of system% Initial uniform domain temperatureTinC = 45;Tinit = 273.1+TinC;% Parameters used to create the time vectorstart_time = 0;k = 25;rho = 2169;

    cp = 980;alpha = k/rho/cp;L = .1;lamM = 12*alpha/L^2;dt_crit = 2/lamM;dt = 1/100*dt_crit;end_minutes = 30;end_time = 60*end_minutes;time = start_time:dt:end_time;% Initialize a temperature matrix for the four node linear rectangular% elementTl = zeros(dof,length(time));Tl(:,1) = Tinit*ones(length(dof),1);% Create Euler time stepping system using the linear shape function% element

    Fg = dt*Rg;Gg = Cg - dt*Kg;% Linear shape function system time stepping%for i=2:length(time)RT = 25;room_temp = 273.1+RT;i=2;while mean(Tl(:,i-1))>room_temp && i

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    13/16

    The code shown above is the portion that performs the times-stepping. For this particular

    simulation a while loop was run until a certain mean temperature was met. This was followed by

    inserting the last temperature values as the initial conditions to a second for loop to complete the

    simulation. That was run for a fixed amount of time.

    POST-PROCESSINGHere the post processing that was completed consisted of creating animations since this data was a

    transient set. For that the WriteVideo function of MATLAB was used. The following code is an

    example of how to create a simulation:

    xmin = 0;xmax = L;ymin = 295; ymax = 320;name2 = 'Cool_6by6_midTemps_Comparison.avi';vid = VideoWriter(name2);vid.Quality = 100;vid.FrameRate = 15;open(vid);n=3;

    for j=1:10:length(Ttot(1,:))figure(3)h=plot(x,Ttot(22:28,j),'-*',xbg,Tmc(:,j),'-.');set(h,'LineWidth', n);set(gca,'FontSize',14);axis([xmin xmax ymin ymax]);xlabel('Cell Width, [m]');ylabel('Temperature, [K]');title(['Cool-down from ' num2str(TinC) ' ^oC to ' num2str(RT) ' ^oC, Total Time =

    ' num2str(((i-1)*dt/60)+end_minutes_s) ' minutes']);legend('FEM','Bond Graph');writeVideo(vid, getframe(gcf));

    endclose(vid);winopen(name2);

    First a set of limits is set for the plotting axes followed by a name that the video file will take. Then

    the video file is started using the VideoWriter function and the quality and frame rate are set. The

    vid is opened and finally the for-loop that will step through the time data is begun. It steps through

    the length of time and the stepping amount is changed depending on how long one wants the

    generated animation to be. Then, within the loop the typical plotting is peformed as well as any

    modifications one may want to make to the figure. Finally, the writeVideo/getframe command is

    used to tell each figure to become a frame of the video. This then loops through the length of the

    time vector and then closes the vid file. Winopen may be used as an option to tell Windows to open

    the *.avi file post loop completion.

    Additionally, a heat map may be generated nicely using the pcolor plotting function in MATLAB.

    The code used here looks like so:

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    14/16

    name1 = 'test1_15minCool_6by6.avi';vid = VideoWriter(name1);vid.Quality = 100;vid.FrameRate = 15;open(vid);% Create an animation and set the color axes to stay fixed based on the% scaling in the initial pcolor plot created belowT = [Tinit, 277, 275;Tinit,278,276;Tinit,277,274];pcolor(T); shading interp; colorbar; caxis manual;set(gca,'nextplot','replacechildren');% run the loop to plot the temp map through time and get the movie framesx = n_coords(:,1); y = n_coords(:,2);for i = 1:(10/dt*dt):length(time)

    for j = 1:(n_ele_y+1)for k = 1:(n_ele_x+1)

    T(j,k) = Tl(((dof-n_ele_x)+(k-1)-((j-1)*(n_ele_x+1))),i);end

    endpcolor(T);shading interp;colorbar;writeVideo(vid, getframe(gcf));

    endclose(vid);winopen(name1);

    The nested for-loops are used to take the vector of nodal temperatures and generate a matrix in the

    shape of the physical object, in this case a 2d grid.

    RESULTSShow in the two figures below are screen-shot examples of the data generated by this code. Figure

    4 shows the temperature profile along the center line of the 2d grid in the x-direction. Additionally,

    shown in this same figure the data from a section of a 3d lumped thermal model of the same battery

    module that was generated using the Bond Graph modeling technique is shown for comparison. A

    side motivation for generating this code was to use it to validate the BG model that had been

    developed in our lab earlier in the year. It turns out that the results are quite similar and this is due

    to the proper number of lumps being used and the relatively slow heat transfer rates. Figure 5

    shows a screen-shot of the heat map animation that was generated to visualize the temperature

    distribution over the entire domain.

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    15/16

    Figure 4 - A screen-shot of the animation that was generated using the first example of the animation code.

    Figure 5 - A screen-shot of the animation shown in the second example code for creating animations.

  • 7/29/2019 MAE 239-TermPaper-20Mar2013-MKlein

    16/16

    CONCLUSIONSMuch learning was done in the creation of this code. It proved very useful as an educational tool in

    understanding how one may actually use this thing called the Finite Element Method to solve a

    differential equation. That was really the core objective here, but as stated in the background

    section it was also to make a tool that was useful to the battery thermal management researchbeing conducted in my lab. A 2d transient heat conduction problem with convection boundary

    conditions can be solved using this code and this allows for the start of its application to the labs

    research. Moving forward, taking what was learned here as a stepping point, developing the

    expanded capability of solving a coupled electrochemical-thermal problem as well as the coupled

    thermal-fluid problem of the actual battery system will provide the greatest benefit to the labs

    research. This work here certainly provided that initial momentum.

    REFERENCESNikishkov, Gennadly. (2010). Programming Finite Elements in JavaTM. London: Springer-Verlag.

    The main equations shown above were used from Chapter 2.

    Chessa, J. 2002. Programming the Finite Element Method with MATLAB.

    Website:http://www.math.mcmaster.ca/~bprotas/MATH745b/matlab_fem.pdf

    This source was useful to understand someone elses process for developing a similar code.

    Cailletaud, G. Finite Element: Matrix Formulation. PowerPoint. Unkown date of publication. Firstviewed 25 February 2013.

    http://mms2.ensmp.fr/msi_paris/deformation/transparents/e_ElemFormulation.pdf.

    This served useful in wrapping my head around the matrix formulation for one element into

    the global size.

    http://www.math.mcmaster.ca/~bprotas/MATH745b/matlab_fem.pdfhttp://www.math.mcmaster.ca/~bprotas/MATH745b/matlab_fem.pdfhttp://www.math.mcmaster.ca/~bprotas/MATH745b/matlab_fem.pdfhttp://mms2.ensmp.fr/msi_paris/deformation/transparents/e_ElemFormulation.pdfhttp://mms2.ensmp.fr/msi_paris/deformation/transparents/e_ElemFormulation.pdfhttp://mms2.ensmp.fr/msi_paris/deformation/transparents/e_ElemFormulation.pdfhttp://www.math.mcmaster.ca/~bprotas/MATH745b/matlab_fem.pdf