The `make_ipm.*`

methods convert a `proto_ipm`

into a
set of discretized kernels and population vectors. Methods have different
requirements, so be sure to read the parameter documentation. ```
vignette('ipmr-introduction', 'ipmr')
```

a more complete introduction.

```
make_ipm(
proto_ipm,
return_main_env = TRUE,
return_all_envs = FALSE,
usr_funs = list(),
...
)
# S3 method for simple_di_det
make_ipm(
proto_ipm,
return_main_env = TRUE,
return_all_envs = FALSE,
usr_funs = list(),
...,
domain_list = NULL,
iterate = TRUE,
iterations = 50,
normalize_pop_size = TRUE,
iteration_direction = "right"
)
# S3 method for simple_di_stoch_kern
make_ipm(
proto_ipm,
return_main_env = TRUE,
return_all_envs = FALSE,
usr_funs = list(),
...,
domain_list = NULL,
iterate = TRUE,
iterations = 50,
kernel_seq = NULL,
normalize_pop_size = TRUE,
report_progress = FALSE,
iteration_direction = "right"
)
# S3 method for simple_di_stoch_param
make_ipm(
proto_ipm,
return_main_env = TRUE,
return_all_envs = FALSE,
usr_funs = list(),
...,
domain_list = NULL,
iterate = TRUE,
iterations = 50,
kernel_seq = NULL,
normalize_pop_size = TRUE,
report_progress = FALSE,
iteration_direction = "right",
return_sub_kernels = FALSE
)
# S3 method for general_di_det
make_ipm(
proto_ipm,
return_main_env = TRUE,
return_all_envs = FALSE,
usr_funs = list(),
...,
domain_list = NULL,
iterate = TRUE,
iterations = 50,
normalize_pop_size = TRUE,
iteration_direction = "right"
)
# S3 method for general_di_stoch_kern
make_ipm(
proto_ipm,
return_main_env = TRUE,
return_all_envs = FALSE,
usr_funs = list(),
...,
domain_list = NULL,
iterate = TRUE,
iterations = 50,
kernel_seq = NULL,
normalize_pop_size = TRUE,
report_progress = FALSE,
iteration_direction = "right"
)
# S3 method for general_di_stoch_param
make_ipm(
proto_ipm,
return_main_env = TRUE,
return_all_envs = FALSE,
usr_funs = list(),
...,
domain_list = NULL,
iterate = TRUE,
iterations = 50,
kernel_seq = NULL,
normalize_pop_size = TRUE,
report_progress = FALSE,
iteration_direction = "right",
return_sub_kernels = FALSE
)
# S3 method for simple_dd_det
make_ipm(
proto_ipm,
return_main_env = TRUE,
return_all_envs = FALSE,
usr_funs = list(),
...,
domain_list = NULL,
iterate = TRUE,
iterations = 50,
normalize_pop_size = FALSE,
report_progress = FALSE,
iteration_direction = "right",
return_sub_kernels = FALSE
)
# S3 method for simple_dd_stoch_kern
make_ipm(
proto_ipm,
return_main_env = TRUE,
return_all_envs = FALSE,
usr_funs = list(),
...,
domain_list = NULL,
iterate = TRUE,
iterations = 50,
kernel_seq = NA_character_,
normalize_pop_size = FALSE,
report_progress = FALSE,
iteration_direction = "right",
return_sub_kernels = FALSE
)
# S3 method for simple_dd_stoch_param
make_ipm(
proto_ipm,
return_main_env = TRUE,
return_all_envs = FALSE,
usr_funs = list(),
...,
domain_list = NULL,
iterate = TRUE,
iterations = 50,
kernel_seq = NA_character_,
normalize_pop_size = FALSE,
report_progress = FALSE,
iteration_direction = "right",
return_sub_kernels = FALSE
)
# S3 method for general_dd_det
make_ipm(
proto_ipm,
return_main_env = TRUE,
return_all_envs = FALSE,
usr_funs = list(),
...,
domain_list = NULL,
iterate = TRUE,
iterations = 50,
normalize_pop_size = FALSE,
report_progress = FALSE,
iteration_direction = "right",
return_sub_kernels = FALSE
)
# S3 method for general_dd_stoch_kern
make_ipm(
proto_ipm,
return_main_env = TRUE,
return_all_envs = FALSE,
usr_funs = list(),
...,
domain_list = NULL,
iterate = TRUE,
iterations = 50,
kernel_seq = NA_character_,
normalize_pop_size = FALSE,
report_progress = FALSE,
iteration_direction = "right",
return_sub_kernels = FALSE
)
# S3 method for general_dd_stoch_param
make_ipm(
proto_ipm,
return_main_env = TRUE,
return_all_envs = FALSE,
usr_funs = list(),
...,
domain_list = NULL,
iterate = TRUE,
iterations = 50,
kernel_seq = NA_character_,
normalize_pop_size = FALSE,
report_progress = FALSE,
iteration_direction = "right",
return_sub_kernels = FALSE
)
```

