Changeset 936
- Timestamp:
- 06/12/09 08:32:16 (16 years ago)
- Location:
- issm/trunk/src/m/solutions/cielo
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/solutions/cielo/modelsize.m
r922 r936 3 3 % 4 4 % Usage: 5 % dof=modelsize(m _dh,m_dv,m_ds,m_dhu,m_sl)5 % dof=modelsize(models) 6 6 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 8 dof=0; 13 9 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 11 modelsname=fieldnames(models); 12 13 %get max dof 14 for i=1:length(modelsname); 15 modelsname{i} 16 if ~isempty(models.(modelsname{i}).nodesets), 17 dof=max(dof,models.(modelsname{i}).nodesets.fsize) 21 18 end 22 19 end 23 if ~isempty(m_dhu.nodesets),24 if dof<m_dhu.nodesets.fsize,25 dof=m_dhu.nodesets.fsize;26 end27 end -
issm/trunk/src/m/solutions/cielo/prognostic.m
r915 r936 10 10 %Build all models requested for diagnostic simulation 11 11 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); 13 13 14 14 % figure out number of dof: just for information purposes. 15 md.dof=m _p.nodesets.fsize;15 md.dof=models.p.nodesets.fsize; 16 16 17 17 %initialize inputs 18 18 displaystring(md.debug,'\n%s',['setup inputs...']); 19 19 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'); 25 25 26 26 displaystring(md.debug,'\n%s',['call computational core:']); 27 h_g=prognostic_core(m_p,inputs,'prognostic','');27 rawresults=prognostic_core(models,inputs,'prognostic',''); 28 28 29 29 displaystring(md.debug,'\n%s',['load results...']); … … 31 31 md.results.prognostic.step=1; 32 32 md.results.prognostic.time=0; 33 md.results.prognostic.thickness= h_g;33 md.results.prognostic.thickness=rawresults.h_g; 34 34 35 35 %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)1 function results=prognostic_core(models,inputs,analysis_type,sub_analysis_type) 2 2 %PROGNOSTIC_CORE - linear solution sequence 3 3 % 4 4 % Usage: 5 5 % h_g=prognostic_core(m,inputs,analysis_type,sub_analysis_type) 6 7 %get FE model 8 m=models.p; 6 9 7 10 displaystring(m.parameters.debug,'\n%s',['depth averaging velocity...']); … … 12 15 13 16 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); 15 18 16 19 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); 18 21 19 22 end %end function -
issm/trunk/src/m/solutions/cielo/thermal.m
r932 r936 26 26 27 27 %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); 29 29 30 30 %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)1 function results=thermal_core(models,inputs,sub_analysis_type) 2 2 %THERMAL_CORE - core of thermal solution 3 3 % 4 4 % Usage: 5 % solution=thermal_core(m _t,m_m,inputs,sub_analysis_type)5 % solution=thermal_core(models,inputs,sub_analysis_type) 6 6 7 %get FE model 8 m_t=models.t; 9 m_m=models.m; 7 10 8 11 if strcmpi(sub_analysis_type,'steady'), … … 17 20 18 21 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; 24 27 25 28 else … … 52 55 53 56 %Wrap up 54 solution=struct('step',{},'time',{},'temperature',{},'melting',{});57 results=struct('step',{},'time',{},'temperature',{},'melting',{}); 55 58 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/year58 solution(n).time=soln(n).time/m_t.parameters.yts; %in years59 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; 60 63 end 61 64 end -
issm/trunk/src/m/solutions/cielo/transient2d.m
r932 r936 69 69 70 70 %Get horizontal solution. 71 r esultsdiag=diagnostic_core(models,inputs);72 solution(n+1).u_g=r esultsdiag.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; 73 73 74 74 %compute new thickness 75 75 disp(sprintf('%s',' computing new thickness...')); 76 76 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; 78 79 79 80 %update surface and bed using the new thickness -
issm/trunk/src/m/solutions/cielo/transient3d.m
r932 r936 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');85 [solution(n+1).t_g models.t.loads melting_offset]=thermal_core_nonlinear(models,inputs,'thermal','transient'); 86 86 inputs=add(inputs,'temperature',solution(n+1).t_g,'doublevec',1,models.t.parameters.numberofnodes); 87 87 … … 95 95 96 96 %Deal with velocities. 97 r esultsdiag=diagnostic_core(models,inputs);98 solution(n+1).u_g=r esultsdiag.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; 99 99 100 100 %compute new thickness
Note:
See TracChangeset
for help on using the changeset viewer.