]> Creatis software - CreaPhase.git/blobdiff - octave_packages/secs2d-0.0.8/ThDDGOX/ThDDGOXgummelmap.m
Add a useful package (from Source forge) for octave
[CreaPhase.git] / octave_packages / secs2d-0.0.8 / ThDDGOX / ThDDGOXgummelmap.m
diff --git a/octave_packages/secs2d-0.0.8/ThDDGOX/ThDDGOXgummelmap.m b/octave_packages/secs2d-0.0.8/ThDDGOX/ThDDGOXgummelmap.m
new file mode 100644 (file)
index 0000000..4e0ff7d
--- /dev/null
@@ -0,0 +1,69 @@
+function [odata,ith,res] = ThDDGOXgummelmap (imesh,Dsides,...
+                                           Simesh,Sinodes,Sielements,SiDsides,...
+                                           idata,tol,maxit,ptol,pmaxit,thtol,thmaxit,...
+                                           eltol,elmaxit,verbose)
+  
+  ##   [odata,it,res] = ThDDGOXgummelmap (imesh,Dsides,...
+  ##                                     Simesh,Sinodes,Sielements,SiDsides,...
+  ##                                     idata,tol,maxit,ptol,pmaxit,thtol,thmaxit,...
+  ##                                     eltol,elmaxit,verbose) 
+  
+  clear DDGOXNLPOISSON_LAP DDGOXNLPOISSON_MASS DDGOXNLPOISSON_RHS DDG_RHS DDG_MASS
+  global DDGOXNLPOISSON_LAP DDGOXNLPOISSON_MASS DDGOXNLPOISSON_RHS DDG_RHS DDG_MASS
+  
+  eletdata  = idata;
+  thermdata = idata;
+  nrm      = 1;
+  eletnrm  = [];
+  thermnrm = [];
+
+  for ith=1:maxit
+    
+    eletdata.Tl  = thermdata.Tl;
+    eletdata.Tn  = thermdata.Tn;
+    eletdata.Tp  = thermdata.Tp;
+    
+    if (verbose>=1)
+      fprintf(1,'\n***\n***\tupdating potentials\n***\n');
+    end
+    
+    [eletdata,innrm1]=ThDDGOXeletiteration(imesh,Dsides,...
+                                         Simesh,Sinodes,Sielements,SiDsides,...
+                                         eletdata,eltol,elmaxit,ptol,pmaxit,verbose);
+    eletnrm = [eletnrm,innrm1];
+    
+    thermdata.n  = eletdata.n;
+    thermdata.p  = eletdata.p;
+    thermdata.V  = eletdata.V;
+
+    if (verbose>=1)
+      fprintf(1,'\n***\n***\tupdating temperatures\n***\n');
+    end
+    
+    [thermdata,innrm] = ThDDGOXthermaliteration(imesh,Dsides,...
+                                               Simesh,Sinodes,Sielements,SiDsides,...
+                                               thermdata,thtol,thmaxit,2);
+
+
+    thermnrm = [eletnrm,innrm];
+   
+    nrm(ith) = max([innrm,innrm1]);
+    if (verbose>=1)
+      subplot(1,3,1);
+      semilogy(nrm)
+      pause(.1)
+    end
+    if (nrm(ith)<tol)
+      if (verbose>0)
+       fprintf(1,"\n***\n***\tThDD simulation over: # \
+of Global iterations = %d\n***\n",ith);
+      end
+      break
+    end
+    
+   
+  end
+  
+  res = {nrm,eletnrm,thermnrm};  
+  odata    = thermdata;
+  
\ No newline at end of file