SolutionInfo Object and Its Methods
For each solver sequence, there is an associated SolutionInfo object, which can be accessed by the function getSolutioninfo(). This object has several methods to access the solution data generated by a parametric sweep. Such parametric sweep generated solution data is normally stored in solver sequences of type Parametric or of type SolverSequence, depending on whether so-called outer parametric sweeps have been used or not. It can also be used to convert between so-called loop-level settings and solution numbers. The following methods in Table 6-13 are supported.
info = model.sol(<tag>).getSolutioninfo()
getIndices(int level, int[] levels) Returns the one-based indices available for the loop level, level (index-zero based). The current level setting can be given in levels (index-one based). The returned values are 1,…, N, where N is the number of values or tuples for the given level. When level=getMaxLevel()-1, the indices can be the result of an outer product between levels. When the format is unstructured, and when levels is set, then the unstructured list of indices is returned. When the format is unstructured, and when levels=null or levels.length=0, an error is given if level is such that there are no structured data to return (currently level=0 and multiple inner parameter names).
An example: A parameter p taking the values 1 and 2, for which a time-dependent simulation is done. All time steps from the solver are saved. Assume that p is affecting the time stepping. Using the Time Parametric solver (or a Parametric Sweep for a time-dependent study) will result in a SolutionInfo object with two levels, one for the time t (level 0) and one for p (level 1). To access the indices for the solutions on level 0, use the method getIndices:
SolverSequence sol = model.sol("sol1");
SolutionInfo info = sol.getSolutioninfo();
int [] indx_1 = info.getIndices(0, int [] {1,1});
int [] indx_2 = info.getIndices(0, int [] {1,2});
getISol(int outersolnum, int innersolnum) returns the index zero based multi-solution object number and the index zero based solution number within it, for the index one based outer and inner solution numbers. The solution object number is returned in the first position and the corresponding solution number in the second. The solution object number is normally the same (0) for all innersolnum, but can vary for time-dependent adaptation or for automatic remeshing.
getISol(int outersolnum, double t) returns the index-zero based multi solution object number for the one-based outer solution number outersolnum and time value t. The returned solution number is normally the same (0) for all t but can vary for time-dependent adaptation or for automatic remeshing.
getLevelDescription(int level) returns a description of the index zero based loop level, level.
getLevelNames() returns the names of the different loop levels. Some of these can be a concatenated string such as "p1,p2".
getLevels() returns the number of loop levels, getLevels()<=getMaxLevels().
getMaxInner(int[] outersolnum) returns the maximum number of inner solutions for the given index one based outer solution numbers. If outersolnum is null, the maximum is taken over all outer solutions.
getMaxLevels() returns the maximum number of used loop levels, getLevels()<=getMaxLevels().
getName(int level) returns the parameter name for the index zero based looplevel level. This name can be a concatenated string such as "p1, p2".
getOuterSolnum() returns the one based indices for the outer solutions. If there are no outer parameters or added corresponding parameter values the array is empty.
getPNamesOuter() returns the subset of parameter names that are looped by a job sequence parametric sweep.
getSol(int outersolnum) returns the solver sequence tag for the index one based outer solution number outersolnum. If the solution number is invalid, null is returned.
getSolDescriptions(int level, int[] levels, boolean paramInclusion, boolean indexInclusion) returns the descriptions for the solutions for the index-zero based loop level, level. The current level setting can be given in levels (index one based). One string for each solution is returned. When paramInclusion is true, the description always includes the parameter name, even if this level contains only one. When paramInclusion is false, the parameter name is only included when there is more than one parameter name on this level. When the format is unstructured, and when levels is set, then the unstructured list of descriptions is returned. When the format is unstructured, and when levels==null or levels.length==0, an error is given if level is such that there are no structured data to return.
getSolnum(int outersolnum, boolean strict) returns the one based inner solution numbers for the index one based outer solution number outersolnum. If strict is true the inner solution numbers is returned if outersolnum is a valid outer solution number and else a zero array is returned. If strict is false and if the outersolnum does not match, then the solution numbers for the containing solution object is returned.
getSplitLevelDescriptions() returns the description of the different parameters, split into an array for the case when there is more than one parameter for a loop level.
getSplitLevelNames() returns the names of the different parameters, split into an array for the case when there’s more than one parameter for a looplevel.
getSplitLevelUnits() returns the units for the parameters. It returns a vector of the same length and order as getSplitLevelDescriptions, with null as the contents when units are not used or defined.
getSplitNames(int level) returns the parameter names for the index-zero based looplevel level.
getUnit(String name) returns the unit of the sweep parameter name.
getVals(int level, int[] levels) returns the parameter values for the index-zero based loop level, level. The current level setting can be given in levels (index-one based). For level < getMaxLevels()-1 this is just the values of the parameters for this level. The number of rows is the same as the number of parameters for this level. The columns are the values. For level = getMaxLevels()-1 the values are expanded into tuples for the case that levels have been merged. When the format is unstructured, and when levels is set, then the unstructured lists of values are returned. When the format is unstructured, and when levels==null or levels.length=0, an error is given if level is such that there are no structured data to return.
getValsImag(int level, int[] levels) returns the imaginary parts of the parameter values for the index-zero based loop level, level. The current level setting can be given in levels (index-one based). For level < getMaxLevels()-1 this is just the values of the parameters for this level. The number of rows is the same as the number of parameters for this level. The columns are the values. For level = getMaxLevels()-1 the values are expanded into tuples for the case that levels have been merged. When the format is unstructured, and when levels is set, then the unstructured lists of values are returned. When the format is unstructured, and when levels==null or levels.length=0, an error is given if level is such that there are no structured data to return.
isStructured() returns true unless the underlying solution object/objects has a parameter variation that depends on the solution process itself. Examples are time-dependent simulations where the output is determined by the steps taken by the solver or eigenvalue simulations.
isValid() returns true if the underlying solution data is consistent with this info object.
mapToLevel(int[] outersolnum, int[] innersolnum, boolean compressedOutput) returns the index one based level representation of the index-one based outer and inner solution numbers, outersolnum and innersolnum respectively. The number of rows of the returned data is equal to the number of levels. When compressedOutput is false, the columns represent the tuples, which is the most general format. When compressedOutput is true, the level settings are made unique on each level.
When compressedOutput is true and if the compressed representation does not match the input, an array with the right number of rows, but each with zero length, are returned.
mapToSolnum(int[][] levelSetting, boolean expandInput) returns the one based solution number representation of a loop level setting levelSetting. The first row in the output is the inner and the second the outer solution numbers. The levelSettings must have the same number of rows as there are levels. On each row, index one based settings for each level should be given. If expandInput is false the number of columns must be the same and the columns are treated as level-tuples. If expanInput is true, the number of columns can be different and the output is expanded to the outer product of each levels setting.