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

Last change on this file since 4032 was 3947, checked in by ansari, 15 years ago

Amelioration et modifs diverses lors de la redaction du papier, Reza 13/02/2011

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