0001 function [elements,grids,loads,constraints,materials,part,tpart]=ModelProcessorDiagnosticBaseVert(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(md.numberofelements+1,1));
0027 mygrids=zeros(md.numberofgrids,1);
0028
0029
0030 if strcmpi(md.type,'2d'),
0031 error('ModelProcessorDiagnosticBaseVert error message: 2d mesh not supported yet!');
0032 end
0033
0034 pos=find(element_partitioning==labindex);
0035 [elements(pos).element]=deal(pentaelem);
0036
0037 elements(pos)=SetStructureField(elements(pos),'element','type','pentaelem');
0038 elements(pos)=SetStructureField(elements(pos),'element','id',pos);
0039 elements(pos)=SetStructureField(elements(pos),'element','g',md.elements(pos,1:6));
0040 elements(pos)=SetStructureField(elements(pos),'element','h',md.thickness(md.elements(pos,1:6)));
0041 elements(pos)=SetStructureField(elements(pos),'element','s',md.surface(md.elements(pos,1:6)));
0042 elements(pos)=SetStructureField(elements(pos),'element','b',md.bed(md.elements(pos,1:6)));
0043 elements(pos)=SetStructureField(elements(pos),'element','shelf',md.elementoniceshelf(pos));
0044 elements(pos)=SetStructureField(elements(pos),'element','onbed',md.elementonbed(pos));
0045 elements(pos)=SetStructureField(elements(pos),'element','onsurface',md.elementonsurface(pos));
0046 elements(pos)=SetStructureField(elements(pos),'element','acceleration',0);
0047 elements(pos)=SetStructureField(elements(pos),'element','collapse',1);
0048 elements(pos)=SetStructureField(elements(pos),'element','matid',pos);
0049 elements(pos)=SetStructureField(elements(pos),'element','melting',full(md.melting(md.elements(pos,1:6))/md.yts));
0050 elements(pos)=SetStructureField(elements(pos),'element','accumulation',md.accumulation(md.elements(pos,1:6))/md.yts);
0051
0052 [materials(pos).material]=deal(matice);
0053
0054 materials(pos)=SetStructureField(materials(pos),'material','id',pos);
0055
0056
0057 [materials(end).constants]=deal(matpar);
0058 materials(end)=SetStructureField(materials(end),'constants','g',md.g);
0059 materials(end)=SetStructureField(materials(end),'constants','viscosity_overshoot',md.viscosity_overshoot);
0060 materials(end)=SetStructureField(materials(end),'constants','rho_ice',md.rho_ice);
0061 materials(end)=SetStructureField(materials(end),'constants','rho_water',md.rho_water);
0062 materials(end)=SetStructureField(materials(end),'constants','thermalconductivity',md.thermalconductivity);
0063 materials(end)=SetStructureField(materials(end),'constants','heatcapacity',md.heatcapacity);
0064 materials(end)=SetStructureField(materials(end),'constants','latentheat',md.latentheat);
0065 materials(end)=SetStructureField(materials(end),'constants','beta',md.beta);
0066 materials(end)=SetStructureField(materials(end),'constants','meltingpoint',md.meltingpoint);
0067 materials(end)=SetStructureField(materials(end),'constants','mixed_layer_capacity',md.mixed_layer_capacity);
0068 materials(end)=SetStructureField(materials(end),'constants','thermal_exchange_velocity',md.thermal_exchange_velocity);
0069
0070
0071 if cluster,
0072
0073 mygrids(md.elements(el3pos,:))=1;
0074 mygrids(md.elements(el6pos,:))=1;
0075
0076
0077
0078 bordergrids=double(gplus(mygrids)>1);
0079 else
0080 bordergrids=zeros(md.numberofgrids,1);
0081 end
0082
0083
0084 grids=struct('grid',cell(md.numberofgrids,1));
0085
0086 pos=[1:md.numberofgrids]';
0087 [grids(pos).grid]=deal(node);
0088 grids(pos)=SetStructureField(grids(pos),'grid','id',pos);
0089 grids(pos)=SetStructureField(grids(pos),'grid','x',md.x(pos));
0090 grids(pos)=SetStructureField(grids(pos),'grid','y',md.y(pos));
0091 grids(pos)=SetStructureField(grids(pos),'grid','z',md.z(pos));
0092 grids(pos)=SetStructureField(grids(pos),'grid','onbed',md.gridonbed(pos));
0093 grids(pos)=SetStructureField(grids(pos),'grid','border',bordergrids(pos));
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108 grids(pos)=SetStructureField(grids(pos),'grid','gridset','123456');
0109
0110
0111 for n=1:length(elements),
0112
0113
0114 if elements(n).element.onbed,
0115 for j=1:3,
0116 grids(elements(n).element.g(j)).grid.gridset='12456';
0117 end
0118 end
0119 end
0120
0121
0122 loads=struct('load',cell([0,1]));
0123
0124
0125 constraints=struct('constraint',cell(0,0));
0126
0127
0128 [part,tpart]=PartitioningVector(md,grids);
0129
0130 end