0001 function [elements,grids,loads,constraints,materials,part,tpart]=ModelProcessorPrognostic(md);
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,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','h',md.thickness(md.elements(pos,1:3)));
0038 elements(pos)=SetStructureField(elements(pos),'element','s',md.surface(md.elements(pos,1:3)));
0039 elements(pos)=SetStructureField(elements(pos),'element','b',md.bed(md.elements(pos,1:3)));
0040 elements(pos)=SetStructureField(elements(pos),'element','shelf',md.elementoniceshelf(pos));
0041 elements(pos)=SetStructureField(elements(pos),'element','artificial_diffusivity',md.artificial_diffusivity);
0042
0043 else
0044 pos=find(element_partitioning==labindex);
0045 [elements(pos).element]=deal(pentaelem);
0046
0047 elements(pos)=SetStructureField(elements(pos),'element','type','pentaelem');
0048 elements(pos)=SetStructureField(elements(pos),'element','id',pos);
0049 elements(pos)=SetStructureField(elements(pos),'element','g',md.elements(pos,1:6));
0050 elements(pos)=SetStructureField(elements(pos),'element','h',md.thickness(md.elements(pos,1:6)));
0051 elements(pos)=SetStructureField(elements(pos),'element','s',md.surface(md.elements(pos,1:6)));
0052 elements(pos)=SetStructureField(elements(pos),'element','b',md.bed(md.elements(pos,1:6)));
0053 elements(pos)=SetStructureField(elements(pos),'element','shelf',md.elementoniceshelf(pos));
0054 elements(pos)=SetStructureField(elements(pos),'element','onbed',md.elementonbed(pos));
0055 elements(pos)=SetStructureField(elements(pos),'element','onsurface',md.elementonsurface(pos));
0056 elements(pos)=SetStructureField(elements(pos),'element','collapse',1);
0057 elements(pos)=SetStructureField(elements(pos),'element','artificial_diffusivity',md.artificial_diffusivity);
0058 end
0059
0060 if cluster,
0061
0062 mygrids(md.elements(el3pos,:))=1;
0063 mygrids(md.elements(el6pos,:))=1;
0064
0065
0066
0067 bordergrids=double(gplus(mygrids)>1);
0068 else
0069 bordergrids=zeros(md.numberofgrids,1);
0070 end
0071
0072
0073 grids=struct('grid',cell(md.numberofgrids,1));
0074
0075 pos=[1:md.numberofgrids]';
0076 [grids(pos).grid]=deal(node);
0077 grids(pos)=SetStructureField(grids(pos),'grid','id',pos);
0078 grids(pos)=SetStructureField(grids(pos),'grid','x',md.x(pos));
0079 grids(pos)=SetStructureField(grids(pos),'grid','y',md.y(pos));
0080 grids(pos)=SetStructureField(grids(pos),'grid','z',md.z(pos));
0081 grids(pos)=SetStructureField(grids(pos),'grid','onbed',md.gridonbed(pos));
0082 grids(pos)=SetStructureField(grids(pos),'grid','border',bordergrids(pos));
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095 if strcmpi(md.type,'3d')
0096
0097 grids(pos)=SetStructureField(grids(pos),'grid','gridset','123456');
0098 else
0099 grids(pos)=SetStructureField(grids(pos),'grid','gridset','23456');
0100 end
0101
0102 if strcmpi(md.type,'3d'),
0103
0104 for n=1:length(elements),
0105
0106
0107 if elements(n).element.onbed,
0108 for j=1:3,
0109 grids(elements(n).element.g(j)).grid.gridset='23456';
0110 end
0111 end
0112 end
0113 end
0114
0115
0116 loads=struct('load',cell([0,1]));
0117
0118
0119 constraints=struct('constraint',cell(0,0));
0120
0121
0122 [part,tpart]=PartitioningVector(md,grids);
0123
0124 end