51// => yes, but we also want it virtual. So static is not possible. But this method does not access any instance specific data.
52// - Do we want to pass an optional param list as input parameter?
53// yes => if some parameters depends of other parameters, this would allow to return different default / valid parameters according to already set parameters.
54// Ex: fact: ILUT => extra param threshold; fact: ILUK => extra param level-of-fill
55//
56// If a parameter is unused AND default, it is printed as [default] by std::cout << paramList but printed as unused by paramList.unused(std::cout).
57// So if we set default parameters in getValidParameters() that are not used, user will get a warning message. We don't want that for [default].
58// One solution is to never set any unused parameter in getValidParameters().
59// If some parameters are available only conditionnaly, do not set them by default in setValidParameters when the conditions are not met.
121mutable// mutable can be avoid by changing return type of GetParameterList() to RCP but conceptually, I like the fact that GetParameterList returns ref to param list.
122 Teuchos::ParameterList paramList_; // Private: Use GetParameterList() to access this list
123// This list might be empty before calling GetParameterList()
124// but it is populate with automatically if needed in SetParameterList/GetParameterList/...
125// Therefore, there is no need to test if a parameter exist before accessing it with pL.get("paramName")
126// in sub classes.
127
128// Note: Teuchos::ParameterListAcceptor has a getMyParamList() function to access paramList_ without going through the logic of getParameterList()