Changeset 534
 Timestamp:
 Oct 4, 2005 11:48:18 AM (15 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

branches/dev/Algorithm/LinearSolvers/IpPardisoSolverInterface.cpp
r533 r534 232 232 233 233 if (IpData().iter_count() != debug_last_iter_) { 234 234 debug_cnt_ = 0; 235 235 } 236 236 … … 278 278 while (!done) { 279 279 if (!have_symbolic_factorization_) { 280 281 282 283 284 285 286 287 288 289 290 291 292 293 280 IpData().TimingStats().LinearSystemSymbolicFactorization().Start(); 281 PHASE = 11; 282 F77_FUNC(pardiso,PARDISO)(PT_, &MAXFCT_, &MNUM_, &MTYPE_, 283 &PHASE, &N, a_, ia, ja, &PERM, 284 &NRHS, IPARM_, &MSGLVL_, &B, &X, 285 &ERROR); 286 IpData().TimingStats().LinearSystemSymbolicFactorization().End(); 287 if (ERROR!=0 ) { 288 Jnlst().Printf(J_ERROR, J_LINEAR_ALGEBRA, 289 "Error in Pardiso during symbolic factorization phase. ERROR = %d.\n", ERROR); 290 return SYMSOLVER_FATAL_ERROR; 291 } 292 have_symbolic_factorization_ = true; 293 just_performed_symbolic_factorization = true; 294 294 } 295 295 … … 298 298 IpData().TimingStats().LinearSystemFactorization().Start(); 299 299 F77_FUNC(pardiso,PARDISO)(PT_, &MAXFCT_, &MNUM_, &MTYPE_, 300 301 302 300 &PHASE, &N, a_, ia, ja, &PERM, 301 &NRHS, IPARM_, &MSGLVL_, &B, &X, 302 &ERROR); 303 303 IpData().TimingStats().LinearSystemFactorization().End(); 304 304 305 305 if (ERROR==4) { 306 307 308 306 // I think this means that the matrix is singular 307 // OLAF said that this will never happen (ToDo) 308 return SYMSOLVER_SINGULAR; 309 309 } 310 310 else if (ERROR!=0 ) { 311 312 313 311 Jnlst().Printf(J_ERROR, J_LINEAR_ALGEBRA, 312 "Error in Pardiso during factorization phase. ERROR = %d.\n", ERROR); 313 return SYMSOLVER_FATAL_ERROR; 314 314 } 315 315 316 316 negevals_ = IPARM_[22]; 317 317 if (IPARM_[13] != 0) { 318 319 320 321 322 323 324 325 326 327 328 329 330 318 Jnlst().Printf(J_DETAILED, J_LINEAR_ALGEBRA, 319 "Number of perturbed pivots in factorization phase = %d.\n", IPARM_[13]); 320 IpData().Append_info_string("Pp"); 321 // trigger a new symblic factorization for the next factorize 322 // call, even if the current inertia estimate is correct 323 // OLAF MICHAEL : Maybe we need to discuss this 324 have_symbolic_factorization_ = false; 325 // If we there were perturbed pivots, and the inertia of the 326 // system is correct, and we haven't redone the symblic 327 // factorization during this call yet, trigger a new 328 // factorization after a symblic factorization 329 done = (just_performed_symbolic_factorization  !check_NegEVals  330 numberOfNegEVals==negevals_); 331 331 } 332 332 else { 333 333 done = true; 334 334 } 335 335 }
Note: See TracChangeset
for help on using the changeset viewer.