@@ -72,6 +72,7 @@ class GTSAM_EXPORT MultifrontalClique {
7272
7373 // / Compute parent indices for all children after separators are finalized.
7474 void assignParentIndicesForChildren ();
75+
7576 // / Cache pointers to frontal and separator update vectors.
7677 void cacheValuePointers (VectorValues* delta);
7778
@@ -90,7 +91,7 @@ class GTSAM_EXPORT MultifrontalClique {
9091 void fillAb (const GaussianFactorGraph& graph);
9192 // / @}
9293
93- // / @name Read-only accessors
94+ // / @name Read-only methods
9495 // / @{
9596
9697 // / Get the frontal keys for this clique.
@@ -120,41 +121,71 @@ class GTSAM_EXPORT MultifrontalClique {
120121 // / Get the symmetric block matrix (const).
121122 const SymmetricBlockMatrix& sbm () const { return sbm_; }
122123
123- // / Get the parent indices for scatter operations.
124- const std::vector<size_t >& parentIndices () const { return parentIndices_; }
125- // / @}
126-
127- // / @name Solve (non-const)
128- // / @{
129-
130- // / Eliminate this clique and propagate to its parent.
131- void eliminateClique ();
132-
133- // / Solve for the variables in this clique and update the solution vector.
134- void solveClique () const ;
135- // / @}
136124
137- // / Compute block dimensions from variable dimensions (excluding RHS).
138- // / @param dims Variable dimensions.
139- // / @return Block dimensions for this clique.
125+ /* *
126+ * Compute block dimensions from variable dimensions (excluding RHS).
127+ * @param dims Variable dimensions.
128+ * @return Block dimensions for this clique.
129+ */
140130 std::vector<size_t > blockDims (const std::map<Key, size_t >& dims) const ;
141131
142- // / Count rows needed for the vertical block matrix.
143- // / @param graph The factor graph.
144- // / @return Total number of rows.
132+ /* *
133+ * Count rows needed for the vertical block matrix.
134+ * @param graph The factor graph.
135+ * @return Total number of rows.
136+ */
145137 size_t countRows (const GaussianFactorGraph& graph) const ;
146138
147- // / Compute parent scatter indices for this clique.
148- // / @param parent The parent clique.
149- // / @return Parent indices for scatter operations.
139+ /* *
140+ * Compute parent scatter indices for this clique.
141+ * @param parent The parent clique.
142+ * @return Parent indices for separator blocks (excluding RHS).
143+ */
150144 std::vector<size_t > parentIndicesFor (const MultifrontalClique& parent) const ;
151145
152- // / Print this clique.
153- // / @param s Optional string prefix.
154- // / @param keyFormatter Key formatter for printing.
146+ /* *
147+ * Print this clique.
148+ * @param s Optional string prefix.
149+ * @param keyFormatter Key formatter for printing.
150+ */
155151 void print (const std::string& s = " " ,
156152 const KeyFormatter& keyFormatter = DefaultKeyFormatter) const ;
157153
154+ // / @}
155+
156+ // / @name Solve (non-const)
157+ // / @{
158+
159+ /* *
160+ * Eliminate this clique and propagate its separator contribution upward.
161+ *
162+ * Computes the local normal equations (SBM) from the stacked Jacobian (Ab),
163+ * performs partial Cholesky on the frontal blocks, and then updates the
164+ * parent's SBM using only the separator view (plus RHS) of this clique.
165+ * Requires parent indices to be precomputed.
166+ */
167+ void eliminate ();
168+
169+ /* *
170+ * Update this clique using a child's contribution.
171+ * @param separator Child clique's SBM restricted to its separator blocks,
172+ * with the RHS block appended as the last block.
173+ * @param indices Mapping from the child's separator blocks into this
174+ * parent's SBM block indices (RHS is implicit).
175+ */
176+ void updateWith (const SymmetricBlockMatrix& separator,
177+ const std::vector<size_t >& indices);
178+
179+ /* *
180+ * Solve for this clique's frontal variables and write them back to the
181+ * cached solution vectors.
182+ *
183+ * Uses block back-substitution using the upper triangular-part of the
184+ * Cholesky-stored SBM, solving the triangular system for the frontal blocks.
185+ */
186+ void solve () const ;
187+ // / @}
188+
158189 private:
159190 void setParentIndices (const std::vector<size_t >& indices) {
160191 parentIndices_ = indices;
0 commit comments