0001 function plot_tensor_principal(md,options_structure,width,i,tensor,type,plot_options);
0002
0003
0004
0005
0006
0007
0008
0009
0010 upperplots=fix((i-1)/width);
0011 if upperplots==0, leftplots=i-1; else leftplots=i-width*upperplots-1; end
0012 if strcmpi(md.type,'2d')
0013 index1=4*width*upperplots+2*leftplots+1;
0014 index2=index1+1;
0015 index3=index1+width*2;
0016 index4=index3+1;
0017 newwidth=2*width;
0018 elseif strcmpi(md.type,'3d')
0019 index1=3*3*width*upperplots+3*leftplots+1;
0020 index2=index1+1;
0021 index3=index1+2;
0022 index4=index1+width*3;
0023 index5=index4+1;
0024 index6=index4+2;
0025 newwidth=3*width;
0026 end
0027
0028
0029 type1=[type 'axis1'];
0030 plot_tensor_principalaxis(md,options_structure,newwidth,index1,tensor,type1,plot_options);
0031 type2=[type 'axis2'];
0032 plot_tensor_principalaxis(md,options_structure,newwidth,index2,tensor,type2,plot_options);
0033 if strcmpi(md.type,'3d')
0034 type3=[type 'axis3'];
0035 plot_tensor_principalaxis(md,options_structure,newwidth,index3,tensor,type3,plot_options);
0036 end
0037
0038
0039 if strcmpi(options_structure.smooth,'yes') & length(tensor.principalvalue1)==md.numberofelements
0040 tensor.principalvalue1=elementstogrids(md,tensor.principalvalue1);
0041 tensor.principalvalue2=elementstogrids(md,tensor.principalvalue2);
0042 if strcmpi(md.type,'3d'), tensor.principalvalue3=elementstogrids(md,tensor.principalvalue3); end
0043 end
0044
0045
0046
0047 if ~isnan(options_structure.layer) & options_structure.layer>=1,
0048 tensor.principalvalue1=project2d(md,tensor.principalvalue1,options_structure.layer);
0049 tensor.principalvalue2=project2d(md,tensor.principalvalue2,options_structure.layer);
0050 tensor.principalvalue3=project2d(md,tensor.principalvalue3,options_structure.layer);
0051
0052
0053 md.x=md.x2d;
0054 md.y=md.y2d;
0055 md.z=md.z2d;
0056 md.elements=md.elements2d;
0057 md.elements_type=md.elements_type2d;
0058 end
0059
0060
0061 if ~isnan(options_structure.unitmultiplier),
0062 md.x=md.x*options_structure.unitmultiplier;
0063 md.y=md.y*options_structure.unitmultiplier;
0064 md.z=md.z*options_structure.unitmultiplier;
0065 end
0066
0067 if length(tensor.principalvalue1)==length(md.elements),
0068 if ~isnan(options_structure.noiceshelf) & options_structure.noiceshelf,
0069 tensor.principalvalue1(find(md.elementoniceshelf))=NaN;
0070 tensor.principalvalue2(find(md.elementoniceshelf))=NaN;
0071 if strcmpi(md.type,'3d')
0072 tensor.principalvalue3(find(md.elementoniceshelf))=NaN;
0073 end
0074 end
0075 if ~isnan(options_structure.noicesheet) & options_structure.noicesheet,
0076 tensor.principalvalue1(find(~md.elementoniceshelf))=NaN;
0077 tensor.principalvalue2(find(~md.elementoniceshelf))=NaN;
0078 if strcmpi(md.type,'3d')
0079 tensor.principalvalue3(find(~md.elementoniceshelf))=NaN;
0080 end
0081 end
0082
0083 if (strcmpi(md.type,'2d')),
0084 A=md.elements(:,1); B=md.elements(:,2); C=md.elements(:,3);
0085
0086 subplot(2*width,2*width,index3)
0087 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue1,'FaceColor','flat','EdgeColor','black');
0088 Apply_options_tensor(options_structure,type,'principal value 1')
0089
0090 subplot(2*width,2*width,index4)
0091 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue2,'FaceColor','flat','EdgeColor','black');
0092 Apply_options_tensor(options_structure,type,'principal value 2')
0093 else
0094 if options_structure.layer>=1,
0095 A=md.elements(:,1); B=md.elements(:,2); C=md.elements(:,3);
0096
0097 subplot(3*width,3*width,index4)
0098 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue1,'FaceColor','flat','EdgeColor','black');
0099 Apply_options_tensor(options_structure,type,'principal value 1')
0100
0101 subplot(3*width,3*width,index5)
0102 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue2,'FaceColor','flat','EdgeColor','black');
0103 Apply_options_tensor(options_structure,type,'principal value 2')
0104
0105 subplot(3*width,3*width,index6)
0106 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue3,'FaceColor','flat','EdgeColor','black');
0107 Apply_options_tensor(options_structure,type,'principal value 3')
0108
0109 else
0110
0111 A=md.elements(:,1); B=md.elements(:,2); C=md.elements(:,3); D=md.elements(:,4); E=md.elements(:,5); F=md.elements(:,6);
0112
0113 subplot(3*width,3*width,index4)
0114 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue1,'FaceColor','flat','EdgeColor','black');
0115 patch( 'Faces', [D E F], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue1,'FaceColor','flat','EdgeColor','black');
0116 patch( 'Faces', [A B E D], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue1,'FaceColor','flat','EdgeColor','black');
0117 patch( 'Faces', [B E F C ], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue1,'FaceColor','flat','EdgeColor','black');
0118 patch( 'Faces', [C A D F ], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue1,'FaceColor','flat','EdgeColor','black');
0119 Apply_options_tensor(options_structure,type,'principal value 1')
0120
0121 subplot(3*width,3*width,index5)
0122 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue2,'FaceColor','flat','EdgeColor','black');
0123 patch( 'Faces', [D E F], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue2,'FaceColor','flat','EdgeColor','black');
0124 patch( 'Faces', [A B E D], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue2,'FaceColor','flat','EdgeColor','black');
0125 patch( 'Faces', [B E F C ], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue2,'FaceColor','flat','EdgeColor','black');
0126 patch( 'Faces', [C A D F ], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue2,'FaceColor','flat','EdgeColor','black');
0127 Apply_options_tensor(options_structure,type,'principal value 2')
0128
0129 subplot(3*width,3*width,index6)
0130 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue3,'FaceColor','flat','EdgeColor','black');
0131 patch( 'Faces', [D E F], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue3,'FaceColor','flat','EdgeColor','black');
0132 patch( 'Faces', [A B E D], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue3,'FaceColor','flat','EdgeColor','black');
0133 patch( 'Faces', [B E F C ], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue3,'FaceColor','flat','EdgeColor','black');
0134 patch( 'Faces', [C A D F ], 'Vertices', [md.x md.y md.z],'CData', tensor.principalvalue3,'FaceColor','flat','EdgeColor','black');
0135 Apply_options_tensor(options_structure,type,'principal value 3')
0136 end
0137 end
0138
0139 elseif length(tensor.principalvalue1)==md.numberofgrids | length(tensor.principalvalue1)==md.numberofgrids2d,
0140 if ~isnan(options_structure.noiceshelf) & options_structure.noiceshelf,
0141 pos=find(md.gridoniceshelf);
0142 tensor.principalvalue1(pos)=NaN;
0143 tensor.principalvalue2(pos)=NaN;
0144 if strcmpi(md.type,'3d')
0145 tensor.principalvalue3(pos)=NaN;
0146 end
0147 end
0148 if ~isnan(options_structure.noiceshelf) & options_structure.noicesheet,
0149 pos=find(md.gridonicesheet);
0150 tensor.principalvalue1(pos)=NaN;
0151 tensor.principalvalue2(pos)=NaN;
0152 if strcmpi(md.type,'3d')
0153 tensor.principalvalue3(pos)=NaN;
0154 end
0155 end
0156
0157 if strcmpi(md.type,'2d'),
0158 A=md.elements(:,1); B=md.elements(:,2); C=md.elements(:,3);
0159
0160 subplot(2*width,2*width,index3)
0161 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'FaceVertexCData',tensor.principalvalue1 ,'FaceColor','flat','EdgeColor','none');
0162 Apply_options_tensor(options_structure,type,'principal value 1')
0163
0164 subplot(2*width,2*width,index4)
0165 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'FaceVertexCData',tensor.principalvalue2 ,'FaceColor','flat','EdgeColor','none');
0166 Apply_options_tensor(options_structure,type,'principal value 2')
0167 else
0168 if options_structure.layer>=1,
0169 A=md.elements(:,1); B=md.elements(:,2); C=md.elements(:,3);
0170
0171 subplot(3*width,3*width,index4)
0172 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'FaceVertexCData',tensor.principalvalue1 ,'FaceColor','flat','EdgeColor','none');
0173 Apply_options_tensor(options_structure,type,'principal value 1')
0174
0175 subplot(3*width,3*width,index5)
0176 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'FaceVertexCData',tensor.principalvalue2 ,'FaceColor','flat','EdgeColor','none');
0177 Apply_options_tensor(options_structure,type,'principal value 2')
0178
0179 subplot(3*width,3*width,index6)
0180 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'FaceVertexCData',tensor.principalvalue3 ,'FaceColor','flat','EdgeColor','none');
0181 Apply_options_tensor(options_structure,type,'principal value 3')
0182 else
0183 A=md.elements(:,1); B=md.elements(:,2); C=md.elements(:,3); D=md.elements(:,4); E=md.elements(:,5); F=md.elements(:,6);
0184
0185 subplot(3*width,3*width,index4)
0186 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue1,'FaceColor','flat','EdgeColor','none');
0187 patch( 'Faces', [D E F], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue1,'FaceColor','flat','EdgeColor','none');
0188 patch( 'Faces', [A B E D], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue1,'FaceColor','flat','EdgeColor','none');
0189 patch( 'Faces', [B E F C ], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue1,'FaceColor','flat','EdgeColor','none');
0190 patch( 'Faces', [C A D F ], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue1,'FaceColor','flat','EdgeColor','none');
0191 Apply_options_tensor(options_structure,type,'principal value 1')
0192
0193 subplot(3*width,3*width,index5)
0194 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue2,'FaceColor','flat','EdgeColor','none');
0195 patch( 'Faces', [D E F], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue2,'FaceColor','flat','EdgeColor','none');
0196 patch( 'Faces', [A B E D], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue2,'FaceColor','flat','EdgeColor','none');
0197 patch( 'Faces', [B E F C ], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue2,'FaceColor','flat','EdgeColor','none');
0198 patch( 'Faces', [C A D F ], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue2,'FaceColor','flat','EdgeColor','none');
0199 Apply_options_tensor(options_structure,type,'principal value 2')
0200
0201 subplot(3*width,3*width,index6)
0202 patch( 'Faces', [A B C], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue3,'FaceColor','flat','EdgeColor','none');
0203 patch( 'Faces', [D E F], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue3,'FaceColor','flat','EdgeColor','none');
0204 patch( 'Faces', [A B E D], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue3,'FaceColor','flat','EdgeColor','none');
0205 patch( 'Faces', [B E F C ], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue3,'FaceColor','flat','EdgeColor','none');
0206 patch( 'Faces', [C A D F ], 'Vertices', [md.x md.y md.z],'FaceVertexCData', tensor.principalvalue3,'FaceColor','flat','EdgeColor','none');
0207 Apply_options_tensor(options_structure,type,'principal value 3')
0208 end
0209 end
0210 end
0211 end
0212
0213 function Apply_options_tensor(options_structure,type,component)
0214
0215 if isnan(options_structure.title)
0216 if ismember('_',type)
0217 strings=strsplit(type,'_');
0218 string=strings{1};
0219 else
0220 string=type;
0221 end
0222 options_structure.title=[upper(string(1)) string(2:end) ' ' component];
0223 end
0224 applyoptions(md,[],options_structure);
0225 end