source: trunk/examples/berrada/MFLBC_RD_perfomanceMeasurement/2mflbc_rd.h @ 403

Last change on this file since 403 was 403, checked in by lnalod, 14 years ago

Add of of some file for the MFLBC_RD_perfomanceMeasurement 2.

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