-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathzgridconverge2.m
101 lines (78 loc) · 2.02 KB
/
zgridconverge2.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
function [converge]=zgridconverge(geo,state,wing,direction,criterion)
results=[];
solvertype=1;
xscalefactor=2;
iterationlimit=10;
panellimit=500;
g0=geo;
%g0.nx=double(g0.nx>0);
%g0.ny=double(g0.ny>0);
g1=geo;
%g1.nx=2*double(g0.nx>0);
%g1.ny=2*double(g0.ny>0);
%g1.nx=ceil(1.3*g0.nx);
%g1.ny=ceil(1.3*g0.ny);
%% Computing baseline results
[lattice,ref]=fLattice_setup2(g0,state,solvertype);
[results]=solver9(results,state,g0,lattice,ref);
[results]=coeff_create3(results,lattice,state,ref,g0);
CL0=results.CL;
CD0=results.CD;
Cm0=results.Cm;
CL(1)=results.CL;
CD(1)=results.CD;
Cm(1)=results.Cm;
A(1)=2;
%% Iterating
%criterion=0.01;
converged=0;
k=1;
xscalefactor=1.5;
while converged==0
k=k+1;
if k>3
xscalefactor=1.3;
end
if direction ==1
g1.nx(wing,:) =ceil(g0.nx(wing,:)*xscalefactor);
else
g1.ny(wing,:) =ceil(g0.ny(wing,:)*xscalefactor);
end
[lattice,ref]=fLattice_setup2(g1,state,solvertype);
[results]=solver9(results,state,g1,lattice,ref);
[results]=coeff_create3(results,lattice,state,ref,g1);
CL(k)=results.CL;
CD(k)=results.CD;
Cm(k)=results.Cm;
cond(k)=results.dwcond;
A(k)=sum(sum(g1.nx.*g1.ny));
%convL=abs(diff(CL./CL(1)));
%convD=abs(diff(CD./CD(1)));
convL=abs(1-CL(2:end)./CL(1:(end-1)));
convD=abs(1-CD(2:end)./CD(1:(end-1)));
if convL(k-1)<=criterion
if convD(k-1)<=criterion
display('CONVERGED!')
converged=1;
converge.nx=g1.nx;
converge.ny=g1.ny;
converge.CL=CL;
converge.CD=CD;
converge.Cm=Cm;
converge.cond=cond;
converge.panels=A;
converge.converged=1;
end
end
if k>iterationlimit
tdisp('NOT CONVERGED!')
converge.converged=0;
return
end
if A(k)>panellimit
tdisp('To many panels for convergence study!')
converge.converged=0;
return
end
g0=g1;
end