|
MatrixBlockView | viewJacobian (matrix_t &jacobian) const |
|
void | jacobian (matrixOut_t jacobian, vectorIn_t arg) const |
|
std::ostream & | print (std::ostream &os) const |
|
|
bool | solve (vectorOut_t arg) const |
|
bool | isSatisfied (vectorIn_t arg) const |
|
bool | isSatisfied (vectorIn_t arg, vectorOut_t error) const |
|
|
size_type | add (const DifferentiableFunctionPtr_t &f, const RowBlockIndices &inArg, const RowBlockIndices &outArg, const ColBlockIndices &inDer, const RowBlockIndices &outDer) |
| Returns the index of the function if the function was added, -1 otherwise A function can be added iif its outputs do not interfere with the output of another function. More...
|
|
size_type | add (const DifferentiableFunctionPtr_t &f, const RowBlockIndices &inArg, const RowBlockIndices &outArg, const ColBlockIndices &inDer, const RowBlockIndices &outDer, const ComparisonTypes_t &comp) |
| Returns the index of the function if the function was added, -1 otherwise A function can be added iif its outputs do not interfere with the output of another function. More...
|
|
bool | setG (const DifferentiableFunctionPtr_t &f, const DifferentiableFunctionPtr_t &g, const DifferentiableFunctionPtr_t &ginv) |
| Set \(g\) and \(g^{-1}\) functions. More...
|
|
bool | replace (const DifferentiableFunctionPtr_t &oldf, const DifferentiableFunctionPtr_t &newd) |
|
| ExplicitSolver (const std::size_t &argSize, const std::size_t derSize) |
|
|
void | errorThreshold (const value_type &threshold) |
| Set error threshold. More...
|
|
value_type | errorThreshold () const |
| Get error threshold. More...
|
|
value_type | squaredErrorThreshold () const |
| Get error threshold. More...
|
|
|
const RowBlockIndices & | inArgs () const |
| The set of variable indices which affects the output. More...
|
|
const ColBlockIndices & | inDers () const |
| The set of derivative variable indices which affects the output. More...
|
|
const RowBlockIndices & | freeArgs () const |
| The set of variable indices which are not affected by the resolution. More...
|
|
const ColBlockIndices & | freeDers () const |
| The set of derivative variable indices which are not affected by the resolution. More...
|
|
ColBlockIndices | activeParameters () const |
| Same as inArgs. More...
|
|
const ColBlockIndices & | activeDerivativeParameters () const |
| Same as inDers. More...
|
|
const Eigen::MatrixXi & | inOutDependencies () const |
| Returns a matrix of integer whose: More...
|
|
Eigen::MatrixXi | inOutDofDependencies () const |
| Same as inOutDependencies except that cols correpond to DoFs. More...
|
|
const Eigen::VectorXi & | derFunction () const |
|
const RowBlockIndices & | outArgs () const |
| The set of variable indices which are computed. More...
|
|
const RowBlockIndices & | outDers () const |
| The set of derivative variable indices which are computed. More...
|
|
const std::size_t & | argSize () const |
| The number of variables. More...
|
|
const std::size_t & | derSize () const |
| The number of derivative variables. More...
|
|
|
vector_t | rightHandSideFromInput (vectorIn_t arg) |
| Compute a right hand side using the input arg. More...
|
|
bool | rightHandSideFromInput (const DifferentiableFunctionPtr_t &f, vectorIn_t arg) |
|
void | rightHandSideFromInput (const size_type &fidx, vectorIn_t rhs) |
|
void | rightHandSide (vectorIn_t rhs) |
| Set the level set parameter. More...
|
|
bool | rightHandSide (const DifferentiableFunctionPtr_t &f, vectorIn_t rhs) |
|
void | rightHandSide (const size_type &fidx, vectorIn_t rhs) |
|
vector_t | rightHandSide () const |
| Get the level set parameter. More...
|
|
size_type | rightHandSideSize () const |
| Get size of the level set parameter. More...
|
|
Solve system of explicit functions.
The solver works on a given set of variables \( X = (x_i) \). It contains a set of functions \( f_j \) that takes as input a subset of \( X \) and outputs values corresponding to another subset of \( X \). The equations are then of the following form: \( X_{output} = f (X_{input}) + rhs \) where the addition is the addition of the outputSpace() of \( f \).
Eventually, a invertible function \( g \) (of known inverse \( g^{-1} \)) can be specified. The equation then becomes: \( g(X_{output}) = f (X_{input}) + rhs \)
There can be no cycles in the dependencies. Moreover, a variable cannot be the output of two different functions. For instance, \( (x_0, x_2) = f_0( x_1, x_3 ) \) and \( (x_3) = f_1( x_4 ) \) is a valid input. It would not be possible to add \( (x_0) = f_2( x_2 ) \) because it would introduce a cycle, or \( (x_3) = f_3( x_1 ) \) because \( x_3 \) would be computed by two different functions.
The resolution consists in modyfing the output values of each function, while respecting the dependendy order. Considering \( f_0, f_1 \) above, \( f_1 \) must be computed first.