function [phi]=CreateElementwiseBasis(mesh_file,sizeim,pscale,selected_elts,GaussPts,full_size) load(mesh_file,'xo','yo','Nnodes','Nelems','Smesh','mesh_size'); if nargin < 3 , pscale=1;end if nargin < 4 , selected_elts=[];end if nargin < 5 , GaussPts='pixels';end if nargin < 6 , full_size=false;end if isempty(selected_elts)||full_size ny=prod(Nelems); else ny=length(selected_elts); end xo=(xo-0.5)*pscale+0.5; yo=(yo-0.5)*pscale+0.5; xo=reshape(xo,Nnodes)+0.5; yo=reshape(yo,Nnodes)+0.5; xo=xo(1:Nnodes(1),1)'; yo=yo(1,1:Nnodes(2)); ince(1)=1;ince(2)=ince(1)*Nelems(1); incp(1)=1;incp(2)=incp(1)*sizeim(1)*pscale; incg(1)=4;incg(2)=incg(1)*Nelems(1); if strcmp(GaussPts,'pixels') , npts=prod(Smesh)*pscale^2;nx=prod(sizeim*pscale); elseif strcmp(GaussPts,'Gauss_points'), npts=4*prod(Nelems);nx=4*prod(Nelems); end indn=zeros(npts,1); indp=zeros(npts,1); val=zeros(npts,1); nel=0; for i1=1:Nelems(1) for i2=1:Nelems(2) ielt=1+ince(1)*(i1-1)+ince(2)*(i2-1); ienr=find(selected_elts==ielt); if (~isempty(ienr))||(isempty(selected_elts)) if (~isempty(ienr))&&(~full_size) ielt=ienr; end indxn=i1+(0:1); indyn=i2+(0:1); xn=(xo(indxn)-xo(i1)); yn=(yo(indyn)-yo(i2)); xmax=max(abs(xn(:))); ymax=max(abs(yn(:))); xn=xn/xmax; yn=yn/ymax; if strcmp(GaussPts,'pixels') xp=xo(indxn(1)):(xo(indxn(length(indxn)))-1); yp=yo(indyn(1)):(yo(indyn(length(indyn)))-1); [Yp,Xp]=meshgrid(yp,xp); ipix=1+incp(1)*(Xp-1)+incp(2)*(Yp-1); elseif strcmp(GaussPts,'Gauss_points') dg=1/(2*sqrt(3)); xp=sort([xn(1:length(xn)-1)+0.5-dg;xn(2:length(xn))-0.5+dg]); yp=sort([yn(1:length(yn)-1)+0.5-dg;yn(2:length(yn))-0.5+dg]); [Yp,Xp]=meshgrid(yp,xp); groot=1+incg(1)*(indxn(1)-1)+incg(2)*(indyn(1)-1); ipix(1:2)=groot+(1:2)-1; if length(indxn)==3 ipix(2+(1:2))=ipix(1:2)+incg(1); end ipix(2*(length(indxn)-1)+(1:2*(length(indxn)-1)))=ipix(1:2*(length(indxn)-1))+2; if length(indyn)==3 ipix(4*(length(indxn)-1)+(1:4*(length(indxn)-1)))=ipix(1:4*(length(indxn)-1))+incg(2); end end Sel=length(ipix(:)); indn(nel+(1:Sel))=ielt; indp(nel+(1:Sel))=ipix(:); val(nel+(1:Sel))=1; nel=nel+Sel; clear ipix end end end %end if nel