]> Creatis software - CreaPhase.git/blob - octave_packages/secs2d-0.0.8/QDDGOX/QDDGOXddcurrent.m
Add a useful package (from Source forge) for octave
[CreaPhase.git] / octave_packages / secs2d-0.0.8 / QDDGOX / QDDGOXddcurrent.m
1 function [current,divrg]=QDDGOXddcurrent(mesh,Sinodes,data,contacts,options);
2
3 % [current,divrg]=QDDGOXddcurrent(mesh,Sinodes,data,contacts);
4 constants
5 Nelements = size(mesh.t,2);
6
7
8 mob = Ufielddepmob(mesh,data.un,data.Fn,data.vsatn,data.mubn);
9
10 if (~isfield("options","FD")|(options.FD==0))
11 data.FDn=0;
12 data.FDp=0;
13 end
14
15 An  = Uscharfettergummel(mesh,data.V(Sinodes)+data.G+data.FDn,mob);
16
17 if (options.holes==1)
18 mob = Ufielddepmob(mesh,data.up,data.Fp,data.vsatp,data.mubp);
19 Ap  = Uscharfettergummel(mesh,-data.V(Sinodes)-data.Gp-data.FDp,mob);
20 divrg     = An * data.n + Ap * data.p;
21 else
22 divrg     = An * data.n;
23 end
24
25 for con = 1:length(contacts)
26
27     cedges = [];
28     cedges=[cedges,find(mesh.e(5,:)==contacts(con))];
29     cnodes = mesh.e(1:2,cedges);
30     cnodes = [cnodes(1,:) cnodes(2,:)];
31     cnodes = unique(cnodes);
32
33     current(con) = sum(divrg(cnodes));
34
35 end
36
37 Is = q*data.us*data.Vs*data.ns;
38 current = current * Is;
39