source: Sophya/trunk/Cosmo/RadioBeam/interfconfigs.cc@ 4069

Last change on this file since 4069 was 4069, checked in by ansari, 13 years ago

dernières corrections (proofreading) du papier avant publication par A&A, 26 Mars 2012, 27/04/2012

File size: 12.2 KB
Line 
1#include "interfconfigs.h"
2
3
4//-----------------------------------------------------------------------------------
5//-----------------------------------------------------------------------------------
6// Fonctions de creation de configuration d'interfero avec des dishs
7//-----------------------------------------------------------------------------------
8/* --Fonction -- */
9vector<Dish> CreateFilledSqConfig(int nd, double Ddish, double Eta)
10{
11 vector<Dish> vd;
12 int cnt=0;
13 for(int i=0; i<nd; i++)
14 for(int j=0; j<nd; j++) {
15 cnt++;
16 vd.push_back(Dish(cnt, i*Ddish, j*Ddish, Eta*Ddish));
17 }
18 cout << ">>>CreateFilledSqConfig(" << nd << "," << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
19
20 return vd;
21}
22
23/* --Fonction -- */
24vector<Dish> CreateSparseSqConfig(int nd, double LSep, double Ddish, double Eta)
25{
26 vector<Dish> vd;
27 int cnt=0;
28 for(int i=0; i<nd; i++)
29 for(int j=0; j<nd; j++) {
30 cnt++;
31 vd.push_back(Dish(cnt, i*LSep, j*LSep, Eta*Ddish));
32 }
33 cout << ">>>CreateSparseSqConfig(" << nd << ", LSep=" << LSep
34 << ", Ddish=" << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
35 return vd;
36}
37
38/* --Fonction -- */
39vector<Dish> CreateSemiFilledSqConfig(int nd, double Ddish, double Eta)
40{
41 vector<Dish> vd;
42 int cnt=0;
43 int fgst=1;
44 for(int i=0; i<nd; i++) {
45 fgst = (fgst+1)%2;
46 for(int j=0; j<nd; j++) {
47 if (j%2==fgst) continue;
48 cnt++;
49 vd.push_back(Dish(cnt, i*Ddish, j*Ddish, Eta*Ddish));
50 }
51 }
52 cout << ">>>CreateSemiFilledSqConfig(" << nd << "," << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
53
54 return vd;
55}
56
57/* --Fonction -- */
58vector<Dish> CreateConfigA(double Ddish, double Eta)
59{
60 vector<Dish> vd;
61 int cnt=0;
62 for(int i=0; i<18; i++) {
63 cnt++; vd.push_back(Dish(cnt, i*Ddish,0.,Eta*Ddish));
64 cnt++; vd.push_back(Dish(cnt, i*Ddish, 17.*Ddish,Eta*Ddish));
65 if ((i>0)&&(i<17)) {
66 cnt++; vd.push_back(Dish(cnt,0.,i*Ddish,Eta*Ddish));
67 cnt++; vd.push_back(Dish(cnt,17.*Ddish,i*Ddish,Eta*Ddish));
68 }
69 }
70 cout << ">>>CreateConfigA(" << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
71 return vd;
72}
73
74/* --Fonction -- */
75vector<Dish> CreateConfigB(double Ddish, double Eta)
76{
77 vector<Dish> vd;
78 int cnt=0;
79 /*
80 for(int i=0; i<13; i++) {
81 cnt++; vd.push_back(Dish(cnt, i*Ddish,0.,Eta*Ddish));
82 cnt++; vd.push_back(Dish(cnt, i*Ddish, 12.*Ddish,Eta*Ddish));
83 if ((i>0)&&(i<12)) {
84 cnt++; vd.push_back(Dish(cnt,0.,i*Ddish,Eta*Ddish));
85 cnt++; vd.push_back(Dish(cnt,12.*Ddish,i*Ddish,Eta*Ddish));
86 }
87 }
88 for(int i=0; i<5; i++) {
89 cnt++; vd.push_back(Dish(cnt, (i+4)*Ddish,4.*Ddish,Eta*Ddish));
90 cnt++; vd.push_back(Dish(cnt, (i+4)*Ddish, 8.*Ddish,Eta*Ddish));
91 if ((i>0)&&(i<4)) {
92 cnt++; vd.push_back(Dish(cnt,4.*Ddish,(i+4)*Ddish,Eta*Ddish));
93 cnt++; vd.push_back(Dish(cnt,8.*Ddish,(i+4)*Ddish,Eta*Ddish));
94 }
95 }
96 */
97 for(int i=0; i<11; i++) {
98 cnt++; vd.push_back(Dish(cnt, i*Ddish,0.,Eta*Ddish));
99 cnt++; vd.push_back(Dish(cnt, i*Ddish, 10.*Ddish,Eta*Ddish));
100 if ((i>0)&&(i<10)) {
101 cnt++; vd.push_back(Dish(cnt,0.,i*Ddish,Eta*Ddish));
102 cnt++; vd.push_back(Dish(cnt,10.*Ddish,i*Ddish,Eta*Ddish));
103 }
104 }
105 for(int i=0; i<7; i++) {
106 cnt++; vd.push_back(Dish(cnt, (i+2)*Ddish, 2.*Ddish,Eta*Ddish));
107 cnt++; vd.push_back(Dish(cnt, (i+2)*Ddish, 8.*Ddish,Eta*Ddish));
108 if ((i>0)&&(i<6)) {
109 cnt++; vd.push_back(Dish(cnt,2.*Ddish,(i+2)*Ddish,Eta*Ddish));
110 cnt++; vd.push_back(Dish(cnt,8.*Ddish,(i+2)*Ddish,Eta*Ddish));
111 }
112 }
113 for(int i=0; i<3; i++) {
114 cnt++; vd.push_back(Dish(cnt, (i+4)*Ddish, 4.*Ddish,Eta*Ddish));
115 cnt++; vd.push_back(Dish(cnt, (i+4)*Ddish, 6.*Ddish,Eta*Ddish));
116 if ((i>0)&&(i<2)) {
117 cnt++; vd.push_back(Dish(cnt,4.*Ddish,(i+4)*Ddish,Eta*Ddish));
118 cnt++; vd.push_back(Dish(cnt,6.*Ddish,(i+4)*Ddish,Eta*Ddish));
119 }
120 }
121
122
123 cout << ">>>CreateConfigB(" << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
124 return vd;
125}
126
127
128/* --Fonction -- */
129vector<Dish> CreateConfigC(double Ddish, double Eta)
130{
131 vector<int_4> lesx, lesy;
132
133 int max = 16;
134 for(int i=0; i<4; i++)
135 for(int j=0; j<4; j++) {
136 lesx.push_back(i); lesy.push_back(j);
137 lesx.push_back(max-i); lesy.push_back(max-j);
138 lesx.push_back(i); lesy.push_back(max-j);
139 lesx.push_back(max-i); lesy.push_back(j);
140 }
141
142 for(int i=5; i<12; i+=2) {
143 lesx.push_back(i); lesy.push_back(0);
144 lesx.push_back(i); lesy.push_back(max);
145 lesx.push_back(0); lesy.push_back(i);
146 lesx.push_back(max); lesy.push_back(i);
147 }
148
149 for(int i=4; i<=12; i+=2)
150 for(int j=4; j<=12; j+=2) {
151 lesx.push_back(i); lesy.push_back(j);
152 }
153
154 for(int i=5; i<=11; i+=2) {
155 lesx.push_back(i); lesy.push_back(4);
156 lesx.push_back(i); lesy.push_back(max-4);
157 lesx.push_back(4); lesy.push_back(i);
158 lesx.push_back(max-4); lesy.push_back(i);
159 }
160
161 EnumeratedSequence esx,esy;
162 esx = 2,5;
163 esy = 5,2;
164
165 for(int k=0; k<esx.Size(); k++) {
166 int_4 ix=esx.Value(k);
167 int_4 iy=esy.Value(k);
168
169 lesx.push_back(ix); lesy.push_back(iy);
170 lesx.push_back(max-ix); lesy.push_back(iy);
171 lesx.push_back(ix); lesy.push_back(max-iy);
172 lesx.push_back(max-ix); lesy.push_back(max-iy);
173 }
174 cout << "CreateConfigC/Debug: -checkSize/lesx=" << lesx.size() << " -Check/lesy=" << lesy.size() << endl;
175
176 vector<Dish> vd;
177 int cnt=0;
178 for(size_t i=0; i<lesx.size(); i++) {
179 cnt++; vd.push_back(Dish(cnt, ((double)lesx[i])*Ddish,((double)lesy[i])*Ddish,Eta*Ddish));
180 }
181
182 cout << ">>>CreateConfigC(" << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
183
184 return vd;
185}
186
187/* --Fonction -- */
188vector<Dish> CreateConfigD(double Ddish, double Eta)
189{
190EnumeratedSequence es;
191es = 0,1,3,4,6,8,10,12,14,16,18,20,22,24,25,27,28;
192vector<int_4> lesx, lesy;
193for(int k=0; k<es.Size(); k++) {
194 lesx.push_back(es.Value(k)); lesy.push_back(0);
195 lesx.push_back(es.Value(k)); lesy.push_back(28);
196}
197for(int k=1; k<es.Size()-1; k++) {
198 lesy.push_back(es.Value(k)); lesx.push_back(0);
199 lesy.push_back(es.Value(k)); lesx.push_back(28);
200}
201for(int k=1; k<=5; k++) {
202 lesy.push_back(k); lesx.push_back(5);
203 lesy.push_back(28-k); lesx.push_back(28-5);
204 if (k!=5) {
205 lesx.push_back(k); lesy.push_back(5);
206 lesx.push_back(28-k); lesy.push_back(28-5);
207 }
208
209 lesy.push_back(k); lesx.push_back(28-5);
210 lesy.push_back(28-k); lesx.push_back(5);
211 if (k!=5) {
212 lesx.push_back(28-k); lesy.push_back(5);
213 lesx.push_back(k); lesy.push_back(28-5);
214 }
215}
216
217for(int k=6; k<=13; k++) {
218 lesy.push_back(k); lesx.push_back(k);
219 lesy.push_back(28-k); lesx.push_back(28-k);
220 lesy.push_back(k); lesx.push_back(28-k);
221 lesy.push_back(28-k); lesx.push_back(k);
222}
223
224
225lesx.push_back(14); lesy.push_back(14);
226
227EnumeratedSequence esx,esy;
228esx = 1,2,4;
229esy = 12,11,13;
230
231for(int k=0; k<esx.Size(); k++) {
232 int_4 ix=esx.Value(k);
233 int_4 iy=esy.Value(k);
234 lesx.push_back(ix); lesy.push_back(iy);
235 lesx.push_back(28-ix); lesy.push_back(iy);
236 lesx.push_back(ix); lesy.push_back(28-iy);
237 lesx.push_back(28-ix); lesy.push_back(28-iy);
238
239 lesy.push_back(ix); lesx.push_back(iy);
240 lesy.push_back(28-ix); lesx.push_back(iy);
241 lesy.push_back(ix); lesx.push_back(28-iy);
242 lesy.push_back(28-ix); lesx.push_back(28-iy);
243 }
244for(int k=5; k<=13; k+=2) {
245 lesy.push_back(k); lesx.push_back(14);
246 lesy.push_back(28-k); lesx.push_back(14);
247 lesy.push_back(14); lesx.push_back(k);
248 lesy.push_back(14); lesx.push_back(28-k);
249}
250
251 cout << "CreateConfigD/Debug: -checkSize/lesx=" << lesx.size() << " -Check/lesy=" << lesy.size() << endl;
252
253 vector<Dish> vd;
254 int cnt=0;
255 for(size_t i=0; i<lesx.size(); i++) {
256 cnt++; vd.push_back(Dish(cnt, ((double)lesx[i])*Ddish,((double)lesy[i])*Ddish,Eta*Ddish));
257 }
258
259 cout << ">>>CreateConfigD(" << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
260 return vd;
261}
262
263/* --Fonction -- */
264vector<Dish> CreateConfigNancay12(double Ddish, double Eta)
265{
266 EnumeratedSequence esx,esy;
267 esx = 0,1,3;
268 esy = 0,1,2,3;
269
270 vector<Dish> vd;
271 int cnt=0;
272
273 for(int ix=0; ix<esx.Size(); ix++) {
274 for(int iy=0; iy<esy.Size(); iy++) {
275 cnt++;
276 vd.push_back(Dish(cnt, ((double)esx.Value(ix))*Ddish,((double)esy.Value(iy))*Ddish,Eta*Ddish));
277 }
278 }
279 cout << ">>>CreateConfigNancay12(" << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
280 return vd;
281}
282
283/* --Fonction -- */
284vector<Dish> CreateConfigNancay24(double Ddish, double Eta)
285{
286 EnumeratedSequence esx,esy;
287 esx = 0,1,3,5;
288 esy = 0,1,2,3,4,5;
289
290 vector<Dish> vd;
291 int cnt=0;
292
293 for(int ix=0; ix<esx.Size(); ix++) {
294 for(int iy=0; iy<esy.Size(); iy++) {
295 cnt++;
296 vd.push_back(Dish(cnt, ((double)esx.Value(ix))*Ddish,((double)esy.Value(iy))*Ddish,Eta*Ddish));
297 }
298 }
299 cout << ">>>CreateConfigNancay24(" << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
300 return vd;
301}
302
303/* --Fonction -- */
304vector<Dish> CreateConfigNancay36(double Ddish, double Eta)
305{
306 EnumeratedSequence esx,esy;
307 esx = 0,1,2,3,4,5;
308 esy = 0,1,2,3,4,5;
309
310 vector<Dish> vd;
311 int cnt=0;
312
313 for(int ix=0; ix<esx.Size(); ix++) {
314 for(int iy=0; iy<esy.Size(); iy++) {
315 cnt++;
316 vd.push_back(Dish(cnt, ((double)esx.Value(ix))*Ddish,((double)esy.Value(iy))*Ddish,Eta*Ddish));
317 }
318 }
319 cout << ">>>CreateConfigNancay36(" << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
320 return vd;
321}
322
323/* --Fonction -- */
324vector<Dish> CreateConfigNancay40(double Ddish, double Eta)
325{
326 EnumeratedSequence esx,esy;
327 esx = 0,1,3,5,7;
328 esy = 0,1,2,3,4,5,6,7;
329
330 vector<Dish> vd;
331 int cnt=0;
332
333 for(int ix=0; ix<esx.Size(); ix++) {
334 for(int iy=0; iy<esy.Size(); iy++) {
335 cnt++;
336 vd.push_back(Dish(cnt, ((double)esx.Value(ix))*Ddish,((double)esy.Value(iy))*Ddish,Eta*Ddish));
337 }
338 }
339 cout << ">>>CreateConfigNancay40(" << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
340 return vd;
341}
342
343/* --Fonction -- */
344vector<Dish> CreateConfigNancay128(double Ddish, double Eta)
345{
346 EnumeratedSequence esx,esy;
347 esx = 0,1,3,4,7,10,13,15;
348 esy = 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;
349
350 vector<Dish> vd;
351 int cnt=0;
352
353 for(int ix=0; ix<esx.Size(); ix++) {
354 for(int iy=0; iy<esy.Size(); iy++) {
355 cnt++;
356 vd.push_back(Dish(cnt, ((double)esx.Value(ix))*Ddish,((double)esy.Value(iy))*Ddish,Eta*Ddish));
357 }
358 }
359 cout << ">>>CreateConfigNancay128(" << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
360 return vd;
361}
362
363/* --Fonction -- */
364vector<Dish> CreateFilledCylConfig(int ncyl, int nRL, double cylW, double cylRL, double etaW, double etaRL, bool fgscid)
365{
366 vector<Dish> vd;
367 int cnt=0;
368
369 for(int i=0; i<ncyl; i++)
370 for(int j=0; j<nRL; j++) {
371 cnt++;
372 int rid = (fgscid) ? i+1 : cnt;
373 vd.push_back(Dish(rid, i*cylW, j*cylRL, etaW*cylW, etaRL*cylRL));
374 }
375 cout << ">>>CreateFilledCylConfig(" << ncyl << "," << nRL << "," << cylW << "," << cylRL << ","
376 << etaW << "," << etaRL << "," << ((fgscid)?" RId=CylNum":"Cnt")
377 << ") ---> NDishes=" << vd.size() << endl;
378
379 return vd;
380}
381
382/* --Fonction -- */
383vector<Dish> CreateCrossConfig(double Ddish, double base, double Eta)
384{
385 vector<Dish> vd;
386 int cnt=0;
387 EnumeratedSequence esx,esy;
388 esx = -6.,-2.,1.,3.,5.;
389 esy = -5.,-1.,2.,4.,6.;
390
391 cnt++;
392 vd.push_back(Dish(cnt, 0., 0., Eta*Ddish));
393
394 for(int k=0; k<esx.Size(); k++) {
395 double fx=esx.Value(k);
396 cnt++;
397 vd.push_back(Dish(cnt, fx*base, 0., Eta*Ddish));
398 }
399 for(int k=0; k<esy.Size(); k++) {
400 double fy=esy.Value(k);
401 cnt++;
402 vd.push_back(Dish(cnt, 0., fy*base, Eta*Ddish));
403 }
404 cout << ">>>CreateCrossConfig(" << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
405 return vd;
406}
407
408
409/* --Fonction -- */
410vector<Dish> CreateDoubleHexagonConfig(double Ddish, double radius1, double radius2, double Eta)
411{
412 vector<Dish> vd;
413 int cnt=0;
414 double ang=0.;
415 for(int i=0; i<6; i++) {
416 double x=cos(ang)*radius1;
417 double y=sin(ang)*radius1;
418 cnt++;
419 vd.push_back(Dish(cnt, x, y, Eta*Ddish));
420 ang += M_PI/3.;
421 }
422 ang=M_PI/6.;
423 for(int i=0; i<6; i++) {
424 double x=cos(ang)*radius2;
425 double y=sin(ang)*radius2;
426 cnt++;
427 vd.push_back(Dish(cnt, x, y, Eta*Ddish));
428 ang += M_PI/3.;
429 }
430 cout << ">>>CreateDoubleHexagonConfig(" << Ddish << "," << Eta << ") ---> NDishes=" << vd.size() << endl;
431 return vd;
432}
Note: See TracBrowser for help on using the repository browser.