0001 function [elements,grids,loads,constraints,materials,part,tpart]=ModelProcessorSlopeCompute(md,solutiontype);
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 global cluster
0014
0015 if cluster,
0016
0017 element_partitioning=MeshPartition(md,numlabs);
0018 else
0019
0020 element_partitioning=ones(md.numberofelements,1);
0021 labindex=1;
0022 end
0023
0024
0025 elements=struct('element',cell(md.numberofelements,1));
0026 materials=struct('material',cell(0));
0027 mygrids=zeros(md.numberofgrids,1);
0028
0029
0030 if strcmpi(md.type,'2d'),
0031 pos=find(element_partitioning==labindex);
0032 [elements(pos).element]=deal(triaelem);
0033
0034 elements(pos)=SetStructureField(elements(pos),'element','type','triaelem');
0035 elements(pos)=SetStructureField(elements(pos),'element','id',pos);
0036 elements(pos)=SetStructureField(elements(pos),'element','g',md.elements(pos,:));
0037 elements(pos)=SetStructureField(elements(pos),'element','b',md.bed(md.elements(pos,1:3)));
0038 elements(pos)=SetStructureField(elements(pos),'element','s',md.surface(md.elements(pos,1:3)));
0039
0040 else
0041 pos=find(element_partitioning==labindex);
0042 [elements(pos).element]=deal(pentaelem);
0043
0044 elements(pos)=SetStructureField(elements(pos),'element','type','pentaelem');
0045 elements(pos)=SetStructureField(elements(pos),'element','id',pos);
0046 elements(pos)=SetStructureField(elements(pos),'element','g',md.elements(pos,1:6));
0047 elements(pos)=SetStructureField(elements(pos),'element','h',md.thickness(md.elements(pos,1:6)));
0048 elements(pos)=SetStructureField(elements(pos),'element','s',md.surface(md.elements(pos,1:6)));
0049 elements(pos)=SetStructureField(elements(pos),'element','b',md.bed(md.elements(pos,1:6)));
0050 elements(pos)=SetStructureField(elements(pos),'element','shelf',md.elementoniceshelf(pos));
0051 elements(pos)=SetStructureField(elements(pos),'element','onbed',md.elementonbed(pos));
0052 elements(pos)=SetStructureField(elements(pos),'element','onsurface',md.elementonsurface(pos));
0053 elements(pos)=SetStructureField(elements(pos),'element','acceleration',0);
0054 elements(pos)=SetStructureField(elements(pos),'element','collapse',1);
0055 elements(pos)=SetStructureField(elements(pos),'element','matid',pos);
0056 elements(pos)=SetStructureField(elements(pos),'element','melting',md.melting(md.elements(pos,1:6))/md.yts);
0057 elements(pos)=SetStructureField(elements(pos),'element','accumulation',md.accumulation(md.elements(pos,1:6))/md.yts);
0058
0059 end
0060
0061 if cluster,
0062
0063 mygrids(md.elements(el3pos,:))=1;
0064 mygrids(md.elements(el6pos,:))=1;
0065
0066
0067
0068 bordergrids=double(gplus(mygrids)>1);
0069 else
0070 bordergrids=zeros(md.numberofgrids,1);
0071 end
0072
0073
0074 grids=struct('grid',cell(md.numberofgrids,1));
0075
0076 pos=[1:md.numberofgrids]';
0077 [grids(pos).grid]=deal(node);
0078 grids(pos)=SetStructureField(grids(pos),'grid','id',pos);
0079 grids(pos)=SetStructureField(grids(pos),'grid','x',md.x(pos));
0080 grids(pos)=SetStructureField(grids(pos),'grid','y',md.y(pos));
0081 grids(pos)=SetStructureField(grids(pos),'grid','z',md.z(pos));
0082 grids(pos)=SetStructureField(grids(pos),'grid','onbed',md.gridonbed(pos));
0083 grids(pos)=SetStructureField(grids(pos),'grid','border',bordergrids(pos));
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096 grids(pos)=SetStructureField(grids(pos),'grid','gridset','123456');
0097
0098
0099 if strcmpi(md.type,'3d'),
0100 for n=1:length(elements),
0101
0102
0103 if strcmpi(solutiontype,'bed_slope_compute'),
0104 if elements(n).element.onbed,
0105 for j=1:3,
0106 grids(elements(n).element.g(j)).grid.gridset='23456';
0107 end
0108 end
0109 elseif strcmpi(solutiontype,'surface_slope_compute'),
0110 if elements(n).element.onsurface,
0111 for j=4:6,
0112 grids(elements(n).element.g(j)).grid.gridset='23456';
0113 end
0114 end
0115 end
0116 end
0117 else
0118 for n=1:md.numberofgrids,
0119 grids(n).grid.gridset='23456';
0120 end
0121 end
0122
0123
0124
0125
0126 loads=struct('load',cell([0,1]));
0127
0128
0129 constraints=struct('constraint',cell(0,0));
0130
0131
0132 [part,tpart]=PartitioningVector(md,grids);
0133
0134 end