Skip to contents

The `with_apsimx` function automates the process of setting up and running APSIM Next Generation (NG) simulations in a temporary or specified folder. This approach helps reduce I/O overhead, particularly in high-performance computing (HPC) environments with network file systems (NFS). The frequent file I/O operations performed by APSIM NG (e.g., writing to SQLite databases) can strain file systems, and redirecting simulations to a local folder mitigates this issue. The function can also perform optional post-processing of the simulation results.

Usage

with_apsimx(
  models,
  file,
  mets = NULL,
  target = tempdir(),
  clean = c("none", "simulations", "mets", "all"),
  post_process = NULL,
  ...
)

Arguments

models

A character string specifying the path to the APSIM NG executable (`Models.exe` on Windows or `Models` on Linux).

file

A character string specifying the path to the `.apsimx` simulation file.

mets

A character vector specifying paths to meteorological data (`.met` files) used in the simulation. Currently, only `.met` files located in the same folder as the `.apsimx` file are supported (optional).

target

A character string specifying the target directory where simulations will be run. Defaults to the R system temporary directory (`tempdir()`).

clean

A character string specifying which files or directories to clean after the simulation. Options are:

  • `"none"`: No files are cleaned (default).

  • `"simulations"`: Cleans only simulation-related files (e.g., `*.apsimx`, `*.db`, `*.db-shm`, `*.db-wal`, `*.csv`).

  • `"mets"`: Cleans only meteorological files (e.g., `*.met`).

  • `"all"`: Cleans all files, including APSIM NG executable files, simulations, and meteorological files.

post_process

An optional function for post-processing simulation results. The function must accept a `folder` argument specifying the directory containing the simulation results.

...

Additional arguments passed to both the `run_models` and `post_process` functions.

Value

If a `post_process` function is provided, its return value is returned. Otherwise, the function returns `NULL`.

See also

run_models: Runs APSIM simulations. do.call: Dynamically calls functions with named arguments.

Examples

if (FALSE) { # \dontrun{
# Run simulations without post-processing
with_apsimx(
    models = "path/to/apsimx",
    file = "path/to/input.apsimx",
    mets = c("path/to/met1.met", "path/to/met2.met"),
    clean = "all"
)

# Run simulations with post-processing
post_process_function <- function(folder) {
    output_files <- list.files(folder, full.names = TRUE)
    message("Output files:", paste(output_files, collapse = "\n"))
}

result <- with_apsimx(
    models = "path/to/apsimx",
    file = "path/to/input.apsimx",
    mets = c("path/to/met1.met", "path/to/met2.met"),
    post_process = post_process_function
)
} # }