1 | #include <sys/time.h> |
---|
2 | double my_gettimeofday(){ |
---|
3 | struct timeval tmp_time; |
---|
4 | gettimeofday(&tmp_time, NULL); |
---|
5 | return tmp_time.tv_sec + (tmp_time.tv_usec * 1.0e-6L); |
---|
6 | } |
---|
7 | |
---|
8 | |
---|
9 | double differenceForward=0, differenceBackward=0; |
---|
10 | double parallelForward=0, parallelBackward=0; |
---|
11 | double nonParallelForward=0, nonParallelBackward=0; |
---|
12 | int counter=0; |
---|
13 | double beginParallelForward=0, endParallelForward=0; |
---|
14 | double beginNonParallelForward=0, endNonParallelForward=0; |
---|
15 | double beginNonParallelBackward=0, endNonParallelBackward=0; |
---|
16 | double beginParallelBackward=0, endParallelBackward=0; |
---|
17 | double beginForward=0, endForward=0; |
---|
18 | double beginBackward=0, endBackward=0; |
---|
19 | |
---|
20 | //---------------------------------------------------- |
---|
21 | // project: mflbc_rd header generated by YAO version v.9 |
---|
22 | //---------------------------------------------------- |
---|
23 | |
---|
24 | // € € € € € € € € LES FONCTIONS PREDEFINIES |
---|
25 | /*M2_TBTOG */ |
---|
26 | void YtabTOgrad_ssd(YREAL tab[]) |
---|
27 | { |
---|
28 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
29 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
30 | for (int Yws=0; Yws<YNBS_ssd; ++Yws){ |
---|
31 | YG_ssd(Yws, Yw1, Yw2) = tab[Y3windice]; ++Y3windice;}}} |
---|
32 | }/*M2_RGRAD*/ |
---|
33 | void Yrazgrad_ssd() |
---|
34 | { |
---|
35 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
36 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
37 | for (int Yws=0; Yws<YNBS_ssd; ++Yws){ |
---|
38 | Yssd(Yw1, Yw2)->Ygrad[Yws] = 0.0;}}} |
---|
39 | }/*M2_SETA*/ |
---|
40 | void Ysetstate_ssd(double val) |
---|
41 | { |
---|
42 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
43 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
44 | for (int Yws=0; Yws<YNBS_ssd; ++Yws){ |
---|
45 | Yssd(Yw1, Yw2)->Ystate[Yws] = val;}}} |
---|
46 | }/*M2_YIOTU*/ |
---|
47 | void Yio_ssd(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val) |
---|
48 | { Yiorwf ("ssd", Yws, Yw1, Yw2, Yw3, Ywt, &YS_ssd(Yws, Yw1, Yw2), val); |
---|
49 | }/*M2_CREY*/ |
---|
50 | void Ycreate_ssd() |
---|
51 | { |
---|
52 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
53 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
54 | if ((Yssd(Yw1, Yw2)= new Yaossd ())==NULL) Ycreate_errnew();}} |
---|
55 | }/*M1_ADJUS*/ |
---|
56 | void Yadjust_gama() |
---|
57 | { |
---|
58 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1) |
---|
59 | for (int Yws=0;Yws<YNBS_gama; ++Yws) |
---|
60 | { Ystate_gama(Yws, Yw1) -= Yepsi_gama(Yws, Yw1) * Ygrad_gama(Yws, Yw1); |
---|
61 | } |
---|
62 | }/*M1_GCTOTB */ |
---|
63 | void YgradCTOtab_gama(YREAL tab[]) |
---|
64 | { |
---|
65 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
66 | for (int Yws=0; Yws<YNBS_gama; ++Yws){ |
---|
67 | tab[Y3windice] += YG_gama(Yws, Yw1); ++Y3windice;}} |
---|
68 | }/*M1_VSTA*/ |
---|
69 | void Y3valstate_gama() |
---|
70 | { |
---|
71 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
72 | for (int Yws=0; Yws<YNBS_gama; ++Yws){ |
---|
73 | Y3x[Y3windice] = Ygama(Yw1)->Ystate[Yws]; ++Y3windice;}} |
---|
74 | }/*M1_GSTA*/ |
---|
75 | void Y3getstate_gama(float x[]) |
---|
76 | { |
---|
77 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
78 | for (int Yws=0; Yws<YNBS_gama; ++Yws){ |
---|
79 | Ygama(Yw1)->Ystate[Yws] = x[Y3windice]; ++Y3windice;}} |
---|
80 | }/*M1_VGRAD*/ |
---|
81 | void Y3valgrad_gama(float g[]) |
---|
82 | { |
---|
83 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
84 | for (int Yws=0; Yws<YNBS_gama; ++Yws){ |
---|
85 | g[Y3windice] = Ygama(Yw1)->Ygrad[Yws]; ++Y3windice;}} |
---|
86 | }/*M1_TBTOG */ |
---|
87 | void YtabTOgrad_gama(YREAL tab[]) |
---|
88 | { |
---|
89 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
90 | for (int Yws=0; Yws<YNBS_gama; ++Yws){ |
---|
91 | YG_gama(Yws, Yw1) = tab[Y3windice]; ++Y3windice;}} |
---|
92 | }/*M1_RGRAD*/ |
---|
93 | void Yrazgrad_gama() |
---|
94 | { |
---|
95 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
96 | for (int Yws=0; Yws<YNBS_gama; ++Yws){ |
---|
97 | Ygama(Yw1)->Ygrad[Yws] = 0.0;}} |
---|
98 | }/*M1_SETA*/ |
---|
99 | void Ysetstate_gama(double val) |
---|
100 | { |
---|
101 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
102 | for (int Yws=0; Yws<YNBS_gama; ++Yws){ |
---|
103 | Ygama(Yw1)->Ystate[Yws] = val;}} |
---|
104 | }/*M1_YIOTU*/ |
---|
105 | void Yio_gama(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val) |
---|
106 | { Yiorwf ("gama", Yws, Yw1, Yw2, Yw3, Ywt, &YS_gama(Yws, Yw1), val); |
---|
107 | }/*M0_OUTOB*/ |
---|
108 | int Youtoobs_gama(YioKind yiokind, int Yws, int Ywt, int arbpdt) |
---|
109 | { |
---|
110 | Yaobs.time = arbpdt; |
---|
111 | Yaobs.imod = Yimod("gama"); |
---|
112 | Yaobs.smod = Yws;/*M1_OUTOB*/ |
---|
113 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1) |
---|
114 | { if(select_io(yiokind, "gama", Yws, Yw1, -1, -1, Ywt, &Ystate_gama(Yws, Yw1))) |
---|
115 | { Yaobs.iaxe = Yw1; Yaobs.jaxe = -1; Yaobs.kaxe = -1; |
---|
116 | Yaobs.vobs = Ystate_gama(Yws, Yw1); |
---|
117 | if(!Yobs_insert (&Yaobs)) return(0); |
---|
118 | } |
---|
119 | }/*M9_OUTOB*/ |
---|
120 | return(1); |
---|
121 | }/*M1_SEPS*/ |
---|
122 | void Ysetepsi_gama(double val) |
---|
123 | { |
---|
124 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
125 | for (int Yws=0; Yws<YNBS_gama; ++Yws){ |
---|
126 | Ygama(Yw1)->Yepsi[Yws] = val;}} |
---|
127 | }/*M1_CREY*/ |
---|
128 | void Ycreate_gama() |
---|
129 | { |
---|
130 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
131 | if ((Ygama(Yw1) = new Yaogama ())==NULL) Ycreate_errnew();} |
---|
132 | }/*M1_SWISH*/ |
---|
133 | void Ysetwish_gama(double val) |
---|
134 | { |
---|
135 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
136 | for (int Yws=0; Yws<YNBS_gama; ++Yws){ |
---|
137 | Ywish_gama(Yws, Yw1) = val;}} |
---|
138 | }/*M2_TBTOG */ |
---|
139 | void YtabTOgrad_nj(YREAL tab[]) |
---|
140 | { |
---|
141 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
142 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
143 | for (int Yws=0; Yws<YNBS_nj; ++Yws){ |
---|
144 | YG_nj(Yws, Yw1, Yw2) = tab[Y3windice]; ++Y3windice;}}} |
---|
145 | }/*M2_RGRAD*/ |
---|
146 | void Yrazgrad_nj() |
---|
147 | { |
---|
148 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
149 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
150 | for (int Yws=0; Yws<YNBS_nj; ++Yws){ |
---|
151 | Ynj(Yw1, Yw2)->Ygrad[Yws] = 0.0;}}} |
---|
152 | }/*M2_SETA*/ |
---|
153 | void Ysetstate_nj(double val) |
---|
154 | { |
---|
155 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
156 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
157 | for (int Yws=0; Yws<YNBS_nj; ++Yws){ |
---|
158 | Ynj(Yw1, Yw2)->Ystate[Yws] = val;}}} |
---|
159 | }/*M2_YIOTU*/ |
---|
160 | void Yio_nj(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val) |
---|
161 | { Yiorwf ("nj", Yws, Yw1, Yw2, Yw3, Ywt, &YS_nj(Yws, Yw1, Yw2), val); |
---|
162 | }/*M2_CREU*/ |
---|
163 | void Ycreate_nj() |
---|
164 | { |
---|
165 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
166 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
167 | if ((Ynj(Yw1, Yw2)= new nj ())==NULL) Ycreate_errnew();}} |
---|
168 | }/*M2_TBTOGT */ |
---|
169 | void YtabTOgrad_diac(int frompdt, int topdt, YREAL tab[]) |
---|
170 | { |
---|
171 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
172 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
173 | for (int Ywt=frompdt; Ywt<topdt; ++Ywt){ |
---|
174 | for (int Yws=0; Yws<YNBS_diac; ++Yws){ |
---|
175 | YG_diac(Yws, Yw1, Yw2, Ywt) = tab[Y3windice]; ++Y3windice;}}}} |
---|
176 | }/*M2_RGRADT*/ |
---|
177 | void Yrazgrad_diac() |
---|
178 | { |
---|
179 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
180 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
181 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
182 | for (int Yws=0; Yws<YNBS_diac; ++Yws){ |
---|
183 | Ydiac(Yw1, Yw2)->Ygrad[Ywt][Yws] = 0.0;}}}} |
---|
184 | }/*M2_SETAT*/ |
---|
185 | void Ysetstate_diac(double val) |
---|
186 | { |
---|
187 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
188 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
189 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
190 | for (int Yws=0; Yws<YNBS_diac; ++Yws){ |
---|
191 | Ydiac(Yw1, Yw2)->Ystate[Ywt][Yws] = val;}}}} |
---|
192 | }/*M2_YIOUT*/ |
---|
193 | void Yio_diac(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val) |
---|
194 | { Yiorwf ("diac", Yws, Yw1, Yw2, Yw3, Ywt, &YS_diac(Yws, Yw1, Yw2, Ywt), val); |
---|
195 | }/*M2_CREU*/ |
---|
196 | void Ycreate_diac() |
---|
197 | { |
---|
198 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
199 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
200 | if ((Ydiac(Yw1, Yw2)= new diac ())==NULL) Ycreate_errnew();}} |
---|
201 | }/*M2_TBTOGT */ |
---|
202 | void YtabTOgrad_diab(int frompdt, int topdt, YREAL tab[]) |
---|
203 | { |
---|
204 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
205 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
206 | for (int Ywt=frompdt; Ywt<topdt; ++Ywt){ |
---|
207 | for (int Yws=0; Yws<YNBS_diab; ++Yws){ |
---|
208 | YG_diab(Yws, Yw1, Yw2, Ywt) = tab[Y3windice]; ++Y3windice;}}}} |
---|
209 | }/*M2_RGRADT*/ |
---|
210 | void Yrazgrad_diab() |
---|
211 | { |
---|
212 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
213 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
214 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
215 | for (int Yws=0; Yws<YNBS_diab; ++Yws){ |
---|
216 | Ydiab(Yw1, Yw2)->Ygrad[Ywt][Yws] = 0.0;}}}} |
---|
217 | }/*M2_SETAT*/ |
---|
218 | void Ysetstate_diab(double val) |
---|
219 | { |
---|
220 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
221 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
222 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
223 | for (int Yws=0; Yws<YNBS_diab; ++Yws){ |
---|
224 | Ydiab(Yw1, Yw2)->Ystate[Ywt][Yws] = val;}}}} |
---|
225 | }/*M2_YIOUT*/ |
---|
226 | void Yio_diab(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val) |
---|
227 | { Yiorwf ("diab", Yws, Yw1, Yw2, Yw3, Ywt, &YS_diab(Yws, Yw1, Yw2, Ywt), val); |
---|
228 | }/*M2_CREU*/ |
---|
229 | void Ycreate_diab() |
---|
230 | { |
---|
231 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
232 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
233 | if ((Ydiab(Yw1, Yw2)= new diab ())==NULL) Ycreate_errnew();}} |
---|
234 | }/*M2_TBTOGT */ |
---|
235 | void YtabTOgrad_bet(int frompdt, int topdt, YREAL tab[]) |
---|
236 | { |
---|
237 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
238 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
239 | for (int Ywt=frompdt; Ywt<topdt; ++Ywt){ |
---|
240 | for (int Yws=0; Yws<YNBS_bet; ++Yws){ |
---|
241 | YG_bet(Yws, Yw1, Yw2, Ywt) = tab[Y3windice]; ++Y3windice;}}}} |
---|
242 | }/*M2_RGRADT*/ |
---|
243 | void Yrazgrad_bet() |
---|
244 | { |
---|
245 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
246 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
247 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
248 | for (int Yws=0; Yws<YNBS_bet; ++Yws){ |
---|
249 | Ybet(Yw1, Yw2)->Ygrad[Ywt][Yws] = 0.0;}}}} |
---|
250 | }/*M2_SETAT*/ |
---|
251 | void Ysetstate_bet(double val) |
---|
252 | { |
---|
253 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
254 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
255 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
256 | for (int Yws=0; Yws<YNBS_bet; ++Yws){ |
---|
257 | Ybet(Yw1, Yw2)->Ystate[Ywt][Yws] = val;}}}} |
---|
258 | }/*M2_YIOUT*/ |
---|
259 | void Yio_bet(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val) |
---|
260 | { Yiorwf ("bet", Yws, Yw1, Yw2, Yw3, Ywt, &YS_bet(Yws, Yw1, Yw2, Ywt), val); |
---|
261 | }/*M2_CREU*/ |
---|
262 | void Ycreate_bet() |
---|
263 | { |
---|
264 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
265 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
266 | if ((Ybet(Yw1, Yw2)= new bet ())==NULL) Ycreate_errnew();}} |
---|
267 | }/*M2_TBTOGT */ |
---|
268 | void YtabTOgrad_gag(int frompdt, int topdt, YREAL tab[]) |
---|
269 | { |
---|
270 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
271 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
272 | for (int Ywt=frompdt; Ywt<topdt; ++Ywt){ |
---|
273 | for (int Yws=0; Yws<YNBS_gag; ++Yws){ |
---|
274 | YG_gag(Yws, Yw1, Yw2, Ywt) = tab[Y3windice]; ++Y3windice;}}}} |
---|
275 | }/*M2_RGRADT*/ |
---|
276 | void Yrazgrad_gag() |
---|
277 | { |
---|
278 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
279 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
280 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
281 | for (int Yws=0; Yws<YNBS_gag; ++Yws){ |
---|
282 | Ygag(Yw1, Yw2)->Ygrad[Ywt][Yws] = 0.0;}}}} |
---|
283 | }/*M2_SETAT*/ |
---|
284 | void Ysetstate_gag(double val) |
---|
285 | { |
---|
286 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
287 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
288 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
289 | for (int Yws=0; Yws<YNBS_gag; ++Yws){ |
---|
290 | Ygag(Yw1, Yw2)->Ystate[Ywt][Yws] = val;}}}} |
---|
291 | }/*M2_YIOUT*/ |
---|
292 | void Yio_gag(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val) |
---|
293 | { Yiorwf ("gag", Yws, Yw1, Yw2, Yw3, Ywt, &YS_gag(Yws, Yw1, Yw2, Ywt), val); |
---|
294 | }/*M2_CREU*/ |
---|
295 | void Ycreate_gag() |
---|
296 | { |
---|
297 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
298 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
299 | if ((Ygag(Yw1, Yw2)= new gag ())==NULL) Ycreate_errnew();}} |
---|
300 | }/*M2_TBTOGT */ |
---|
301 | void YtabTOgrad_res(int frompdt, int topdt, YREAL tab[]) |
---|
302 | { |
---|
303 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
304 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
305 | for (int Ywt=frompdt; Ywt<topdt; ++Ywt){ |
---|
306 | for (int Yws=0; Yws<YNBS_res; ++Yws){ |
---|
307 | YG_res(Yws, Yw1, Yw2, Ywt) = tab[Y3windice]; ++Y3windice;}}}} |
---|
308 | }/*M2_RGRADT*/ |
---|
309 | void Yrazgrad_res() |
---|
310 | { |
---|
311 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
312 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
313 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
314 | for (int Yws=0; Yws<YNBS_res; ++Yws){ |
---|
315 | Yres(Yw1, Yw2)->Ygrad[Ywt][Yws] = 0.0;}}}} |
---|
316 | }/*M2_SETAT*/ |
---|
317 | void Ysetstate_res(double val) |
---|
318 | { |
---|
319 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
320 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
321 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
322 | for (int Yws=0; Yws<YNBS_res; ++Yws){ |
---|
323 | Yres(Yw1, Yw2)->Ystate[Ywt][Yws] = val;}}}} |
---|
324 | }/*M2_YIOUT*/ |
---|
325 | void Yio_res(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val) |
---|
326 | { Yiorwf ("res", Yws, Yw1, Yw2, Yw3, Ywt, &YS_res(Yws, Yw1, Yw2, Ywt), val); |
---|
327 | }/*M2_CREU*/ |
---|
328 | void Ycreate_res() |
---|
329 | { |
---|
330 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
331 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
332 | if ((Yres(Yw1, Yw2)= new res ())==NULL) Ycreate_errnew();}} |
---|
333 | }/*M2_TBTOGT */ |
---|
334 | void YtabTOgrad_ixu(int frompdt, int topdt, YREAL tab[]) |
---|
335 | { |
---|
336 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
337 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
338 | for (int Ywt=frompdt; Ywt<topdt; ++Ywt){ |
---|
339 | for (int Yws=0; Yws<YNBS_ixu; ++Yws){ |
---|
340 | YG_ixu(Yws, Yw1, Yw2, Ywt) = tab[Y3windice]; ++Y3windice;}}}} |
---|
341 | }/*M2_RGRADT*/ |
---|
342 | void Yrazgrad_ixu() |
---|
343 | { |
---|
344 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
345 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
346 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
347 | for (int Yws=0; Yws<YNBS_ixu; ++Yws){ |
---|
348 | Yixu(Yw1, Yw2)->Ygrad[Ywt][Yws] = 0.0;}}}} |
---|
349 | }/*M2_SETAT*/ |
---|
350 | void Ysetstate_ixu(double val) |
---|
351 | { |
---|
352 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
353 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
354 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
355 | for (int Yws=0; Yws<YNBS_ixu; ++Yws){ |
---|
356 | Yixu(Yw1, Yw2)->Ystate[Ywt][Yws] = val;}}}} |
---|
357 | }/*M2_YIOUT*/ |
---|
358 | void Yio_ixu(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val) |
---|
359 | { Yiorwf ("ixu", Yws, Yw1, Yw2, Yw3, Ywt, &YS_ixu(Yws, Yw1, Yw2, Ywt), val); |
---|
360 | }/*M2_CREU*/ |
---|
361 | void Ycreate_ixu() |
---|
362 | { |
---|
363 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
364 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
365 | if ((Yixu(Yw1, Yw2)= new ixu ())==NULL) Ycreate_errnew();}} |
---|
366 | }/*M2_TBTOGT */ |
---|
367 | void YtabTOgrad_psi(int frompdt, int topdt, YREAL tab[]) |
---|
368 | { |
---|
369 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
370 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
371 | for (int Ywt=frompdt; Ywt<topdt; ++Ywt){ |
---|
372 | for (int Yws=0; Yws<YNBS_psi; ++Yws){ |
---|
373 | YG_psi(Yws, Yw1, Yw2, Ywt) = tab[Y3windice]; ++Y3windice;}}}} |
---|
374 | }/*M2_RGRADT*/ |
---|
375 | void Yrazgrad_psi() |
---|
376 | { |
---|
377 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
378 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
379 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
380 | for (int Yws=0; Yws<YNBS_psi; ++Yws){ |
---|
381 | Ypsi(Yw1, Yw2)->Ygrad[Ywt][Yws] = 0.0;}}}} |
---|
382 | }/*M2_SETAT*/ |
---|
383 | void Ysetstate_psi(double val) |
---|
384 | { |
---|
385 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
386 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
387 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
388 | for (int Yws=0; Yws<YNBS_psi; ++Yws){ |
---|
389 | Ypsi(Yw1, Yw2)->Ystate[Ywt][Yws] = val;}}}} |
---|
390 | }/*M2_YIOUT*/ |
---|
391 | void Yio_psi(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val) |
---|
392 | { Yiorwf ("psi", Yws, Yw1, Yw2, Yw3, Ywt, &YS_psi(Yws, Yw1, Yw2, Ywt), val); |
---|
393 | }/*M0_OUTOB*/ |
---|
394 | int Youtoobs_psi(YioKind yiokind, int Yws, int Ywt, int arbpdt) |
---|
395 | { |
---|
396 | Yaobs.time = arbpdt; |
---|
397 | Yaobs.imod = Yimod("psi"); |
---|
398 | Yaobs.smod = Yws;/*M2_OUTOBT*/ |
---|
399 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1) |
---|
400 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2) |
---|
401 | { if(select_io(yiokind, "psi", Yws, Yw1, Yw2, -1, Ywt, &Ystate_psi(Yws, Yw1, Yw2, Ywt))) |
---|
402 | { Yaobs.iaxe = Yw1; Yaobs.jaxe = Yw2; Yaobs.kaxe = -1; |
---|
403 | Yaobs.vobs = Ystate_psi(Yws, Yw1, Yw2, Ywt); |
---|
404 | if(!Yobs_insert (&Yaobs)) return(0); |
---|
405 | } |
---|
406 | }/*M9_OUTOB*/ |
---|
407 | return(1); |
---|
408 | }/*M2_CREU*/ |
---|
409 | void Ycreate_psi() |
---|
410 | { |
---|
411 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
412 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
413 | if ((Ypsi(Yw1, Yw2)= new psi ())==NULL) Ycreate_errnew();}} |
---|
414 | }/*M2_SWISH*/ |
---|
415 | void Ysetwish_psi(double val) |
---|
416 | { |
---|
417 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
418 | for (int Yw2=0; Yw2<YA2_Sac; ++Yw2){ |
---|
419 | for (int Yws=0; Yws<YNBS_psi; ++Yws){ |
---|
420 | Ywish_psi(Yws, Yw1, Yw2) = val;}}} |
---|
421 | }/*M1_TBTOGT */ |
---|
422 | void YtabTOgrad_psifd(int frompdt, int topdt, YREAL tab[]) |
---|
423 | { |
---|
424 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
425 | for (int Ywt=frompdt; Ywt<topdt; ++Ywt){ |
---|
426 | for (int Yws=0; Yws<YNBS_psifd; ++Yws){ |
---|
427 | YG_psifd(Yws, Yw1, Ywt) = tab[Y3windice]; ++Y3windice;}}} |
---|
428 | }/*M1_RGRADT*/ |
---|
429 | void Yrazgrad_psifd() |
---|
430 | { |
---|
431 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
432 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
433 | for (int Yws=0; Yws<YNBS_psifd; ++Yws){ |
---|
434 | Ypsifd(Yw1)->Ygrad[Ywt][Yws] = 0.0;}}} |
---|
435 | }/*M1_SETAT*/ |
---|
436 | void Ysetstate_psifd(double val) |
---|
437 | { |
---|
438 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
439 | for (int Ywt=0; Ywt<YNBALLTIME_Tlu; ++Ywt){ |
---|
440 | for (int Yws=0; Yws<YNBS_psifd; ++Yws){ |
---|
441 | Ypsifd(Yw1)->Ystate[Ywt][Yws] = val;}}} |
---|
442 | }/*M1_YIOUT*/ |
---|
443 | void Yio_psifd(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val) |
---|
444 | { Yiorwf ("psifd", Yws, Yw1, Yw2, Yw3, Ywt, &YS_psifd(Yws, Yw1, Ywt), val); |
---|
445 | }/*M0_OUTOB*/ |
---|
446 | int Youtoobs_psifd(YioKind yiokind, int Yws, int Ywt, int arbpdt) |
---|
447 | { |
---|
448 | Yaobs.time = arbpdt; |
---|
449 | Yaobs.imod = Yimod("psifd"); |
---|
450 | Yaobs.smod = Yws;/*M1_OUTOBT*/ |
---|
451 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1) |
---|
452 | { if(select_io(yiokind, "psifd", Yws, Yw1, -1, -1, Ywt, &Ystate_psifd(Yws, Yw1, Ywt))) |
---|
453 | { Yaobs.iaxe = Yw1; Yaobs.jaxe = -1; Yaobs.kaxe = -1; |
---|
454 | Yaobs.vobs = Ystate_psifd(Yws, Yw1, Ywt); |
---|
455 | if(!Yobs_insert (&Yaobs)) return(0); |
---|
456 | } |
---|
457 | }/*M9_OUTOB*/ |
---|
458 | return(1); |
---|
459 | }/*M1_CREU*/ |
---|
460 | void Ycreate_psifd() |
---|
461 | { |
---|
462 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
463 | if ((Ypsifd(Yw1) = new psifd ())==NULL) Ycreate_errnew();} |
---|
464 | }/*M1_SWISH*/ |
---|
465 | void Ysetwish_psifd(double val) |
---|
466 | { |
---|
467 | for (int Yw1=0; Yw1<YA1_Sac; ++Yw1){ |
---|
468 | for (int Yws=0; Yws<YNBS_psifd; ++Yws){ |
---|
469 | Ywish_psifd(Yws, Yw1) = val;}} |
---|
470 | }/*M1_TBTOG */ |
---|
471 | void YtabTOgrad_lap(YREAL tab[]) |
---|
472 | { |
---|
473 | for (int Yw1=0; Yw1<YA1_Olap; ++Yw1){ |
---|
474 | for (int Yws=0; Yws<YNBS_lap; ++Yws){ |
---|
475 | YG_lap(Yws, Yw1) = tab[Y3windice]; ++Y3windice;}} |
---|
476 | }/*M1_RGRAD*/ |
---|
477 | void Yrazgrad_lap() |
---|
478 | { |
---|
479 | for (int Yw1=0; Yw1<YA1_Olap; ++Yw1){ |
---|
480 | for (int Yws=0; Yws<YNBS_lap; ++Yws){ |
---|
481 | Ylap(Yw1)->Ygrad[Yws] = 0.0;}} |
---|
482 | }/*M1_SETA*/ |
---|
483 | void Ysetstate_lap(double val) |
---|
484 | { |
---|
485 | for (int Yw1=0; Yw1<YA1_Olap; ++Yw1){ |
---|
486 | for (int Yws=0; Yws<YNBS_lap; ++Yws){ |
---|
487 | Ylap(Yw1)->Ystate[Yws] = val;}} |
---|
488 | }/*M1_YIOTU*/ |
---|
489 | void Yio_lap(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val) |
---|
490 | { Yiorwf ("lap", Yws, Yw1, Yw2, Yw3, Ywt, &YS_lap(Yws, Yw1), val); |
---|
491 | }/*M1_CREU*/ |
---|
492 | void Ycreate_lap() |
---|
493 | { |
---|
494 | for (int Yw1=0; Yw1<YA1_Olap; ++Yw1){ |
---|
495 | if ((Ylap(Yw1) = new lap ())==NULL) Ycreate_errnew();} |
---|
496 | } |
---|
497 | void Ycreate_all () |
---|
498 | { |
---|
499 | Ycreate_ssd (); |
---|
500 | Ycreate_gama (); |
---|
501 | Ycreate_nj (); |
---|
502 | Ycreate_diac (); |
---|
503 | Ycreate_diab (); |
---|
504 | Ycreate_bet (); |
---|
505 | Ycreate_gag (); |
---|
506 | Ycreate_res (); |
---|
507 | Ycreate_ixu (); |
---|
508 | Ycreate_psi (); |
---|
509 | Ycreate_psifd (); |
---|
510 | Ycreate_lap (); |
---|
511 | } |
---|
512 | void Ywishdiff_all (char *nmmod, int Yws, int Yw1, int Yw2, int Yw3, int Ywt, YREAL vobs) |
---|
513 | { |
---|
514 | if(1==0); |
---|
515 | else if (strcmp(nmmod, "gama") == 0) |
---|
516 | YW_gama(Yws, Yw1) = YS_gama(Yws, Yw1) - vobs; |
---|
517 | else if (strcmp(nmmod, "psi") == 0) |
---|
518 | YW_psi(Yws, Yw1, Yw2) = YS_psi(Yws, Yw1, Yw2, Ywt) - vobs; |
---|
519 | else if (strcmp(nmmod, "psifd") == 0) |
---|
520 | YW_psifd(Yws, Yw1) = YS_psifd(Yws, Yw1, Ywt) - vobs; |
---|
521 | } |
---|
522 | void Ycostwishdiff_all (char *nmmod, int Yws, int Yw1, int Yw2, int Yw3, int Ywt) |
---|
523 | { |
---|
524 | if(1==0); |
---|
525 | else if (strcmp(nmmod, "gama") == 0) |
---|
526 | YG_gama(Yws, Yw1) += Ycostdiff(YW_gama(Yws, Yw1), YS_lap(Yws, Yw1)); |
---|
527 | else if (strcmp(nmmod, "psi") == 0) |
---|
528 | YG_psi(Yws, Yw1, Yw2, Ywt) += Ycostdiff(YW_psi(Yws, Yw1, Yw2), YW_psi(Yws, Yw1, Yw2)); |
---|
529 | else if (strcmp(nmmod, "psifd") == 0) |
---|
530 | YG_psifd(Yws, Yw1, Ywt) += Ycostdiff(YW_psifd(Yws, Yw1), YW_psifd(Yws, Yw1)); |
---|
531 | } |
---|
532 | void Youtoobs_mod(YioKind yiokind, char *nmmod, int numout, int pdt, int arbpdt) |
---|
533 | { |
---|
534 | if(1==0); |
---|
535 | else if (strcmp(nmmod, "gama") == 0) Youtoobs_gama(yiokind, numout, pdt, arbpdt); |
---|
536 | else if (strcmp(nmmod, "psi") == 0) Youtoobs_psi(yiokind, numout, pdt, arbpdt); |
---|
537 | else if (strcmp(nmmod, "psifd") == 0) Youtoobs_psifd(yiokind, numout, pdt, arbpdt); |
---|
538 | } |
---|
539 | void Yadjust_all () |
---|
540 | { |
---|
541 | Yadjust_gama (); |
---|
542 | } |
---|
543 | void Yrazgrad_all () |
---|
544 | { |
---|
545 | Yrazgrad_ssd (); |
---|
546 | Yrazgrad_gama (); |
---|
547 | Yrazgrad_nj (); |
---|
548 | Yrazgrad_diac (); |
---|
549 | Yrazgrad_diab (); |
---|
550 | Yrazgrad_bet (); |
---|
551 | Yrazgrad_gag (); |
---|
552 | Yrazgrad_res (); |
---|
553 | Yrazgrad_ixu (); |
---|
554 | Yrazgrad_psi (); |
---|
555 | Yrazgrad_psifd (); |
---|
556 | Yrazgrad_lap (); |
---|
557 | } |
---|
558 | void Yrazgrad_only (int itraj) |
---|
559 | { |
---|
560 | if (itraj==Yid_Tlu) |
---|
561 | { Yrazgrad_nj (); |
---|
562 | Yrazgrad_lap (); |
---|
563 | } |
---|
564 | } |
---|
565 | int Ysetstate_mod (char *nmmod, YREAL val) |
---|
566 | { int codret=0; int all=0; |
---|
567 | if (!strcmp(nmmod, "Y#A")) all=1; |
---|
568 | if (!strcmp(nmmod, "ssd") || all) |
---|
569 | { Ysetstate_ssd(val);codret=1;} |
---|
570 | if (!strcmp(nmmod, "gama") || all) |
---|
571 | { Ysetstate_gama(val);codret=1;} |
---|
572 | if (!strcmp(nmmod, "nj") || all) |
---|
573 | { Ysetstate_nj(val);codret=1;} |
---|
574 | if (!strcmp(nmmod, "diac") || all) |
---|
575 | { Ysetstate_diac(val);codret=1;} |
---|
576 | if (!strcmp(nmmod, "diab") || all) |
---|
577 | { Ysetstate_diab(val);codret=1;} |
---|
578 | if (!strcmp(nmmod, "bet") || all) |
---|
579 | { Ysetstate_bet(val);codret=1;} |
---|
580 | if (!strcmp(nmmod, "gag") || all) |
---|
581 | { Ysetstate_gag(val);codret=1;} |
---|
582 | if (!strcmp(nmmod, "res") || all) |
---|
583 | { Ysetstate_res(val);codret=1;} |
---|
584 | if (!strcmp(nmmod, "ixu") || all) |
---|
585 | { Ysetstate_ixu(val);codret=1;} |
---|
586 | if (!strcmp(nmmod, "psi") || all) |
---|
587 | { Ysetstate_psi(val);codret=1;} |
---|
588 | if (!strcmp(nmmod, "psifd") || all) |
---|
589 | { Ysetstate_psifd(val);codret=1;} |
---|
590 | if (!strcmp(nmmod, "lap") || all) |
---|
591 | { Ysetstate_lap(val);codret=1;} |
---|
592 | return(codret); |
---|
593 | } |
---|
594 | void Ysetwish_mod (int imod, YREAL val) |
---|
595 | { if(1==0); |
---|
596 | else if (imod==1) Ysetwish_gama(val); |
---|
597 | else if (imod==9) Ysetwish_psi(val); |
---|
598 | else if (imod==10) Ysetwish_psifd(val); |
---|
599 | } |
---|
600 | void Yio_mod (char *nmmod, int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val) |
---|
601 | { |
---|
602 | if(1==0); |
---|
603 | else if (strcmp(nmmod, "ssd") == 0) Yio_ssd(Yws, Yw1, Yw2, Yw3, Ywt, val); |
---|
604 | else if (strcmp(nmmod, "gama") == 0) Yio_gama(Yws, Yw1, Yw2, Yw3, Ywt, val); |
---|
605 | else if (strcmp(nmmod, "nj") == 0) Yio_nj(Yws, Yw1, Yw2, Yw3, Ywt, val); |
---|
606 | else if (strcmp(nmmod, "diac") == 0) Yio_diac(Yws, Yw1, Yw2, Yw3, Ywt, val); |
---|
607 | else if (strcmp(nmmod, "diab") == 0) Yio_diab(Yws, Yw1, Yw2, Yw3, Ywt, val); |
---|
608 | else if (strcmp(nmmod, "bet") == 0) Yio_bet(Yws, Yw1, Yw2, Yw3, Ywt, val); |
---|
609 | else if (strcmp(nmmod, "gag") == 0) Yio_gag(Yws, Yw1, Yw2, Yw3, Ywt, val); |
---|
610 | else if (strcmp(nmmod, "res") == 0) Yio_res(Yws, Yw1, Yw2, Yw3, Ywt, val); |
---|
611 | else if (strcmp(nmmod, "ixu") == 0) Yio_ixu(Yws, Yw1, Yw2, Yw3, Ywt, val); |
---|
612 | else if (strcmp(nmmod, "psi") == 0) Yio_psi(Yws, Yw1, Yw2, Yw3, Ywt, val); |
---|
613 | else if (strcmp(nmmod, "psifd") == 0) Yio_psifd(Yws, Yw1, Yw2, Yw3, Ywt, val); |
---|
614 | else if (strcmp(nmmod, "lap") == 0) Yio_lap(Yws, Yw1, Yw2, Yw3, Ywt, val); |
---|
615 | } |
---|
616 | void YgradCTOtab_target (YREAL tab[]) |
---|
617 | { //Y3windice = 0; |
---|
618 | YgradCTOtab_gama (tab); |
---|
619 | } |
---|
620 | void YtabTOgrad_target (YREAL tab[]) |
---|
621 | { //Y3windice = 0; |
---|
622 | YtabTOgrad_gama (tab); |
---|
623 | } |
---|
624 | void Y3getstate_all (float x[]) |
---|
625 | { Y3windice = 0; |
---|
626 | Y3getstate_gama (x); |
---|
627 | } |
---|
628 | void Y3valstate_all () |
---|
629 | { Y3windice = 0; |
---|
630 | Y3valstate_gama (); |
---|
631 | } |
---|
632 | void Y3valgrad_all (float g[]) |
---|
633 | { Y3windice = 0; |
---|
634 | Y3valgrad_gama (g); |
---|
635 | } |
---|
636 | int Yauto_call (int argc, char *argv[]) |
---|
637 | { |
---|
638 | int codret=0; int all=0; double val; |
---|
639 | if (1==0); |
---|
640 | else if ( !strcmp(argv[0], "setepsi") || !strcmp(argv[0], "SETEPSI") |
---|
641 | ||!strcmp(argv[0], "setepsi_all") || !strcmp(argv[0], "SETEPSI_ALL")) |
---|
642 | { |
---|
643 | if (!strcmp(argv[0], "setepsi_all") || !strcmp(argv[0], "SETEPSI_ALL")){all=1; val=atof(argv[1]);} else val=atof(argv[2]); |
---|
644 | if (!strcmp(argv[1], "gama") || all) |
---|
645 | {Ysetepsi_gama(val);codret=1;} |
---|
646 | } |
---|
647 | else codret=0; |
---|
648 | return(codret); |
---|
649 | } |
---|
650 | |
---|
651 | //############################################################################################################################# |
---|
652 | |
---|
653 | |
---|
654 | int Yforward_space_Sac() |
---|
655 | { |
---|
656 | YA1=2049; YA2=512; YA3=0; |
---|
657 | Yi=-1; Yj=-1; Yk=-1; /* init des indices de maille: maj par la boucle si valide*/ |
---|
658 | |
---|
659 | beginForward=my_gettimeofday(); |
---|
660 | #pragma omp parallel for |
---|
661 | for(YY=0; YY<YA1_Sac; ++YY){ |
---|
662 | Yi=YY; |
---|
663 | { |
---|
664 | for(Yj=0; Yj<YA2_Sac; ++Yj) |
---|
665 | { |
---|
666 | Yting[0]=YS1_ssd( Yi, Yj); |
---|
667 | Ynj(Yi, Yj)->forward( Yting[0] ); |
---|
668 | Yting[0]=YS1_nj( Yi, Yj); |
---|
669 | Ydiab(Yi, Yj)->forward( Yting[0] ); |
---|
670 | Yting[0]=YS1_nj( Yi, Yj); |
---|
671 | Ydiac(Yi, Yj)->forward( Yting[0] ); |
---|
672 | if (1==0 || Yj-1<0) |
---|
673 | Yting[0]=0; |
---|
674 | else |
---|
675 | Yting[0]=YS1_bet( Yi, Yj-1, YTemps); |
---|
676 | if (1==0 || Yj-1<0) |
---|
677 | Yting[1]=0; |
---|
678 | else |
---|
679 | Yting[1]=YS2_bet( Yi, Yj-1, YTemps); |
---|
680 | Ygag(Yi, Yj)->forward( Yting[0], Yting[1] ); |
---|
681 | Yting[0]=YS1_diac( Yi, Yj, YTemps); |
---|
682 | Yting[1]=YS2_diac( Yi, Yj, YTemps); |
---|
683 | Yting[2]=YS1_gag( Yi, Yj, YTemps); |
---|
684 | Yting[3]=YS2_gag( Yi, Yj, YTemps); |
---|
685 | Ybet(Yi, Yj)->forward( Yting[0], Yting[1], Yting[2], Yting[3] ); |
---|
686 | |
---|
687 | } |
---|
688 | |
---|
689 | } |
---|
690 | } |
---|
691 | |
---|
692 | for(Yi=0; Yi<YA1_Sac; ++Yi) |
---|
693 | { |
---|
694 | for(Yj=0; Yj<YA2_Sac; ++Yj) |
---|
695 | { |
---|
696 | if (1==0 || Yi-1<0 || Yj-1<0) |
---|
697 | Yting[0]=0; |
---|
698 | else |
---|
699 | Yting[0]=YS1_psi( Yi-1, Yj-1, YTemps); |
---|
700 | if (1==0 || Yi-1<0 || Yj-1<0) |
---|
701 | Yting[1]=0; |
---|
702 | else |
---|
703 | Yting[1]=YS2_psi( Yi-1, Yj-1, YTemps); |
---|
704 | if (1==0 || Yi-1<0) |
---|
705 | Yting[2]=0; |
---|
706 | else |
---|
707 | Yting[2]=YS1_psi( Yi-1, Yj, YTemps); |
---|
708 | if (1==0 || Yi-1<0) |
---|
709 | Yting[3]=0; |
---|
710 | else |
---|
711 | Yting[3]=YS2_psi( Yi-1, Yj, YTemps); |
---|
712 | if (1==0 || Yi-1<0 || Yj+1>YA2_Sac-1) |
---|
713 | Yting[4]=0; |
---|
714 | else |
---|
715 | Yting[4]=YS1_psi( Yi-1, Yj+1, YTemps); |
---|
716 | if (1==0 || Yi-1<0 || Yj+1>YA2_Sac-1) |
---|
717 | Yting[5]=0; |
---|
718 | else |
---|
719 | Yting[5]=YS2_psi( Yi-1, Yj+1, YTemps); |
---|
720 | Yting[6]=YS1_diab( 0, Yj, YTemps); |
---|
721 | Yting[7]=YS2_diab( 0, Yj, YTemps); |
---|
722 | Yting[8]=YS1_gama( Yi); |
---|
723 | Yting[9]=YS2_gama( Yi); |
---|
724 | Yres(Yi, Yj)->forward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5], Yting[6], Yting[7], Yting[8], Yting[9] ); |
---|
725 | Yting[0]=YS1_res( Yi, Yj, YTemps); |
---|
726 | Yting[1]=YS2_res( Yi, Yj, YTemps); |
---|
727 | if (1==0 || Yj-1<0) |
---|
728 | Yting[2]=0; |
---|
729 | else |
---|
730 | Yting[2]=YS1_ixu( Yi, Yj-1, YTemps); |
---|
731 | if (1==0 || Yj-1<0) |
---|
732 | Yting[3]=0; |
---|
733 | else |
---|
734 | Yting[3]=YS2_ixu( Yi, Yj-1, YTemps); |
---|
735 | Yting[4]=YS1_bet( 0, Yj, YTemps); |
---|
736 | Yting[5]=YS2_bet( 0, Yj, YTemps); |
---|
737 | if (1==0 || Yi+1>YA1_Sac-1) |
---|
738 | Yting[6]=0; |
---|
739 | else |
---|
740 | Yting[6]=YS1_gama( Yi+1); |
---|
741 | if (1==0 || Yi+1>YA1_Sac-1) |
---|
742 | Yting[7]=0; |
---|
743 | else |
---|
744 | Yting[7]=YS2_gama( Yi+1); |
---|
745 | Yixu(Yi, Yj)->forward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5], Yting[6], Yting[7] ); |
---|
746 | |
---|
747 | } |
---|
748 | for(Yj=YA2_Sac-1; Yj>=0; --Yj) |
---|
749 | { |
---|
750 | Yting[0]=YS1_ixu( Yi, Yj, YTemps); |
---|
751 | Yting[1]=YS2_ixu( Yi, Yj, YTemps); |
---|
752 | if (1==0 || Yj+1>YA2_Sac-1) |
---|
753 | Yting[2]=0; |
---|
754 | else |
---|
755 | Yting[2]=YS1_psi( Yi, Yj+1, YTemps); |
---|
756 | if (1==0 || Yj+1>YA2_Sac-1) |
---|
757 | Yting[3]=0; |
---|
758 | else |
---|
759 | Yting[3]=YS2_psi( Yi, Yj+1, YTemps); |
---|
760 | if (1==0 || Yj+1>YA2_Sac-1) |
---|
761 | Yting[4]=0; |
---|
762 | else |
---|
763 | Yting[4]=YS1_gag( 0, Yj+1, YTemps); |
---|
764 | if (1==0 || Yj+1>YA2_Sac-1) |
---|
765 | Yting[5]=0; |
---|
766 | else |
---|
767 | Yting[5]=YS2_gag( 0, Yj+1, YTemps); |
---|
768 | Ypsi(Yi, Yj)->forward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5] ); |
---|
769 | |
---|
770 | } |
---|
771 | |
---|
772 | } |
---|
773 | #pragma omp parallel for |
---|
774 | for(YY=0; YY<YA1_Sac; ++YY){ |
---|
775 | Yi=YY; |
---|
776 | { |
---|
777 | Yting[0]=YS1_psi( Yi, 511, YTemps); |
---|
778 | Yting[1]=YS2_psi( Yi, 511, YTemps); |
---|
779 | Yting[2]=YS1_gama( Yi); |
---|
780 | Yting[3]=YS2_gama( Yi); |
---|
781 | Ypsifd(Yi)->forward( Yting[0], Yting[1], Yting[2], Yting[3] ); |
---|
782 | |
---|
783 | } |
---|
784 | } |
---|
785 | endForward=my_gettimeofday(); |
---|
786 | |
---|
787 | // printf("\n\n################ FORWARD_SPACE_SAC #########################################"); |
---|
788 | // printf("\nTime begin: %f", begin); |
---|
789 | // printf("\nTime end: %f", end); |
---|
790 | // printf("\nTimeForwardDifference %f", (end - begin)); |
---|
791 | // printf("\n###############################################################################\n\n"); |
---|
792 | |
---|
793 | return(0); |
---|
794 | } |
---|
795 | //############################################################################################################################# |
---|
796 | |
---|
797 | int Ybackward_space_Sac() |
---|
798 | { |
---|
799 | YA1=2049; YA2=512; YA3=0; |
---|
800 | Yi=-1; Yj=-1; Yk=-1; /* init des indices de maille: maj par la boucle si valide*/ |
---|
801 | beginBackward=my_gettimeofday(); |
---|
802 | #pragma omp parallel for |
---|
803 | for(YY=YA1_Sac-1; YY>=0; --YY){ |
---|
804 | Yi=YY; |
---|
805 | { |
---|
806 | Yting[0]=YS1_psi( Yi, 511, YTemps); |
---|
807 | Yting[1]=YS2_psi( Yi, 511, YTemps); |
---|
808 | Yting[2]=YS1_gama( Yi); |
---|
809 | Yting[3]=YS2_gama( Yi); |
---|
810 | memset(Yjac, 0, 20*sizeof(double)); |
---|
811 | Ypsifd(Yi)->backward( Yting[0], Yting[1], Yting[2], Yting[3] ); |
---|
812 | Yvsmatt (YNBS_psifd, YNBI_psifd, YMAX_JAC_NBI, &YG1Y_psifd, Yjac[0], Ytbeta); |
---|
813 | YG1_psi( Yi, 511, YTemps) += Ytbeta[0]; |
---|
814 | YG2_psi( Yi, 511, YTemps) += Ytbeta[1]; |
---|
815 | YG1_gama( Yi) += Ytbeta[2]; |
---|
816 | YG2_gama( Yi) += Ytbeta[3]; |
---|
817 | |
---|
818 | } |
---|
819 | } |
---|
820 | for(Yi=YA1_Sac-1; Yi>=0; --Yi) |
---|
821 | { |
---|
822 | for(Yj=0; Yj<YA2_Sac; ++Yj) |
---|
823 | { |
---|
824 | Yting[0]=YS1_ixu( Yi, Yj, YTemps); |
---|
825 | Yting[1]=YS2_ixu( Yi, Yj, YTemps); |
---|
826 | if (1==0 || Yj+1>YA2_Sac-1) |
---|
827 | Yting[2]=0; |
---|
828 | else |
---|
829 | Yting[2]=YS1_psi( Yi, Yj+1, YTemps); |
---|
830 | if (1==0 || Yj+1>YA2_Sac-1) |
---|
831 | Yting[3]=0; |
---|
832 | else |
---|
833 | Yting[3]=YS2_psi( Yi, Yj+1, YTemps); |
---|
834 | if (1==0 || Yj+1>YA2_Sac-1) |
---|
835 | Yting[4]=0; |
---|
836 | else |
---|
837 | Yting[4]=YS1_gag( 0, Yj+1, YTemps); |
---|
838 | if (1==0 || Yj+1>YA2_Sac-1) |
---|
839 | Yting[5]=0; |
---|
840 | else |
---|
841 | Yting[5]=YS2_gag( 0, Yj+1, YTemps); |
---|
842 | memset(Yjac, 0, 20*sizeof(double)); |
---|
843 | Ypsi(Yi, Yj)->backward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5] ); |
---|
844 | Yvsmatt (YNBS_psi, YNBI_psi, YMAX_JAC_NBI, &YG1Y_psi, Yjac[0], Ytbeta); |
---|
845 | YG1_ixu( Yi, Yj, YTemps) += Ytbeta[0]; |
---|
846 | YG2_ixu( Yi, Yj, YTemps) += Ytbeta[1]; |
---|
847 | if (1==0 || Yj+1>YA2_Sac-1){} |
---|
848 | else |
---|
849 | YG1_psi( Yi, Yj+1, YTemps) += Ytbeta[2]; |
---|
850 | if (1==0 || Yj+1>YA2_Sac-1){} |
---|
851 | else |
---|
852 | YG2_psi( Yi, Yj+1, YTemps) += Ytbeta[3]; |
---|
853 | if (1==0 || Yj+1>YA2_Sac-1){} |
---|
854 | else |
---|
855 | YG1_gag( 0, Yj+1, YTemps) += Ytbeta[4]; |
---|
856 | if (1==0 || Yj+1>YA2_Sac-1){} |
---|
857 | else |
---|
858 | YG2_gag( 0, Yj+1, YTemps) += Ytbeta[5]; |
---|
859 | |
---|
860 | } |
---|
861 | for(Yj=YA2_Sac-1; Yj>=0; --Yj) |
---|
862 | { |
---|
863 | Yting[0]=YS1_res( Yi, Yj, YTemps); |
---|
864 | Yting[1]=YS2_res( Yi, Yj, YTemps); |
---|
865 | if (1==0 || Yj-1<0) |
---|
866 | Yting[2]=0; |
---|
867 | else |
---|
868 | Yting[2]=YS1_ixu( Yi, Yj-1, YTemps); |
---|
869 | if (1==0 || Yj-1<0) |
---|
870 | Yting[3]=0; |
---|
871 | else |
---|
872 | Yting[3]=YS2_ixu( Yi, Yj-1, YTemps); |
---|
873 | Yting[4]=YS1_bet( 0, Yj, YTemps); |
---|
874 | Yting[5]=YS2_bet( 0, Yj, YTemps); |
---|
875 | if (1==0 || Yi+1>YA1_Sac-1) |
---|
876 | Yting[6]=0; |
---|
877 | else |
---|
878 | Yting[6]=YS1_gama( Yi+1); |
---|
879 | if (1==0 || Yi+1>YA1_Sac-1) |
---|
880 | Yting[7]=0; |
---|
881 | else |
---|
882 | Yting[7]=YS2_gama( Yi+1); |
---|
883 | memset(Yjac, 0, 20*sizeof(double)); |
---|
884 | Yixu(Yi, Yj)->backward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5], Yting[6], Yting[7] ); |
---|
885 | Yvsmatt (YNBS_ixu, YNBI_ixu, YMAX_JAC_NBI, &YG1Y_ixu, Yjac[0], Ytbeta); |
---|
886 | YG1_res( Yi, Yj, YTemps) += Ytbeta[0]; |
---|
887 | YG2_res( Yi, Yj, YTemps) += Ytbeta[1]; |
---|
888 | if (1==0 || Yj-1<0){} |
---|
889 | else |
---|
890 | YG1_ixu( Yi, Yj-1, YTemps) += Ytbeta[2]; |
---|
891 | if (1==0 || Yj-1<0){} |
---|
892 | else |
---|
893 | YG2_ixu( Yi, Yj-1, YTemps) += Ytbeta[3]; |
---|
894 | YG1_bet( 0, Yj, YTemps) += Ytbeta[4]; |
---|
895 | YG2_bet( 0, Yj, YTemps) += Ytbeta[5]; |
---|
896 | if (1==0 || Yi+1>YA1_Sac-1){} |
---|
897 | else |
---|
898 | YG1_gama( Yi+1) += Ytbeta[6]; |
---|
899 | if (1==0 || Yi+1>YA1_Sac-1){} |
---|
900 | else |
---|
901 | YG2_gama( Yi+1) += Ytbeta[7]; |
---|
902 | if (1==0 || Yi-1<0 || Yj-1<0) |
---|
903 | Yting[0]=0; |
---|
904 | else |
---|
905 | Yting[0]=YS1_psi( Yi-1, Yj-1, YTemps); |
---|
906 | if (1==0 || Yi-1<0 || Yj-1<0) |
---|
907 | Yting[1]=0; |
---|
908 | else |
---|
909 | Yting[1]=YS2_psi( Yi-1, Yj-1, YTemps); |
---|
910 | if (1==0 || Yi-1<0) |
---|
911 | Yting[2]=0; |
---|
912 | else |
---|
913 | Yting[2]=YS1_psi( Yi-1, Yj, YTemps); |
---|
914 | if (1==0 || Yi-1<0) |
---|
915 | Yting[3]=0; |
---|
916 | else |
---|
917 | Yting[3]=YS2_psi( Yi-1, Yj, YTemps); |
---|
918 | if (1==0 || Yi-1<0 || Yj+1>YA2_Sac-1) |
---|
919 | Yting[4]=0; |
---|
920 | else |
---|
921 | Yting[4]=YS1_psi( Yi-1, Yj+1, YTemps); |
---|
922 | if (1==0 || Yi-1<0 || Yj+1>YA2_Sac-1) |
---|
923 | Yting[5]=0; |
---|
924 | else |
---|
925 | Yting[5]=YS2_psi( Yi-1, Yj+1, YTemps); |
---|
926 | Yting[6]=YS1_diab( 0, Yj, YTemps); |
---|
927 | Yting[7]=YS2_diab( 0, Yj, YTemps); |
---|
928 | Yting[8]=YS1_gama( Yi); |
---|
929 | Yting[9]=YS2_gama( Yi); |
---|
930 | memset(Yjac, 0, 20*sizeof(double)); |
---|
931 | Yres(Yi, Yj)->backward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5], Yting[6], Yting[7], Yting[8], Yting[9] ); |
---|
932 | Yvsmatt (YNBS_res, YNBI_res, YMAX_JAC_NBI, &YG1Y_res, Yjac[0], Ytbeta); |
---|
933 | if (1==0 || Yi-1<0 || Yj-1<0){} |
---|
934 | else |
---|
935 | YG1_psi( Yi-1, Yj-1, YTemps) += Ytbeta[0]; |
---|
936 | if (1==0 || Yi-1<0 || Yj-1<0){} |
---|
937 | else |
---|
938 | YG2_psi( Yi-1, Yj-1, YTemps) += Ytbeta[1]; |
---|
939 | if (1==0 || Yi-1<0){} |
---|
940 | else |
---|
941 | YG1_psi( Yi-1, Yj, YTemps) += Ytbeta[2]; |
---|
942 | if (1==0 || Yi-1<0){} |
---|
943 | else |
---|
944 | YG2_psi( Yi-1, Yj, YTemps) += Ytbeta[3]; |
---|
945 | if (1==0 || Yi-1<0 || Yj+1>YA2_Sac-1){} |
---|
946 | else |
---|
947 | YG1_psi( Yi-1, Yj+1, YTemps) += Ytbeta[4]; |
---|
948 | if (1==0 || Yi-1<0 || Yj+1>YA2_Sac-1){} |
---|
949 | else |
---|
950 | YG2_psi( Yi-1, Yj+1, YTemps) += Ytbeta[5]; |
---|
951 | YG1_diab( 0, Yj, YTemps) += Ytbeta[6]; |
---|
952 | YG2_diab( 0, Yj, YTemps) += Ytbeta[7]; |
---|
953 | YG1_gama( Yi) += Ytbeta[8]; |
---|
954 | YG2_gama( Yi) += Ytbeta[9]; |
---|
955 | |
---|
956 | } |
---|
957 | |
---|
958 | } |
---|
959 | #pragma omp parallel for |
---|
960 | for(YY=YA1_Sac-1; YY>=0; --YY){ |
---|
961 | Yi=YY; |
---|
962 | { |
---|
963 | for(Yj=YA2_Sac-1; Yj>=0; --Yj) |
---|
964 | { |
---|
965 | Yting[0]=YS1_diac( Yi, Yj, YTemps); |
---|
966 | Yting[1]=YS2_diac( Yi, Yj, YTemps); |
---|
967 | Yting[2]=YS1_gag( Yi, Yj, YTemps); |
---|
968 | Yting[3]=YS2_gag( Yi, Yj, YTemps); |
---|
969 | memset(Yjac, 0, 20*sizeof(double)); |
---|
970 | Ybet(Yi, Yj)->backward( Yting[0], Yting[1], Yting[2], Yting[3] ); |
---|
971 | Yvsmatt (YNBS_bet, YNBI_bet, YMAX_JAC_NBI, &YG1Y_bet, Yjac[0], Ytbeta); |
---|
972 | YG1_diac( Yi, Yj, YTemps) += Ytbeta[0]; |
---|
973 | YG2_diac( Yi, Yj, YTemps) += Ytbeta[1]; |
---|
974 | YG1_gag( Yi, Yj, YTemps) += Ytbeta[2]; |
---|
975 | YG2_gag( Yi, Yj, YTemps) += Ytbeta[3]; |
---|
976 | if (1==0 || Yj-1<0) |
---|
977 | Yting[0]=0; |
---|
978 | else |
---|
979 | Yting[0]=YS1_bet( Yi, Yj-1, YTemps); |
---|
980 | if (1==0 || Yj-1<0) |
---|
981 | Yting[1]=0; |
---|
982 | else |
---|
983 | Yting[1]=YS2_bet( Yi, Yj-1, YTemps); |
---|
984 | memset(Yjac, 0, 20*sizeof(double)); |
---|
985 | Ygag(Yi, Yj)->backward( Yting[0], Yting[1] ); |
---|
986 | Yvsmatt (YNBS_gag, YNBI_gag, YMAX_JAC_NBI, &YG1Y_gag, Yjac[0], Ytbeta); |
---|
987 | if (1==0 || Yj-1<0){} |
---|
988 | else |
---|
989 | YG1_bet( Yi, Yj-1, YTemps) += Ytbeta[0]; |
---|
990 | if (1==0 || Yj-1<0){} |
---|
991 | else |
---|
992 | YG2_bet( Yi, Yj-1, YTemps) += Ytbeta[1]; |
---|
993 | Yting[0]=YS1_nj( Yi, Yj); |
---|
994 | memset(Yjac, 0, 20*sizeof(double)); |
---|
995 | Ydiac(Yi, Yj)->backward( Yting[0] ); |
---|
996 | Yvsmatt (YNBS_diac, YNBI_diac, YMAX_JAC_NBI, &YG1Y_diac, Yjac[0], Ytbeta); |
---|
997 | YG1_nj( Yi, Yj) += Ytbeta[0]; |
---|
998 | Yting[0]=YS1_nj( Yi, Yj); |
---|
999 | memset(Yjac, 0, 20*sizeof(double)); |
---|
1000 | Ydiab(Yi, Yj)->backward( Yting[0] ); |
---|
1001 | Yvsmatt (YNBS_diab, YNBI_diab, YMAX_JAC_NBI, &YG1Y_diab, Yjac[0], Ytbeta); |
---|
1002 | YG1_nj( Yi, Yj) += Ytbeta[0]; |
---|
1003 | Yting[0]=YS1_ssd( Yi, Yj); |
---|
1004 | memset(Yjac, 0, 10*sizeof(double)); |
---|
1005 | Ynj(Yi, Yj)->backward( Yting[0] ); |
---|
1006 | Yvsmatt (YNBS_nj, YNBI_nj, YMAX_JAC_NBI, &YG1Y_nj, Yjac[0], Ytbeta); |
---|
1007 | YG1_ssd( Yi, Yj) += Ytbeta[0]; |
---|
1008 | |
---|
1009 | } |
---|
1010 | |
---|
1011 | } |
---|
1012 | } |
---|
1013 | endBackward=my_gettimeofday(); |
---|
1014 | counter ++; |
---|
1015 | |
---|
1016 | printf("\n\n################FORWARD-BACKWARD_SPACE_SAC#########################################"); |
---|
1017 | // printf("\nTime begin: %f", begin); |
---|
1018 | // printf("\nTime end: %f", end); |
---|
1019 | printf("\nTimeForwardDifference %f", (endForward - beginForward)); |
---|
1020 | printf("\nTimeBackwardDifference %f", (endBackward - beginBackward)); |
---|
1021 | printf("\ncounter %d ", counter); |
---|
1022 | differenceForward = differenceForward + (endForward - beginForward); |
---|
1023 | differenceBackward = differenceBackward + (endBackward - beginBackward); |
---|
1024 | printf("Average %f", (differenceForward + differenceBackward) / counter ); |
---|
1025 | printf("\n############################################################################\n\n"); |
---|
1026 | //parallelForward = parallelForward + (endParallelForward - beginParallelForward); |
---|
1027 | //parallelBackward = parallelBackward + (endParallelBackward - beginParallelBackward); |
---|
1028 | //nonParallelForward = nonParallelForward + (endNonParallelForward - beginNonParallelForward); |
---|
1029 | //nonParallelBackward = nonParallelBackward + (endNonParallelBackward - beginNonParallelBackward); |
---|
1030 | return(0); |
---|
1031 | } |
---|
1032 | |
---|
1033 | int Yforward_space_Olap() |
---|
1034 | { |
---|
1035 | YA1=2049; YA2=0; YA3=0; |
---|
1036 | Yi=-1; Yj=-1; Yk=-1; /* init des indices de maille: maj par la boucle si valide*/ |
---|
1037 | #pragma omp parallel for |
---|
1038 | for(YY=0; YY<YA1_Olap; ++YY){ |
---|
1039 | Yi=YY; |
---|
1040 | { |
---|
1041 | if (1==0 || Yi-1<0) |
---|
1042 | Yting[0]=0; |
---|
1043 | else |
---|
1044 | Yting[0]=YW1_gama( Yi-1); |
---|
1045 | if (1==0 || Yi-1<0) |
---|
1046 | Yting[1]=0; |
---|
1047 | else |
---|
1048 | Yting[1]=YW2_gama( Yi-1); |
---|
1049 | Yting[2]=YW1_gama( Yi); |
---|
1050 | Yting[3]=YW2_gama( Yi); |
---|
1051 | if (1==0 || Yi+1>YA1_Olap-1) |
---|
1052 | Yting[4]=0; |
---|
1053 | else |
---|
1054 | Yting[4]=YW1_gama( Yi+1); |
---|
1055 | if (1==0 || Yi+1>YA1_Olap-1) |
---|
1056 | Yting[5]=0; |
---|
1057 | else |
---|
1058 | Yting[5]=YW2_gama( Yi+1); |
---|
1059 | Ylap(Yi)->forward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5] ); |
---|
1060 | |
---|
1061 | } |
---|
1062 | } |
---|
1063 | |
---|
1064 | return(0); |
---|
1065 | } |
---|
1066 | |
---|
1067 | int Ybackward_space_Olap() |
---|
1068 | { |
---|
1069 | YA1=2049; YA2=0; YA3=0; |
---|
1070 | Yi=-1; Yj=-1; Yk=-1; /* init des indices de maille: maj par la boucle si valide*/ |
---|
1071 | #pragma omp parallel for |
---|
1072 | for(YY=YA1_Olap-1; YY>=0; --YY){ |
---|
1073 | Yi=YY; |
---|
1074 | { |
---|
1075 | if (1==0 || Yi-1<0) |
---|
1076 | Yting[0]=0; |
---|
1077 | else |
---|
1078 | Yting[0]=YW1_gama( Yi-1); |
---|
1079 | if (1==0 || Yi-1<0) |
---|
1080 | Yting[1]=0; |
---|
1081 | else |
---|
1082 | Yting[1]=YW2_gama( Yi-1); |
---|
1083 | Yting[2]=YW1_gama( Yi); |
---|
1084 | Yting[3]=YW2_gama( Yi); |
---|
1085 | if (1==0 || Yi+1>YA1_Olap-1) |
---|
1086 | Yting[4]=0; |
---|
1087 | else |
---|
1088 | Yting[4]=YW1_gama( Yi+1); |
---|
1089 | if (1==0 || Yi+1>YA1_Olap-1) |
---|
1090 | Yting[5]=0; |
---|
1091 | else |
---|
1092 | Yting[5]=YW2_gama( Yi+1); |
---|
1093 | memset(Yjac, 0, 20*sizeof(double)); |
---|
1094 | Ylap(Yi)->backward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5] ); |
---|
1095 | Yvsmatt (YNBS_lap, YNBI_lap, YMAX_JAC_NBI, &YG1Y_lap, Yjac[0], Ytbeta); |
---|
1096 | if (1==0 || Yi-1<0){} |
---|
1097 | else |
---|
1098 | #pragma omp atomic |
---|
1099 | YG1_gama( Yi-1) += Ytbeta[0]; |
---|
1100 | if (1==0 || Yi-1<0){} |
---|
1101 | else |
---|
1102 | #pragma omp atomic |
---|
1103 | YG2_gama( Yi-1) += Ytbeta[1]; |
---|
1104 | YG1_gama( Yi) += Ytbeta[2]; |
---|
1105 | YG2_gama( Yi) += Ytbeta[3]; |
---|
1106 | if (1==0 || Yi+1>YA1_Olap-1){} |
---|
1107 | else |
---|
1108 | #pragma omp atomic |
---|
1109 | YG1_gama( Yi+1) += Ytbeta[4]; |
---|
1110 | if (1==0 || Yi+1>YA1_Olap-1){} |
---|
1111 | else |
---|
1112 | #pragma omp atomic |
---|
1113 | YG2_gama( Yi+1) += Ytbeta[5]; |
---|
1114 | |
---|
1115 | } |
---|
1116 | } |
---|
1117 | |
---|
1118 | return(0); |
---|
1119 | } |
---|
1120 | |
---|
1121 | int Yforward_traj_Tlu(int nbp) |
---|
1122 | { |
---|
1123 | // printf("\n##aaaaaaiiiiiiiiiiii##########################################################################\n\n"); |
---|
1124 | Ycurward=FORWARD; |
---|
1125 | Yforward_space_Sac(); |
---|
1126 | return(0); |
---|
1127 | } |
---|
1128 | |
---|
1129 | int Ybackward_traj_Tlu(int nbp) |
---|
1130 | { |
---|
1131 | // printf("\n##bbbbbbiiiiiiiiiiii##########################################################################\n\n"); |
---|
1132 | Ycurward=BACKWARD; |
---|
1133 | Ybackward_space_Sac(); |
---|
1134 | return(0); |
---|
1135 | } |
---|
1136 | |
---|
1137 | int Yforward_order() |
---|
1138 | { |
---|
1139 | // printf("\n##cccccciiiiiiiiiiii##########################################################################\n\n"); |
---|
1140 | // printf("\n############################################################################\n\n"); |
---|
1141 | Yforward_traj_Tlu(0); |
---|
1142 | |
---|
1143 | return(0); |
---|
1144 | } |
---|
1145 | |
---|
1146 | int Ybackward_order() |
---|
1147 | { |
---|
1148 | //printf("\n##uuuuuuuuuuuuu##########################################################################\n\n"); |
---|
1149 | //printf("\n############################################################################\n\n"); |
---|
1150 | Ybackward_traj_Tlu(0); |
---|
1151 | //printf("\n############################################################################\n\n"); |
---|
1152 | /* if (counter > 6){ |
---|
1153 | printf("\n############################################################################\n\n"); |
---|
1154 | printf("\ncounter %d", counter); |
---|
1155 | printf("\nTimeForwardDifference %f", differenceForward); |
---|
1156 | printf("\nTimeBackwardDifference %f", differenceBackward); |
---|
1157 | printf("\nAverageForward %f", differenceForward / counter ); |
---|
1158 | printf("\nAverageBackward %f", differenceBackward / counter ); |
---|
1159 | printf("\nAverage %f", (differenceForward + differenceBackward) / counter ); |
---|
1160 | //printf("\nParallel time %f", (parallelForward + parallelBackward) / counter ); |
---|
1161 | //printf("\nNon Parallel time %f", (nonParallelForward + nonParallelBackward) / counter ); |
---|
1162 | printf("\n############################################################################\n\n"); |
---|
1163 | } |
---|
1164 | */ |
---|
1165 | return(0); |
---|
1166 | } |
---|
1167 | |
---|
1168 | void Yforward_operator (char type) |
---|
1169 | { |
---|
1170 | if ((YTabOpera[Yid_Olap].type==type || type=='*') && YTabOpera[Yid_Olap].isactiv) Yforward_space_Olap(); |
---|
1171 | } |
---|
1172 | void Ybackward_operator (char type) |
---|
1173 | { |
---|
1174 | if ((YTabOpera[Yid_Olap].type==type || type=='*') && YTabOpera[Yid_Olap].isactiv) Ybackward_space_Olap(); |
---|
1175 | } |
---|
1176 | |
---|
1177 | // € € € € € € € € LES FONCTIONS UTILISATEUR ... : |
---|
1178 | int Yuser_call (int argc, char *argv[]) |
---|
1179 | { |
---|
1180 | int codret=1; |
---|
1181 | if (strcmp(argv[0], "xdisplay") == 0) |
---|
1182 | xdisplay(); |
---|
1183 | else if (strcmp(argv[0], "xset_init") == 0) |
---|
1184 | xset_init(); |
---|
1185 | else if (strcmp(argv[0], "xnorme") == 0) |
---|
1186 | xnorme(); |
---|
1187 | else if (strcmp(argv[0], "xgama0") == 0) |
---|
1188 | xgama0(argc, argv); |
---|
1189 | else if (strcmp(argv[0], "xset_deltazr") == 0) |
---|
1190 | xset_deltazr(argc, argv); |
---|
1191 | else if (strcmp(argv[0], "xset_c0") == 0) |
---|
1192 | xset_c0(argc, argv); |
---|
1193 | else if (strcmp(argv[0], "xset_freq") == 0) |
---|
1194 | xset_freq(argc, argv); |
---|
1195 | else if (strcmp(argv[0], "xset_tab_freq") == 0) |
---|
1196 | xset_tab_freq(argc, argv); |
---|
1197 | else if (strcmp(argv[0], "xset_zs") == 0) |
---|
1198 | xset_zs(argc, argv); |
---|
1199 | else if (strcmp(argv[0], "xset_fac") == 0) |
---|
1200 | xset_fac(argc, argv); |
---|
1201 | else if (strcmp(argv[0], "xset_gama") == 0) |
---|
1202 | xset_gama(argc, argv); |
---|
1203 | else if (strcmp(argv[0], "xcoef_OBS") == 0) |
---|
1204 | xcoef_OBS(argc, argv); |
---|
1205 | else codret=0; |
---|
1206 | return(codret); |
---|
1207 | } |
---|
1208 | |
---|
1209 | //-------------- end Yao generation ----------------- |
---|