@@ -76,7 +76,7 @@ Bool evalfF(Index n, double * v, Bool new_x, Number *objValue, void * useData)
7676 for (j = 0 ; j < iData -> dim .deg + 1 ; ++ j , x += iData -> dim .nv , ++ k )
7777 {
7878 goal_func_lagrange (x , & tmp ,iData -> time [k ], iData );
79- erg += mbase -> bl [j ]* tmp ;
79+ erg += mbase -> b [ 0 ] [j ]* tmp ;
8080 }
8181 erg_ += erg * iData -> dt [i ];
8282 }
@@ -87,7 +87,7 @@ Bool evalfF(Index n, double * v, Bool new_x, Number *objValue, void * useData)
8787 for (j = 0 ; j < iData -> dim .deg ; ++ j , x += iData -> dim .nv , ++ k )
8888 {
8989 goal_func_lagrange (x , & tmp , iData -> time [k ], iData );
90- erg += mbase -> br [j ]* tmp ;
90+ erg += mbase -> b [ 1 ] [j ]* tmp ;
9191 }
9292
9393 erg_ += erg * iData -> dt [i ];
@@ -143,32 +143,30 @@ Bool evalfDiffF(Index n, double * v, Bool new_x, Number *gradF, void * useData)
143143 x = v ;
144144 id = 0 ;
145145
146- for (i = 0 ; i < iData -> dim .nsi ; ++ i ){
147- if (i ){
148- for (k = 0 ; k < iData -> dim .deg ; ++ k , x += iData -> dim .nv ){
149- refreshSimData (x ,x + iData -> dim .nx ,iData -> time [i * iData -> dim .deg + k + 1 ],iData );
150- iData -> cv = x ;
151- /*iData->data->callback->functionAlgebraics(iData->data);*/
152- diff_symColoredObject (iData , iData -> gradF , iData -> lagrange_index );
153- for (j = 0 ; j < iData -> dim .nv ; ++ j ){
154- gradF [id ++ ] = iData -> dt [i ]* mbase -> br [k ]* iData -> gradF [j ]* iData -> vnom [j ];
155- /* printf("\n gradF(%i) = %g, %s, %g", id-1, gradF[id-1], iData->data->modelData.realVarsData[j].info.name, x[j]*iData->vnom[j]); */
156- }
157- }
158- }else {
159- for (k = 0 ; k < iData -> dim .deg + 1 ; ++ k , x += iData -> dim .nv ){
160- refreshSimData (x ,x + iData -> dim .nx ,iData -> time [i * iData -> dim .deg + k ],iData );
161- iData -> cv = x ;
162- /*iData->data->callback->functionAlgebraics(iData->data);*/
163- diff_symColoredObject (iData , iData -> gradF ,iData -> lagrange_index );
164- for (j = 0 ; j < iData -> dim .nv ; ++ j ){
165- gradF [id ++ ] = iData -> dt [i ]* mbase -> bl [k ]* iData -> gradF [j ]* iData -> vnom [j ];
166- /* printf("\n gradF(%i) = %g, %s, %g", id-1, gradF[id-1], iData->data->modelData.realVarsData[j].info.name, x[j]*iData->vnom[j]); */
167- }
168- }
146+ for (i = 0 ; i < 1 ; ++ i ){
147+ for (k = 0 ; k < iData -> dim .deg + 1 ; ++ k , x += iData -> dim .nv ){
148+ refreshSimData (x ,x + iData -> dim .nx ,iData -> time [i * iData -> dim .deg + k ],iData );
149+ iData -> cv = x ;
150+ /*iData->data->callback->functionAlgebraics(iData->data);*/
151+ diff_symColoredObject (iData , iData -> gradF ,iData -> lagrange_index );
152+ for (j = 0 ; j < iData -> dim .nv ; ++ j )
153+ gradF [id ++ ] = iData -> dt [i ]* mbase -> b [0 ][k ]* iData -> gradF [j ]* iData -> vnom [j ];
169154 }
170155 }
156+
157+ for (; i < iData -> dim .nsi ; ++ i ){
158+ for (k = 0 ; k < iData -> dim .deg ; ++ k , x += iData -> dim .nv ){
159+ refreshSimData (x ,x + iData -> dim .nx ,iData -> time [i * iData -> dim .deg + k + 1 ],iData );
160+ iData -> cv = x ;
161+ /*iData->data->callback->functionAlgebraics(iData->data);*/
162+ diff_symColoredObject (iData , iData -> gradF , iData -> lagrange_index );
163+ for (j = 0 ; j < iData -> dim .nv ; ++ j )
164+ gradF [id ++ ] = iData -> dt [i ]* mbase -> b [1 ][k ]* iData -> gradF [j ]* iData -> vnom [j ];
165+ }
166+ }
167+
171168 } else {
169+ /*ToDo */
172170 for (i = 0 ; i < iData -> endN ; ++ i )
173171 gradF [i ] = 0.0 ;
174172 }
0 commit comments