Changeset 968
- Timestamp:
- 06/12/09 16:52:48 (16 years ago)
- Location:
- issm/trunk/src/m/solutions/cielo
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/solutions/cielo/processresults.m
r967 r968 12 12 13 13 %recover models first 14 if strcmpi(analysis_type,'diagnostic'),14 if (strcmpi(analysis_type,'diagnostic') | strcmpi(analysis_type,'transient')), 15 15 m_dh=models.dh; 16 16 m_ds=models.ds; … … 22 22 ismacayealpattyn=m_dh.parameters.ismacayealpattyn; 23 23 isstokes=m_ds.parameters.isstokes; 24 25 elseif strcmpi(analysis_type,'thermal'),24 end 25 if (strcmpi(analysis_type,'thermal') | strcmpi(analysis_type,'transient')), 26 26 m_m=models.m; 27 27 end -
issm/trunk/src/m/solutions/cielo/prognostic.m
r937 r968 25 25 26 26 displaystring(md.debug,'\n%s',['call computational core:']); 27 r awresults=prognostic_core(models,inputs,'prognostic','');27 results=prognostic_core(models,inputs,'prognostic',''); 28 28 29 29 displaystring(md.debug,'\n%s',['load results...']); 30 30 if ~isstruct(md.results), md.results=struct(); end 31 md.results.prognostic.step=1; 32 md.results.prognostic.time=0; 33 md.results.prognostic.thickness=rawresults.h_g; 31 md.results.prognostic=processresults(results,models,'prognostic'); 34 32 35 33 %stop timing -
issm/trunk/src/m/solutions/cielo/prognostic_core.m
r936 r968 7 7 %get FE model 8 8 m=models.p; 9 results.time=0; 10 results.step=1; 9 11 10 12 displaystring(m.parameters.debug,'\n%s',['depth averaging velocity...']); -
issm/trunk/src/m/solutions/cielo/thermal.m
r940 r968 26 26 27 27 %call core 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 28 results=thermal_core(models,inputs); 39 29 40 30 %plug onto the model 41 31 if ~isstruct(md.results), md.results=struct(); end 42 md.results.thermal= results;32 md.results.thermal=processresults(results,models,'thermal'); 43 33 44 34 %stop timing -
issm/trunk/src/m/solutions/cielo/thermal_core.m
r958 r968 12 12 13 13 results.time=0; 14 results.step=1; 14 15 15 16 displaystring(m_t.parameters.debug,'\n%s',['computing temperatures...']); … … 29 30 30 31 %initialize temperature and melting 32 results.step=1; 33 results.time=0; 31 34 results.t_g=t_g; 32 35 results.m_g=m_g; 33 results.time=0;34 36 35 37 for n=1:nsteps, 36 38 37 39 displaystring(m_t.parameters.debug,'\n%s%i/%i\n','time step: ',n,nsteps); 40 results(n+1).step=n+1; 38 41 results(n+1).time=n*m_t.parameters.dt; 39 42 -
issm/trunk/src/m/solutions/cielo/transient3d.m
r957 r968 35 35 36 36 %initialize solution 37 solution=struct('step',[],'time',[],'u_g',[],'p_g',[],'h_g',[],'s_g',[],'b_g',[]);38 solution.step=1;39 solution.time=0;40 solution.u_g=models.dh.parameters.u_g;41 % solution.u_g=models.dh.parameters.u_g(dofsetgen([1,2],3,length(models.dh.parameters.u_g)));42 solution.p_g=models.p.parameters.p_g;43 solution.h_g=models.p.parameters.h_g;44 solution.s_g=models.p.parameters.s_g;45 solution.b_g=models.p.parameters.b_g;46 solution.t_g=models.p.parameters.t_g;47 solution.m_g=models.p.parameters.m_g;48 solution.a_g=models.p.parameters.a_g;37 results=struct('step',[],'time',[],'u_g',[],'p_g',[],'h_g',[],'s_g',[],'b_g',[]); 38 results.step=1; 39 results.time=0; 40 results.u_g=models.dh.parameters.u_g; 41 %results.u_g=models.dh.parameters.u_g(dofsetgen([1,2],3,length(models.dh.parameters.u_g))); 42 results.p_g=models.p.parameters.p_g; 43 results.h_g=models.p.parameters.h_g; 44 results.s_g=models.p.parameters.s_g; 45 results.b_g=models.p.parameters.b_g; 46 results.t_g=models.p.parameters.t_g; 47 results.m_g=models.p.parameters.m_g; 48 results.a_g=models.p.parameters.a_g; 49 49 50 50 %initialize inputs 51 51 displaystring(md.debug,'\n%s',['setup inputs...']); 52 52 inputs=inputlist; 53 inputs=add(inputs,'velocity', solution.u_g,'doublevec',3,models.p.parameters.numberofnodes);54 inputs=add(inputs,'melting', solution.m_g,'doublevec',1,models.p.parameters.numberofnodes);55 inputs=add(inputs,'accumulation', solution.a_g,'doublevec',1,models.p.parameters.numberofnodes);53 inputs=add(inputs,'velocity',results.u_g,'doublevec',3,models.p.parameters.numberofnodes); 54 inputs=add(inputs,'melting',results.m_g,'doublevec',1,models.p.parameters.numberofnodes); 55 inputs=add(inputs,'accumulation',results.a_g,'doublevec',1,models.p.parameters.numberofnodes); 56 56 inputs=add(inputs,'dt',models.p.parameters.dt,'double'); 57 57 … … 70 70 displaystring(md.debug,'\n%s%g%s%g%s%g\n','time [yr]: ',time/yts,' iteration number: ',n,'/',floor(finaltime/dt)); 71 71 72 solution(n+1).step=n+1;73 solution(n+1).time=time;72 results(n+1).step=n+1; 73 results(n+1).time=time; 74 74 75 75 %update inputs 76 inputs=add(inputs,'thickness', solution(n).h_g,'doublevec',1,models.p.parameters.numberofnodes);77 inputs=add(inputs,'surface', solution(n).s_g,'doublevec',1,models.p.parameters.numberofnodes);78 inputs=add(inputs,'bed', solution(n).b_g,'doublevec',1,models.p.parameters.numberofnodes);79 inputs=add(inputs,'velocity', solution(n).u_g,'doublevec',3,models.p.parameters.numberofnodes);80 inputs=add(inputs,'pressure', solution(n).p_g,'doublevec',1,models.p.parameters.numberofnodes);81 inputs=add(inputs,'temperature', solution(n).t_g,'doublevec',1,models.t.parameters.numberofnodes);76 inputs=add(inputs,'thickness',results(n).h_g,'doublevec',1,models.p.parameters.numberofnodes); 77 inputs=add(inputs,'surface',results(n).s_g,'doublevec',1,models.p.parameters.numberofnodes); 78 inputs=add(inputs,'bed',results(n).b_g,'doublevec',1,models.p.parameters.numberofnodes); 79 inputs=add(inputs,'velocity',results(n).u_g,'doublevec',3,models.p.parameters.numberofnodes); 80 inputs=add(inputs,'pressure',results(n).p_g,'doublevec',1,models.p.parameters.numberofnodes); 81 inputs=add(inputs,'temperature',results(n).t_g,'doublevec',1,models.t.parameters.numberofnodes); 82 82 83 83 %Deal with temperature first 84 84 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');86 inputs=add(inputs,'temperature', solution(n+1).t_g,'doublevec',1,models.t.parameters.numberofnodes);85 [results(n+1).t_g models.t.loads melting_offset]=thermal_core_nonlinear(models.t,inputs,'thermal','transient'); 86 inputs=add(inputs,'temperature',results(n+1).t_g,'doublevec',1,models.t.parameters.numberofnodes); 87 87 88 88 displaystring(md.debug,'\n%s',[' computing melting...']); 89 89 inputs=add(inputs,'melting_offset',melting_offset,'double'); 90 solution(n+1).m_g=diagnostic_core_linear(models.m,inputs,'melting','transient');90 results(n+1).m_g=diagnostic_core_linear(models.m,inputs,'melting','transient'); 91 91 92 92 %Compute depth averaged temperature 93 temperature_average=FieldDepthAverage(models.t.elements,models.t.nodes,models.t.loads,models.t.materials, solution(n+1).t_g,'temperature');93 temperature_average=FieldDepthAverage(models.t.elements,models.t.nodes,models.t.loads,models.t.materials,results(n+1).t_g,'temperature'); 94 94 inputs=add(inputs,'temperature_average',temperature_average,'doublevec',1,models.t.parameters.numberofnodes); 95 95 96 96 %Deal with velocities. 97 97 rawresults=diagnostic_core(models,inputs); 98 solution(n+1).u_g=rawresults.u_g; solution(n+1).p_g=rawresults.p_g;98 results(n+1).u_g=rawresults.u_g; results(n+1).p_g=rawresults.p_g; 99 99 100 100 %compute new thickness 101 101 displaystring(md.debug,'\n%s',[' computing new thickness...']); 102 inputs=add(inputs,'velocity', solution(n+1).u_g,'doublevec',3,models.p.parameters.numberofnodes);102 inputs=add(inputs,'velocity',results(n+1).u_g,'doublevec',3,models.p.parameters.numberofnodes); 103 103 rawresults=prognostic_core(models,inputs,'prognostic',''); 104 104 new_thickness=rawresults.h_g; … … 106 106 %update surface and bed using the new thickness 107 107 displaystring(md.debug,'\n%s',[' updating geometry...']); 108 [new_thickness,new_bed,new_surface]=UpdateGeometry(models.p.elements,models.p.nodes,models.p.loads,models.p.materials,models.p.parameters,new_thickness, solution(n).b_g,solution(n).s_g);108 [new_thickness,new_bed,new_surface]=UpdateGeometry(models.p.elements,models.p.nodes,models.p.loads,models.p.materials,models.p.parameters,new_thickness,results(n).b_g,results(n).s_g); 109 109 110 %Record bed surface and thickness in the solution111 solution(n+1).h_g=new_thickness;112 solution(n+1).b_g=new_bed;113 solution(n+1).s_g=new_surface;110 %Record bed surface and thickness in the results 111 results(n+1).h_g=new_thickness; 112 results(n+1).b_g=new_bed; 113 results(n+1).s_g=new_surface; 114 114 115 115 %figure out if time stepping is good 116 116 %displaystring(md.debug,' checking time stepping...')); 117 %[back,dt,time]=TimeStepping(md, solution,dt,time);117 %[back,dt,time]=TimeStepping(md,results,dt,time); 118 118 %if back, 119 119 % continue; … … 135 135 end 136 136 137 %Load results onto model 138 results=struct('step',[],'time',[],'vx',[],'vy',[],'vel',[],'pressure',[],'thickness',[],'surface',[],'bed',[]); 139 for i=1:length(solution), 140 results(i).step=solution(i).step; 141 results(i).time=solution(i).time/yts; 142 results(i).vx=solution(i).u_g(1:3:end)*yts; 143 results(i).vy=solution(i).u_g(2:3:end)*yts; 144 results(i).vz=solution(i).u_g(3:3:end)*yts; 145 results(i).vel=sqrt(solution(i).u_g(1:3:end).^2+solution(i).u_g(2:3:end).^2+solution(i).u_g(3:3:end).^2)*yts; 146 results(i).pressure=solution(i).p_g; 147 results(i).bed=solution(i).b_g; 148 results(i).surface=solution(i).s_g; 149 results(i).thickness=solution(i).h_g; 150 results(i).temperature=solution(i).t_g; 151 results(i).melting=solution(i).m_g; 152 end 137 %process results 153 138 if ~isstruct(md.results), md.results=struct(); end 154 md.results.transient= results;139 md.results.transient=processresults(results,models,'transient');
Note:
See TracChangeset
for help on using the changeset viewer.