Fixed a bug in the logfile capability

This commit is contained in:
Harry Moffat 2009-03-18 17:27:16 +00:00
parent 5459aa4078
commit 37342f92fa
5 changed files with 74 additions and 59 deletions

View file

@ -4,7 +4,7 @@
* object that is used to set up multiphase equilibrium problems (see \ref equilfunctions).
*/
/*
* $Author$
*
* $Date$
* $Revision$
*/
@ -544,9 +544,9 @@ namespace Cantera {
// create an equilibrium manager
e = new MultiPhaseEquil(this);
try {
error = e->equilibrate(XY, err, maxsteps);
error = e->equilibrate(XY, err, maxsteps, loglevel);
}
catch (CanteraError err) {
catch (CanteraError &err) {
if (loglevel > 0)
endLogGroup();
delete e;
@ -579,7 +579,7 @@ namespace Cantera {
beginLogGroup("iteration "+int2str(n));
try {
error = e->equilibrate(TP, err, maxsteps);
error = e->equilibrate(TP, err, maxsteps, loglevel);
hnow = enthalpy();
// the equilibrium enthalpy monotonically increases with T;
// if the current value is below the target, the we know the
@ -690,7 +690,7 @@ namespace Cantera {
beginLogGroup("iteration "+int2str(n));
try {
error = e->equilibrate(TP, err, maxsteps);
error = e->equilibrate(TP, err, maxsteps, loglevel);
snow = entropy();
if (snow < s0) {
if (m_temp > Tlow) Tlow = m_temp;
@ -769,7 +769,7 @@ namespace Cantera {
start = false;
beginLogGroup("iteration "+int2str(n));
error = e.equilibrate(TP, err, maxsteps);
error = e.equilibrate(TP, err, maxsteps, loglevel);
vnow = volume();
verr = fabs((v0 - vnow)/v0);
addLogEntry("P",fp2str(pressure()));

View file

@ -207,7 +207,7 @@ namespace Cantera {
doublereal MultiPhaseEquil::equilibrate(int XY, doublereal err,
int maxsteps, int loglevel) {
int maxsteps, int loglevel) {
int i;
m_iter = 0;
string iterstr;

View file

@ -3,7 +3,9 @@
* Driver routines for the chemical equilibrium solvers.
*
*/
/*
* $Id$
*/
#include "equil.h"
#include "ChemEquil.h"
#include "MultiPhaseEquil.h"
@ -26,42 +28,42 @@ namespace Cantera {
doublereal tol, int maxsteps, int maxiter,
int loglevel) {
if (loglevel > 0) {
beginLogGroup("equilibrate",loglevel);
addLogEntry("multiphase equilibrate function");
beginLogGroup("arguments");
addLogEntry("XY",XY);
addLogEntry("tol",tol);
addLogEntry("maxsteps",maxsteps);
addLogEntry("maxiter",maxiter);
addLogEntry("loglevel",loglevel);
endLogGroup("arguments");
}
s.init();
int ixy = _equilflag(XY);
if (ixy == TP || ixy == HP || ixy == SP || ixy == TV) {
try {
double err = s.equilibrate(ixy, tol, maxsteps, maxiter, loglevel);
if (loglevel > 0) {
addLogEntry("Success. Error",err);
endLogGroup("equilibrate");
if (loglevel > 0) {
beginLogGroup("equilibrate",loglevel);
addLogEntry("multiphase equilibrate function");
beginLogGroup("arguments");
addLogEntry("XY",XY);
addLogEntry("tol",tol);
addLogEntry("maxsteps",maxsteps);
addLogEntry("maxiter",maxiter);
addLogEntry("loglevel",loglevel);
endLogGroup("arguments");
}
s.init();
int ixy = _equilflag(XY);
if (ixy == TP || ixy == HP || ixy == SP || ixy == TV) {
try {
double err = s.equilibrate(ixy, tol, maxsteps, maxiter, loglevel);
if (loglevel > 0) {
addLogEntry("Success. Error",err);
endLogGroup("equilibrate");
}
return err;
}
catch (CanteraError e) {
if (loglevel > 0) {
addLogEntry("Failure.",lastErrorMessage());
endLogGroup("equilibrate");
}
throw e;
}
}
return err;
}
catch (CanteraError &err) {
if (loglevel > 0) {
addLogEntry("Failure.",lastErrorMessage());
endLogGroup("equilibrate");
}
throw err;
}
}
else {
if (loglevel > 0) {
addLogEntry("multiphase equilibrium can be done only for TP, HP, SP, or TV");
endLogGroup("equilibrate");
}
else {
if (loglevel > 0) {
addLogEntry("multiphase equilibrium can be done only for TP, HP, SP, or TV");
endLogGroup("equilibrate");
}
throw CanteraError("equilibrate","unsupported option");
//return -1.0;
}
@ -142,7 +144,7 @@ namespace Cantera {
delete m;
retn = nAttempts;
}
catch (CanteraError err) {
catch (CanteraError &err) {
if (loglevel > 0)
addLogEntry("VCSnonideal solver failed.");
delete m;
@ -174,7 +176,7 @@ namespace Cantera {
delete m;
retn = nAttempts;
}
catch (CanteraError err) {
catch (CanteraError &err) {
if (loglevel > 0)
addLogEntry("MultiPhaseEquil solver failed.");
delete m;
@ -222,7 +224,7 @@ namespace Cantera {
addLogEntry("ChemEquil solver succeeded.");
}
catch (CanteraError err) {
catch (CanteraError &err) {
delete e;
if (loglevel > 0)
addLogEntry("ChemEquil solver failed.");

View file

@ -585,6 +585,7 @@ namespace VCSnonideal {
}
m_printLvl = printLvl;
m_vprob->m_printLvl = printLvl;
/*
* Extract the current state information
@ -595,6 +596,7 @@ namespace VCSnonideal {
if (res != 0) {
plogf("problems\n");
}
// Set the estimation technique
if (estimateEquil) {
@ -617,6 +619,11 @@ namespace VCSnonideal {
"Pressure less than zero on input");
}
beginLogGroup("vcs_MultiPhaseEquil::equilibrate_TP", loglevel);
addLogEntry("problem type","fixed T,P");
addLogEntry("Temperature", T);
addLogEntry("Pressure", pres);
/*
* Print out the problem specification from the point of
@ -719,6 +726,9 @@ namespace VCSnonideal {
}
}
}
if (loglevel > 0) {
endLogGroup();
}
return iSuccess;
}

View file

@ -310,6 +310,7 @@ namespace Cantera {
doublereal tol, int maxsteps, int maxiter, int loglevel) {
static int counter = 0;
int retn = 1;
beginLogGroup("equilibrate",loglevel);
addLogEntry("multiphase equilibrate function");
beginLogGroup("arguments");
@ -319,15 +320,17 @@ namespace Cantera {
addLogEntry("maxiter",maxiter);
addLogEntry("loglevel",loglevel);
endLogGroup("arguments");
int printLvlSub = MAX(0, printLvl-1);
s.init();
if (solver == 2) {
try {
VCSnonideal::vcs_MultiPhaseEquil *eqsolve = new VCSnonideal::vcs_MultiPhaseEquil(&s, printLvlSub);
VCSnonideal::vcs_MultiPhaseEquil *eqsolve =
new VCSnonideal::vcs_MultiPhaseEquil(&s, printLvlSub);
int err = eqsolve->equilibrate(ixy, estimateEquil, printLvlSub,
tol, maxsteps, maxiter);
tol, maxsteps, loglevel);
if (err != 0) {
retn = -1;
addLogEntry("vcs_equilibrate Error - ", err);
@ -356,25 +359,25 @@ namespace Cantera {
if (ixy == TP || ixy == HP || ixy == SP || ixy == TV) {
try {
double err = s.equilibrate(ixy, tol, maxsteps, maxiter, loglevel);
if (loglevel > 0) {
addLogEntry("Success. Error",err);
endLogGroup("equilibrate");
}
addLogEntry("Success. Error",err);
endLogGroup("equilibrate");
return 0;
}
catch (CanteraError &e) {
if (loglevel > 0) {
addLogEntry("Failure.",lastErrorMessage());
endLogGroup("equilibrate");
}
addLogEntry("Failure.",lastErrorMessage());
endLogGroup("equilibrate");
throw e;
}
}
else {
if (loglevel > 0) {
addLogEntry("multiphase equilibrium can be done only for TP, HP, SP, or TV");
endLogGroup("equilibrate");
}
addLogEntry("multiphase equilibrium can be done only for TP, HP, SP, or TV");
endLogGroup("equilibrate");
throw CanteraError("equilibrate","unsupported option");
//return -1.0;
}