X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fsecs2d-0.0.8%2FUtilities%2FUsubdomains2.m;fp=octave_packages%2Fsecs2d-0.0.8%2FUtilities%2FUsubdomains2.m;h=f4d7785de194deb9ed6d90d6aafde763cd749aeb;hp=0000000000000000000000000000000000000000;hb=c880e8788dfc484bf23ce13fa2787f2c6bca4863;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/secs2d-0.0.8/Utilities/Usubdomains2.m b/octave_packages/secs2d-0.0.8/Utilities/Usubdomains2.m new file mode 100644 index 0000000..f4d7785 --- /dev/null +++ b/octave_packages/secs2d-0.0.8/Utilities/Usubdomains2.m @@ -0,0 +1,75 @@ +function [e,t]=Usubdomains2(p,t,rcts,sidelist); + +% [e,t]=Usubdomains(p,t,rcts,sidelist); + +e=[]; + +%%% subdivide domain according to position of +%%% elements' center of mass + +% get elements' center of mass coordinates +x = p(1,:);y = p(2,:); +mx = sum(x(t(1:3,:)),1)/3; +my = sum(y(t(1:3,:)),1)/3; + +t(4,:) = 1; + +% loop over rectangular regions +for ii = 1:size(rcts,1) + + % find elements with center of mass in this rectangle + trs = find ((mx>rcts(ii,1))&(mxrcts(ii,3))&(my=sidelist(icond,3)) &... +(x2>=sidelist(icond,4)) &... +(y1<=sidelist(icond,5)) &... +(y2<=sidelist(icond,6)) &... +(y1>=sidelist(icond,7)) &... +(y2>=sidelist(icond,8)) ); +eonside = unique(sides([1,2],onside)','rows')'; +eonside(5,:) = icond; + +e=[e,eonside]; +end + +% set left and right subdomain +for ie = 1:size(e,2) +for it=1:size(t,2) + if(((e(1,ie)==t(1,it))&(e(2,ie)==t(2,it)))|... + ((e(1,ie)==t(2,it))&(e(2,ie)==t(3,it)))|... + ((e(1,ie)==t(3,it))&(e(2,ie)==t(1,it)))) + e(6,ie)=t(4,it); + end + if(((e(2,ie)==t(1,it))&(e(1,ie)==t(2,it)))|... + ((e(2,ie)==t(2,it))&(e(1,ie)==t(3,it)))|... + ((e(2,ie)==t(3,it))&(e(1,ie)==t(1,it)))) + e(7,ie)=t(4,it); + end +end +end