]> Creatis software - CreaPhase.git/blob - 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
1 function [odata,ith,res] = ThDDGOXgummelmap (imesh,Dsides,...
2                                             Simesh,Sinodes,Sielements,SiDsides,...
3                                             idata,tol,maxit,ptol,pmaxit,thtol,thmaxit,...
4                                             eltol,elmaxit,verbose)
5   
6   ##   [odata,it,res] = ThDDGOXgummelmap (imesh,Dsides,...
7   ##                                      Simesh,Sinodes,Sielements,SiDsides,...
8   ##                                      idata,tol,maxit,ptol,pmaxit,thtol,thmaxit,...
9   ##                                      eltol,elmaxit,verbose) 
10   
11   clear DDGOXNLPOISSON_LAP DDGOXNLPOISSON_MASS DDGOXNLPOISSON_RHS DDG_RHS DDG_MASS
12   global DDGOXNLPOISSON_LAP DDGOXNLPOISSON_MASS DDGOXNLPOISSON_RHS DDG_RHS DDG_MASS
13   
14   eletdata  = idata;
15   thermdata = idata;
16   nrm      = 1;
17   eletnrm  = [];
18   thermnrm = [];
19
20   for ith=1:maxit
21     
22     eletdata.Tl  = thermdata.Tl;
23     eletdata.Tn  = thermdata.Tn;
24     eletdata.Tp  = thermdata.Tp;
25     
26     if (verbose>=1)
27       fprintf(1,'\n***\n***\tupdating potentials\n***\n');
28     end
29     
30     [eletdata,innrm1]=ThDDGOXeletiteration(imesh,Dsides,...
31                                           Simesh,Sinodes,Sielements,SiDsides,...
32                                           eletdata,eltol,elmaxit,ptol,pmaxit,verbose);
33     eletnrm = [eletnrm,innrm1];
34     
35     thermdata.n  = eletdata.n;
36     thermdata.p  = eletdata.p;
37     thermdata.V  = eletdata.V;
38
39     if (verbose>=1)
40       fprintf(1,'\n***\n***\tupdating temperatures\n***\n');
41     end
42     
43     [thermdata,innrm] = ThDDGOXthermaliteration(imesh,Dsides,...
44                                                 Simesh,Sinodes,Sielements,SiDsides,...
45                                                 thermdata,thtol,thmaxit,2);
46
47
48     thermnrm = [eletnrm,innrm];
49    
50     nrm(ith) = max([innrm,innrm1]);
51     if (verbose>=1)
52       subplot(1,3,1);
53       semilogy(nrm)
54       pause(.1)
55     end
56     if (nrm(ith)<tol)
57       if (verbose>0)
58         fprintf(1,"\n***\n***\tThDD simulation over: # \
59 of Global iterations = %d\n***\n",ith);
60       end
61       break
62     end
63     
64    
65   end
66   
67   res = {nrm,eletnrm,thermnrm};  
68   odata    = thermdata;
69