Changeset 785
- Timestamp:
- 06/04/09 16:58:21 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/solutions/ice/transient3d.m
r770 r785 11 11 12 12 %Figure out which type of elements are present 13 [fem.ishutter,fem.ismacayealpattyn,fem.isstokes]=DiagnosticSolutionType(md.elements_type); 13 fem.ishutter=md.ishutter; 14 fem.ismacayealpattyn=md.ismacayealpattyn; 15 fem.isstokes=md.isstokes; 14 16 15 17 %First, build elements,grids,loads, etc ... for horizontal, base vertical and vertical model … … 25 27 fem.m_ds=CreateFemModel(md,'diagnostic_stokes'); 26 28 end 27 fem.m_dbv=CreateFemModel(md,'diagnostic_basevert');28 29 fem.m_dv=CreateFemModel(md,'diagnostic_vert'); 29 30 … … 34 35 35 36 %initialize (velocity,pressure,...) 36 solution.u_g=zeros(fem.m_dh u.gridset.gsize,1);37 if ~isnan(md.vx), solution.u_g(1:6:fem.m_dh u.gridset.gsize)=md.vx/md.yts; end38 if ~isnan(md.vy), solution.u_g(2:6:fem.m_dh u.gridset.gsize)=md.vy/md.yts; end39 if ~isnan(md.vz), solution.u_g(3:6:fem.m_dh u.gridset.gsize)=md.vz/md.yts; end40 solution.pressure=zeros(fem.m_dh u.gridset.gsize,1); solution.pressure(1:6:fem.m_dhu.gridset.gsize)=md.rho_ice*md.g*(md.surface-md.z); %lithostatic pressure to spin up37 solution.u_g=zeros(fem.m_dh.gridset.gsize,1); 38 if ~isnan(md.vx), solution.u_g(1:6:fem.m_dh.gridset.gsize)=md.vx/md.yts; end 39 if ~isnan(md.vy), solution.u_g(2:6:fem.m_dh.gridset.gsize)=md.vy/md.yts; end 40 if ~isnan(md.vz), solution.u_g(3:6:fem.m_dh.gridset.gsize)=md.vz/md.yts; end 41 solution.pressure=zeros(fem.m_dh.gridset.gsize,1); solution.pressure(1:6:fem.m_dh.gridset.gsize)=md.rho_ice*md.g*(md.surface-md.z); %lithostatic pressure to spin up 41 42 solution.t_g=zeros(fem.m_t.gridset.gsize,1); 42 43 if ~isempty(md.temperature), … … 51 52 %initialize geometry and time 52 53 solution.mesh=struct('elements',md.elements,'grids',[md.x md.y md.z]); 53 solution.thickness=zeros(fem.m_dh u.gridset.gsize,1);solution.thickness(1:6:fem.m_dhu.gridset.gsize)=md.thickness;54 solution.surface=zeros(fem.m_dh u.gridset.gsize,1);solution.surface(1:6:fem.m_dhu.gridset.gsize)=md.surface;55 solution.bed=zeros(fem.m_dh u.gridset.gsize,1);solution.bed(1:6:fem.m_dhu.gridset.gsize)=md.bed;54 solution.thickness=zeros(fem.m_dh.gridset.gsize,1);solution.thickness(1:6:fem.m_dh.gridset.gsize)=md.thickness; 55 solution.surface=zeros(fem.m_dh.gridset.gsize,1);solution.surface(1:6:fem.m_dh.gridset.gsize)=md.surface; 56 solution.bed=zeros(fem.m_dh.gridset.gsize,1);solution.bed(1:6:fem.m_dh.gridset.gsize)=md.bed; 56 57 solution.time=0; 57 58 … … 83 84 fem.inputs.surface=solution(n).surface; 84 85 85 %%Deal with temperature first 86 %disp(' computing temperature...'); 87 %[solution(n+1).t_g loads_t melting_offset]=thermal_core(fem.m_t,'thermaltransient',fem.inputs); 88 solution(n+1).t_g=solution(1).t_g; 89 %disp(' computing melting...'); 90 %fem.inputs.temperature=full(solution(n+1).t_g); 91 %fem.inputs.melting_offset=melting_offset; 92 %solution(n+1).melting_g=melting_core(fem.m_m,'thermaltransient',fem.inputs); 93 solution(n+1).melting_g=solution(1).melting_g; 86 %Deal with temperature first 87 disp(' computing temperature...'); 88 [solution(n+1).t_g loads_t melting_offset]=thermal_core(fem.m_t,'thermaltransient',fem.inputs); 89 disp(' computing melting...'); 90 fem.inputs.temperature=full(solution(n+1).t_g); 91 fem.inputs.melting_offset=melting_offset; 92 solution(n+1).melting_g=melting_core(fem.m_m,'thermaltransient',fem.inputs); 94 93 95 94 %Compute depth averaged temperature for 2d type elements. 96 %temperature_average2d=DepthAverage(md,solution(n+1).t_g(1:6:fem.m_t.gridset.gsize));97 %temperature_average=project3d(md,temperature_average2d,'node');98 %temperature_average_g=zeros(fem.m_t.gridset.gsize,1);temperature_average_g(1:6:fem.m_t.gridset.gsize)=temperature_average;99 %fem.inputs.temperature_average=temperature_average_g;95 temperature_average2d=DepthAverage(md,solution(n+1).t_g(1:6:fem.m_t.gridset.gsize)); 96 temperature_average=project3d(md,temperature_average2d,'node'); 97 temperature_average_g=zeros(fem.m_t.gridset.gsize,1);temperature_average_g(1:6:fem.m_t.gridset.gsize)=temperature_average; 98 fem.inputs.temperature_average=temperature_average_g; 100 99 101 100 %Deal with velocities. … … 135 134 disp(sprintf('%s',' updating grid positions...')); 136 135 grids_t=UpdateGridPosition(md,fem.m_t.grids,new_bed,new_thickness); 137 grids_dhu=UpdateGridPosition(md,fem.m_dhu.grids,new_bed,new_thickness); 138 grids_dbv=UpdateGridPosition(md,fem.m_dbv.grids,new_bed,new_thickness); 136 grids_dh=UpdateGridPosition(md,fem.m_dh.grids,new_bed,new_thickness); 139 137 grids_dv=UpdateGridPosition(md,fem.m_dv.grids,new_bed,new_thickness); 140 138 grids_p=UpdateGridPosition(md,fem.m_p.grids,new_bed,new_thickness);
Note:
See TracChangeset
for help on using the changeset viewer.