0001 function [elements,grids,loads,constraints,materials,part,tpart]=ModelProcessorDiagnosticVert(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 pos=find(element_partitioning==labindex);
0031 [elements(pos).element]=deal(pentaelem);
0032
0033 elements(pos)=SetStructureField(elements(pos),'element','type','pentaelem');
0034 elements(pos)=SetStructureField(elements(pos),'element','id',pos);
0035 elements(pos)=SetStructureField(elements(pos),'element','g',md.elements(pos,1:6));
0036 elements(pos)=SetStructureField(elements(pos),'element','h',md.thickness(md.elements(pos,1:6)));
0037 elements(pos)=SetStructureField(elements(pos),'element','s',md.surface(md.elements(pos,1:6)));
0038 elements(pos)=SetStructureField(elements(pos),'element','b',md.bed(md.elements(pos,1:6)));
0039 elements(pos)=SetStructureField(elements(pos),'element','friction_type',md.drag_type);
0040 elements(pos)=SetStructureField(elements(pos),'element','k',md.drag(md.elements(pos,1:6)));
0041 elements(pos)=SetStructureField(elements(pos),'element','p',md.p(pos));
0042 elements(pos)=SetStructureField(elements(pos),'element','q',md.q(pos));
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','meanvel',md.meanvel);
0047 elements(pos)=SetStructureField(elements(pos),'element','epsvel',md.epsvel);
0048 elements(pos)=SetStructureField(elements(pos),'element','acceleration',0);
0049 elements(pos)=SetStructureField(elements(pos),'element','collapse',0);
0050 elements(pos)=SetStructureField(elements(pos),'element','matid',pos);
0051 elements(pos)=SetStructureField(elements(pos),'element','collapse',zeros(length(pos),1));
0052
0053 [materials(pos).material]=deal(matice);
0054
0055 materials(pos)=SetStructureField(materials(pos),'material','id',pos);
0056 materials(pos)=SetStructureField(materials(pos),'material','B',md.B(md.elements(pos,1:6))*[1;1;1;1;1;1]/6);
0057 materials(pos)=SetStructureField(materials(pos),'material','n',md.n(pos));
0058
0059
0060 [materials(end).constants]=deal(matpar);
0061 materials(end)=SetStructureField(materials(end),'constants','g',md.g);
0062 materials(end)=SetStructureField(materials(end),'constants','viscosity_overshoot',md.viscosity_overshoot);
0063 materials(end)=SetStructureField(materials(end),'constants','rho_ice',md.rho_ice);
0064 materials(end)=SetStructureField(materials(end),'constants','rho_water',md.rho_water);
0065 materials(end)=SetStructureField(materials(end),'constants','thermalconductivity',md.thermalconductivity);
0066 materials(end)=SetStructureField(materials(end),'constants','heatcapacity',md.heatcapacity);
0067 materials(end)=SetStructureField(materials(end),'constants','latentheat',md.latentheat);
0068 materials(end)=SetStructureField(materials(end),'constants','beta',md.beta);
0069 materials(end)=SetStructureField(materials(end),'constants','meltingpoint',md.meltingpoint);
0070 materials(end)=SetStructureField(materials(end),'constants','mixed_layer_capacity',md.mixed_layer_capacity);
0071 materials(end)=SetStructureField(materials(end),'constants','thermal_exchange_velocity',md.thermal_exchange_velocity);
0072
0073 if cluster,
0074
0075
0076 bordergrids=double(gplus(mygrids)>1);
0077 else
0078 bordergrids=zeros(md.numberofgrids,1);
0079 end
0080
0081
0082 grids=struct('grid',cell(md.numberofgrids,1));
0083
0084 pos=[1:md.numberofgrids]';
0085 [grids(pos).grid]=deal(node);
0086 grids(pos)=SetStructureField(grids(pos),'grid','id',pos);
0087 grids(pos)=SetStructureField(grids(pos),'grid','x',md.x(pos));
0088 grids(pos)=SetStructureField(grids(pos),'grid','y',md.y(pos));
0089 grids(pos)=SetStructureField(grids(pos),'grid','z',md.z(pos));
0090 grids(pos)=SetStructureField(grids(pos),'grid','onbed',md.gridonbed(pos));
0091 grids(pos)=SetStructureField(grids(pos),'grid','border',bordergrids(pos));
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104 grids(pos)=SetStructureField(grids(pos),'grid','gridset','12456');
0105
0106
0107
0108
0109 loads=struct('load',cell([0,1]));
0110
0111
0112 spcs=find(md.gridonbed);
0113 constraints=struct('constraint',cell(length(spcs),1));
0114
0115 count=1;
0116 for i=1:md.numberofgrids,
0117 if md.gridonbed(i),
0118
0119
0120 constraints(count).constraint=spc;
0121 constraints(count).constraint.grid=i;
0122 constraints(count).constraint.dof=3;
0123 constraints(count).constraint.value=0;
0124 count=count+1;
0125 end
0126 end
0127
0128
0129 [part,tpart]=PartitioningVector(md,grids);
0130
0131 end