Changeset 727


Ignore:
Timestamp:
06/02/09 15:13:44 (16 years ago)
Author:
Mathieu Morlighem
Message:

corrected prognostic core (identical as parallel)

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

Legend:

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

    r677 r727  
    1212        md.analysis_type='prognostic'; m_p=CreateFemModel(md);
    1313
    14         %Take only the first two dofs of m_p.parameters.u_g
    15         u_g=m_p.parameters.u_g(dofsetgen([1,2],3,m_p.parameters.numberofnodes*3));
    16         displaystring(md.debug,'\n%s',['depth averaging velocity...']);
    17         u_g=VelocityDepthAverage(m_p.elements,m_p.nodes,m_p.loads,m_p.materials,u_g);
    18 
    1914        % figure out number of dof: just for information purposes.
    2015        md.dof=m_p.nodesets.fsize;
     
    2318        displaystring(md.debug,'\n%s',['setup inputs...']);
    2419        inputs=inputlist;
    25         inputs=add(inputs,'velocity_average',u_g,'doublevec',2,m_p.parameters.numberofnodes);
     20        inputs=add(inputs,'velocity',m_p.parameters.u_g,'doublevec',3,m_p.parameters.numberofnodes);
    2621        inputs=add(inputs,'thickness',m_p.parameters.h_g,'doublevec',1,m_p.parameters.numberofnodes);
    2722        inputs=add(inputs,'melting',m_p.parameters.m_g,'doublevec',1,m_p.parameters.numberofnodes);
     
    2924        inputs=add(inputs,'dt',m_p.parameters.dt,'double');
    3025
    31         displaystring(md.debug,'\n%s',['computing new thickness...']);
     26        displaystring(md.debug,'\n%s',['call computational core:']);
    3227        h_g=prognostic_core(m_p,inputs,'prognostic','');
    33        
    34         displaystring(md.debug,'\n%s',['extrude new thickness...']);
    35         h_g=ThicknessExtrude(m_p.elements,m_p.nodes,m_p.loads,m_p.materials,h_g);
    36        
     28
    3729        displaystring(md.debug,'\n%s',['load results...']);
    3830        md.results.prognostic.step=1;
  • issm/trunk/src/m/solutions/cielo/prognostic_core.m

    r603 r727  
    1 function u_g=prognostic_core(m,inputs,analysis_type,sub_analysis_type)
     1function h_g=prognostic_core(m,inputs,analysis_type,sub_analysis_type)
    22%PROGNOSTIC_CORE - linear solution sequence
    33%
    44%   Usage:
    5 %      u_g=prognostic_core(m,inputs,analysis_type,sub_analysis_type)
     5%      h_g=prognostic_core(m,inputs,analysis_type,sub_analysis_type)
    66
    7         %stiffness and load generation only:
    8         m.parameters.kflag=1; m.parameters.pflag=1;
     7        displaystring(m.parameters.debug,'\n%s',['depth averaging velocity...']);
     8        %Take only the first two dofs of m.parameters.u_g
     9        u_g=get(inputs,'velocity',[1 1 0 0]);
     10        u_g=VelocityDepthAverage(m.elements,m.nodes,m.loads,m.materials,u_g);
     11        inputs=add(inputs,'velocity_average',u_g,'doublevec',2,m.parameters.numberofnodes);
    912
    10         %Update inputs in datasets
    11         [m.elements,m.nodes, m.loads,m.materials]=UpdateFromInputs(m.elements,m.nodes, m.loads,m.materials,inputs);
    12        
    13         %system matrices
    14         [K_gg, p_g]=SystemMatrices(m.elements,m.nodes,m.loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type);
    15         [K_gg, p_g,kmax]=PenaltySystemMatrices(K_gg,p_g,m.elements,m.nodes,m.loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type);
    16        
    17         %Reduce tangent matrix from g size to f size
    18         [K_ff, K_fs] = Reducematrixfromgtof( K_gg, m.Gmn, m.nodesets);
    19        
    20         %Reduce load from g size to f size
    21         [p_f] = Reduceloadfromgtof( p_g, m.Gmn, K_fs, m.ys, m.nodesets);
    22        
    23         %Solve 
    24         [u_f]=Solver(K_ff,p_f,[],m.parameters);
    25        
    26         %Merge back to g set
    27         [u_g]= Mergesolutionfromftog( u_f, m.Gmn, m.ys, m.nodesets );
     13        displaystring(m.parameters.debug,'\n%s',['call computational core:']);
     14        h_g=diagnostic_core_linear(m,inputs,analysis_type,sub_analysis_type);
     15
     16        displaystring(m.parameters.debug,'\n%s',['extrude computed thickness on all layers:']);
     17        h_g=ThicknessExtrude(m.elements,m.nodes,m.loads,m.materials,h_g);
    2818
    2919end %end function
  • issm/trunk/src/m/solutions/cielo/thermal.m

    r719 r727  
    3636               
    3737                displaystring(md.debug,'\n%s',['load results...']);
    38                 md.results.thermal.step=1;
    39                 md.results.thermal.time=0;
    40                 md.results.thermal.temperature=t_g;
    41                 md.results.thermal.melting=m_g*md.yts; %from m/s to m/a
     38                solution=struct('step',[],'time',[],'temperature',[],'melting',[]);
     39                solution.step=1;
     40                solution.time=0;
     41                solution.temperature=t_g;
     42                solution.melting=m_g*md.yts; %from m/s to m/a;
     43                md.results.thermal=solution;
    4244
    4345        else
     
    7072               
    7173                %Wrap up
    72                 solution=struct('time',{},'temperature',{},'melting',{});
     74                solution=struct('step',{},'time',{},'temperature',{},'melting',{});
    7375                for n=1:nsteps+1,
    7476                        solution(n).temperature=soln(n).t_g;
Note: See TracChangeset for help on using the changeset viewer.