icethermal_core

PURPOSE ^

ICETHERMAL_CORE - core of the thermal solution

SYNOPSIS ^

function [t_g loads melting_offset]=icethermal_core(m,analysis_type,varargin);

DESCRIPTION ^

ICETHERMAL_CORE - core of the thermal solution

   Usage:
      [t_g loads melting_offset]=icethermal_core(m,analysis_type,varargin)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [t_g loads melting_offset]=icethermal_core(m,analysis_type,varargin);
0002 %ICETHERMAL_CORE - core of the thermal solution
0003 %
0004 %   Usage:
0005 %      [t_g loads melting_offset]=icethermal_core(m,analysis_type,varargin)
0006 
0007 %global variables
0008 global cluster gridset
0009 
0010 %recover fem model fields
0011 elements=m.elements;
0012 grids=m.grids;
0013 materials=m.materials;
0014 loads=m.loads;
0015 ys=m.ys;
0016 gridset=m.gridset;
0017 G_mn=m.Gmn;
0018 params=m.params;
0019 
0020 %recover parameters
0021 sparsity=params.sparsity;
0022 solver_type=params.solver_type;
0023 
0024 %recover extra inputs and initialize solution
0025 if nargin==3,
0026     inputs=varargin{1};
0027 else    
0028     inputs=struct();
0029 end
0030 
0031 %initialize solution vector
0032 t_g=[];
0033 
0034 converged=0;
0035 firstiteration=1;
0036 
0037 disp(sprintf('%s','   starting direct shooting method'));
0038 
0039 dt=inputs.dt;
0040 
0041 %Recover pressure from inputs
0042 pressure=inputs.pressure;
0043 
0044 while(~converged),
0045  
0046     % Generate system matrices (stiffness and load)
0047     
0048     %loads and stiffness are computed only once, not the penalties
0049     kflag=1;pflag=1;
0050 
0051     %generate stiffness and loads
0052     if firstiteration
0053         [K_gg,p_g]=SystemMatrices(elements,grids,loads,materials,kflag, pflag, params.sparsity,inputs,analysis_type);
0054         firstiteration=0;
0055     end
0056     [K_gg_penalized,p_g_penalized melting_offset]=PenaltySystemMatrices(grids,loads,materials,kflag, pflag, params.sparsity,inputs,analysis_type,K_gg,p_g);
0057 
0058     % Reduce stiffness matrix from g set to f set (effectively rooting out the single point constraints),
0059     % and compute modifications to loads from single point constraints.
0060     [K_ff K_fs]=IceReducematrixfromgtof(K_gg_penalized,G_mn); 
0061 
0062     % Reduce load from g set to f set
0063     p_f=IceReducerightside(p_g_penalized,G_mn,K_fs,ys);
0064     
0065     % Solve
0066     t_f=Solver(K_ff,p_f,params.solver_type);
0067  
0068     % Add single point constraints back, ie increase f-set by s-set into the global g-set.
0069     t_g= Mergesolution_g(t_f,G_mn,ys); 
0070 
0071     [loads,converged]=IcePenaltyConstraints(loads,grids,materials,params,struct('pressure',pressure, 'dt',dt, 'temperature',t_g));
0072 
0073 end

Generated on Sun 29-Mar-2009 20:22:55 by m2html © 2003