Changeset 936


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

improved modelsize and added results=*_core(models,input)

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

Legend:

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

    r922 r936  
    33%
    44%   Usage:
    5 %      dof=modelsize(m_dh,m_dv,m_ds,m_dhu,m_sl)
     5%      dof=modelsize(models)
    66
    7 %recover models
    8 m_dh=models.dh;
    9 m_dv=models.dv;
    10 m_ds=models.ds;
    11 m_dhu=models.dhu;
    12 m_sl=models.sl;
     7%initialize dof
     8dof=0;
    139
    14 dof=0;
    15 if ~isempty(m_ds.nodesets),
    16         dof=m_ds.nodesets.fsize; %biggest dof number
    17 end
    18 if ~isempty(m_dh.nodesets),
    19         if dof<m_dh.nodesets.fsize,
    20                 dof=m_dh.nodesets.fsize; %biggest dof number
     10%get all models
     11modelsname=fieldnames(models);
     12
     13%get max dof
     14for i=1:length(modelsname);
     15        modelsname{i}
     16        if ~isempty(models.(modelsname{i}).nodesets),
     17                dof=max(dof,models.(modelsname{i}).nodesets.fsize)
    2118        end
    2219end
    23 if ~isempty(m_dhu.nodesets),
    24         if dof<m_dhu.nodesets.fsize,
    25                 dof=m_dhu.nodesets.fsize;
    26         end
    27 end
  • issm/trunk/src/m/solutions/cielo/prognostic.m

    r915 r936  
    1010        %Build all models requested for diagnostic simulation
    1111        displaystring(md.debug,'%s',['reading prognostic model data']);
    12         md.analysis_type='prognostic'; m_p=CreateFemModel(md);
     12        md.analysis_type='prognostic'; models.p=CreateFemModel(md);
    1313
    1414        % figure out number of dof: just for information purposes.
    15         md.dof=m_p.nodesets.fsize;
     15        md.dof=models.p.nodesets.fsize;
    1616
    1717        %initialize inputs
    1818        displaystring(md.debug,'\n%s',['setup inputs...']);
    1919        inputs=inputlist;
    20         inputs=add(inputs,'velocity',m_p.parameters.u_g,'doublevec',3,m_p.parameters.numberofnodes);
    21         inputs=add(inputs,'thickness',m_p.parameters.h_g,'doublevec',1,m_p.parameters.numberofnodes);
    22         inputs=add(inputs,'melting',m_p.parameters.m_g,'doublevec',1,m_p.parameters.numberofnodes);
    23         inputs=add(inputs,'accumulation',m_p.parameters.a_g,'doublevec',1,m_p.parameters.numberofnodes);
    24         inputs=add(inputs,'dt',m_p.parameters.dt,'double');
     20        inputs=add(inputs,'velocity',models.p.parameters.u_g,'doublevec',3,models.p.parameters.numberofnodes);
     21        inputs=add(inputs,'thickness',models.p.parameters.h_g,'doublevec',1,models.p.parameters.numberofnodes);
     22        inputs=add(inputs,'melting',models.p.parameters.m_g,'doublevec',1,models.p.parameters.numberofnodes);
     23        inputs=add(inputs,'accumulation',models.p.parameters.a_g,'doublevec',1,models.p.parameters.numberofnodes);
     24        inputs=add(inputs,'dt',models.p.parameters.dt,'double');
    2525
    2626        displaystring(md.debug,'\n%s',['call computational core:']);
    27         h_g=prognostic_core(m_p,inputs,'prognostic','');
     27        rawresults=prognostic_core(models,inputs,'prognostic','');
    2828
    2929        displaystring(md.debug,'\n%s',['load results...']);
     
    3131        md.results.prognostic.step=1;
    3232        md.results.prognostic.time=0;
    33         md.results.prognostic.thickness=h_g;
     33        md.results.prognostic.thickness=rawresults.h_g;
    3434
    3535        %stop timing
  • issm/trunk/src/m/solutions/cielo/prognostic_core.m

    r863 r936  
    1 function h_g=prognostic_core(m,inputs,analysis_type,sub_analysis_type)
     1function results=prognostic_core(models,inputs,analysis_type,sub_analysis_type)
    22%PROGNOSTIC_CORE - linear solution sequence
    33%
    44%   Usage:
    55%      h_g=prognostic_core(m,inputs,analysis_type,sub_analysis_type)
     6
     7        %get FE model
     8        m=models.p;
    69
    710        displaystring(m.parameters.debug,'\n%s',['depth averaging velocity...']);
     
    1215
    1316        displaystring(m.parameters.debug,'\n%s',['call computational core:']);
    14         h_g=diagnostic_core_linear(m,inputs,analysis_type,sub_analysis_type);
     17        results.h_g=diagnostic_core_linear(m,inputs,analysis_type,sub_analysis_type);
    1518
    1619        displaystring(m.parameters.debug,'\n%s',['extrude computed thickness on all layers:']);
    17         h_g=FieldExtrude(m.elements,m.nodes,m.loads,m.materials,h_g,'thickness',0);
     20        results.h_g=FieldExtrude(m.elements,m.nodes,m.loads,m.materials,results.h_g,'thickness',0);
    1821
    1922end %end function
  • issm/trunk/src/m/solutions/cielo/thermal.m

    r932 r936  
    2626       
    2727        %call core
    28         results=thermal_core(models.t,models.m,inputs,md.sub_analysis_type);
     28        results=thermal_core(models,inputs,md.sub_analysis_type);
    2929
    3030        %plug onto the model
  • issm/trunk/src/m/solutions/cielo/thermal_core.m

    r849 r936  
    1 function solution=thermal_core(m_t,m_m,inputs,sub_analysis_type)
     1function results=thermal_core(models,inputs,sub_analysis_type)
    22%THERMAL_CORE - core of thermal solution
    33%
    44%   Usage:
    5 %      solution=thermal_core(m_t,m_m,inputs,sub_analysis_type)
     5%      solution=thermal_core(models,inputs,sub_analysis_type)
    66
     7%get FE model
     8m_t=models.t;
     9m_m=models.m;
    710
    811if strcmpi(sub_analysis_type,'steady'),
     
    1720
    1821        displaystring(m_t.parameters.debug,'\n%s',['load results...']);
    19         solution=struct('step',[],'time',[],'temperature',[],'melting',[]);
    20         solution.step=1;
    21         solution.time=0;
    22         solution.temperature=t_g;
    23         solution.melting=m_g*m_t.parameters.yts; %from m/s to m/a;
     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;
    2427
    2528else
     
    5255
    5356        %Wrap up
    54         solution=struct('step',{},'time',{},'temperature',{},'melting',{});
     57        results=struct('step',{},'time',{},'temperature',{},'melting',{});
    5558        for n=1:nsteps+1,
    56                 solution(n).temperature=soln(n).t_g;
    57                 solution(n).melting=soln(n).m_g*m_t.parameters.yts; %in m/year
    58                 solution(n).time=soln(n).time/m_t.parameters.yts;         %in years
    59                 solution(n).step=n;
     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;
    6063        end
    6164end
  • issm/trunk/src/m/solutions/cielo/transient2d.m

    r932 r936  
    6969
    7070        %Get horizontal solution.
    71         resultsdiag=diagnostic_core(models,inputs);
    72         solution(n+1).u_g=resultsdiag.u_g; solution(n+1).p_g=resultsdiag.p_g;
     71        rawresults=diagnostic_core(models,inputs);
     72        solution(n+1).u_g=rawresults.u_g; solution(n+1).p_g=rawresults.p_g;
    7373
    7474        %compute new thickness
    7575        disp(sprintf('%s','   computing new thickness...'));
    7676        inputs=add(inputs,'velocity',solution(n+1).u_g,'doublevec',2,models.p.parameters.numberofnodes);
    77         new_thickness=prognostic_core(models.p,inputs,'prognostic','');
     77        rawresults=prognostic_core(models,inputs,'prognostic','');
     78        new_thickness=rawresults.h_g;
    7879
    7980        %update surface and bed using the new thickness
  • issm/trunk/src/m/solutions/cielo/transient3d.m

    r932 r936  
    8383        %Deal with temperature first
    8484        displaystring(md.debug,'\n%s',['    computing temperatures...']);
    85         [solution(n+1).t_g models.t.loads melting_offset]=thermal_core_nonlinear(models.t,inputs,'thermal','transient');
     85        [solution(n+1).t_g models.t.loads melting_offset]=thermal_core_nonlinear(models,inputs,'thermal','transient');
    8686        inputs=add(inputs,'temperature',solution(n+1).t_g,'doublevec',1,models.t.parameters.numberofnodes);
    8787       
     
    9595
    9696        %Deal with velocities.
    97         resultsdiag=diagnostic_core(models,inputs);
    98         solution(n+1).u_g=resultsdiag.u_g; solution(n+1).p_g=resultsdiag.p_g;
     97        rawresults=diagnostic_core(models,inputs);
     98        solution(n+1).u_g=rawresults.u_g; solution(n+1).p_g=rawresults.p_g;
    9999
    100100        %compute new thickness
Note: See TracChangeset for help on using the changeset viewer.