00001 clear
00002 clc
00003 n=65;
00004 N=n*n;
00005
00006 %later with streamfunction
00007
00008 s=zeros(N,1);
00009 v=zeros(N,1);
00010 sold=zeros(N,1);
00011 vold=zeros(N,1);
00012
00013 %fs(s,v,n)
00014
00015 %fv(s,v,n)
00016
00017 damping1=0.001;
00018 damping2=1.0;
00019 %jac=numJacV(s,v,n);
00020
00021
00022 maxPicard=500;
00023 maxNewton=10;
00024
00025 tol=1e-5;
00026
00027 %x=ones(N,1);
00028 %ms(x,s,v,n)
00029
00030
00031
00032 for i=1:maxPicard
00033
00034 disp('######################')
00035 disp('picard iter')
00036 i
00037
00038 if mod(i,100)==0
00039 damping=damping1*1.1;
00040 end
00041
00042 %start with vorticity
00043
00044 for j=1:maxNewton
00045
00046 f0=fv(sold,v,n);
00047
00048 normF=norm(f0);
00049
00050
00051 if normF<tol
00052 disp('-----')
00053 disp('newton exit at iter')
00054 j-1
00055 break
00056 end
00057
00058 deltax=zeros(N,1);
00059
00060 % deltax=gmres(@(x)mv(x,s,v,n),-f0,min(100,N),tol,min(1000,N));
00061
00062 jac=numJacV(sold,v,n);
00063
00064 deltax=jac\-f0;
00065
00066 v=v+deltax;
00067
00068
00069 end
00070 v=damping1*v+(1-damping1)*vold;
00071 %plotP(v,n)
00072 %pause
00073
00074 for j=1:maxNewton
00075
00076 f0=fs(s,vold,n);
00077
00078 normF=norm(f0);
00079
00080
00081 if normF<tol
00082 disp('-----')
00083 disp('newton exit at iter')
00084 j-1
00085 break
00086 end
00087
00088 deltax=zeros(N,1);
00089
00090 % deltax=gmres(@(x)ms(x,s,v,n),-f0,min(100,N),tol,min(1000,N));
00091
00092 jac=numJacS(s,vold,n);
00093
00094 deltax=jac\-f0;
00095
00096 s=s+deltax;
00097
00098
00099 end
00100 plotP(-s,n)
00101 max(max(abs(s)))
00102 pause(0.5)
00103
00104 s=damping2*s+(1-damping2)*sold;
00105
00106
00107
00108 if (norm(sold-s)<=tol)&&(norm(vold-v)<=tol)&&(i>1)
00109 disp('picard end')
00110
00111 break
00112 end
00113
00114
00115 sold=s;
00116 vold=v;
00117
00118
00119 %gmres(@(x)ms(x,s,v,n),b,100,tol,maxit);
00120
00121 end
00122
00123 %v