00001
00002
00003
00004
00005
00006
00011 #include <df1b2fun.h>
00012
00013 void myderkludge(void);
00014
00015 void ad_read_pass2_dvdv(void);
00016
00021 int df1b2_gradlist::write_pass1(const df1b2variable * _px,
00022 const df1b2variable * _py,df1b2variable * pz,double df_x,
00023 double df_y,
00024 double df_xx,
00025 double df_xy,
00026 double df_yy,
00027 double df_xxx,
00028 double df_xxy,
00029 double df_xyy,
00030 double df_yyy)
00031 {
00032 ADUNCONST(df1b2variable*,px)
00033 ADUNCONST(df1b2variable*,py)
00034 ncount++;
00035 #if defined(CHECK_COUNT)
00036 if (ncount >= ncount_check)
00037 ncount_checker(ncount,ncount_check);
00038 #endif
00039 int nvar=df1b2variable::nvar;
00040
00041 int total_bytes=3*sizeof(df1b2_header)+sizeof(char*)
00042 +(2*nvar+11)*sizeof(double);
00043
00044
00045 #if defined(SAFE_ALL)
00046 char ids[]="UZ";
00047 int slen=strlen(ids);
00048 total_bytes+=slen;
00049 #endif
00050 list.check_buffer_size(total_bytes);
00051 void * tmpptr=list.bptr;
00052 #if defined(SAFE_ALL)
00053 memcpy(list,ids,slen);
00054 #endif
00055
00056
00057 memcpy(list,(df1b2_header*)(px),sizeof(df1b2_header));
00058 memcpy(list,(df1b2_header*)(py),sizeof(df1b2_header));
00059 memcpy(list,(df1b2_header*)(pz),sizeof(df1b2_header));
00060
00061
00062
00063 memcpy(list,&df_x,sizeof(double));
00064 memcpy(list,&df_y,sizeof(double));
00065 memcpy(list,&df_xx,sizeof(double));
00066 memcpy(list,&df_xy,sizeof(double));
00067 memcpy(list,&df_yy,sizeof(double));
00068 memcpy(list,&df_xxx,sizeof(double));
00069 memcpy(list,&df_xxy,sizeof(double));
00070 memcpy(list,&df_xyy,sizeof(double));
00071 memcpy(list,&df_yyy,sizeof(double));
00072
00073 memcpy(list,px->get_u(),sizeof(double));
00074 memcpy(list,py->get_u(),sizeof(double));
00075 memcpy(list,px->get_u_dot(),nvar*sizeof(double));
00076 memcpy(list,py->get_u_dot(),nvar*sizeof(double));
00077
00078 nlist.bptr->numbytes=adptr_diff(list.bptr,tmpptr);
00079 nlist.bptr->pf=(ADrfptr)(&ad_read_pass2_dvdv);
00080 ++nlist;
00081 return 0;
00082 }
00083
00084
00085 void read_pass2_1_dvdv(void);
00086 void read_pass2_2_dvdv(void);
00087 void read_pass2_3_dvdv(void);
00088
00093 void ad_read_pass2_dvdv(void)
00094 {
00095 switch(df1b2variable::passnumber)
00096 {
00097 case 1:
00098 read_pass2_1_dvdv();
00099 break;
00100 case 2:
00101 read_pass2_2_dvdv();
00102 break;
00103 case 3:
00104 read_pass2_3_dvdv();
00105 break;
00106 default:
00107 cerr << "illegal value for df1b2variable::pass = "
00108 << df1b2variable::passnumber << endl;
00109 exit(1);
00110 }
00111 }
00112
00117 void read_pass2_1_dvdv(void)
00118 {
00119
00120
00121
00122
00123
00124
00125 int nvar=df1b2variable::nvar;
00126 test_smartlist& list=f1b2gradlist->list;
00127
00128 int num_bytes=f1b2gradlist->nlist.bptr->numbytes;
00129 list-=num_bytes;
00130 list.saveposition();
00131 double xu,yu;
00132
00133
00134
00135
00136 #if defined(SAFE_ARRAYS)
00137 checkidentiferstring("UZ",f1b2gradlist->list);
00138 #endif
00139 char * bptr=f1b2gradlist->list.bptr;
00140 df1b2_header * px=(df1b2_header *) bptr;
00141 bptr+=sizeof(df1b2_header);
00142 df1b2_header * py=(df1b2_header *) bptr;
00143 bptr+=sizeof(df1b2_header);
00144 df1b2_header * pz=(df1b2_header *) bptr;
00145 bptr+=sizeof(df1b2_header);
00146
00147
00148
00149 double df1=*(double*) bptr;
00150 bptr+=sizeof(double);
00151
00152 double df2=*(double*) bptr;
00153 bptr+=sizeof(double);
00154
00155 double d2f11=*(double*) bptr;
00156 bptr+=sizeof(double);
00157
00158 double d2f12=*(double*) bptr;
00159 bptr+=sizeof(double);
00160
00161 double d2f22=*(double*) bptr;
00162 bptr+=sizeof(double);
00163
00164 #if defined(PRINT_DERS)
00165 double d3f111=*(double*) bptr;
00166 #endif
00167 bptr+=sizeof(double);
00168
00169 #if defined(PRINT_DERS)
00170 double d3f112=*(double*) bptr;
00171 #endif
00172 bptr+=sizeof(double);
00173
00174 #if defined(PRINT_DERS)
00175 double d3f122=*(double*) bptr;
00176 #endif
00177 bptr+=sizeof(double);
00178
00179 #if defined(PRINT_DERS)
00180 double d3f222=*(double*) bptr;
00181 #endif
00182 bptr+=sizeof(double);
00183
00184 memcpy(&xu,bptr,sizeof(double));
00185 bptr+=sizeof(double);
00186 memcpy(&yu,bptr,sizeof(double));
00187 bptr+=sizeof(double);
00188 double * xdot=(double*)bptr;
00189 bptr+=nvar*sizeof(double);
00190 double * ydot=(double*)bptr;
00191
00192 list.restoreposition();
00193
00194
00195
00196
00197
00198
00199
00200 test_smartlist & list2 = f1b2gradlist->list2;
00201
00202
00203 int total_bytes=2*nvar*sizeof(double);
00204
00205 #if defined(SAFE_ALL)
00206 char ids[]="FW";
00207 int slen=strlen(ids);
00208 total_bytes+=slen;
00209 #endif
00210 list2.check_buffer_size(total_bytes);
00211 void * tmpptr=list2.bptr;
00212 #if defined(SAFE_ALL)
00213 memcpy(list2,ids,slen);
00214 #endif
00215
00216 fixed_smartlist2 & nlist2 = f1b2gradlist->nlist2;
00217 memcpy(list2,pz->get_u_bar(),nvar*sizeof(double));
00218 memcpy(list2,pz->get_u_dot_bar(),nvar*sizeof(double));
00219 *nlist2.bptr=adptr_diff(list2.bptr,tmpptr);
00220 ++nlist2;
00221
00222
00223
00224 #if defined(PRINT_DERS)
00225 print_derivatives(funname,(f),(df1),
00226 (df2),(d2f11),(d2f12),(d2f22),
00227 (d3f111),(d3f112),(d3f122),
00228 (d3f222),1);
00229 print_derivatives(pz,"z");
00230 print_derivatives(px,"x");
00231 print_derivatives(py,"y");
00232 #endif
00233 #if defined(__DERCHECK__)
00234 if (derchecker)
00235 if (derchecker->node_number)
00236 {
00237 if (derchecker->counter == derchecker->node_number)
00238 {
00239 myderkludge();
00240 switch (derchecker->pass_number)
00241 {
00242 case 2:
00243 switch(derchecker->vartype)
00244 {
00245 case 1:
00246 if (!derchecker->dotflag)
00247 px->u_bar[derchecker->index-1]+=derchecker->delta;
00248 else
00249 px->u_dot_bar[derchecker->index-1]+=derchecker->delta;
00250 break;
00251 case 2:
00252 if (!derchecker->dotflag)
00253 py->u_bar[derchecker->index-1]+=derchecker->delta;
00254 else
00255 py->u_dot_bar[derchecker->index-1]+=derchecker->delta;
00256 break;
00257 case 3:
00258 if (!derchecker->dotflag)
00259 pz->u_bar[derchecker->index-1]+=derchecker->delta;
00260 else
00261 pz->u_dot_bar[derchecker->index-1]+=derchecker->delta;
00262 break;
00263 default:
00264 cerr << "Invalid index value for dercheck_index was "
00265 << derchecker->index << endl;
00266 break;
00267 }
00268 break;
00269 case 3:
00270 switch(derchecker->vartype)
00271 {
00272 case 1:
00273 if (!derchecker->dotflag)
00274 px->u_bar[derchecker->index-1]-=derchecker->delta;
00275 else
00276 px->u_dot_bar[derchecker->index-1]-=derchecker->delta;
00277 break;
00278 case 2:
00279 if (!derchecker->dotflag)
00280 py->u_bar[derchecker->index-1]-=derchecker->delta;
00281 else
00282 py->u_dot_bar[derchecker->index-1]-=derchecker->delta;
00283 break;
00284 case 3:
00285 if (!derchecker->dotflag)
00286 pz->u_bar[derchecker->index-1]-=derchecker->delta;
00287 else
00288 pz->u_dot_bar[derchecker->index-1]-=derchecker->delta;
00289 break;
00290 default:
00291 cerr << "Invalid index value for dercheck_index was "
00292 << derchecker->index << endl;
00293 break;
00294 }
00295 break;
00296 }
00297 }
00298 }
00299 #endif
00300
00301
00302 int i;
00303 for (i=0;i<nvar;i++)
00304 {
00305 px->u_bar[i]+=(df1)*pz->u_bar[i];
00306 }
00307 for (i=0;i<nvar;i++)
00308 {
00309 py->u_bar[i]+=(df2)*pz->u_bar[i];
00310 }
00311 for (i=0;i<nvar;i++)
00312 {
00313 px->u_bar[i]+=(d2f11)*xdot[i]*pz->u_dot_bar[i];
00314 px->u_bar[i]+=(d2f12)*ydot[i]*pz->u_dot_bar[i];
00315 #if defined(ADDEBUG_PRINT)
00316 cout << px->u_bar[i] << " " << pz->u_dot_bar[i] << " " << addebug_count << endl;
00317 #endif
00318 }
00319 for (i=0;i<nvar;i++)
00320 {
00321
00322
00323 py->u_bar[i]+=(d2f22)*ydot[i]*pz->u_dot_bar[i];
00324 py->u_bar[i]+=(d2f12)*xdot[i]*pz->u_dot_bar[i];
00325 #if defined(ADDEBUG_PRINT)
00326 cout << py->u_bar[i] << " " << pz->u_dot_bar[i] << " " << addebug_count << endl;
00327 #endif
00328 }
00329 for (i=0;i<nvar;i++)
00330 {
00331
00332 px->u_dot_bar[i]+=(df1)*pz->u_dot_bar[i];
00333 #if defined(ADDEBUG_PRINT)
00334 cout << px->u_dot_bar[i] << " " << addebug_count << endl;
00335 cout << pz->u_dot_bar[i] << " " << addebug_count << endl;
00336 #endif
00337 }
00338 for (i=0;i<nvar;i++)
00339 {
00340 py->u_dot_bar[i]+=(df2)*pz->u_dot_bar[i];
00341 #if defined(ADDEBUG_PRINT)
00342 cout << py->u_dot_bar[i] << " " << addebug_count << endl;
00343 cout << pz->u_dot_bar[i] << " " << addebug_count << endl;
00344 #endif
00345 }
00346
00347
00348
00349
00350 for (i=0;i<nvar;i++)
00351 {
00352 pz->u_bar[i]=0;
00353 }
00354 for (i=0;i<nvar;i++)
00355 {
00356 pz->u_dot_bar[i]=0;
00357 }
00358
00359 #if defined(PRINT_DERS)
00360 print_derivatives(pz,"z");
00361 print_derivatives(px,"x");
00362 print_derivatives(py,"y");
00363 #endif
00364 }
00365
00370 void read_pass2_2_dvdv(void)
00371 {
00372
00373
00374
00375
00376
00377 int nvar=df1b2variable::nvar;
00378 test_smartlist & list=f1b2gradlist->list;
00379
00380
00381 int total_bytes=3*sizeof(df1b2_header)+sizeof(char*)
00382 +(2*nvar+11)*sizeof(double);
00383
00384
00385
00386 #if defined(SAFE_ALL)
00387 char ids[]="UZ";
00388 int slen=strlen(ids);
00389 total_bytes+=slen;
00390 #endif
00391 list.check_buffer_size(total_bytes);
00392
00393
00394 list.saveposition();
00395 fixed_smartlist & nlist=f1b2gradlist->nlist;
00396
00397
00398 int num_bytes=nlist.bptr->numbytes;
00399
00400
00401
00402
00403 test_smartlist & list2=f1b2gradlist->list2;
00404 fixed_smartlist2 & nlist2=f1b2gradlist->nlist2;
00405
00406 int num_bytes2=*nlist2.bptr;
00407 --nlist2;
00408
00409 list2-=num_bytes2;
00410 list2.saveposition();
00411
00412
00413
00414 double xu,yu;
00415
00416
00417
00418
00419
00420 #if defined(SAFE_ARRAYS)
00421 checkidentiferstring("UZ",list);
00422 checkidentiferstring("FW",list2);
00423 #endif
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442 df1b2_header * px=(df1b2_header *) list.bptr;
00443 list.bptr+=sizeof(df1b2_header);
00444 df1b2_header * py=(df1b2_header *) list.bptr;
00445 list.bptr+=sizeof(df1b2_header);
00446 df1b2_header * pz=(df1b2_header *) list.bptr;
00447 list.bptr+=sizeof(df1b2_header);
00448
00449
00450
00451 double df1=*(double*) list.bptr;
00452 list.bptr+=sizeof(double);
00453
00454 double df2=*(double*) list.bptr;
00455 list.bptr+=sizeof(double);
00456
00457 double d2f11=*(double*) list.bptr;
00458 list.bptr+=sizeof(double);
00459
00460 double d2f12=*(double*) list.bptr;
00461 list.bptr+=sizeof(double);
00462
00463 double d2f22=*(double*) list.bptr;
00464 list.bptr+=sizeof(double);
00465
00466 double d3f111=*(double*) list.bptr;
00467 list.bptr+=sizeof(double);
00468
00469 double d3f112=*(double*) list.bptr;
00470 list.bptr+=sizeof(double);
00471
00472 double d3f122=*(double*) list.bptr;
00473 list.bptr+=sizeof(double);
00474
00475 double d3f222=*(double*) list.bptr;
00476 list.bptr+=sizeof(double);
00477
00478 memcpy(&xu,list.bptr,sizeof(double));
00479 list.bptr+=sizeof(double);
00480 memcpy(&yu,list.bptr,sizeof(double));
00481 list.bptr+=sizeof(double);
00482 double * xdot=(double*)list.bptr;
00483 list.bptr+=nvar*sizeof(double);
00484 double * ydot=(double*)list.bptr;
00485
00486 list.restoreposition(num_bytes);
00487
00488 double * zbar;
00489 double * zdotbar;
00490
00491
00492 zbar=(double*)list2.bptr;
00493 zdotbar=(double*)(list2.bptr+nvar*sizeof(double));
00494 list2.restoreposition();
00495
00496 double * x_tilde=px->get_u_tilde();
00497 double * x_dot_tilde=px->get_u_dot_tilde();
00498 double * x_bar_tilde=px->get_u_bar_tilde();
00499 double * x_dot_bar_tilde=px->get_u_dot_bar_tilde();
00500 double * y_tilde=py->get_u_tilde();
00501 double * y_dot_tilde=py->get_u_dot_tilde();
00502 double * y_bar_tilde=py->get_u_bar_tilde();
00503 double * y_dot_bar_tilde=py->get_u_dot_bar_tilde();
00504 double * z_bar_tilde=pz->get_u_bar_tilde();
00505 double * z_dot_bar_tilde=pz->get_u_dot_bar_tilde();
00506
00507 #if defined(PRINT_DERS)
00508 print_derivatives(funname,(f),(df1),
00509 (df2),(d2f11),(d2f12),(d2f22),
00510 (d3f111),(d3f112),(d3f122),
00511 (d3f222),1);
00512 print_derivatives(pz,"z");
00513 print_derivatives(px,"x");
00514 print_derivatives(py,"y");
00515 #endif
00516
00517 int i;
00518
00519 for (i=0;i<nvar;i++)
00520 {
00521 z_bar_tilde[i]=0;
00522 z_dot_bar_tilde[i]=0;
00523 }
00524
00525
00526 for (i=0;i<nvar;i++)
00527 {
00528 *x_tilde+=(d2f11)*zbar[i]*x_bar_tilde[i];
00529 z_bar_tilde[i]+=(df1)*x_bar_tilde[i];
00530 *y_tilde+=(d2f12)*zbar[i]*x_bar_tilde[i];
00531 }
00532
00533 for (i=0;i<nvar;i++)
00534 {
00535 *x_tilde+=(d2f11)*zdotbar[i]*x_dot_bar_tilde[i];
00536 *y_tilde+=(d2f12)*zdotbar[i]*x_dot_bar_tilde[i];
00537 z_dot_bar_tilde[i]+=(df1)*x_dot_bar_tilde[i];
00538 }
00539
00540 for (i=0;i<nvar;i++)
00541 {
00542 x_dot_tilde[i]+=(d2f11)*zdotbar[i]*x_bar_tilde[i];
00543 z_dot_bar_tilde[i]+=(d2f11)*xdot[i]*x_bar_tilde[i];
00544 *x_tilde+=(d3f111)*xdot[i]*zdotbar[i]*x_bar_tilde[i];
00545 *y_tilde+=(d3f112)*xdot[i]*zdotbar[i]*x_bar_tilde[i];
00546 }
00547
00548 for (i=0;i<nvar;i++)
00549 {
00550 *y_tilde+=(d2f22)*zbar[i]*y_bar_tilde[i];
00551 *x_tilde+=(d2f12)*zbar[i]*y_bar_tilde[i];
00552 z_bar_tilde[i]+=(df2)*y_bar_tilde[i];
00553 }
00554
00555 for (i=0;i<nvar;i++)
00556 {
00557 *y_tilde+=(d2f22)*zdotbar[i]*y_dot_bar_tilde[i];
00558 *x_tilde+=(d2f12)*zdotbar[i]*y_dot_bar_tilde[i];
00559 z_dot_bar_tilde[i]+=(df2)*y_dot_bar_tilde[i];
00560 }
00561
00562 for (i=0;i<nvar;i++)
00563 {
00564 y_dot_tilde[i]+=(d2f22)*zdotbar[i]*y_bar_tilde[i];
00565 z_dot_bar_tilde[i]+=(d2f22)*ydot[i]*y_bar_tilde[i];
00566 *y_tilde+=(d3f222)*ydot[i]*zdotbar[i]*y_bar_tilde[i];
00567 *x_tilde+=(d3f122)*ydot[i]*zdotbar[i]*y_bar_tilde[i];
00568 }
00569 for (i=0;i<nvar;i++)
00570 {
00571 *x_tilde+=(d3f112)*ydot[i]*zdotbar[i]*x_bar_tilde[i];
00572 *y_tilde+=(d3f122)*ydot[i]*zdotbar[i]*x_bar_tilde[i];
00573 y_dot_tilde[i]+=(d2f12)*zdotbar[i]*x_bar_tilde[i];
00574 z_dot_bar_tilde[i]+=(d2f12)*ydot[i]*x_bar_tilde[i];
00575 }
00576 for (i=0;i<nvar;i++)
00577 {
00578 *x_tilde+=(d3f112)*xdot[i]*zdotbar[i]*y_bar_tilde[i];
00579 *y_tilde+=(d3f122)*xdot[i]*zdotbar[i]*y_bar_tilde[i];
00580 x_dot_tilde[i]+=(d2f12)*zdotbar[i]*y_bar_tilde[i];
00581 z_dot_bar_tilde[i]+=(d2f12)*xdot[i]*y_bar_tilde[i];
00582 }
00583 #if defined(__DERCHECK__)
00584 if (derchecker->node_number)
00585 {
00586 if (derchecker->counter == derchecker->node_number)
00587 {
00588 myderkludge();
00589 if (derchecker->pass_number==1)
00590 {
00591 switch(derchecker->vartype)
00592 {
00593 case 1:
00594 if (!derchecker->dotflag)
00595 derchecker->der_value=
00596 px->u_bar_tilde[derchecker->index-1];
00597 else
00598 derchecker->der_value=
00599 px->u_dot_bar_tilde[derchecker->index-1];
00600 break;
00601 case 2:
00602 if (!derchecker->dotflag)
00603 derchecker->der_value=
00604 py->u_bar_tilde[derchecker->index-1];
00605 else
00606 derchecker->der_value=
00607 py->u_dot_bar_tilde[derchecker->index-1];
00608 break;
00609 case 3:
00610 if (!derchecker->dotflag)
00611 derchecker->der_value=
00612 pz->u_bar_tilde[derchecker->index-1];
00613 else
00614 derchecker->der_value=
00615 pz->u_dot_bar_tilde[derchecker->index-1];
00616 break;
00617 default:
00618 cerr << "Invalid index value for dercheck_index was "
00619 << derchecker->index << endl;
00620 }
00621 }
00622 }
00623 }
00624 #endif
00625 #if defined(PRINT_DERS)
00626 print_derivatives(pz,"z");
00627 print_derivatives(px,"x");
00628 print_derivatives(py,"y");
00629 #endif
00630 }
00631
00636 void read_pass2_3_dvdv(void)
00637 {
00638
00639
00640
00641 int nvar=df1b2variable::nvar;
00642 fixed_smartlist & nlist=f1b2gradlist->nlist;
00643 test_smartlist& list=f1b2gradlist->list;
00644
00645
00646 int num_bytes=nlist.bptr->numbytes;
00647
00648 list-=num_bytes;
00649 list.saveposition();
00650
00651 double xu;
00652 double yu;
00653
00654
00655
00656
00657
00658 #if defined(SAFE_ARRAYS)
00659 checkidentiferstring("UZ",list);
00660 #endif
00661
00662
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678 df1b2_header * px=(df1b2_header *) list.bptr;
00679 list.bptr+=sizeof(df1b2_header);
00680 df1b2_header * py=(df1b2_header *) list.bptr;
00681 list.bptr+=sizeof(df1b2_header);
00682 df1b2_header * pz=(df1b2_header *) list.bptr;
00683 list.bptr+=sizeof(df1b2_header);
00684
00685
00686
00687 double df1=*(double*) list.bptr;
00688 list.bptr+=sizeof(double);
00689
00690 double df2=*(double*) list.bptr;
00691 list.bptr+=sizeof(double);
00692
00693 double d2f11=*(double*) list.bptr;
00694 list.bptr+=sizeof(double);
00695
00696 double d2f12=*(double*) list.bptr;
00697 list.bptr+=sizeof(double);
00698
00699 double d2f22=*(double*) list.bptr;
00700 list.bptr+=sizeof(double);
00701
00702 #if defined(PRINT_DERS)
00703 double d3f111=*(double*) list.bptr;
00704 #endif
00705 list.bptr+=sizeof(double);
00706
00707 #if defined(PRINT_DERS)
00708 double d3f112=*(double*) list.bptr;
00709 #endif
00710 list.bptr+=sizeof(double);
00711
00712 #if defined(PRINT_DERS)
00713 double d3f122=*(double*) list.bptr;
00714 #endif
00715 list.bptr+=sizeof(double);
00716
00717 #if defined(PRINT_DERS)
00718 double d3f222=*(double*) list.bptr;
00719 #endif
00720 list.bptr+=sizeof(double);
00721
00722 memcpy(&xu,list.bptr,sizeof(double));
00723 list.bptr+=sizeof(double);
00724 memcpy(&yu,list.bptr,sizeof(double));
00725 list.bptr+=sizeof(double);
00726 double * xdot=(double*)list.bptr;
00727 list.bptr+=nvar*sizeof(double);
00728 double * ydot=(double*)list.bptr;
00729
00730 list.restoreposition();
00731 int i;
00732 #if defined(PRINT_DERS)
00733 print_derivatives(funname,(f),(df1),
00734 (df2),(d2f11),(d2f12),(d2f22),
00735 (d3f111),(d3f112),(d3f122),
00736 (d3f222),1);
00737 print_derivatives(pz,"z");
00738 print_derivatives(px,"x");
00739 print_derivatives(py,"y");
00740 #endif
00741
00742 *(px->u_tilde)+=(df1)* *(pz->u_tilde);
00743 *(py->u_tilde)+=(df2)* *(pz->u_tilde);
00744 for (i=0;i<nvar;i++)
00745 {
00746 *(px->u_tilde)+=(d2f11)*xdot[i]*pz->u_dot_tilde[i];
00747 *(py->u_tilde)+=(d2f12)*xdot[i]*pz->u_dot_tilde[i];
00748 *(py->u_tilde)+=(d2f22)*ydot[i]*pz->u_dot_tilde[i];
00749 *(px->u_tilde)+=(d2f12)*ydot[i]*pz->u_dot_tilde[i];
00750 }
00751 for (i=0;i<nvar;i++)
00752 {
00753 px->u_dot_tilde[i]+=(df1)*pz->u_dot_tilde[i];
00754 py->u_dot_tilde[i]+=(df2)*pz->u_dot_tilde[i];
00755 }
00756 *(pz->u_tilde)=0;
00757 for (i=0;i<nvar;i++)
00758 {
00759 pz->u_dot_tilde[i]=0;
00760 }
00761 #if defined(PRINT_DERS)
00762 print_derivatives(pz,"z");
00763 print_derivatives(px,"x");
00764 print_derivatives(py,"y");
00765 #endif
00766 }