Register all solver properties to session reader
Currently not all properties, and their possible values, are registered to the session reader. This means that the session reader will not be able to raise an error if a property does not exist or if a property value does not exist for a given property (think typo in the session XML file).
We can list the properties currently registered and their set of possible values:
diff --git a/library/LibUtilities/BasicUtils/SessionReader.cpp b/library/LibUtilities/BasicUtils/SessionReader.cpp
index ae7d0f233..d31f64175 100644
--- a/library/LibUtilities/BasicUtils/SessionReader.cpp
+++ b/library/LibUtilities/BasicUtils/SessionReader.cpp
@@ -2504,6 +2504,14 @@ void SessionReader::CmdLineOverride()
void SessionReader::VerifySolverInfo()
{
+ for (auto &prop : GetSolverInfoEnums())
+ {
+ std :: cout << "Property: " << prop.first << std :: endl;
+ std :: cout << "Registered values:" << std :: endl;
+ for (auto &propval : prop.second) {
+ std :: cout << " - " << propval.first << std :: endl;
+ }
+ }
for (auto &x : m_solverInfo)
{
std::string solverProperty = x.first;
Property: DEALIASING
Registered values:
- False
- True
Property: DRIVER
Registered values:
- Adaptive
- ModifiedArnoldi
- Standard
- SteadyState
Property: EQTYPE
Registered values:
- SteadyLinearisedNS
- SteadyNavierStokes
- SteadyOseen
- SteadyStokes
- UnsteadyNavierStokes
- UnsteadyStokes
Property: EVOLUTIONOPERATOR
Registered values:
- AdaptiveSFD
- Adjoint
- Direct
- Nonlinear
- SkewSymmetric
- TransientGrowth
Property: GLOBALMATRIXSTORAGETYPE
Registered values:
- SmvBSR
Property: GLOBALSYSSOLN
Registered values:
- DirectFull
- DirectMultiLevelStaticCond
- DirectStaticCond
- IterativeFull
- IterativeMultiLevelStaticCond
- IterativeStaticCond
- PETScFull
- PETScMultiLevelStaticCond
- PETScStaticCond
- XxtFull
- XxtMultiLevelStaticCond
- XxtStaticCond
Property: LINSYSITERSOLVER
Registered values:
- ConjugateGradient
- GMRES
Property: LOCALMATRIXSTORAGESTRATEGY
Registered values:
- Contiguous
- Non-contiguous
- Sparse
Property: PRECONDITIONER
Registered values:
- Block
- Diagonal
- FullLinearSpace
- FullLinearSpaceWithBlock
- FullLinearSpaceWithDiagonal
- FullLinearSpaceWithLowEnergyBlock
- LowEnergyBlock
- Null
Property: SPECTRALHPDEALIASING
Registered values:
- False
- True
Missing properties:
-
SolverType -
TimeIntegrationMethod -
Projection -
GJPStabilisation
For the above we need to find where these properties are introduced and add calls to SessionReader::RegisterEnumValue. This was recentlt done for property EqType
, see !1344 (merged).