diff --git a/src/ParametricUtils.jl b/src/ParametricUtils.jl index a0286538..36b98313 100644 --- a/src/ParametricUtils.jl +++ b/src/ParametricUtils.jl @@ -696,8 +696,18 @@ end """ $SIGNATURES Initialize the parametric solver data from a different solution in `fromkey`. + +DevNotes +- TODO, keyword `force` not wired up yet. """ -function initParametricFrom!(fg::AbstractDFG, fromkey::Symbol = :default; parkey::Symbol = :parametric, onepoint=false) +function initParametricFrom!( + fg::AbstractDFG, + fromkey::Symbol = :default; + parkey::Symbol = :parametric, + onepoint=false, + force::Bool=false + ) + # if onepoint for v in getVariables(fg) fromvnd = getSolverData(v, fromkey) diff --git a/src/services/GraphInit.jl b/src/services/GraphInit.jl index 8ed3593f..68646032 100644 --- a/src/services/GraphInit.jl +++ b/src/services/GraphInit.jl @@ -452,13 +452,17 @@ function initAll!(dfg::AbstractDFG, # May have to first add the solveKey VNDs if they are not yet available for sym in syms - var = getVariable(dfg, sym) + vari = getVariable(dfg, sym) + varType = getVariableType(vari) |> _variableType # does SolverData exist for this solveKey? - if !( solveKey in listSolveKeys(var) ) - varType = getVariableType(var) + vsolveKeys = listSolveKeys(vari) + if !_parametricInit && !( solveKey in vsolveKeys ) # accept complete defaults for a novel solveKey - setDefaultNodeData!(var, 0, N, getDimension(varType), solveKey=solveKey, - initialized=false, varType=varType, dontmargin=false) + setDefaultNodeData!(vari, 0, N, getDimension(varType); solveKey, + initialized=false, varType) + end + if _parametricInit && !(:parametric in vsolveKeys) + setDefaultNodeDataParametric!(vari, varType; initialized=false) end end