]> Creatis software - CreaPhase.git/blobdiff - octave_packages/secs2d-0.0.8/METLINES/METLINEScapcomp.m
Add a useful package (from Source forge) for octave
[CreaPhase.git] / octave_packages / secs2d-0.0.8 / METLINES / METLINEScapcomp.m
diff --git a/octave_packages/secs2d-0.0.8/METLINES/METLINEScapcomp.m b/octave_packages/secs2d-0.0.8/METLINES/METLINEScapcomp.m
new file mode 100644 (file)
index 0000000..8e1b374
--- /dev/null
@@ -0,0 +1,41 @@
+function [C,L,Lii,LiI,LII,Dnodes,varnodes]=...
+      METLINEScapcomp(imesh,epsilon,contacts)
+
+##
+##
+## [C,L,Lii,LiI,LII,Dnodes,varnodes]=METLINEScapcomp(imesh,epsilon,contacts)
+##
+##
+
+Ncontacts = length(contacts);
+Nnodes = columns(imesh.p);
+varnodes = [1:Nnodes];
+
+for ii=1:Ncontacts
+  Dnodes{ii}=Unodesonside(imesh,contacts{ii});
+  varnodes = setdiff(varnodes,Dnodes{ii});
+end
+
+L = Ucomplap (imesh,epsilon);
+
+for ii=1:Ncontacts
+  Lii{ii} = L(Dnodes{ii},Dnodes{ii});
+  LiI{ii} = L(Dnodes{ii},varnodes);
+end
+LII =  L(varnodes,varnodes);
+
+for ii=1:Ncontacts
+  for jj=ii:Ncontacts
+    if ii==jj
+      C(ii,jj)=sum(sum(Lii{ii}-LiI{ii}*(LII\(LiI{ii})')));
+    else
+      C(ii,jj)=sum(sum(-LiI{ii}*(LII\(LiI{jj})')));
+    end
+  end
+end
+
+for ii=1:4
+  for jj=1:ii-1
+    C(ii,jj)=C(jj,ii);
+  end
+end