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

Last change on this file since 3886 was 3792, checked in by ansari, 15 years ago

Ajout du programme de calcul et sauvegarde reponse interfero, Reza 28/06/2010

File size: 7.9 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> 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;
170
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
236 cout << "CreateConfigB/Debug: -checkSize/lesx=" << lesx.size() << " -Check/lesy=" << lesy.size() << endl;
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
246 return vd;
247}
248
249/* --Fonction -- */
250vector<Dish> CreateFilledCylConfig(int ncyl, int nRL, double cylW, double cylRL, double etaW, double etaRL, bool fgscid)
251{
252 vector<Dish> vd;
253 int cnt=0;
254
255 for(int i=0; i<ncyl; i++)
256 for(int j=0; j<nRL; j++) {
257 cnt++;
258 int rid = (fgscid) ? i+1 : cnt;
259 vd.push_back(Dish(rid, i*cylW, j*cylRL, etaW*cylW, etaRL*cylRL));
260 }
261 cout << ">>>CreateFilledCylConfig(" << ncyl << "," << nRL << "," << cylW << "," << cylRL << ","
262 << etaW << "," << etaRL << "," << ((fgscid)?" RId=CylNum":"Cnt")
263 << ") ---> NDishes=" << vd.size() << endl;
264
265 return vd;
266}
Note: See TracBrowser for help on using the repository browser.