44// => yes, but we also want it virtual. So static is not possible. But this method does not access any instance specific data.
45// - Do we want to pass an optional param list as input parameter?
46// yes => if some parameters depends of other parameters, this would allow to return different default / valid parameters according to already set parameters.
47// Ex: fact: ILUT => extra param threshold; fact: ILUK => extra param level-of-fill
48//
49// 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).
50// 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].
51// One solution is to never set any unused parameter in getValidParameters().
52// If some parameters are available only conditionnaly, do not set them by default in setValidParameters when the conditions are not met.
113mutable// 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.
114 Teuchos::ParameterList paramList_; // Private: Use GetParameterList() to access this list
115// This list might be empty before calling GetParameterList()
116// but it is populate with automatically if needed in SetParameterList/GetParameterList/...
117// Therefore, there is no need to test if a parameter exist before accessing it with pL.get("paramName")
118// in sub classes.
119
120// Note: Teuchos::ParameterListAcceptor has a getMyParamList() function to access paramList_ without going through the logic of getParameterList()