Changeset 940


Ignore:
Timestamp:
06/12/09 09:00:57 (16 years ago)
Author:
Mathieu Morlighem
Message:

improved thermal output

Location:
issm/trunk/src/m/solutions/cielo
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/solutions/cielo/modelsize.m

    r938 r940  
    1414for i=1:length(modelsname);
    1515        if ~isempty(models.(modelsname{i}).nodesets),
    16                 dof=max(dof,models.(modelsname{i}).nodesets.fsize)
     16                dof=max(dof,models.(modelsname{i}).nodesets.fsize);
    1717        end
    1818end
  • issm/trunk/src/m/solutions/cielo/thermal.m

    r938 r940  
    2424        inputs=add(inputs,'pressure',models.t.parameters.p_g,'doublevec',1,models.t.parameters.numberofnodes);
    2525        inputs=add(inputs,'dt',models.t.parameters.dt,'double');
    26         models.t.parameters
    2726       
    2827        %call core
    29         results=thermal_core(models,inputs,md.sub_analysis_type);
     28        rawresults=thermal_core(models,inputs);
     29
     30        %process results
     31        results=struct('step',{},'time',{},'temperature',{},'melting',{});
     32        yts=models.t.parameters.yts;
     33        for n=1:length(rawresults),
     34                results(n).temperature=rawresults(n).t_g;
     35                results(n).melting=rawresults(n).m_g*yts; %in m/year
     36                results(n).time=rawresults(n).time/yts;      %in years
     37                results(n).step=n;
     38        end
    3039
    3140        %plug onto the model
  • issm/trunk/src/m/solutions/cielo/thermal_core.m

    r936 r940  
    1 function results=thermal_core(models,inputs,sub_analysis_type)
     1function results=thermal_core(models,inputs)
    22%THERMAL_CORE - core of thermal solution
    33%
    44%   Usage:
    5 %      solution=thermal_core(models,inputs,sub_analysis_type)
     5%      solution=thermal_core(models,inputs)
    66
    77%get FE model
     
    99m_m=models.m;
    1010
    11 if strcmpi(sub_analysis_type,'steady'),
     11if m_t.parameters.sub_analysis_type==steadyenum,
     12
     13        results.time=0;
    1214
    1315        displaystring(m_t.parameters.debug,'\n%s',['computing temperatures...']);
    14         [t_g m_t.loads melting_offset]=thermal_core_nonlinear(m_t,inputs,'thermal','steady');
     16        [results.t_g m_t.loads melting_offset]=thermal_core_nonlinear(m_t,inputs,'thermal','steady');
    1517
    1618        displaystring(m_t.parameters.debug,'\n%s',['computing melting...']);
    1719        inputs=add(inputs,'melting_offset',melting_offset,'double');
    18         inputs=add(inputs,'temperature',t_g,'doublevec',1,m_t.parameters.numberofnodes);
    19         m_g=diagnostic_core_linear(m_m,inputs,'melting','steady');
    20 
    21         displaystring(m_t.parameters.debug,'\n%s',['load results...']);
    22         results=struct('step',[],'time',[],'temperature',[],'melting',[]);
    23         results.step=1;
    24         results.time=0;
    25         results.temperature=t_g;
    26         results.melting=m_g*m_t.parameters.yts; %from m/s to m/a;
     20        inputs=add(inputs,'temperature',results.t_g,'doublevec',1,m_t.parameters.numberofnodes);
     21        results.m_g=diagnostic_core_linear(m_m,inputs,'melting','steady');
    2722
    2823else
     
    3429
    3530        %initialize temperature and melting
    36         soln.t_g=t_g;
    37         soln.m_g=m_g;
    38         soln.time=0;
     31        results.t_g=t_g;
     32        results.m_g=m_g;
    3933
    4034        for n=1:nsteps,
    4135
    4236                displaystring(m_t.parameters.debug,'\n%s%i/%i\n','time step: ',n,nsteps);
    43                 soln(n+1).time=n*m_t.parameters.dt;
     37                results(n+1).time=n*m_t.parameters.dt;
    4438
    4539                displaystring(m_t.parameters.debug,'\n%s',['    computing temperatures...']);
    46                 inputs=add(inputs,'temperature',soln(n).t_g,'doublevec',1,m_t.parameters.numberofnodes);
    47                 [soln(n+1).t_g m_t.loads melting_offset]=thermal_core_nonlinear(m_t,inputs,'thermal','transient');
     40                inputs=add(inputs,'temperature',results(n).t_g,'doublevec',1,m_t.parameters.numberofnodes);
     41                [results(n+1).t_g m_t.loads melting_offset]=thermal_core_nonlinear(m_t,inputs,'thermal','transient');
    4842
    4943                disp('   computing melting...');
    50                 inputs=add(inputs,'temperature',soln(n+1).t_g,'doublevec',1,m_t.parameters.numberofnodes);
     44                inputs=add(inputs,'temperature',results(n+1).t_g,'doublevec',1,m_t.parameters.numberofnodes);
    5145                inputs=add(inputs,'melting_offset',melting_offset,'double');
    52                 soln(n+1).m_g=diagnostic_core_linear(m_m,inputs,'melting','transient');
     46                results(n+1).m_g=diagnostic_core_linear(m_m,inputs,'melting','transient');
    5347
    5448        end
    5549
    56         %Wrap up
    57         results=struct('step',{},'time',{},'temperature',{},'melting',{});
    58         for n=1:nsteps+1,
    59                 results(n).temperature=soln(n).t_g;
    60                 results(n).melting=soln(n).m_g*m_t.parameters.yts; %in m/year
    61                 results(n).time=soln(n).time/m_t.parameters.yts;         %in years
    62                 results(n).step=n;
    63         end
    6450end
Note: See TracChangeset for help on using the changeset viewer.