00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include "AbstractConvergenceTester.hpp"
00030 #include "Exception.hpp"
00031
00032
00033 AbstractUntemplatedConvergenceTester::AbstractUntemplatedConvergenceTester()
00034 : mMeshWidth(0.2),
00035 mKspTolerance(2e-4),
00036 mUseKspAbsoluteTolerance(true),
00037 OdeTimeStep(0.0025),
00038 PdeTimeStep(0.005),
00039 MeshNum(5u),
00040 RelativeConvergenceCriterion(1e-4),
00041 LastDifference(1),
00042 AbsoluteStimulus(-1e7),
00043 PopulatedResult(false),
00044 FixedResult(false),
00045 UseAbsoluteStimulus(false),
00046
00047 Converged(false),
00048
00049 Stimulus(PLANE),
00050 NeumannStimulus(4000)
00051 {
00052 }
00053
00054 void AbstractUntemplatedConvergenceTester::SetKspRelativeTolerance(const double relativeTolerance)
00055 {
00056 mKspTolerance = relativeTolerance;
00057 mUseKspAbsoluteTolerance = false;
00058 }
00059
00060 void AbstractUntemplatedConvergenceTester::SetKspAbsoluteTolerance(const double absoluteTolerance)
00061 {
00062 mKspTolerance = absoluteTolerance;
00063 mUseKspAbsoluteTolerance = true;
00064 }
00065
00066 double AbstractUntemplatedConvergenceTester::GetKspAbsoluteTolerance()
00067 {
00068 if (!mUseKspAbsoluteTolerance)
00069 {
00070 EXCEPTION("Currently using relative tolerance");
00071 }
00072 return mKspTolerance;
00073 }
00074
00075 double AbstractUntemplatedConvergenceTester::GetKspRelativeTolerance()
00076 {
00077 if (mUseKspAbsoluteTolerance)
00078 {
00079 EXCEPTION("Currently using absolute tolerance");
00080 }
00081 return mKspTolerance;
00082 }
00083
00084 AbstractUntemplatedConvergenceTester::~AbstractUntemplatedConvergenceTester()
00085 {
00086 }
00087