public class HybridReplayTiming
extends java.lang.Object
MurtyMechSolver.writeSolveInfo(java.io.PrintWriter, maspack.solvers.LCPSolver.Status, maspack.matrix.VectorNd, maspack.matrix.VectorNd, maspack.matrix.VectorNd, maspack.matrix.VectorNd, maspack.matrix.VectorNd, maspack.matrix.VectorNd, maspack.matrix.SparseBlockMatrix, int, maspack.matrix.VectorNd, int, maspack.matrix.SparseBlockMatrix, maspack.matrix.VectorNd, maspack.matrix.VectorNd, maspack.matrix.SparseBlockMatrix, maspack.matrix.VectorNd, maspack.matrix.VectorNd, maspack.matrix.VectorNi, maspack.matrix.SparseBlockMatrix, maspack.matrix.VectorNd, maspack.matrix.VectorNd, maspack.matrix.VectorNi, java.util.ArrayList<maspack.spatialmotion.FrictionInfo>, int, int) for a
simulation with (at most) bilateral constraints, to measure hybrid
direct/iterative solves on real ArtiSynth matrix sequences.
Each step's KKT system
[ M GT ] [ vel ] [ bm ] [ G -Rg ] [ -lam ] = [ bg ]is assembled exactly as by MurtyMechSolver (upper triangular CRS, with M's entries followed by those of GT in each row). All steps are read and assembled before any timing, and cached in a binary file, so the timed region of each step contains only the solver calls (including their JNI array copies, as in MurtyMechSolver).
Two modes:
-lag j0,...): factors step j0 once, then solves
each later step iteratively, until two consecutive failures, to show how
far a factorization remains a useful preconditioner.
java -Xmx12g maspack.solvers.HybridReplayTiming -data file.txt
[-cache dir] [-cacheOnly] [-out steps.csv] [-summary summary.csv]
[-solvers Pardiso,Mumps] [-methods DIRECT,NATIVE,GMRES,CGS]
[-threads 8] [-tolExp 10] [-maxSolves 50] [-restart 20] [-steps n]
[-lag 0,50] [-lagMaxSolves 100]
NATIVE (Pardiso's own iterative solve) is only run for Pardiso.| Constructor and Description |
|---|
HybridReplayTiming() |
| Modifier and Type | Method and Description |
|---|---|
static void |
main(java.lang.String[] args) |