- proto_ipm
A proto_ipm. This should be the output of

`define_kernel`

, or the`define_*`

functions.- return_main_env
A logical indicating whether to return the main environment for the model. This environment contains the integration mesh, weights, and other potentially useful variables for subsequent analyses. Default is

`TRUE`

.- return_all_envs
A logical indicating whether to return the environments that the kernel expressions are evaluated in. These may be useful for some analyses, such as regression-level sensitivity/elasticity analyses, but can also rapidly increase memory consumption for models with many kernels (e.g. ones with parameter set indices that have many levels, or any

`*_stoch_param`

model). Default is`FALSE`

.- usr_funs
An optional list of user-specified functions that are passed on to the model building process. This can help make vital rate expressions more concise and expressive. Names in this list should exactly match the names of the function calls in the

`...`

or`formula`

.- ...
Other arguments passed to methods.

- domain_list
An optional list of new domain information to implement the IPM with.

- iterate
A logical indicating whether or not iterate the model before exiting or just return the sub-kernels. Only applies to density-independent, deterministic models and density-independent, stochastic kernel re-sampled models.

- iterations
If

`iterate`

is`TRUE`

, then the number of iterations to run the model for.- normalize_pop_size
A logical indicating whether to re-scale the population vector to sum to 1 before each iteration. Default is

`TRUE`

for`*_di_*`

methods and`FALSE`

for`*_dd_*`

methods.- iteration_direction
Either

`"right"`

(default) or`"left"`

. This controls the direction of projection. Right iteration will generate the right eigenvector (if it exists), while left iteration generates the left eigenvector. These correspond to the stable trait distributions, and reproductive values, respectively. This parameter is mostly used internally by other functions. Use with care.- kernel_seq
For

`*_stoch_kern`

methods, the sequence of kernels to use during the simulation process. It should have the same number of entries as the number of`iterations`

. This should be a vector containing values of the parameter set indices specified in`par_set_indices`

, or empty. Support for Markov chains will eventually get implemented. If it is empty,`make_ipm`

will try to generate a sequence internally using a random selection of the`par_set_indices`

defined in`define_kernel`

.- report_progress
A logical indicating whether or not to periodically report progress for a stochastic simulation. Does not apply to deterministic methods. Default is

`FALSE`

.- return_sub_kernels
Only applies to density dependent and parameter resampled models. If

`TRUE`

, then all sub-kernels will be returned. These are required for some analyses, but a large number of iterations will take up lots of RAM. Default is`FALSE`

.

The `make_ipm.*`

methods will always return a list of length 5
containing the following components:

**sub_kernels**: a list of arrays specified in`define_kernel`

.**env_list**: a list containing the evaluation environments of kernel. This will contain the`main_env`

object if`return_main_env = TRUE`

. It will also contain the sub-kernels evaluation environments if`return_all_envs = TRUE`

.**env_seq**: a character vector with length`iterations`

of kernel indices indicating the order in which kernels are to be/were resampled OR a matrix with as many columns as stochastic parameters and`n_iterations`

rows.**pop_state**: population vectors stored as a list of arrays. The first dimension of each array corresponds to the state variable distribution, and the second dimension corresponds to time steps.**proto_ipm**: the`proto_ipm`

object used to implement the model.

In addition to the list class, each object will have a class comprised of the
arguments from `init_ipm`

plus `'ipm'`

pasted together with
underscores. This is to facilitate `print`

, `plot`

, and
`lambda`

methods. For example, a `init_ipm("general", "di", "det")`

model will have the class `'general_di_det_ipm'`

once it has been
implemented using `make_ipm`

.