A shell_solver that can compute the qoi with expected precision. precision becomes mandatory argument of run() method.

adaptive_shell_solver(
  cmd,
  nparams,
  qoi_file,
  required_args = "precision",
  arg_combine_fn = function(x, precision, ...) paste(c(x, precision), collapse = " "),
  ...
)

Arguments

cmd

command to run the solver executable.

nparams

numeric, number of parameters, must be provided.

qoi_file

name of file containing the computed quantity of interest, may be absolute or relative to wd, cannot be NULL.

required_args

character, mandatory args for run().

arg_combine_fn

function producing appropriate numeric scalar from point and precision for solver command line

...

other args passed to shell_solver().

Examples

rscript_path <- file.path(R.home(), "bin", "Rscript") solver_path <- file.path(find.package("solvergater"), "exec", "fake_adaptive.R") nparams <- 2 nqoi <- 5 solver_cmd <- paste(rscript_path, solver_path, nparams, nqoi) s <- adaptive_shell_solver(solver_cmd, nparams = nparams, qoi_file = "output_qoi", jacobian_file = "output_jacobian", wd = tempdir()) run(s, c(20, 5), precision = 90)
#> Solver command: /Library/Frameworks/R.framework/Resources/bin/Rscript /Users/runner/work/_temp/Library/solvergater/exec/fake_adaptive.R 2 5 20 5 90
#> Entering /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T//Rtmp2pZMh5
#> Solver exited normally
#> $qoi #> [1] 25 425 8125 160625 3203125 #> #> $jacobian #> [,1] [,2] #> [1,] 1 1 #> [2,] 40 10 #> [3,] 1200 75 #> [4,] 32000 500 #> [5,] 800000 3125 #>