source: altifloat/src/Yworkdir/Y2floater.h @ 87

Last change on this file since 87 was 84, checked in by leila_ocean, 11 years ago

initial import

File size: 65.2 KB
Line 
1
2//----------------------------------------------------
3// project: floater     header generated by YAO version v.9
4//----------------------------------------------------
5
6// € € € € € € € € LES FONCTIONS PREDEFINIES
7/*M1_TBTOGT  */ 
8void YtabTOgrad_r_float(int frompdt, int topdt, YREAL tab[])
9{
10         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
11                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
12                         for (int Yws=0; Yws<YNBS_r_float; ++Yws){
13                                 YG_r_float(Yws, Yw1, Ywt) = tab[Y3windice]; ++Y3windice;}}}
14}/*M1_GEQPDT*/ 
15void YgradEQPdelta_r_float(int frompdt, int topdt, double pfact)
16{
17         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
18                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
19                         for (int Yws=0; Yws<YNBS_r_float; ++Yws){
20                                 YG_r_float(Yws, Yw1, Ywt) = YD_r_float(Yws, Yw1, Ywt) * pfact;}}}
21}/*M1_DEQPST*/ 
22void YdeltaEQPstate_r_float(int frompdt, int topdt, double pfact)
23{
24         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
25                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
26                         for (int Yws=0; Yws<YNBS_r_float; ++Yws){
27                                 YD_r_float(Yws, Yw1, Ywt) = YS_r_float(Yws, Yw1, Ywt) * pfact;}}}
28}/*M1_DEQPGT*/ 
29void YdeltaEQPgrad_r_float(int frompdt, int topdt, double pfact)
30{
31         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
32                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
33                         for (int Yws=0; Yws<YNBS_r_float; ++Yws){
34                                 YD_r_float(Yws, Yw1, Ywt) = YG_r_float(Yws, Yw1, Ywt) * pfact;}}}
35}/*M1_SEQPDT*/ 
36void YstateEQPdelta_r_float(int frompdt, int topdt, double pfact)
37{
38         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
39                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
40                         for (int Yws=0; Yws<YNBS_r_float; ++Yws){
41                                 YS_r_float(Yws, Yw1, Ywt) = YD_r_float(Yws, Yw1, Ywt) * pfact;}}}
42}/*M1_SEQPODT*/ 
43void YstateEQPOdelta_r_float(int frompdt, int topdt, double pfact, char *codop)
44{
45         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
46                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
47                         for (int Yws=0; Yws<YNBS_r_float; ++Yws){
48                                 YS_r_float(Yws, Yw1, Ywt) = YD_r_float(Yws, Yw1, Ywt) * (pfact*(1+Ygetval(codop)));}}}
49}/*M1_SEQAPTDT*/ 
50void YstateEQAPTdelta_r_float(int frompdt, int topdt, double pfact, YREAL tab[])
51{
52         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
53                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
54                         for (int Yws=0; Yws<YNBS_r_float; ++Yws){
55                                 YS_r_float(Yws, Yw1, Ywt) = YD_r_float(Yws, Yw1, Ywt) + pfact * tab[Y3windice++];}}}
56}/*M1_GEQPST*/ 
57void YgradEQPstate_r_float(int frompdt, int topdt, double pfact)
58{
59         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
60                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
61                         for (int Yws=0; Yws<YNBS_r_float; ++Yws){
62                                 YG_r_float(Yws, Yw1, Ywt) = YS_r_float(Yws, Yw1, Ywt) * pfact;}}}
63}/*M1_GEQPOST*/ 
64void YgradEQPOstate_r_float(int frompdt, int topdt, double pfact, char *codop)
65{
66         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
67                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
68                         for (int Yws=0; Yws<YNBS_r_float; ++Yws){
69                                 YG_r_float(Yws, Yw1, Ywt) = YS_r_float(Yws, Yw1, Ywt) * (pfact*(1+Ygetval(codop)));}}}
70}/*M1_STOTBT  */ 
71void YstateTOtab_r_float(int frompdt, int topdt, YREAL tab[])
72{
73         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
74                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
75                         for (int Yws=0; Yws<YNBS_r_float; ++Yws){
76                                 tab[Y3windice] = YS_r_float(Yws, Yw1, Ywt); ++Y3windice;}}}
77}/*M1_GTOTBT  */ 
78void YgradTOtab_r_float(int frompdt, int topdt, YREAL tab[])
79{
80         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
81                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
82                         for (int Yws=0; Yws<YNBS_r_float; ++Yws){
83                                 tab[Y3windice] = YG_r_float(Yws, Yw1, Ywt); ++Y3windice;}}}
84}/*M1_RGRADT*/ 
85void Yrazgrad_r_float()
86{
87         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
88                 for (int Ywt=0; Ywt<YNBALLTIME_T_float; ++Ywt){
89                         for (int Yws=0; Yws<YNBS_r_float; ++Yws){
90                                 Yr_float(Yw1)->Ygrad[Ywt][Yws] = 0.0;}}}
91}/*M1_SETAT*/ 
92void Ysetstate_r_float(double val)
93{
94         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
95                 for (int Ywt=0; Ywt<YNBALLTIME_T_float;  ++Ywt){
96                         for (int Yws=0; Yws<YNBS_r_float; ++Yws){
97                                 Yr_float(Yw1)->Ystate[Ywt][Yws] = val;}}}
98}/*M1_YIOUT*/ 
99void Yio_r_float(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val)       
100{  Yiorwf ("r_float", Yws, Yw1, Yw2, Yw3, Ywt, &YS_r_float(Yws, Yw1, Ywt), val);
101}/*M00_GTEST */
102int Ytestdf_r_float (int modop, int KeKo, float pdx, float ptol, int ynbi, int ynbs, char *nmmod, YREAL yinput[], YREAL ystate[], r_float *Modul)
103{        int wk, wj, nbKo=0; YREAL wSj[YMAX_NBS],wdxk,wJjk,wyj,wDjk,wdifjk;
104         YREAL svx; int resKo; char okko[2][3]={"ok", "KO"}; 
105         if (!Ydftestijkt(Yid_r_float)) return(0); 
106         memset (Yjac, 0, YMAX_JAC_NBI*YMAX_JAC_NBS*sizeof(YREAL));
107/*M01_GTESTT*/
108         Modul->forward( Yting[0], Yting[1], Yting[2], Yting[3] );
109         for (wj=0; wj<ynbs; ++wj) wSj[wj] = ystate[YTemps*ynbs + wj];
110         Modul->backward( Yting[0], Yting[1], Yting[2], Yting[3] );
111         for (wk=0; wk<ynbi; ++wk)
112         {       svx=yinput[wk];
113                         wdxk = svx*pdx;
114                         if (modop||svx==0.0) wdxk = pdx; 
115                         yinput[wk] += wdxk;
116                         Modul->forward( Yting[0], Yting[1], Yting[2], Yting[3] );
117                         for (wj=0; wj<ynbs; ++wj)
118                         { wJjk = Yjac[wj][wk];
119                                 wyj = ystate[YTemps*ynbs + wj];
120                                 wDjk = (wyj - wSj[wj]) / wdxk;
121                                 wdifjk = fabs(wDjk - wJjk);
122                                 resKo=(wdifjk/fabs(wJjk))>ptol;  nbKo+=resKo;
123                                 if(resKo || !KeKo) 
124                                 printf(" %7s | J[%2i,%2i] |% 12.6e |% 12.6e |% 12.6e :  %s |% 12.6e | (%i %i %i %i)\n",
125                                                                 nmmod, wj+1, wk+1, wJjk, wDjk, wdifjk, okko[resKo], svx, Yi+1, Yj+1, Yk+1, Yt+1);
126                                } 
127                          yinput[wk] = svx;
128         }
129         return(nbKo);
130}/*M0_OUTOB*/ 
131int Youtoobs_r_float(YioKind yiokind, int Yws, int Ywt, int arbpdt)
132{
133         Yaobs.time = arbpdt;
134         Yaobs.imod = Yimod("r_float");
135         Yaobs.smod = Yws;/*M1_OUTOBT*/
136         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1)
137         {      if(select_io(yiokind, "r_float", Yws, Yw1, -1, -1, Ywt, &Ystate_r_float(Yws, Yw1, Ywt)))
138                        {       Yaobs.iaxe = Yw1; Yaobs.jaxe = -1; Yaobs.kaxe = -1;
139                                Yaobs.vobs = Ystate_r_float(Yws, Yw1, Ywt);
140                                if(!Yobs_insert (&Yaobs)) return(0);
141                        }
142         }/*M9_OUTOB*/ 
143         return(1);
144}/*M1_CREU*/ 
145void Ycreate_r_float() 
146{
147         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
148                 if ((Yr_float(Yw1) = new r_float ())==NULL) Ycreate_errnew();}
149}/*M1_SWISH*/ 
150void Ysetwish_r_float(double val)
151{
152         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
153                 for (int Yws=0; Yws<YNBS_r_float; ++Yws){
154                         Ywish_r_float(Yws, Yw1) = val;}}
155}/*M1_TBTOGT  */ 
156void YtabTOgrad_ur(int frompdt, int topdt, YREAL tab[])
157{
158         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
159                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
160                         for (int Yws=0; Yws<YNBS_ur; ++Yws){
161                                 YG_ur(Yws, Yw1, Ywt) = tab[Y3windice]; ++Y3windice;}}}
162}/*M1_GEQPDT*/ 
163void YgradEQPdelta_ur(int frompdt, int topdt, double pfact)
164{
165         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
166                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
167                         for (int Yws=0; Yws<YNBS_ur; ++Yws){
168                                 YG_ur(Yws, Yw1, Ywt) = YD_ur(Yws, Yw1, Ywt) * pfact;}}}
169}/*M1_DEQPST*/ 
170void YdeltaEQPstate_ur(int frompdt, int topdt, double pfact)
171{
172         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
173                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
174                         for (int Yws=0; Yws<YNBS_ur; ++Yws){
175                                 YD_ur(Yws, Yw1, Ywt) = YS_ur(Yws, Yw1, Ywt) * pfact;}}}
176}/*M1_DEQPGT*/ 
177void YdeltaEQPgrad_ur(int frompdt, int topdt, double pfact)
178{
179         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
180                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
181                         for (int Yws=0; Yws<YNBS_ur; ++Yws){
182                                 YD_ur(Yws, Yw1, Ywt) = YG_ur(Yws, Yw1, Ywt) * pfact;}}}
183}/*M1_SEQPDT*/ 
184void YstateEQPdelta_ur(int frompdt, int topdt, double pfact)
185{
186         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
187                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
188                         for (int Yws=0; Yws<YNBS_ur; ++Yws){
189                                 YS_ur(Yws, Yw1, Ywt) = YD_ur(Yws, Yw1, Ywt) * pfact;}}}
190}/*M1_SEQPODT*/ 
191void YstateEQPOdelta_ur(int frompdt, int topdt, double pfact, char *codop)
192{
193         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
194                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
195                         for (int Yws=0; Yws<YNBS_ur; ++Yws){
196                                 YS_ur(Yws, Yw1, Ywt) = YD_ur(Yws, Yw1, Ywt) * (pfact*(1+Ygetval(codop)));}}}
197}/*M1_SEQAPTDT*/ 
198void YstateEQAPTdelta_ur(int frompdt, int topdt, double pfact, YREAL tab[])
199{
200         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
201                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
202                         for (int Yws=0; Yws<YNBS_ur; ++Yws){
203                                 YS_ur(Yws, Yw1, Ywt) = YD_ur(Yws, Yw1, Ywt) + pfact * tab[Y3windice++];}}}
204}/*M1_GEQPST*/ 
205void YgradEQPstate_ur(int frompdt, int topdt, double pfact)
206{
207         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
208                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
209                         for (int Yws=0; Yws<YNBS_ur; ++Yws){
210                                 YG_ur(Yws, Yw1, Ywt) = YS_ur(Yws, Yw1, Ywt) * pfact;}}}
211}/*M1_GEQPOST*/ 
212void YgradEQPOstate_ur(int frompdt, int topdt, double pfact, char *codop)
213{
214         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
215                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
216                         for (int Yws=0; Yws<YNBS_ur; ++Yws){
217                                 YG_ur(Yws, Yw1, Ywt) = YS_ur(Yws, Yw1, Ywt) * (pfact*(1+Ygetval(codop)));}}}
218}/*M1_STOTBT  */ 
219void YstateTOtab_ur(int frompdt, int topdt, YREAL tab[])
220{
221         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
222                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
223                         for (int Yws=0; Yws<YNBS_ur; ++Yws){
224                                 tab[Y3windice] = YS_ur(Yws, Yw1, Ywt); ++Y3windice;}}}
225}/*M1_GTOTBT  */ 
226void YgradTOtab_ur(int frompdt, int topdt, YREAL tab[])
227{
228         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
229                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
230                         for (int Yws=0; Yws<YNBS_ur; ++Yws){
231                                 tab[Y3windice] = YG_ur(Yws, Yw1, Ywt); ++Y3windice;}}}
232}/*M1_RGRADT*/ 
233void Yrazgrad_ur()
234{
235         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
236                 for (int Ywt=0; Ywt<YNBALLTIME_T_float; ++Ywt){
237                         for (int Yws=0; Yws<YNBS_ur; ++Yws){
238                                 Yur(Yw1)->Ygrad[Ywt][Yws] = 0.0;}}}
239}/*M1_SETAT*/ 
240void Ysetstate_ur(double val)
241{
242         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
243                 for (int Ywt=0; Ywt<YNBALLTIME_T_float;  ++Ywt){
244                         for (int Yws=0; Yws<YNBS_ur; ++Yws){
245                                 Yur(Yw1)->Ystate[Ywt][Yws] = val;}}}
246}/*M1_YIOUT*/ 
247void Yio_ur(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val)   
248{  Yiorwf ("ur", Yws, Yw1, Yw2, Yw3, Ywt, &YS_ur(Yws, Yw1, Ywt), val);
249}/*M00_GTEST */
250int Ytestdf_ur (int modop, int KeKo, float pdx, float ptol, int ynbi, int ynbs, char *nmmod, YREAL yinput[], YREAL ystate[], ur *Modul)
251{        int wk, wj, nbKo=0; YREAL wSj[YMAX_NBS],wdxk,wJjk,wyj,wDjk,wdifjk;
252         YREAL svx; int resKo; char okko[2][3]={"ok", "KO"}; 
253         if (!Ydftestijkt(Yid_ur)) return(0); 
254         memset (Yjac, 0, YMAX_JAC_NBI*YMAX_JAC_NBS*sizeof(YREAL));
255/*M01_GTESTT*/
256         Modul->forward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5], Yting[6], Yting[7], Yting[8], Yting[9], Yting[10], Yting[11], Yting[12], Yting[13], Yting[14], Yting[15], Yting[16], Yting[17] );
257         for (wj=0; wj<ynbs; ++wj) wSj[wj] = ystate[YTemps*ynbs + wj];
258         Modul->backward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5], Yting[6], Yting[7], Yting[8], Yting[9], Yting[10], Yting[11], Yting[12], Yting[13], Yting[14], Yting[15], Yting[16], Yting[17] );
259         for (wk=0; wk<ynbi; ++wk)
260         {       svx=yinput[wk];
261                         wdxk = svx*pdx;
262                         if (modop||svx==0.0) wdxk = pdx; 
263                         yinput[wk] += wdxk;
264                         Modul->forward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5], Yting[6], Yting[7], Yting[8], Yting[9], Yting[10], Yting[11], Yting[12], Yting[13], Yting[14], Yting[15], Yting[16], Yting[17] );
265                         for (wj=0; wj<ynbs; ++wj)
266                         { wJjk = Yjac[wj][wk];
267                                 wyj = ystate[YTemps*ynbs + wj];
268                                 wDjk = (wyj - wSj[wj]) / wdxk;
269                                 wdifjk = fabs(wDjk - wJjk);
270                                 resKo=(wdifjk/fabs(wJjk))>ptol;  nbKo+=resKo;
271                                 if(resKo || !KeKo) 
272                                 printf(" %7s | J[%2i,%2i] |% 12.6e |% 12.6e |% 12.6e :  %s |% 12.6e | (%i %i %i %i)\n",
273                                                                 nmmod, wj+1, wk+1, wJjk, wDjk, wdifjk, okko[resKo], svx, Yi+1, Yj+1, Yk+1, Yt+1);
274                                } 
275                          yinput[wk] = svx;
276         }
277         return(nbKo);
278}/*M1_CREU*/ 
279void Ycreate_ur() 
280{
281         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
282                 if ((Yur(Yw1) = new ur ())==NULL) Ycreate_errnew();}
283}/*M1_TBTOGT  */ 
284void YtabTOgrad_uinter(int frompdt, int topdt, YREAL tab[])
285{
286         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
287                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
288                         for (int Yws=0; Yws<YNBS_uinter; ++Yws){
289                                 YG_uinter(Yws, Yw1, Ywt) = tab[Y3windice]; ++Y3windice;}}}
290}/*M1_GEQPDT*/ 
291void YgradEQPdelta_uinter(int frompdt, int topdt, double pfact)
292{
293         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
294                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
295                         for (int Yws=0; Yws<YNBS_uinter; ++Yws){
296                                 YG_uinter(Yws, Yw1, Ywt) = YD_uinter(Yws, Yw1, Ywt) * pfact;}}}
297}/*M1_DEQPST*/ 
298void YdeltaEQPstate_uinter(int frompdt, int topdt, double pfact)
299{
300         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
301                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
302                         for (int Yws=0; Yws<YNBS_uinter; ++Yws){
303                                 YD_uinter(Yws, Yw1, Ywt) = YS_uinter(Yws, Yw1, Ywt) * pfact;}}}
304}/*M1_DEQPGT*/ 
305void YdeltaEQPgrad_uinter(int frompdt, int topdt, double pfact)
306{
307         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
308                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
309                         for (int Yws=0; Yws<YNBS_uinter; ++Yws){
310                                 YD_uinter(Yws, Yw1, Ywt) = YG_uinter(Yws, Yw1, Ywt) * pfact;}}}
311}/*M1_SEQPDT*/ 
312void YstateEQPdelta_uinter(int frompdt, int topdt, double pfact)
313{
314         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
315                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
316                         for (int Yws=0; Yws<YNBS_uinter; ++Yws){
317                                 YS_uinter(Yws, Yw1, Ywt) = YD_uinter(Yws, Yw1, Ywt) * pfact;}}}
318}/*M1_SEQPODT*/ 
319void YstateEQPOdelta_uinter(int frompdt, int topdt, double pfact, char *codop)
320{
321         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
322                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
323                         for (int Yws=0; Yws<YNBS_uinter; ++Yws){
324                                 YS_uinter(Yws, Yw1, Ywt) = YD_uinter(Yws, Yw1, Ywt) * (pfact*(1+Ygetval(codop)));}}}
325}/*M1_SEQAPTDT*/ 
326void YstateEQAPTdelta_uinter(int frompdt, int topdt, double pfact, YREAL tab[])
327{
328         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
329                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
330                         for (int Yws=0; Yws<YNBS_uinter; ++Yws){
331                                 YS_uinter(Yws, Yw1, Ywt) = YD_uinter(Yws, Yw1, Ywt) + pfact * tab[Y3windice++];}}}
332}/*M1_GEQPST*/ 
333void YgradEQPstate_uinter(int frompdt, int topdt, double pfact)
334{
335         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
336                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
337                         for (int Yws=0; Yws<YNBS_uinter; ++Yws){
338                                 YG_uinter(Yws, Yw1, Ywt) = YS_uinter(Yws, Yw1, Ywt) * pfact;}}}
339}/*M1_GEQPOST*/ 
340void YgradEQPOstate_uinter(int frompdt, int topdt, double pfact, char *codop)
341{
342         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
343                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
344                         for (int Yws=0; Yws<YNBS_uinter; ++Yws){
345                                 YG_uinter(Yws, Yw1, Ywt) = YS_uinter(Yws, Yw1, Ywt) * (pfact*(1+Ygetval(codop)));}}}
346}/*M1_STOTBT  */ 
347void YstateTOtab_uinter(int frompdt, int topdt, YREAL tab[])
348{
349         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
350                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
351                         for (int Yws=0; Yws<YNBS_uinter; ++Yws){
352                                 tab[Y3windice] = YS_uinter(Yws, Yw1, Ywt); ++Y3windice;}}}
353}/*M1_GTOTBT  */ 
354void YgradTOtab_uinter(int frompdt, int topdt, YREAL tab[])
355{
356         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
357                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
358                         for (int Yws=0; Yws<YNBS_uinter; ++Yws){
359                                 tab[Y3windice] = YG_uinter(Yws, Yw1, Ywt); ++Y3windice;}}}
360}/*M1_RGRADT*/ 
361void Yrazgrad_uinter()
362{
363         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
364                 for (int Ywt=0; Ywt<YNBALLTIME_T_float; ++Ywt){
365                         for (int Yws=0; Yws<YNBS_uinter; ++Yws){
366                                 Yuinter(Yw1)->Ygrad[Ywt][Yws] = 0.0;}}}
367}/*M1_SETAT*/ 
368void Ysetstate_uinter(double val)
369{
370         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
371                 for (int Ywt=0; Ywt<YNBALLTIME_T_float;  ++Ywt){
372                         for (int Yws=0; Yws<YNBS_uinter; ++Yws){
373                                 Yuinter(Yw1)->Ystate[Ywt][Yws] = val;}}}
374}/*M1_YIOUT*/ 
375void Yio_uinter(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val)       
376{  Yiorwf ("uinter", Yws, Yw1, Yw2, Yw3, Ywt, &YS_uinter(Yws, Yw1, Ywt), val);
377}/*M1_CREY*/ 
378void Ycreate_uinter()   
379{
380         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
381                 if ((Yuinter(Yw1) = new Yaouinter ())==NULL) Ycreate_errnew();}
382}/*M1_TBTOGT  */ 
383void YtabTOgrad_xinter(int frompdt, int topdt, YREAL tab[])
384{
385         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
386                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
387                         for (int Yws=0; Yws<YNBS_xinter; ++Yws){
388                                 YG_xinter(Yws, Yw1, Ywt) = tab[Y3windice]; ++Y3windice;}}}
389}/*M1_GEQPDT*/ 
390void YgradEQPdelta_xinter(int frompdt, int topdt, double pfact)
391{
392         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
393                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
394                         for (int Yws=0; Yws<YNBS_xinter; ++Yws){
395                                 YG_xinter(Yws, Yw1, Ywt) = YD_xinter(Yws, Yw1, Ywt) * pfact;}}}
396}/*M1_DEQPST*/ 
397void YdeltaEQPstate_xinter(int frompdt, int topdt, double pfact)
398{
399         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
400                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
401                         for (int Yws=0; Yws<YNBS_xinter; ++Yws){
402                                 YD_xinter(Yws, Yw1, Ywt) = YS_xinter(Yws, Yw1, Ywt) * pfact;}}}
403}/*M1_DEQPGT*/ 
404void YdeltaEQPgrad_xinter(int frompdt, int topdt, double pfact)
405{
406         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
407                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
408                         for (int Yws=0; Yws<YNBS_xinter; ++Yws){
409                                 YD_xinter(Yws, Yw1, Ywt) = YG_xinter(Yws, Yw1, Ywt) * pfact;}}}
410}/*M1_SEQPDT*/ 
411void YstateEQPdelta_xinter(int frompdt, int topdt, double pfact)
412{
413         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
414                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
415                         for (int Yws=0; Yws<YNBS_xinter; ++Yws){
416                                 YS_xinter(Yws, Yw1, Ywt) = YD_xinter(Yws, Yw1, Ywt) * pfact;}}}
417}/*M1_SEQPODT*/ 
418void YstateEQPOdelta_xinter(int frompdt, int topdt, double pfact, char *codop)
419{
420         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
421                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
422                         for (int Yws=0; Yws<YNBS_xinter; ++Yws){
423                                 YS_xinter(Yws, Yw1, Ywt) = YD_xinter(Yws, Yw1, Ywt) * (pfact*(1+Ygetval(codop)));}}}
424}/*M1_SEQAPTDT*/ 
425void YstateEQAPTdelta_xinter(int frompdt, int topdt, double pfact, YREAL tab[])
426{
427         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
428                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
429                         for (int Yws=0; Yws<YNBS_xinter; ++Yws){
430                                 YS_xinter(Yws, Yw1, Ywt) = YD_xinter(Yws, Yw1, Ywt) + pfact * tab[Y3windice++];}}}
431}/*M1_GEQPST*/ 
432void YgradEQPstate_xinter(int frompdt, int topdt, double pfact)
433{
434         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
435                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
436                         for (int Yws=0; Yws<YNBS_xinter; ++Yws){
437                                 YG_xinter(Yws, Yw1, Ywt) = YS_xinter(Yws, Yw1, Ywt) * pfact;}}}
438}/*M1_GEQPOST*/ 
439void YgradEQPOstate_xinter(int frompdt, int topdt, double pfact, char *codop)
440{
441         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
442                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
443                         for (int Yws=0; Yws<YNBS_xinter; ++Yws){
444                                 YG_xinter(Yws, Yw1, Ywt) = YS_xinter(Yws, Yw1, Ywt) * (pfact*(1+Ygetval(codop)));}}}
445}/*M1_STOTBT  */ 
446void YstateTOtab_xinter(int frompdt, int topdt, YREAL tab[])
447{
448         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
449                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
450                         for (int Yws=0; Yws<YNBS_xinter; ++Yws){
451                                 tab[Y3windice] = YS_xinter(Yws, Yw1, Ywt); ++Y3windice;}}}
452}/*M1_GTOTBT  */ 
453void YgradTOtab_xinter(int frompdt, int topdt, YREAL tab[])
454{
455         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
456                 for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
457                         for (int Yws=0; Yws<YNBS_xinter; ++Yws){
458                                 tab[Y3windice] = YG_xinter(Yws, Yw1, Ywt); ++Y3windice;}}}
459}/*M1_RGRADT*/ 
460void Yrazgrad_xinter()
461{
462         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
463                 for (int Ywt=0; Ywt<YNBALLTIME_T_float; ++Ywt){
464                         for (int Yws=0; Yws<YNBS_xinter; ++Yws){
465                                 Yxinter(Yw1)->Ygrad[Ywt][Yws] = 0.0;}}}
466}/*M1_SETAT*/ 
467void Ysetstate_xinter(double val)
468{
469         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
470                 for (int Ywt=0; Ywt<YNBALLTIME_T_float;  ++Ywt){
471                         for (int Yws=0; Yws<YNBS_xinter; ++Yws){
472                                 Yxinter(Yw1)->Ystate[Ywt][Yws] = val;}}}
473}/*M1_YIOUT*/ 
474void Yio_xinter(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val)       
475{  Yiorwf ("xinter", Yws, Yw1, Yw2, Yw3, Ywt, &YS_xinter(Yws, Yw1, Ywt), val);
476}/*M1_CREY*/ 
477void Ycreate_xinter()   
478{
479         for (int Yw1=0; Yw1<YA1_S_float; ++Yw1){
480                 if ((Yxinter(Yw1) = new Yaoxinter ())==NULL) Ycreate_errnew();}
481}/*M2_ADJUS*/ 
482void Yadjust_u()
483{
484         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1) 
485         for (int Yw2=0; Yw2<YA2_S_euler; ++Yw2) 
486         for (int Yws=0; Yws<YNBS_u; ++Yws) 
487         { Ystate_u(Yws, Yw1, Yw2) -= Yepsi_u(Yws, Yw1, Yw2) * Ygrad_u(Yws, Yw1, Yw2);
488        }
489}/*M2_GCTOTB  */ 
490void YgradCTOtab_u(YREAL tab[])
491{
492         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
493                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
494                         for (int Yws=0; Yws<YNBS_u; ++Yws){
495                                 tab[Y3windice] += YG_u(Yws, Yw1, Yw2); ++Y3windice;}}}
496}/*M2_VSTA*/ 
497void Y3valstate_u()
498{
499         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
500                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
501                         for (int Yws=0; Yws<YNBS_u; ++Yws){
502                                 Y3x[Y3windice] = Yu(Yw1, Yw2)->Ystate[Yws]; ++Y3windice;}}}
503}/*M2_GSTA*/ 
504void Y3getstate_u(float x[])
505{
506         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
507                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
508                         for (int Yws=0; Yws<YNBS_u; ++Yws){
509                                 Yu(Yw1, Yw2)->Ystate[Yws] = x[Y3windice]; ++Y3windice;}}}
510}/*M2_VGRAD*/ 
511void Y3valgrad_u(float g[])
512{
513         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
514                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
515                         for (int Yws=0; Yws<YNBS_u; ++Yws){
516                                 g[Y3windice] = Yu(Yw1, Yw2)->Ygrad[Yws]; ++Y3windice;}}}
517}/*M2_TBTOG   */ 
518void YtabTOgrad_u(YREAL tab[])
519{
520         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
521                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
522                         for (int Yws=0; Yws<YNBS_u; ++Yws){
523                                 YG_u(Yws, Yw1, Yw2) = tab[Y3windice]; ++Y3windice;}}}
524}/*M2_GEQPD */ 
525void YgradEQPdelta_u(int frompdt, int topdt, double pfact)
526{
527         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
528                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
529                         for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
530                         for (int Yws=0; Yws<YNBS_u; ++Yws){
531                                 YG_u(Yws, Yw1, Yw2) = YD_u(Yws, Yw1, Yw2, Ywt) * pfact;}}}}
532}/*M2_DEQPS */ 
533void YdeltaEQPstate_u(int frompdt, int topdt, double pfact)
534{
535         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
536                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
537                         for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
538                         for (int Yws=0; Yws<YNBS_u; ++Yws){
539                                 YD_u(Yws, Yw1, Yw2, Ywt) = YS_u(Yws, Yw1, Yw2) * pfact;}}}}
540}/*M2_DEQPG */ 
541void YdeltaEQPgrad_u(int frompdt, int topdt, double pfact)
542{
543         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
544                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
545                         for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
546                         for (int Yws=0; Yws<YNBS_u; ++Yws){
547                                 YD_u(Yws, Yw1, Yw2, Ywt) = YG_u(Yws, Yw1, Yw2) * pfact;}}}}
548}/*M2_SEQPD */ 
549void YstateEQPdelta_u(int frompdt, int topdt, double pfact)
550{
551         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
552                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
553                         for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
554                         for (int Yws=0; Yws<YNBS_u; ++Yws){
555                                 YS_u(Yws, Yw1, Yw2) = YD_u(Yws, Yw1, Yw2, Ywt) * pfact;}}}}
556}/*M2_SEQPOD */ 
557void YstateEQPOdelta_u(int frompdt, int topdt, double pfact, char *codop)
558{
559         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
560                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
561                         for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
562                         for (int Yws=0; Yws<YNBS_u; ++Yws){
563                                 YS_u(Yws, Yw1, Yw2) = YD_u(Yws, Yw1, Yw2, Ywt) * (pfact*(1+Ygetval(codop)));}}}}
564}/*M2_SEQAPTD */ 
565void YstateEQAPTdelta_u(int frompdt, int topdt, double pfact, YREAL tab[])
566{
567         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
568                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
569                         for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
570                         for (int Yws=0; Yws<YNBS_u; ++Yws){
571                                 YS_u(Yws, Yw1, Yw2) = YD_u(Yws, Yw1, Yw2, Ywt) + pfact * tab[Y3windice++];}}}}
572}/*M2_GEQPS */ 
573void YgradEQPstate_u(double pfact)
574{
575         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
576                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
577                         for (int Yws=0; Yws<YNBS_u; ++Yws){
578                                 YG_u(Yws, Yw1, Yw2) = YS_u(Yws, Yw1, Yw2) * pfact;}}}
579}/*M2_GEQPOS */ 
580void YgradEQPOstate_u(double pfact, char *codop)
581{
582         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
583                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
584                         for (int Yws=0; Yws<YNBS_u; ++Yws){
585                                 YG_u(Yws, Yw1, Yw2) = YS_u(Yws, Yw1, Yw2) * (pfact*(1+Ygetval(codop)));}}}
586}/*M2_STOTB   */ 
587void YstateTOtab_u(YREAL tab[])
588{
589         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
590                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
591                         for (int Yws=0; Yws<YNBS_u; ++Yws){
592                                 tab[Y3windice] = YS_u(Yws, Yw1, Yw2); ++Y3windice;}}}
593}/*M2_GTOTB   */ 
594void YgradTOtab_u(YREAL tab[])
595{
596         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
597                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
598                         for (int Yws=0; Yws<YNBS_u; ++Yws){
599                                 tab[Y3windice] = YG_u(Yws, Yw1, Yw2); ++Y3windice;}}}
600}/*M2_RGRAD*/ 
601void Yrazgrad_u()
602{
603         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
604                 for (int Yw2=0; Yw2<YA2_S_euler; ++Yw2){
605                         for (int Yws=0; Yws<YNBS_u; ++Yws){
606                                 Yu(Yw1, Yw2)->Ygrad[Yws] = 0.0;}}}
607}/*M2_SETA*/ 
608void Ysetstate_u(double val)
609{
610         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
611                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
612                         for (int Yws=0; Yws<YNBS_u; ++Yws){
613                                 Yu(Yw1, Yw2)->Ystate[Yws] = val;}}}
614}/*M2_YIOTU*/ 
615void Yio_u(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val)     
616{  Yiorwf ("u", Yws, Yw1, Yw2, Yw3, Ywt, &YS_u(Yws, Yw1, Yw2), val);
617}/*M0_OUTOB*/ 
618int Youtoobs_u(YioKind yiokind, int Yws, int Ywt, int arbpdt)
619{
620         Yaobs.time = arbpdt;
621         Yaobs.imod = Yimod("u");
622         Yaobs.smod = Yws;/*M2_OUTOB*/ 
623         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1)
624         for (int Yw2=0; Yw2<YA2_S_euler; ++Yw2)
625         {      if(select_io(yiokind, "u", Yws, Yw1, Yw2, -1, Ywt, &Ystate_u(Yws, Yw1, Yw2)))
626                        {       Yaobs.iaxe = Yw1; Yaobs.jaxe = Yw2; Yaobs.kaxe = -1;
627                                Yaobs.vobs = Ystate_u(Yws, Yw1, Yw2);
628                                if(!Yobs_insert (&Yaobs)) return(0);
629                        }
630         }/*M9_OUTOB*/ 
631         return(1);
632}/*M2_SEPS*/ 
633void Ysetepsi_u(double val)
634{
635         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
636                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
637                         for (int Yws=0; Yws<YNBS_u; ++Yws){
638                                 Yu(Yw1, Yw2)->Yepsi[Yws] = val;}}}
639}/*M2_CREY*/ 
640void Ycreate_u() 
641{
642         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
643                 for (int Yw2=0; Yw2<YA2_S_euler; ++Yw2){
644                         if ((Yu(Yw1, Yw2)= new Yaou ())==NULL) Ycreate_errnew();}}
645}/*M2_SWISH*/ 
646void Ysetwish_u(double val)
647{
648         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
649                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
650                         for (int Yws=0; Yws<YNBS_u; ++Yws){
651                                 Ywish_u(Yws, Yw1, Yw2) = val;}}}
652}/*M2_ADJUS*/ 
653void Yadjust_v()
654{
655         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1) 
656         for (int Yw2=0; Yw2<YA2_S_euler; ++Yw2) 
657         for (int Yws=0; Yws<YNBS_v; ++Yws) 
658         { Ystate_v(Yws, Yw1, Yw2) -= Yepsi_v(Yws, Yw1, Yw2) * Ygrad_v(Yws, Yw1, Yw2);
659        }
660}/*M2_GCTOTB  */ 
661void YgradCTOtab_v(YREAL tab[])
662{
663         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
664                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
665                         for (int Yws=0; Yws<YNBS_v; ++Yws){
666                                 tab[Y3windice] += YG_v(Yws, Yw1, Yw2); ++Y3windice;}}}
667}/*M2_VSTA*/ 
668void Y3valstate_v()
669{
670         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
671                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
672                         for (int Yws=0; Yws<YNBS_v; ++Yws){
673                                 Y3x[Y3windice] = Yv(Yw1, Yw2)->Ystate[Yws]; ++Y3windice;}}}
674}/*M2_GSTA*/ 
675void Y3getstate_v(float x[])
676{
677         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
678                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
679                         for (int Yws=0; Yws<YNBS_v; ++Yws){
680                                 Yv(Yw1, Yw2)->Ystate[Yws] = x[Y3windice]; ++Y3windice;}}}
681}/*M2_VGRAD*/ 
682void Y3valgrad_v(float g[])
683{
684         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
685                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
686                         for (int Yws=0; Yws<YNBS_v; ++Yws){
687                                 g[Y3windice] = Yv(Yw1, Yw2)->Ygrad[Yws]; ++Y3windice;}}}
688}/*M2_TBTOG   */ 
689void YtabTOgrad_v(YREAL tab[])
690{
691         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
692                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
693                         for (int Yws=0; Yws<YNBS_v; ++Yws){
694                                 YG_v(Yws, Yw1, Yw2) = tab[Y3windice]; ++Y3windice;}}}
695}/*M2_GEQPD */ 
696void YgradEQPdelta_v(int frompdt, int topdt, double pfact)
697{
698         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
699                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
700                         for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
701                         for (int Yws=0; Yws<YNBS_v; ++Yws){
702                                 YG_v(Yws, Yw1, Yw2) = YD_v(Yws, Yw1, Yw2, Ywt) * pfact;}}}}
703}/*M2_DEQPS */ 
704void YdeltaEQPstate_v(int frompdt, int topdt, double pfact)
705{
706         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
707                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
708                         for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
709                         for (int Yws=0; Yws<YNBS_v; ++Yws){
710                                 YD_v(Yws, Yw1, Yw2, Ywt) = YS_v(Yws, Yw1, Yw2) * pfact;}}}}
711}/*M2_DEQPG */ 
712void YdeltaEQPgrad_v(int frompdt, int topdt, double pfact)
713{
714         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
715                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
716                         for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
717                         for (int Yws=0; Yws<YNBS_v; ++Yws){
718                                 YD_v(Yws, Yw1, Yw2, Ywt) = YG_v(Yws, Yw1, Yw2) * pfact;}}}}
719}/*M2_SEQPD */ 
720void YstateEQPdelta_v(int frompdt, int topdt, double pfact)
721{
722         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
723                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
724                         for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
725                         for (int Yws=0; Yws<YNBS_v; ++Yws){
726                                 YS_v(Yws, Yw1, Yw2) = YD_v(Yws, Yw1, Yw2, Ywt) * pfact;}}}}
727}/*M2_SEQPOD */ 
728void YstateEQPOdelta_v(int frompdt, int topdt, double pfact, char *codop)
729{
730         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
731                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
732                         for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
733                         for (int Yws=0; Yws<YNBS_v; ++Yws){
734                                 YS_v(Yws, Yw1, Yw2) = YD_v(Yws, Yw1, Yw2, Ywt) * (pfact*(1+Ygetval(codop)));}}}}
735}/*M2_SEQAPTD */ 
736void YstateEQAPTdelta_v(int frompdt, int topdt, double pfact, YREAL tab[])
737{
738         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
739                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
740                         for (int Ywt=frompdt; Ywt<topdt;  ++Ywt){
741                         for (int Yws=0; Yws<YNBS_v; ++Yws){
742                                 YS_v(Yws, Yw1, Yw2) = YD_v(Yws, Yw1, Yw2, Ywt) + pfact * tab[Y3windice++];}}}}
743}/*M2_GEQPS */ 
744void YgradEQPstate_v(double pfact)
745{
746         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
747                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
748                         for (int Yws=0; Yws<YNBS_v; ++Yws){
749                                 YG_v(Yws, Yw1, Yw2) = YS_v(Yws, Yw1, Yw2) * pfact;}}}
750}/*M2_GEQPOS */ 
751void YgradEQPOstate_v(double pfact, char *codop)
752{
753         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
754                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
755                         for (int Yws=0; Yws<YNBS_v; ++Yws){
756                                 YG_v(Yws, Yw1, Yw2) = YS_v(Yws, Yw1, Yw2) * (pfact*(1+Ygetval(codop)));}}}
757}/*M2_STOTB   */ 
758void YstateTOtab_v(YREAL tab[])
759{
760         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
761                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
762                         for (int Yws=0; Yws<YNBS_v; ++Yws){
763                                 tab[Y3windice] = YS_v(Yws, Yw1, Yw2); ++Y3windice;}}}
764}/*M2_GTOTB   */ 
765void YgradTOtab_v(YREAL tab[])
766{
767         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
768                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
769                         for (int Yws=0; Yws<YNBS_v; ++Yws){
770                                 tab[Y3windice] = YG_v(Yws, Yw1, Yw2); ++Y3windice;}}}
771}/*M2_RGRAD*/ 
772void Yrazgrad_v()
773{
774         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
775                 for (int Yw2=0; Yw2<YA2_S_euler; ++Yw2){
776                         for (int Yws=0; Yws<YNBS_v; ++Yws){
777                                 Yv(Yw1, Yw2)->Ygrad[Yws] = 0.0;}}}
778}/*M2_SETA*/ 
779void Ysetstate_v(double val)
780{
781         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
782                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
783                         for (int Yws=0; Yws<YNBS_v; ++Yws){
784                                 Yv(Yw1, Yw2)->Ystate[Yws] = val;}}}
785}/*M2_YIOTU*/ 
786void Yio_v(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val)     
787{  Yiorwf ("v", Yws, Yw1, Yw2, Yw3, Ywt, &YS_v(Yws, Yw1, Yw2), val);
788}/*M0_OUTOB*/ 
789int Youtoobs_v(YioKind yiokind, int Yws, int Ywt, int arbpdt)
790{
791         Yaobs.time = arbpdt;
792         Yaobs.imod = Yimod("v");
793         Yaobs.smod = Yws;/*M2_OUTOB*/ 
794         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1)
795         for (int Yw2=0; Yw2<YA2_S_euler; ++Yw2)
796         {      if(select_io(yiokind, "v", Yws, Yw1, Yw2, -1, Ywt, &Ystate_v(Yws, Yw1, Yw2)))
797                        {       Yaobs.iaxe = Yw1; Yaobs.jaxe = Yw2; Yaobs.kaxe = -1;
798                                Yaobs.vobs = Ystate_v(Yws, Yw1, Yw2);
799                                if(!Yobs_insert (&Yaobs)) return(0);
800                        }
801         }/*M9_OUTOB*/ 
802         return(1);
803}/*M2_SEPS*/ 
804void Ysetepsi_v(double val)
805{
806         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
807                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
808                         for (int Yws=0; Yws<YNBS_v; ++Yws){
809                                 Yv(Yw1, Yw2)->Yepsi[Yws] = val;}}}
810}/*M2_CREY*/ 
811void Ycreate_v() 
812{
813         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
814                 for (int Yw2=0; Yw2<YA2_S_euler; ++Yw2){
815                         if ((Yv(Yw1, Yw2)= new Yaov ())==NULL) Ycreate_errnew();}}
816}/*M2_SWISH*/ 
817void Ysetwish_v(double val)
818{
819         for (int Yw1=0; Yw1<YA1_S_euler; ++Yw1){
820                 for (int Yw2=0; Yw2<YA2_S_euler;  ++Yw2){
821                         for (int Yws=0; Yws<YNBS_v; ++Yws){
822                                 Ywish_v(Yws, Yw1, Yw2) = val;}}}
823}/*M3_TBTOGT  */ 
824void YtabTOgrad_locate(int frompdt, int topdt, YREAL tab[])
825{
826         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
827                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
828                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
829                                 for (int Ywt=frompdt; Ywt<topdt; ++Ywt){
830                                         for (int Yws=0; Yws<YNBS_locate; ++Yws){
831                                                 YG_locate(Yws, Yw1, Yw2, Yw3, Ywt) = tab[Y3windice]; ++Y3windice;}}}}}
832}/*M3_GEQPDT*/ 
833void YgradEQPdelta_locate(int frompdt, int topdt, double pfact)
834{
835         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
836                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
837                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
838                                 for (int Ywt=frompdt; Ywt<topdt; ++Ywt){
839                                         for (int Yws=0; Yws<YNBS_locate; ++Yws){
840                                                 YG_locate(Yws, Yw1, Yw2, Yw3, Ywt) = YD_locate(Yws, Yw1, Yw2, Yw3, Ywt) * pfact;}}}}}
841}/*M3_DEQPST*/ 
842void YdeltaEQPstate_locate(int frompdt, int topdt, double pfact)
843{
844         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
845                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
846                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
847                                 for (int Ywt=frompdt; Ywt<topdt; ++Ywt){
848                                         for (int Yws=0; Yws<YNBS_locate; ++Yws){
849                                                 YD_locate(Yws, Yw1, Yw2, Yw3, Ywt) = YS_locate(Yws, Yw1, Yw2, Yw3, Ywt) * pfact;}}}}}
850}/*M3_DEQPGT*/ 
851void YdeltaEQPgrad_locate(int frompdt, int topdt, double pfact)
852{
853         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
854                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
855                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
856                                 for (int Ywt=frompdt; Ywt<topdt; ++Ywt){
857                                         for (int Yws=0; Yws<YNBS_locate; ++Yws){
858                                                 YD_locate(Yws, Yw1, Yw2, Yw3, Ywt) = YG_locate(Yws, Yw1, Yw2, Yw3, Ywt) * pfact;}}}}}
859}/*M3_SEQPDT*/ 
860void YstateEQPdelta_locate(int frompdt, int topdt, double pfact)
861{
862         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
863                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
864                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
865                                 for (int Ywt=frompdt; Ywt<topdt; ++Ywt){
866                                         for (int Yws=0; Yws<YNBS_locate; ++Yws){
867                                                 YS_locate(Yws, Yw1, Yw2, Yw3, Ywt) = YD_locate(Yws, Yw1, Yw2, Yw3, Ywt) * pfact;}}}}}
868}/*M3_SEQPODT*/ 
869void YstateEQPOdelta_locate(int frompdt, int topdt, double pfact, char *codop)
870{
871         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
872                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
873                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
874                                 for (int Ywt=frompdt; Ywt<topdt; ++Ywt){
875                                         for (int Yws=0; Yws<YNBS_locate; ++Yws){
876                                                 YS_locate(Yws, Yw1, Yw2, Yw3, Ywt) = YD_locate(Yws, Yw1, Yw2, Yw3, Ywt) * (pfact*(1+Ygetval(codop)));}}}}}
877}/*M3_SEQAPTDT*/ 
878void YstateEQAPTdelta_locate(int frompdt, int topdt, double pfact, YREAL tab[])
879{
880         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
881                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
882                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
883                                 for (int Ywt=frompdt; Ywt<topdt; ++Ywt){
884                                         for (int Yws=0; Yws<YNBS_locate; ++Yws){
885                                                 YS_locate(Yws, Yw1, Yw2, Yw3, Ywt) = YD_locate(Yws, Yw1, Yw2, Yw3, Ywt) + pfact * tab[Y3windice++];}}}}}
886}/*M3_GEQPST*/ 
887void YgradEQPstate_locate(int frompdt, int topdt, double pfact)
888{
889         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
890                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
891                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
892                                 for (int Ywt=frompdt; Ywt<topdt; ++Ywt){
893                                         for (int Yws=0; Yws<YNBS_locate; ++Yws){
894                                                 YG_locate(Yws, Yw1, Yw2, Yw3, Ywt) = YS_locate(Yws, Yw1, Yw2, Yw3, Ywt) * pfact;}}}}}
895}/*M3_GEQPOST*/ 
896void YgradEQPOstate_locate(int frompdt, int topdt, double pfact, char *codop)
897{
898         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
899                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
900                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
901                                 for (int Ywt=frompdt; Ywt<topdt; ++Ywt){
902                                         for (int Yws=0; Yws<YNBS_locate; ++Yws){
903                                                 YG_locate(Yws, Yw1, Yw2, Yw3, Ywt) = YS_locate(Yws, Yw1, Yw2, Yw3, Ywt) * (pfact*(1+Ygetval(codop)));}}}}}
904}/*M3_STOTBT  */ 
905void YstateTOtab_locate(int frompdt, int topdt, YREAL tab[])
906{
907         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
908                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
909                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
910                                 for (int Ywt=frompdt; Ywt<topdt; ++Ywt){
911                                         for (int Yws=0; Yws<YNBS_locate; ++Yws){
912                                                 tab[Y3windice] = YS_locate(Yws, Yw1, Yw2, Yw3, Ywt); ++Y3windice;}}}}}
913}/*M3_GTOTBT  */ 
914void YgradTOtab_locate(int frompdt, int topdt, YREAL tab[])
915{
916         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
917                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
918                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
919                                 for (int Ywt=frompdt; Ywt<topdt; ++Ywt){
920                                         for (int Yws=0; Yws<YNBS_locate; ++Yws){
921                                                 tab[Y3windice] = YG_locate(Yws, Yw1, Yw2, Yw3, Ywt); ++Y3windice;}}}}}
922}/*M3_RGRADT*/ 
923void Yrazgrad_locate()
924{
925         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
926                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
927                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
928                                 for (int Ywt=0; Ywt<YNBALLTIME_T_float; ++Ywt){
929                                         for (int Yws=0; Yws<YNBS_locate; ++Yws){
930                                                 Ylocate(Yw1, Yw2, Yw3)->Ygrad[Ywt][Yws] = 0.0;}}}}}
931}/*M3_SETAT*/ 
932void Ysetstate_locate(double val)
933{
934         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
935                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
936                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
937                                 for (int Ywt=0; Ywt<YNBALLTIME_T_float; ++Ywt){
938                                         for (int Yws=0; Yws<YNBS_locate; ++Yws){
939                                                 Ylocate(Yw1, Yw2, Yw3)->Ystate[Ywt][Yws] = val;}}}}}
940}/*M3_YIOUT*/ 
941void Yio_locate(int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val)       
942{  Yiorwf ("locate", Yws, Yw1, Yw2, Yw3, Ywt, &YS_locate(Yws, Yw1, Yw2, Yw3, Ywt), val);
943}/*M00_GTEST */
944int Ytestdf_locate (int modop, int KeKo, float pdx, float ptol, int ynbi, int ynbs, char *nmmod, YREAL yinput[], YREAL ystate[], locate *Modul)
945{        int wk, wj, nbKo=0; YREAL wSj[YMAX_NBS],wdxk,wJjk,wyj,wDjk,wdifjk;
946         YREAL svx; int resKo; char okko[2][3]={"ok", "KO"}; 
947         if (!Ydftestijkt(Yid_locate)) return(0); 
948         memset (Yjac, 0, YMAX_JAC_NBI*YMAX_JAC_NBS*sizeof(YREAL));
949/*M01_GTESTT*/
950         Modul->forward( Yting[0], Yting[1] );
951         for (wj=0; wj<ynbs; ++wj) wSj[wj] = ystate[YTemps*ynbs + wj];
952         Modul->backward( Yting[0], Yting[1] );
953         for (wk=0; wk<ynbi; ++wk)
954         {       svx=yinput[wk];
955                         wdxk = svx*pdx;
956                         if (modop||svx==0.0) wdxk = pdx; 
957                         yinput[wk] += wdxk;
958                         Modul->forward( Yting[0], Yting[1] );
959                         for (wj=0; wj<ynbs; ++wj)
960                         { wJjk = Yjac[wj][wk];
961                                 wyj = ystate[YTemps*ynbs + wj];
962                                 wDjk = (wyj - wSj[wj]) / wdxk;
963                                 wdifjk = fabs(wDjk - wJjk);
964                                 resKo=(wdifjk/fabs(wJjk))>ptol;  nbKo+=resKo;
965                                 if(resKo || !KeKo) 
966                                 printf(" %7s | J[%2i,%2i] |% 12.6e |% 12.6e |% 12.6e :  %s |% 12.6e | (%i %i %i %i)\n",
967                                                                 nmmod, wj+1, wk+1, wJjk, wDjk, wdifjk, okko[resKo], svx, Yi+1, Yj+1, Yk+1, Yt+1);
968                                } 
969                          yinput[wk] = svx;
970         }
971         return(nbKo);
972}/*M3_CREU*/ 
973void Ycreate_locate() 
974{
975         for (int Yw1=0; Yw1<YA1_S_eulerlocate; ++Yw1){
976                 for (int Yw2=0; Yw2<YA2_S_eulerlocate; ++Yw2){
977                         for (int Yw3=0; Yw3<YA3_S_eulerlocate; ++Yw3){
978                                 if ((Ylocate(Yw1, Yw2, Yw3) = new locate ())==NULL) Ycreate_errnew();}}}
979}
980void Ycreate_all () 
981{
982         Ycreate_r_float ();
983         Ycreate_ur ();
984         Ycreate_uinter ();
985         Ycreate_xinter ();
986         Ycreate_u ();
987         Ycreate_v ();
988         Ycreate_locate ();
989}
990void Ywishdiff_all (char *nmmod, int Yws, int Yw1, int Yw2, int Yw3, int Ywt, YREAL vobs) 
991{       
992         if(1==0);
993         else if (strcmp(nmmod, "r_float") == 0)
994                                 YW_r_float(Yws, Yw1) = YS_r_float(Yws, Yw1, Ywt) - vobs;
995         else if (strcmp(nmmod, "u") == 0)
996                                 YW_u(Yws, Yw1, Yw2) = YS_u(Yws, Yw1, Yw2) - vobs;
997         else if (strcmp(nmmod, "v") == 0)
998                                 YW_v(Yws, Yw1, Yw2) = YS_v(Yws, Yw1, Yw2) - vobs;
999}
1000void Ycostwishdiff_all (char *nmmod, int Yws, int Yw1, int Yw2, int Yw3, int Ywt) 
1001{       
1002         if(1==0);
1003         else if (strcmp(nmmod, "r_float") == 0)
1004                                 YG_r_float(Yws, Yw1, Ywt) += Ycostdiff(YW_r_float(Yws, Yw1), YW_r_float(Yws, Yw1));
1005         else if (strcmp(nmmod, "u") == 0)
1006                                 YG_u(Yws, Yw1, Yw2) += Ycostdiff(YW_u(Yws, Yw1, Yw2), YW_u(Yws, Yw1, Yw2));
1007         else if (strcmp(nmmod, "v") == 0)
1008                                 YG_v(Yws, Yw1, Yw2) += Ycostdiff(YW_v(Yws, Yw1, Yw2), YW_v(Yws, Yw1, Yw2));
1009}
1010void Youtoobs_mod(YioKind yiokind, char *nmmod, int numout, int pdt, int arbpdt)
1011{
1012         if(1==0);
1013         else if (strcmp(nmmod, "r_float") == 0) Youtoobs_r_float(yiokind, numout, pdt, arbpdt);
1014         else if (strcmp(nmmod, "u") == 0) Youtoobs_u(yiokind, numout, pdt, arbpdt);
1015         else if (strcmp(nmmod, "v") == 0) Youtoobs_v(yiokind, numout, pdt, arbpdt);
1016}
1017void Yadjust_all () 
1018{
1019         Yadjust_u ();
1020         Yadjust_v ();
1021}
1022void Yrazgrad_all () 
1023{
1024         Yrazgrad_r_float ();
1025         Yrazgrad_ur ();
1026         Yrazgrad_uinter ();
1027         Yrazgrad_xinter ();
1028         Yrazgrad_u ();
1029         Yrazgrad_v ();
1030         Yrazgrad_locate ();
1031}
1032void Yrazgrad_only (int itraj) 
1033{
1034        if (itraj==Yid_T_float)
1035        {}
1036        if (itraj==Yid_T_euler)
1037        {}
1038}
1039int Ysetstate_mod (char *nmmod, YREAL val) 
1040{       int codret=0; int all=0;
1041        if (!strcmp(nmmod, "Y#A")) all=1;
1042        if (!strcmp(nmmod, "r_float") || all)
1043        {  Ysetstate_r_float(val);codret=1;}
1044        if (!strcmp(nmmod, "ur") || all)
1045        {  Ysetstate_ur(val);codret=1;}
1046        if (!strcmp(nmmod, "uinter") || all)
1047        {  Ysetstate_uinter(val);codret=1;}
1048        if (!strcmp(nmmod, "xinter") || all)
1049        {  Ysetstate_xinter(val);codret=1;}
1050        if (!strcmp(nmmod, "u") || all)
1051        {  Ysetstate_u(val);codret=1;}
1052        if (!strcmp(nmmod, "v") || all)
1053        {  Ysetstate_v(val);codret=1;}
1054        if (!strcmp(nmmod, "locate") || all)
1055        {  Ysetstate_locate(val);codret=1;}
1056        return(codret);
1057}
1058void Ysetwish_mod (int imod, YREAL val) 
1059{       if(1==0);
1060        else if (imod==0) Ysetwish_r_float(val);
1061        else if (imod==4) Ysetwish_u(val);
1062        else if (imod==5) Ysetwish_v(val);
1063}
1064void  Yio_mod (char *nmmod, int Yws, int Yw1, int Yw2, int Yw3, int Ywt, double val)
1065{
1066         if(1==0);
1067         else if (strcmp(nmmod, "r_float") == 0) Yio_r_float(Yws, Yw1, Yw2, Yw3, Ywt, val);
1068         else if (strcmp(nmmod, "ur") == 0) Yio_ur(Yws, Yw1, Yw2, Yw3, Ywt, val);
1069         else if (strcmp(nmmod, "uinter") == 0) Yio_uinter(Yws, Yw1, Yw2, Yw3, Ywt, val);
1070         else if (strcmp(nmmod, "xinter") == 0) Yio_xinter(Yws, Yw1, Yw2, Yw3, Ywt, val);
1071         else if (strcmp(nmmod, "u") == 0) Yio_u(Yws, Yw1, Yw2, Yw3, Ywt, val);
1072         else if (strcmp(nmmod, "v") == 0) Yio_v(Yws, Yw1, Yw2, Yw3, Ywt, val);
1073         else if (strcmp(nmmod, "locate") == 0) Yio_locate(Yws, Yw1, Yw2, Yw3, Ywt, val);
1074}
1075void YgradCTOtab_target (YREAL tab[]) 
1076{       //Y3windice = 0;
1077         YgradCTOtab_u (tab);
1078         YgradCTOtab_v (tab);
1079}
1080void YtabTOgrad_target (YREAL tab[]) 
1081{       //Y3windice = 0;
1082         YtabTOgrad_u (tab);
1083         YtabTOgrad_v (tab);
1084}
1085void Y3getstate_all (float x[]) 
1086{        Y3windice = 0;
1087         Y3getstate_u (x);
1088         Y3getstate_v (x);
1089}
1090void Y3valstate_all () 
1091{        Y3windice = 0;
1092         Y3valstate_u ();
1093         Y3valstate_v ();
1094}
1095void Y3valgrad_all (float g[]) 
1096{        Y3windice = 0;
1097         Y3valgrad_u (g);
1098         Y3valgrad_v (g);
1099}
1100void YdeltaEQPstate_traj(int itraj, char *norkmod, int frompdt, int topdt, double pfact) 
1101{
1102        if (1==0){}
1103        else if (itraj==Yid_T_float)
1104        {
1105                if ( !strcmp(norkmod, "r_float") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#C") )
1106         YdeltaEQPstate_r_float (frompdt, topdt, pfact);
1107                if ( !strcmp(norkmod, "ur") || !strcmp(norkmod, "Y#A") )
1108         YdeltaEQPstate_ur (frompdt, topdt, pfact);
1109                if ( !strcmp(norkmod, "uinter") || !strcmp(norkmod, "Y#A") )
1110         YdeltaEQPstate_uinter (frompdt, topdt, pfact);
1111                if ( !strcmp(norkmod, "xinter") || !strcmp(norkmod, "Y#A") )
1112         YdeltaEQPstate_xinter (frompdt, topdt, pfact);
1113                if ( !strcmp(norkmod, "locate") || !strcmp(norkmod, "Y#A") )
1114         YdeltaEQPstate_locate (frompdt, topdt, pfact);
1115        }
1116        else if (itraj==Yid_T_euler)
1117        {
1118                if ( !strcmp(norkmod, "u") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#T") )
1119         YdeltaEQPstate_u (0, 1, pfact);
1120                if ( !strcmp(norkmod, "v") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#T") )
1121         YdeltaEQPstate_v (0, 1, pfact);
1122        }
1123}
1124void YdeltaEQPstate_target(double pfact) 
1125{
1126         YdeltaEQPstate_u (0, 1, pfact);
1127         YdeltaEQPstate_v (0, 1, pfact);
1128}
1129void YdeltaEQPgrad_target(double pfact) 
1130{
1131         YdeltaEQPgrad_u (0, 1, pfact);
1132         YdeltaEQPgrad_v (0, 1, pfact);
1133}
1134void YstateEQPdelta_traj(int itraj, char *norkmod, int frompdt, int topdt, double pfact) 
1135{
1136        if (1==0){}
1137        else if (itraj==Yid_T_float)
1138        {
1139                if ( !strcmp(norkmod, "r_float") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#C") )
1140         YstateEQPdelta_r_float (frompdt, topdt, pfact);
1141                if ( !strcmp(norkmod, "ur") || !strcmp(norkmod, "Y#A") )
1142         YstateEQPdelta_ur (frompdt, topdt, pfact);
1143                if ( !strcmp(norkmod, "uinter") || !strcmp(norkmod, "Y#A") )
1144         YstateEQPdelta_uinter (frompdt, topdt, pfact);
1145                if ( !strcmp(norkmod, "xinter") || !strcmp(norkmod, "Y#A") )
1146         YstateEQPdelta_xinter (frompdt, topdt, pfact);
1147                if ( !strcmp(norkmod, "locate") || !strcmp(norkmod, "Y#A") )
1148         YstateEQPdelta_locate (frompdt, topdt, pfact);
1149        }
1150        else if (itraj==Yid_T_euler)
1151        {
1152                if ( !strcmp(norkmod, "u") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#T") )
1153         YstateEQPdelta_u (0, 1, pfact);
1154                if ( !strcmp(norkmod, "v") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#T") )
1155         YstateEQPdelta_v (0, 1, pfact);
1156        }
1157}
1158void YstateEQPdelta_target(double pfact) 
1159{
1160         YstateEQPdelta_u (0, 1, pfact);
1161         YstateEQPdelta_v (0, 1, pfact);
1162}
1163void YstateEQPOdelta_target(double pfact, char *codop) 
1164{
1165         YstateEQPOdelta_u (0, 1, pfact, codop);
1166         YstateEQPOdelta_v (0, 1, pfact, codop);
1167}
1168void YstateEQAPTdelta_target(double pfact, YREAL tab[]) 
1169{
1170         YstateEQAPTdelta_u (0, 1, pfact, tab);
1171         YstateEQAPTdelta_v (0, 1, pfact, tab);
1172}
1173void YgradEQPstate_traj(int itraj, char *norkmod, int frompdt, int topdt, double pfact) 
1174{
1175        if (1==0){}
1176        else if (itraj==Yid_T_float)
1177        {
1178                if ( !strcmp(norkmod, "r_float") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#C") )
1179         YgradEQPstate_r_float (frompdt, topdt, pfact);
1180                if ( !strcmp(norkmod, "ur") || !strcmp(norkmod, "Y#A") )
1181         YgradEQPstate_ur (frompdt, topdt, pfact);
1182                if ( !strcmp(norkmod, "uinter") || !strcmp(norkmod, "Y#A") )
1183         YgradEQPstate_uinter (frompdt, topdt, pfact);
1184                if ( !strcmp(norkmod, "xinter") || !strcmp(norkmod, "Y#A") )
1185         YgradEQPstate_xinter (frompdt, topdt, pfact);
1186                if ( !strcmp(norkmod, "locate") || !strcmp(norkmod, "Y#A") )
1187         YgradEQPstate_locate (frompdt, topdt, pfact);
1188        }
1189        else if (itraj==Yid_T_euler)
1190        {
1191                if ( !strcmp(norkmod, "u") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#T") )
1192         YgradEQPstate_u(pfact);
1193                if ( !strcmp(norkmod, "v") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#T") )
1194         YgradEQPstate_v(pfact);
1195        }
1196}
1197void YgradEQPstate_target(double pfact) 
1198{
1199         YgradEQPstate_u (pfact);
1200         YgradEQPstate_v (pfact);
1201}
1202void YgradEQPOstate_target(double pfact, char *codop) 
1203{
1204         YgradEQPOstate_u (pfact, codop);
1205         YgradEQPOstate_v (pfact, codop);
1206}
1207void YstateTOtab_traj (int itraj, char *norkmod, int frompdt, int topdt, YREAL tab[]) 
1208{       //Y3windice = 0;
1209        if (1==0){}
1210        else if (itraj==Yid_T_float)
1211        {
1212                if ( !strcmp(norkmod, "r_float") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#C") )
1213         YstateTOtab_r_float (frompdt, topdt, tab);
1214                if ( !strcmp(norkmod, "ur") || !strcmp(norkmod, "Y#A") )
1215         YstateTOtab_ur (frompdt, topdt, tab);
1216                if ( !strcmp(norkmod, "uinter") || !strcmp(norkmod, "Y#A") )
1217         YstateTOtab_uinter (frompdt, topdt, tab);
1218                if ( !strcmp(norkmod, "xinter") || !strcmp(norkmod, "Y#A") )
1219         YstateTOtab_xinter (frompdt, topdt, tab);
1220                if ( !strcmp(norkmod, "locate") || !strcmp(norkmod, "Y#A") )
1221         YstateTOtab_locate (frompdt, topdt, tab);
1222        }
1223        else if (itraj==Yid_T_euler)
1224        {
1225                if ( !strcmp(norkmod, "u") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#T") )
1226         YstateTOtab_u (tab);
1227                if ( !strcmp(norkmod, "v") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#T") )
1228         YstateTOtab_v (tab);
1229        }
1230}
1231void YstateTOtab_target (YREAL tab[]) 
1232{       //Y3windice = 0;
1233         YstateTOtab_u (tab);
1234         YstateTOtab_v (tab);
1235}
1236void YgradTOtab_traj (int itraj, char *norkmod, int frompdt, int topdt, YREAL tab[]) 
1237{       //Y3windice = 0;
1238        if (1==0){}
1239        else if (itraj==Yid_T_float)
1240        {
1241                if ( !strcmp(norkmod, "r_float") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#C") )
1242         YgradTOtab_r_float (frompdt, topdt, tab);
1243                if ( !strcmp(norkmod, "ur") || !strcmp(norkmod, "Y#A") )
1244         YgradTOtab_ur (frompdt, topdt, tab);
1245                if ( !strcmp(norkmod, "uinter") || !strcmp(norkmod, "Y#A") )
1246         YgradTOtab_uinter (frompdt, topdt, tab);
1247                if ( !strcmp(norkmod, "xinter") || !strcmp(norkmod, "Y#A") )
1248         YgradTOtab_xinter (frompdt, topdt, tab);
1249                if ( !strcmp(norkmod, "locate") || !strcmp(norkmod, "Y#A") )
1250         YgradTOtab_locate (frompdt, topdt, tab);
1251        }
1252        else if (itraj==Yid_T_euler)
1253        {
1254                if ( !strcmp(norkmod, "u") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#T") )
1255         YgradTOtab_u (tab);
1256                if ( !strcmp(norkmod, "v") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#T") )
1257         YgradTOtab_v (tab);
1258        }
1259}
1260void YgradTOtab_target (YREAL tab[]) 
1261{       //Y3windice = 0;
1262         YgradTOtab_u (tab);
1263         YgradTOtab_v (tab);
1264}
1265void YtabTOgrad_traj (int itraj, char *norkmod, int frompdt, int topdt, YREAL tab[]) 
1266{       //Y3windice = 0;
1267        if (1==0){}
1268        else if (itraj==Yid_T_float)
1269        {
1270                if ( !strcmp(norkmod, "r_float") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#C") )
1271                         YtabTOgrad_r_float (frompdt, topdt, tab);
1272                if ( !strcmp(norkmod, "ur") || !strcmp(norkmod, "Y#A") )
1273                         YtabTOgrad_ur (frompdt, topdt, tab);
1274                if ( !strcmp(norkmod, "uinter") || !strcmp(norkmod, "Y#A") )
1275                         YtabTOgrad_uinter (frompdt, topdt, tab);
1276                if ( !strcmp(norkmod, "xinter") || !strcmp(norkmod, "Y#A") )
1277                         YtabTOgrad_xinter (frompdt, topdt, tab);
1278                if ( !strcmp(norkmod, "locate") || !strcmp(norkmod, "Y#A") )
1279                         YtabTOgrad_locate (frompdt, topdt, tab);
1280        }
1281        else if (itraj==Yid_T_euler)
1282        {
1283                if ( !strcmp(norkmod, "u") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#T") )
1284                         YtabTOgrad_u (tab);
1285                if ( !strcmp(norkmod, "v") || !strcmp(norkmod, "Y#A") || !strcmp(norkmod, "Y#T") )
1286                         YtabTOgrad_v (tab);
1287        }
1288}
1289 int Ydfward_all(int modop, char *nmmod, int All, int KeKo,  float pdx, float ptol)
1290{
1291        int nbko=0;
1292        if ( !strcmp(nmmod, "r_float") || All )
1293                nbko += Ytestdf_r_float(modop,KeKo,pdx,ptol,YNBI_r_float,YNBS_r_float,"r_float",Yting,Yr_float[Yi]->Ystate[0],Yr_float[Yi]);
1294        if ( !strcmp(nmmod, "ur") || All )
1295                nbko += Ytestdf_ur(modop,KeKo,pdx,ptol,YNBI_ur,YNBS_ur,"ur",Yting,Yur[Yi]->Ystate[0],Yur[Yi]);
1296        if ( !strcmp(nmmod, "locate") || All )
1297                nbko += Ytestdf_locate(modop,KeKo,pdx,ptol,YNBI_locate,YNBS_locate,"locate",Yting,Ylocate[Yi][Yj][Yk]->Ystate[0],Ylocate[Yi][Yj][Yk]);
1298        return(nbko);
1299}
1300
1301void YwishEQPstate_traj_tocov (int itraj, int pdt, double pfact) 
1302{
1303        if (1==0){}
1304        else if (itraj==Yid_T_float)
1305        {
1306        }
1307        else if (itraj==Yid_T_euler)
1308        {
1309        }
1310}
1311int Yauto_call (int argc, char *argv[]) 
1312{
1313         int codret=0; int all=0; double val;
1314         if (1==0);
1315         else if ( !strcmp(argv[0], "setepsi") || !strcmp(argv[0], "SETEPSI") 
1316                                         ||!strcmp(argv[0], "setepsi_all") || !strcmp(argv[0], "SETEPSI_ALL"))
1317         {
1318                         if (!strcmp(argv[0], "setepsi_all") || !strcmp(argv[0], "SETEPSI_ALL")){all=1; val=atof(argv[1]);} else val=atof(argv[2]);
1319                         if (!strcmp(argv[1], "u") || all)
1320                                         {Ysetepsi_u(val);codret=1;}
1321                         if (!strcmp(argv[1], "v") || all)
1322                                         {Ysetepsi_v(val);codret=1;}
1323         }
1324         else codret=0;
1325         return(codret);
1326}
1327
1328 int Yforward_space_S_float()
1329{
1330         YA1=1; YA2=0; YA3=0;
1331Yi=-1; Yj=-1; Yk=-1; /* init des indices de maille: maj par la boucle si valide*/
1332for(Yi=0; Yi<YA1_S_float; ++Yi)
1333{
1334         Yting[0]=YS1_uinter( Yi, YTemps);
1335         Yting[1]=YS2_uinter( Yi, YTemps);
1336         Yting[2]=YS3_uinter( Yi, YTemps);
1337         Yting[3]=YS4_uinter( Yi, YTemps);
1338         Yting[4]=YS5_uinter( Yi, YTemps);
1339         Yting[5]=YS6_uinter( Yi, YTemps);
1340         Yting[6]=YS7_uinter( Yi, YTemps);
1341         Yting[7]=YS8_uinter( Yi, YTemps);
1342         Yting[8]=YS1_xinter( Yi, YTemps);
1343         Yting[9]=YS2_xinter( Yi, YTemps);
1344         Yting[10]=YS3_xinter( Yi, YTemps);
1345         Yting[11]=YS4_xinter( Yi, YTemps);
1346         Yting[12]=YS5_xinter( Yi, YTemps);
1347         Yting[13]=YS6_xinter( Yi, YTemps);
1348         Yting[14]=YS7_xinter( Yi, YTemps);
1349         Yting[15]=YS8_xinter( Yi, YTemps);
1350         Yting[16]=YS1_r_float( Yi, YTemps-1);
1351         Yting[17]=YS2_r_float( Yi, YTemps-1);
1352         Yur(Yi)->forward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5], Yting[6], Yting[7], Yting[8], Yting[9], Yting[10], Yting[11], Yting[12], Yting[13], Yting[14], Yting[15], Yting[16], Yting[17] );
1353         Yting[0]=YS1_r_float( Yi, YTemps-1);
1354         Yting[1]=YS2_r_float( Yi, YTemps-1);
1355         Yting[2]=YS1_ur( Yi, YTemps);
1356         Yting[3]=YS2_ur( Yi, YTemps);
1357         Yr_float(Yi)->forward( Yting[0], Yting[1], Yting[2], Yting[3] );
1358
1359}
1360
1361         return(0);
1362}
1363
1364 int Ylinward_space_S_float()
1365{
1366         YA1=1; YA2=0; YA3=0;
1367Yi=-1; Yj=-1; Yk=-1; /* init des indices de maille: maj par la boucle si valide*/
1368for(Yi=0; Yi<YA1_S_float; ++Yi)
1369{
1370         Yting[0]=YS1_uinter( Yi, YTemps);
1371         Yting[1]=YS2_uinter( Yi, YTemps);
1372         Yting[2]=YS3_uinter( Yi, YTemps);
1373         Yting[3]=YS4_uinter( Yi, YTemps);
1374         Yting[4]=YS5_uinter( Yi, YTemps);
1375         Yting[5]=YS6_uinter( Yi, YTemps);
1376         Yting[6]=YS7_uinter( Yi, YTemps);
1377         Yting[7]=YS8_uinter( Yi, YTemps);
1378         Yting[8]=YS1_xinter( Yi, YTemps);
1379         Yting[9]=YS2_xinter( Yi, YTemps);
1380         Yting[10]=YS3_xinter( Yi, YTemps);
1381         Yting[11]=YS4_xinter( Yi, YTemps);
1382         Yting[12]=YS5_xinter( Yi, YTemps);
1383         Yting[13]=YS6_xinter( Yi, YTemps);
1384         Yting[14]=YS7_xinter( Yi, YTemps);
1385         Yting[15]=YS8_xinter( Yi, YTemps);
1386         Yting[16]=YS1_r_float( Yi, YTemps-1);
1387         Yting[17]=YS2_r_float( Yi, YTemps-1);
1388         Ytbeta[0]=YG1_uinter( Yi, YTemps);
1389         Ytbeta[1]=YG2_uinter( Yi, YTemps);
1390         Ytbeta[2]=YG3_uinter( Yi, YTemps);
1391         Ytbeta[3]=YG4_uinter( Yi, YTemps);
1392         Ytbeta[4]=YG5_uinter( Yi, YTemps);
1393         Ytbeta[5]=YG6_uinter( Yi, YTemps);
1394         Ytbeta[6]=YG7_uinter( Yi, YTemps);
1395         Ytbeta[7]=YG8_uinter( Yi, YTemps);
1396         Ytbeta[8]=YG1_xinter( Yi, YTemps);
1397         Ytbeta[9]=YG2_xinter( Yi, YTemps);
1398         Ytbeta[10]=YG3_xinter( Yi, YTemps);
1399         Ytbeta[11]=YG4_xinter( Yi, YTemps);
1400         Ytbeta[12]=YG5_xinter( Yi, YTemps);
1401         Ytbeta[13]=YG6_xinter( Yi, YTemps);
1402         Ytbeta[14]=YG7_xinter( Yi, YTemps);
1403         Ytbeta[15]=YG8_xinter( Yi, YTemps);
1404         Ytbeta[16]=YG1_r_float( Yi, YTemps-1);
1405         Ytbeta[17]=YG2_r_float( Yi, YTemps-1);
1406         memset(Yjac, 0, 36*sizeof(double));
1407         Yur(Yi)->backward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5], Yting[6], Yting[7], Yting[8], Yting[9], Yting[10], Yting[11], Yting[12], Yting[13], Yting[14], Yting[15], Yting[16], Yting[17] );
1408         Yvsmat (YNBS_ur, YNBI_ur, YMAX_JAC_NBI, &YG1Y_ur, Yjac[0], Ytbeta);
1409         if (Ytestad_module)
1410         {      memcpy(&YD1Y_ur, &YG1Y_ur, YNBS_ur*sizeof(YREAL));
1411         }
1412         Yting[0]=YS1_r_float( Yi, YTemps-1);
1413         Yting[1]=YS2_r_float( Yi, YTemps-1);
1414         Yting[2]=YS1_ur( Yi, YTemps);
1415         Yting[3]=YS2_ur( Yi, YTemps);
1416         Ytbeta[0]=YG1_r_float( Yi, YTemps-1);
1417         Ytbeta[1]=YG2_r_float( Yi, YTemps-1);
1418         Ytbeta[2]=YG1_ur( Yi, YTemps);
1419         Ytbeta[3]=YG2_ur( Yi, YTemps);
1420         memset(Yjac, 0, 36*sizeof(double));
1421         Yr_float(Yi)->backward( Yting[0], Yting[1], Yting[2], Yting[3] );
1422         Yvsmat (YNBS_r_float, YNBI_r_float, YMAX_JAC_NBI, &YG1Y_r_float, Yjac[0], Ytbeta);
1423         if (Ytestad_module)
1424         {      memcpy(&YD1Y_r_float, &YG1Y_r_float, YNBS_r_float*sizeof(YREAL));
1425         }
1426
1427}
1428
1429         return(0);
1430}
1431
1432int Ydfward_space_S_float(int modop, char *nmmod, int All, int KeKo, int koleft, float pdx, float ptol, int yi, int yj, int yk)
1433{
1434         int nbko=0;
1435         YA1=1; YA2=0; YA3=0;
1436Yi=-1; Yj=-1; Yk=-1; /* init des indices de maille: maj par la boucle si valide*/
1437for(Yi=0; Yi<YA1_S_float; ++Yi)
1438{
1439         Yting[0]=YS1_uinter( Yi, YTemps);
1440         Yting[1]=YS2_uinter( Yi, YTemps);
1441         Yting[2]=YS3_uinter( Yi, YTemps);
1442         Yting[3]=YS4_uinter( Yi, YTemps);
1443         Yting[4]=YS5_uinter( Yi, YTemps);
1444         Yting[5]=YS6_uinter( Yi, YTemps);
1445         Yting[6]=YS7_uinter( Yi, YTemps);
1446         Yting[7]=YS8_uinter( Yi, YTemps);
1447         Yting[8]=YS1_xinter( Yi, YTemps);
1448         Yting[9]=YS2_xinter( Yi, YTemps);
1449         Yting[10]=YS3_xinter( Yi, YTemps);
1450         Yting[11]=YS4_xinter( Yi, YTemps);
1451         Yting[12]=YS5_xinter( Yi, YTemps);
1452         Yting[13]=YS6_xinter( Yi, YTemps);
1453         Yting[14]=YS7_xinter( Yi, YTemps);
1454         Yting[15]=YS8_xinter( Yi, YTemps);
1455         Yting[16]=YS1_r_float( Yi, YTemps-1);
1456         Yting[17]=YS2_r_float( Yi, YTemps-1);
1457        if (!strcmp(nmmod, "ur") || All)
1458        {
1459         if (Yi>=yi && Yj>=yj && Yk>=yk) 
1460         {      nbko += Ytestdf_ur(modop,KeKo,pdx,ptol,YNBI_ur,YNBS_ur,"ur",Yting,Yur[Yi]->Ystate[0],Yur[Yi]);
1461                 if (nbko>=koleft) return(nbko);
1462         }
1463        }
1464         Yur(Yi)->forward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5], Yting[6], Yting[7], Yting[8], Yting[9], Yting[10], Yting[11], Yting[12], Yting[13], Yting[14], Yting[15], Yting[16], Yting[17] );
1465         Yting[0]=YS1_r_float( Yi, YTemps-1);
1466         Yting[1]=YS2_r_float( Yi, YTemps-1);
1467         Yting[2]=YS1_ur( Yi, YTemps);
1468         Yting[3]=YS2_ur( Yi, YTemps);
1469        if (!strcmp(nmmod, "r_float") || All)
1470        {
1471         if (Yi>=yi && Yj>=yj && Yk>=yk) 
1472         {      nbko += Ytestdf_r_float(modop,KeKo,pdx,ptol,YNBI_r_float,YNBS_r_float,"r_float",Yting,Yr_float[Yi]->Ystate[0],Yr_float[Yi]);
1473                 if (nbko>=koleft) return(nbko);
1474         }
1475        }
1476         Yr_float(Yi)->forward( Yting[0], Yting[1], Yting[2], Yting[3] );
1477
1478}
1479
1480         return(nbko);
1481}
1482
1483int Ydfward_space_maille_S_float(int modop, char *nmmod, int All, int KeKo,  float pdx, float ptol)
1484{
1485         int nbko=0;
1486         Yting[0]=YS1_uinter( Yi, YTemps);
1487         Yting[1]=YS2_uinter( Yi, YTemps);
1488         Yting[2]=YS3_uinter( Yi, YTemps);
1489         Yting[3]=YS4_uinter( Yi, YTemps);
1490         Yting[4]=YS5_uinter( Yi, YTemps);
1491         Yting[5]=YS6_uinter( Yi, YTemps);
1492         Yting[6]=YS7_uinter( Yi, YTemps);
1493         Yting[7]=YS8_uinter( Yi, YTemps);
1494         Yting[8]=YS1_xinter( Yi, YTemps);
1495         Yting[9]=YS2_xinter( Yi, YTemps);
1496         Yting[10]=YS3_xinter( Yi, YTemps);
1497         Yting[11]=YS4_xinter( Yi, YTemps);
1498         Yting[12]=YS5_xinter( Yi, YTemps);
1499         Yting[13]=YS6_xinter( Yi, YTemps);
1500         Yting[14]=YS7_xinter( Yi, YTemps);
1501         Yting[15]=YS8_xinter( Yi, YTemps);
1502         Yting[16]=YS1_r_float( Yi, YTemps-1);
1503         Yting[17]=YS2_r_float( Yi, YTemps-1);
1504        if (!strcmp(nmmod, "ur") || All)
1505        {
1506         nbko += Ytestdf_ur(modop,KeKo,pdx,ptol,YNBI_ur,YNBS_ur,"ur",Yting,Yur[Yi]->Ystate[0],Yur[Yi]);
1507        }
1508         Yur(Yi)->forward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5], Yting[6], Yting[7], Yting[8], Yting[9], Yting[10], Yting[11], Yting[12], Yting[13], Yting[14], Yting[15], Yting[16], Yting[17] );
1509         Yting[0]=YS1_r_float( Yi, YTemps-1);
1510         Yting[1]=YS2_r_float( Yi, YTemps-1);
1511         Yting[2]=YS1_ur( Yi, YTemps);
1512         Yting[3]=YS2_ur( Yi, YTemps);
1513        if (!strcmp(nmmod, "r_float") || All)
1514        {
1515         nbko += Ytestdf_r_float(modop,KeKo,pdx,ptol,YNBI_r_float,YNBS_r_float,"r_float",Yting,Yr_float[Yi]->Ystate[0],Yr_float[Yi]);
1516        }
1517         Yr_float(Yi)->forward( Yting[0], Yting[1], Yting[2], Yting[3] );
1518         return(nbko);
1519}
1520
1521 int Ybackward_space_S_float()
1522{
1523         YA1=1; YA2=0; YA3=0;
1524Yi=-1; Yj=-1; Yk=-1; /* init des indices de maille: maj par la boucle si valide*/
1525for(Yi=YA1_S_float-1; Yi>=0; --Yi)
1526{
1527         Yting[0]=YS1_r_float( Yi, YTemps-1);
1528         Yting[1]=YS2_r_float( Yi, YTemps-1);
1529         Yting[2]=YS1_ur( Yi, YTemps);
1530         Yting[3]=YS2_ur( Yi, YTemps);
1531         memset(Yjac, 0, 36*sizeof(double));
1532         Yr_float(Yi)->backward( Yting[0], Yting[1], Yting[2], Yting[3] );
1533         Yvsmatt (YNBS_r_float, YNBI_r_float, YMAX_JAC_NBI, &YG1Y_r_float, Yjac[0], Ytbeta);
1534         YG1_r_float( Yi, YTemps-1) += Ytbeta[0];
1535         YG2_r_float( Yi, YTemps-1) += Ytbeta[1];
1536         YG1_ur( Yi, YTemps) += Ytbeta[2];
1537         YG2_ur( Yi, YTemps) += Ytbeta[3];
1538         if (Ytestad_module) {
1539                        Yting[0]=YD1_r_float( Yi, YTemps-1);
1540                        Yting[1]=YD2_r_float( Yi, YTemps-1);
1541                        Yting[2]=YD1_ur( Yi, YTemps);
1542                        Yting[3]=YD2_ur( Yi, YTemps);
1543                        YLTRes = Yprosca(&YD1Y_r_float, &YG1Y_r_float, YNBS_r_float);
1544                        YAdRes = Yprosca(Yting, Ytbeta, YNBI_r_float);
1545                        if (!Ytesterrad_mod("r_float", YLTRes,YAdRes)) return(0);
1546         }
1547         Yting[0]=YS1_uinter( Yi, YTemps);
1548         Yting[1]=YS2_uinter( Yi, YTemps);
1549         Yting[2]=YS3_uinter( Yi, YTemps);
1550         Yting[3]=YS4_uinter( Yi, YTemps);
1551         Yting[4]=YS5_uinter( Yi, YTemps);
1552         Yting[5]=YS6_uinter( Yi, YTemps);
1553         Yting[6]=YS7_uinter( Yi, YTemps);
1554         Yting[7]=YS8_uinter( Yi, YTemps);
1555         Yting[8]=YS1_xinter( Yi, YTemps);
1556         Yting[9]=YS2_xinter( Yi, YTemps);
1557         Yting[10]=YS3_xinter( Yi, YTemps);
1558         Yting[11]=YS4_xinter( Yi, YTemps);
1559         Yting[12]=YS5_xinter( Yi, YTemps);
1560         Yting[13]=YS6_xinter( Yi, YTemps);
1561         Yting[14]=YS7_xinter( Yi, YTemps);
1562         Yting[15]=YS8_xinter( Yi, YTemps);
1563         Yting[16]=YS1_r_float( Yi, YTemps-1);
1564         Yting[17]=YS2_r_float( Yi, YTemps-1);
1565         memset(Yjac, 0, 36*sizeof(double));
1566         Yur(Yi)->backward( Yting[0], Yting[1], Yting[2], Yting[3], Yting[4], Yting[5], Yting[6], Yting[7], Yting[8], Yting[9], Yting[10], Yting[11], Yting[12], Yting[13], Yting[14], Yting[15], Yting[16], Yting[17] );
1567         Yvsmatt (YNBS_ur, YNBI_ur, YMAX_JAC_NBI, &YG1Y_ur, Yjac[0], Ytbeta);
1568         YG1_uinter( Yi, YTemps) += Ytbeta[0];
1569         YG2_uinter( Yi, YTemps) += Ytbeta[1];
1570         YG3_uinter( Yi, YTemps) += Ytbeta[2];
1571         YG4_uinter( Yi, YTemps) += Ytbeta[3];
1572         YG5_uinter( Yi, YTemps) += Ytbeta[4];
1573         YG6_uinter( Yi, YTemps) += Ytbeta[5];
1574         YG7_uinter( Yi, YTemps) += Ytbeta[6];
1575         YG8_uinter( Yi, YTemps) += Ytbeta[7];
1576         YG1_xinter( Yi, YTemps) += Ytbeta[8];
1577         YG2_xinter( Yi, YTemps) += Ytbeta[9];
1578         YG3_xinter( Yi, YTemps) += Ytbeta[10];
1579         YG4_xinter( Yi, YTemps) += Ytbeta[11];
1580         YG5_xinter( Yi, YTemps) += Ytbeta[12];
1581         YG6_xinter( Yi, YTemps) += Ytbeta[13];
1582         YG7_xinter( Yi, YTemps) += Ytbeta[14];
1583         YG8_xinter( Yi, YTemps) += Ytbeta[15];
1584         YG1_r_float( Yi, YTemps-1) += Ytbeta[16];
1585         YG2_r_float( Yi, YTemps-1) += Ytbeta[17];
1586         if (Ytestad_module) {
1587                        Yting[0]=YD1_uinter( Yi, YTemps);
1588                        Yting[1]=YD2_uinter( Yi, YTemps);
1589                        Yting[2]=YD3_uinter( Yi, YTemps);
1590                        Yting[3]=YD4_uinter( Yi, YTemps);
1591                        Yting[4]=YD5_uinter( Yi, YTemps);
1592                        Yting[5]=YD6_uinter( Yi, YTemps);
1593                        Yting[6]=YD7_uinter( Yi, YTemps);
1594                        Yting[7]=YD8_uinter( Yi, YTemps);
1595                        Yting[8]=YD1_xinter( Yi, YTemps);
1596                        Yting[9]=YD2_xinter( Yi, YTemps);
1597                        Yting[10]=YD3_xinter( Yi, YTemps);
1598                        Yting[11]=YD4_xinter( Yi, YTemps);
1599                        Yting[12]=YD5_xinter( Yi, YTemps);
1600                        Yting[13]=YD6_xinter( Yi, YTemps);
1601                        Yting[14]=YD7_xinter( Yi, YTemps);
1602                        Yting[15]=YD8_xinter( Yi, YTemps);
1603                        Yting[16]=YD1_r_float( Yi, YTemps-1);
1604                        Yting[17]=YD2_r_float( Yi, YTemps-1);
1605                        YLTRes = Yprosca(&YD1Y_ur, &YG1Y_ur, YNBS_ur);
1606                        YAdRes = Yprosca(Yting, Ytbeta, YNBI_ur);
1607                        if (!Ytesterrad_mod("ur", YLTRes,YAdRes)) return(0);
1608         }
1609
1610}
1611
1612         return(0);
1613}
1614
1615 int Yforward_space_S_eulerlocate()
1616{
1617         YA1=1; YA2=87; YA3=58;
1618Yi=-1; Yj=-1; Yk=-1; /* init des indices de maille: maj par la boucle si valide*/
1619for(Yi=0; Yi<YA1_S_eulerlocate; ++Yi)
1620for(Yj=0; Yj<YA2_S_eulerlocate; ++Yj)
1621for(Yk=0; Yk<YA3_S_eulerlocate; ++Yk)
1622{
1623         Yting[0]=YS1_r_float( Yi, YTemps-1);
1624         Yting[1]=YS2_r_float( Yi, YTemps-1);
1625         Ylocate(Yi, Yj, Yk)->forward( Yting[0], Yting[1] );
1626
1627}
1628
1629         return(0);
1630}
1631
1632 int Ylinward_space_S_eulerlocate()
1633{
1634         YA1=1; YA2=87; YA3=58;
1635Yi=-1; Yj=-1; Yk=-1; /* init des indices de maille: maj par la boucle si valide*/
1636for(Yi=0; Yi<YA1_S_eulerlocate; ++Yi)
1637for(Yj=0; Yj<YA2_S_eulerlocate; ++Yj)
1638for(Yk=0; Yk<YA3_S_eulerlocate; ++Yk)
1639{
1640         Yting[0]=YS1_r_float( Yi, YTemps-1);
1641         Yting[1]=YS2_r_float( Yi, YTemps-1);
1642         Ytbeta[0]=YG1_r_float( Yi, YTemps-1);
1643         Ytbeta[1]=YG2_r_float( Yi, YTemps-1);
1644         memset(Yjac, 0, 18*sizeof(double));
1645         Ylocate(Yi, Yj, Yk)->backward( Yting[0], Yting[1] );
1646         Yvsmat (YNBS_locate, YNBI_locate, YMAX_JAC_NBI, &YG1Y_locate, Yjac[0], Ytbeta);
1647         if (Ytestad_module)
1648         {      memcpy(&YD1Y_locate, &YG1Y_locate, YNBS_locate*sizeof(YREAL));
1649         }
1650
1651}
1652
1653         return(0);
1654}
1655
1656int Ydfward_space_S_eulerlocate(int modop, char *nmmod, int All, int KeKo, int koleft, float pdx, float ptol, int yi, int yj, int yk)
1657{
1658         int nbko=0;
1659         YA1=1; YA2=87; YA3=58;
1660Yi=-1; Yj=-1; Yk=-1; /* init des indices de maille: maj par la boucle si valide*/
1661for(Yi=0; Yi<YA1_S_eulerlocate; ++Yi)
1662for(Yj=0; Yj<YA2_S_eulerlocate; ++Yj)
1663for(Yk=0; Yk<YA3_S_eulerlocate; ++Yk)
1664{
1665         Yting[0]=YS1_r_float( Yi, YTemps-1);
1666         Yting[1]=YS2_r_float( Yi, YTemps-1);
1667        if (!strcmp(nmmod, "locate") || All)
1668        {
1669         if (Yi>=yi && Yj>=yj && Yk>=yk) 
1670         {      nbko += Ytestdf_locate(modop,KeKo,pdx,ptol,YNBI_locate,YNBS_locate,"locate",Yting,Ylocate[Yi][Yj][Yk]->Ystate[0],Ylocate[Yi][Yj][Yk]);
1671                 if (nbko>=koleft) return(nbko);
1672         }
1673        }
1674         Ylocate(Yi, Yj, Yk)->forward( Yting[0], Yting[1] );
1675
1676}
1677
1678         return(nbko);
1679}
1680
1681int Ydfward_space_maille_S_eulerlocate(int modop, char *nmmod, int All, int KeKo,  float pdx, float ptol)
1682{
1683         int nbko=0;
1684         Yting[0]=YS1_r_float( Yi, YTemps-1);
1685         Yting[1]=YS2_r_float( Yi, YTemps-1);
1686        if (!strcmp(nmmod, "locate") || All)
1687        {
1688         nbko += Ytestdf_locate(modop,KeKo,pdx,ptol,YNBI_locate,YNBS_locate,"locate",Yting,Ylocate[Yi][Yj][Yk]->Ystate[0],Ylocate[Yi][Yj][Yk]);
1689        }
1690         Ylocate(Yi, Yj, Yk)->forward( Yting[0], Yting[1] );
1691         return(nbko);
1692}
1693
1694 int Ybackward_space_S_eulerlocate()
1695{
1696         YA1=1; YA2=87; YA3=58;
1697Yi=-1; Yj=-1; Yk=-1; /* init des indices de maille: maj par la boucle si valide*/
1698for(Yi=YA1_S_eulerlocate-1; Yi>=0; --Yi)
1699for(Yj=YA2_S_eulerlocate-1; Yj>=0; --Yj)
1700for(Yk=YA3_S_eulerlocate-1; Yk>=0; --Yk)
1701{
1702         Yting[0]=YS1_r_float( Yi, YTemps-1);
1703         Yting[1]=YS2_r_float( Yi, YTemps-1);
1704         memset(Yjac, 0, 18*sizeof(double));
1705         Ylocate(Yi, Yj, Yk)->backward( Yting[0], Yting[1] );
1706         Yvsmatt (YNBS_locate, YNBI_locate, YMAX_JAC_NBI, &YG1Y_locate, Yjac[0], Ytbeta);
1707         YG1_r_float( Yi, YTemps-1) += Ytbeta[0];
1708         YG2_r_float( Yi, YTemps-1) += Ytbeta[1];
1709         if (Ytestad_module) {
1710                        Yting[0]=YD1_r_float( Yi, YTemps-1);
1711                        Yting[1]=YD2_r_float( Yi, YTemps-1);
1712                        YLTRes = Yprosca(&YD1Y_locate, &YG1Y_locate, YNBS_locate);
1713                        YAdRes = Yprosca(Yting, Ytbeta, YNBI_locate);
1714                        if (!Ytesterrad_mod("locate", YLTRes,YAdRes)) return(0);
1715         }
1716
1717}
1718
1719         return(0);
1720}
1721
1722int Yforward_traj_T_float(int nbp)
1723{
1724        Ycurward=FORWARD;
1725         Yforward_space_S_eulerlocate();
1726         Yforward_space_S_float();
1727         return(0);
1728}
1729
1730int Ylinward_traj_T_float(int nbp)
1731{
1732        Ycurward=LINWARD;
1733         Ylinward_space_S_eulerlocate();
1734         Ylinward_space_S_float();
1735         return(0);
1736}
1737
1738int Ydfward_traj_T_float(int modop, char *nmmod, int All, int KeKo, int koleft,float pdx, float ptol, int yi, int yj, int yk)
1739{
1740         int nbko=0;
1741         if (!Ydftesttt(0)) return(0);
1742         nbko += Ydfward_space_S_eulerlocate(modop, nmmod, All, KeKo, koleft, pdx, ptol, yi, yj, yk);
1743         nbko += Ydfward_space_S_float(modop, nmmod, All, KeKo, koleft, pdx, ptol, yi, yj, yk);
1744         return(nbko);
1745}
1746
1747int Ydfward_traj_maille_T_float(int modop, char *nmmod, int All, int KeKo,  float pdx, float ptol)
1748{
1749         int nbko=0;
1750         if (!Ydftesttt(0)) return(0);
1751         nbko += Ydfward_space_maille_S_eulerlocate(modop, nmmod, All, KeKo, pdx, ptol);
1752         nbko += Ydfward_space_maille_S_float(modop, nmmod, All, KeKo, pdx, ptol);
1753         return(nbko);
1754}
1755
1756int Ybackward_traj_T_float(int nbp)
1757{
1758        Ycurward=BACKWARD;
1759         Ybackward_space_S_float();
1760         Ybackward_space_S_eulerlocate();
1761         return(0);
1762}
1763
1764int Yforward_order()
1765{
1766         Yforward_traj_T_float(0);
1767         return(0);
1768}
1769
1770int Ylinward_order()
1771{
1772         Ylinward_traj_T_float(0);
1773         return(0);
1774}
1775
1776int Ydfward_order(int modop, char *nmmod, int All, int KeKo, int koleft, float pdx, float ptol, int yi, int yj, int yk)
1777{
1778         int nbko=0;
1779         nbko += Ydfward_traj_T_float(modop, nmmod, All, KeKo, koleft, pdx, ptol, yi, yj, yk);
1780         return(nbko);
1781}
1782
1783int Ydfward_order_maille(int modop, char *nmmod, int All, int KeKo,  float pdx, float ptol)
1784{
1785         int nbko=0;
1786         nbko += Ydfward_traj_maille_T_float(modop, nmmod, All, KeKo, pdx, ptol);
1787         return(nbko);
1788}
1789
1790int Ybackward_order()
1791{
1792         Ybackward_traj_T_float(0);
1793         return(0);
1794}
1795
1796void Yforward_operator (char type) 
1797{       
1798}
1799void Ylinward_operator (char type) 
1800{       
1801}
1802void Ybackward_operator (char type) 
1803{       
1804}
1805
1806// € € € € € € € € LES FONCTIONS UTILISATEUR ... :
1807int Yuser_call (int argc, char *argv[]) 
1808{
1809         int codret=0;
1810         if(1) codret=0;
1811         else codret=0;
1812         return(codret);
1813}
1814
1815//-------------- end Yao generation -----------------
Note: See TracBrowser for help on using the repository browser.