Changeset a89a22 for molecuilder/src/vector.cpp
- Timestamp:
- Jun 7, 2008, 1:21:33 PM (17 years ago)
- Children:
- 32b6dc
- Parents:
- 75793b2
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/vector.cpp
r75793b2 ra89a22 354 354 { 355 355 double projection; 356 projection = ScalarProduct(n)/ ((vector *)n)->ScalarProduct(n); // remove constancy from n (keep as logical one)356 projection = ScalarProduct(n)/n->ScalarProduct(n); // remove constancy from n (keep as logical one) 357 357 // withdraw projected vector twice from original one 358 358 cout << Verbose(1) << "Vector: "; … … 458 458 * \return true - success, false - failure (null vector given) 459 459 */ 460 bool vector::GetOneNormalVector(const vector * vector)460 bool vector::GetOneNormalVector(const vector *GivenVector) 461 461 { 462 462 int Components[NDIM]; // contains indices of non-zero components … … 466 466 467 467 cout << Verbose(4); 468 vector->Output((ofstream *)&cout);468 GivenVector->Output((ofstream *)&cout); 469 469 cout << endl; 470 470 for (j=NDIM;j--;) … … 472 472 // find two components != 0 473 473 for (j=0;j<NDIM;j++) 474 if (fabs( vector->x[j]) > MYEPSILON)474 if (fabs(GivenVector->x[j]) > MYEPSILON) 475 475 Components[Last++] = j; 476 476 cout << Verbose(4) << Last << " Components != 0: (" << Components[0] << "," << Components[1] << "," << Components[2] << ")" << endl; … … 479 479 case 3: // threecomponent system 480 480 case 2: // two component system 481 norm = sqrt(1./( vector->x[Components[1]]*vector->x[Components[1]]) + 1./(vector->x[Components[0]]*vector->x[Components[0]]));481 norm = sqrt(1./(GivenVector->x[Components[1]]*GivenVector->x[Components[1]]) + 1./(GivenVector->x[Components[0]]*GivenVector->x[Components[0]])); 482 482 x[Components[2]] = 0.; 483 483 // in skp both remaining parts shall become zero but with opposite sign and third is zero 484 x[Components[1]] = -1./ vector->x[Components[1]] / norm;485 x[Components[0]] = 1./ vector->x[Components[0]] / norm;484 x[Components[1]] = -1./GivenVector->x[Components[1]] / norm; 485 x[Components[0]] = 1./GivenVector->x[Components[0]] / norm; 486 486 return true; 487 487 break; … … 519 519 gsl_multimin_fminimizer_nmsimplex; 520 520 gsl_multimin_fminimizer *s = NULL; 521 gsl_vector *ss, * x;521 gsl_vector *ss, *y; 522 522 gsl_multimin_function minex_func; 523 523 … … 528 528 /* Initial vertex size vector */ 529 529 ss = gsl_vector_alloc (np); 530 x= gsl_vector_alloc (np);530 y = gsl_vector_alloc (np); 531 531 532 532 /* Set all step sizes to 1 */ … … 538 538 539 539 for (i=NDIM;i--;) 540 gsl_vector_set( x, i, (vectors[0]->x[i] - vectors[1]->x[i])/2.);540 gsl_vector_set(y, i, (vectors[0]->x[i] - vectors[1]->x[i])/2.); 541 541 542 542 /* Initialize method and iterate */ … … 546 546 547 547 s = gsl_multimin_fminimizer_alloc (T, np); 548 gsl_multimin_fminimizer_set (s, &minex_func, x, ss);548 gsl_multimin_fminimizer_set (s, &minex_func, y, ss); 549 549 550 550 do … … 575 575 for (i=(size_t)np;i--;) 576 576 this->x[i] = gsl_vector_get(s->x, i); 577 gsl_vector_free( x);577 gsl_vector_free(y); 578 578 gsl_vector_free(ss); 579 579 gsl_multimin_fminimizer_free (s);
Note:
See TracChangeset
for help on using the changeset viewer.