diff --git a/src/gsi/GasSurfaceInteraction.cpp b/src/gsi/GasSurfaceInteraction.cpp index 73450ad7..26685aac 100644 --- a/src/gsi/GasSurfaceInteraction.cpp +++ b/src/gsi/GasSurfaceInteraction.cpp @@ -210,6 +210,20 @@ void GasSurfaceInteraction::setIterationsSurfaceBalance(const int& iter) //============================================================================== +void GasSurfaceInteraction::setWriteConvergenceSurfaceBalance(const bool flag) +{ + mp_surf->setWriteConvergenceSurfaceBalance(flag); +} + +//============================================================================== + +void GasSurfaceInteraction::setConvergenceToleranceSurfaceBalance(const double& tol) +{ + mp_surf->setConvergenceToleranceSurfaceBalance(tol); +} + +//============================================================================== + void GasSurfaceInteraction::getMassBlowingRate(double& mdot){ mdot = mp_surf->massBlowingRate(); } diff --git a/src/gsi/GasSurfaceInteraction.h b/src/gsi/GasSurfaceInteraction.h index 74e07ce5..14df0bcb 100644 --- a/src/gsi/GasSurfaceInteraction.h +++ b/src/gsi/GasSurfaceInteraction.h @@ -172,6 +172,18 @@ class GasSurfaceInteraction */ void setIterationsSurfaceBalance(const int& iter); + /** + * Function which allows to report convergence history for Newton solves. + * Default is false. + */ + void setWriteConvergenceSurfaceBalance(const bool flag); + + /** + * Function which allows to set convergence tolerance for Newton solves. + * Default value is 1e-8. + */ + void setConvergenceToleranceSurfaceBalance(const double& tol); + /** * Function which return the total mass blowing flux. * diff --git a/src/gsi/Surface.h b/src/gsi/Surface.h index b2ca4e8a..f9481cd1 100644 --- a/src/gsi/Surface.h +++ b/src/gsi/Surface.h @@ -185,6 +185,32 @@ class Surface << "the surface energy balance!"; } +//============================================================================== + + /** + * Purely virtual function to be called to set the flag to output + * convergence history for the Newton solver. + */ + virtual void setWriteConvergenceSurfaceBalance(const bool flag) + { + throw LogicError() + << "setWriteConvergenceSurfaceBalance can be called only when solving " + << "the surface energy balance!"; + } + +//============================================================================== + + /** + * Purely virtual function to be called to set the tolerance + * parameter for the Newton solver. + */ + virtual void setConvergenceToleranceSurfaceBalance(const double& tol) + { + throw LogicError() + << "setConvergenceToleranceSurfaceBalance can be called only when solving " + << "the surface energy balance!"; + } + //============================================================================== /** diff --git a/src/gsi/SurfaceBalanceSolverMass.cpp b/src/gsi/SurfaceBalanceSolverMass.cpp index d240c930..d08681f6 100644 --- a/src/gsi/SurfaceBalanceSolverMass.cpp +++ b/src/gsi/SurfaceBalanceSolverMass.cpp @@ -187,6 +187,20 @@ class SurfaceBalanceSolverMass : void setIterationsSurfaceBalance(const int& iter){ setMaxIterations(iter); } +//============================================================================== + + void setWriteConvergenceSurfaceBalance(const bool flag) + { + setWriteConvergenceHistory(flag); + } + +//============================================================================== + + void setConvergenceToleranceSurfaceBalance(const double& tol) + { + setEpsilon(tol); + } + //============================================================================== double massBlowingRate() { diff --git a/src/gsi/SurfaceBalanceSolverMassEnergy.cpp b/src/gsi/SurfaceBalanceSolverMassEnergy.cpp index 31a76e9b..1a7bd827 100644 --- a/src/gsi/SurfaceBalanceSolverMassEnergy.cpp +++ b/src/gsi/SurfaceBalanceSolverMassEnergy.cpp @@ -230,6 +230,20 @@ class SurfaceBalanceSolverMassEnergy : void setIterationsSurfaceBalance(const int& iter){ setMaxIterations(iter); } +//============================================================================== + + void setWriteConvergenceSurfaceBalance(const bool flag) + { + setWriteConvergenceHistory(flag); + } + +//============================================================================== + + void setConvergenceToleranceSurfaceBalance(const double& tol) + { + setEpsilon(tol); + } + //============================================================================== double massBlowingRate()