Skip to contents

Functions for creating vertical planning (progressions)

Usage

vertical_planning(reps, reps_change = NULL, step = NULL)

vertical_constant(reps, n_steps = 4)

vertical_linear(reps, reps_change = c(0, -1, -2, -3))

vertical_linear_reverse(reps, reps_change = c(0, 1, 2, 3))

vertical_block(reps, step = c(-2, -1, 0, -3))

vertical_block_variant(reps, step = c(-2, -1, -3, 0))

vertical_rep_accumulation(
  reps,
  reps_change = c(-3, -2, -1, 0),
  step = c(0, 0, 0, 0)
)

vertical_set_accumulation(
  reps,
  step = c(-2, -2, -2, -2),
  reps_change = rep(0, length(step)),
  accumulate_set = length(reps),
  set_increment = 1,
  sequence = TRUE
)

vertical_set_accumulation_reverse(
  reps,
  step = c(-3, -2, -1, 0),
  reps_change = rep(0, length(step)),
  accumulate_set = length(reps),
  set_increment = 1,
  sequence = TRUE
)

vertical_undulating(reps, reps_change = c(0, -2, -1, -3))

vertical_undulating_reverse(reps, reps_change = c(0, 2, 1, 3))

vertical_block_undulating(
  reps,
  reps_change = c(0, -2, -1, -3),
  step = c(-2, -1, -3, 0)
)

vertical_volume_intensity(reps, reps_change = c(0, 0, -3, -3))

.vertical_rep_accumulation.post(
  scheme,
  rep_decrement = c(-3, -2, -1, 0),
  remove_reps = TRUE
)

Arguments

reps

Numeric vector indicating reps prescription

reps_change

Change in reps across progression steps

step

Numeric vector indicating progression steps (i.e. -3, -2, -1, 0)

n_steps

Number of progression steps. Default is 4

accumulate_set

Which set (position in reps) to accumulate

set_increment

How many sets to increase each step? Default is 1

sequence

Should the sequence of accumulated sets be repeated, or individual sets?

scheme

Scheme generated by scheme_ functions

rep_decrement

Rep decrements across progression step

remove_reps

Should < 1 reps be removed?

Value

Data frame with reps, index, and step columns

Functions

  • vertical_planning(): Generic Vertical Planning

  • vertical_constant(): Constants Vertical Planning

  • vertical_linear(): Linear Vertical Planning

  • vertical_linear_reverse(): Reverse Linear Vertical Planning

  • vertical_block(): Block Vertical Planning

  • vertical_block_variant(): Block Variant Vertical Planning

  • vertical_rep_accumulation(): Rep Accumulation Vertical Planning

  • vertical_set_accumulation(): Set Accumulation Vertical Planning

  • vertical_set_accumulation_reverse(): Set Accumulation Reverse Vertical Planning

  • vertical_undulating(): Undulating Vertical Planning

  • vertical_undulating_reverse(): Undulating Vertical Planning

  • vertical_block_undulating(): Block Undulating Vertical Planning

  • vertical_volume_intensity(): Volume-Intensity Vertical Planning

  • .vertical_rep_accumulation.post(): Rep Accumulation Vertical Planning POST treatment This functions is to be applied AFTER scheme is generated. Other options is to use scheme_rep_acc function, that is flexible enough to generate most options, except for the scheme_ladder and scheme_light_heavy. Please note that the adjustment column in the output will be wrong, hence set to NA

Examples

# Generic vertical planning function
# ----------------------------------

# Constant
vertical_planning(reps = c(3, 2, 1), step = c(-3, -2, -1, 0))
#>    index step set set_id reps
#> 1      1   -3   1      1    3
#> 2      1   -3   2      2    2
#> 3      1   -3   3      3    1
#> 4      2   -2   1      1    3
#> 5      2   -2   2      2    2
#> 6      2   -2   3      3    1
#> 7      3   -1   1      1    3
#> 8      3   -1   2      2    2
#> 9      3   -1   3      3    1
#> 10     4    0   1      1    3
#> 11     4    0   2      2    2
#> 12     4    0   3      3    1

# Linear
vertical_planning(reps = c(5, 5, 5, 5, 5), reps_change = c(0, -1, -2))
#>    index step set set_id reps
#> 1      1   -2   1      1    5
#> 2      1   -2   2      2    5
#> 3      1   -2   3      3    5
#> 4      1   -2   4      4    5
#> 5      1   -2   5      5    5
#> 6      2   -1   1      1    4
#> 7      2   -1   2      2    4
#> 8      2   -1   3      3    4
#> 9      2   -1   4      4    4
#> 10     2   -1   5      5    4
#> 11     3    0   1      1    3
#> 12     3    0   2      2    3
#> 13     3    0   3      3    3
#> 14     3    0   4      4    3
#> 15     3    0   5      5    3

# Reverse Linear
vertical_planning(reps = c(5, 5, 5, 5, 5), reps_change = c(0, 1, 2))
#>    index step set set_id reps
#> 1      1   -2   1      1    5
#> 2      1   -2   2      2    5
#> 3      1   -2   3      3    5
#> 4      1   -2   4      4    5
#> 5      1   -2   5      5    5
#> 6      2   -1   1      1    6
#> 7      2   -1   2      2    6
#> 8      2   -1   3      3    6
#> 9      2   -1   4      4    6
#> 10     2   -1   5      5    6
#> 11     3    0   1      1    7
#> 12     3    0   2      2    7
#> 13     3    0   3      3    7
#> 14     3    0   4      4    7
#> 15     3    0   5      5    7

# Block
vertical_planning(reps = c(5, 5, 5, 5, 5), step = c(-2, -1, 0, -3))
#>    index step set set_id reps
#> 1      1   -2   1      1    5
#> 2      1   -2   2      2    5
#> 3      1   -2   3      3    5
#> 4      1   -2   4      4    5
#> 5      1   -2   5      5    5
#> 6      2   -1   1      1    5
#> 7      2   -1   2      2    5
#> 8      2   -1   3      3    5
#> 9      2   -1   4      4    5
#> 10     2   -1   5      5    5
#> 11     3    0   1      1    5
#> 12     3    0   2      2    5
#> 13     3    0   3      3    5
#> 14     3    0   4      4    5
#> 15     3    0   5      5    5
#> 16     4   -3   1      1    5
#> 17     4   -3   2      2    5
#> 18     4   -3   3      3    5
#> 19     4   -3   4      4    5
#> 20     4   -3   5      5    5

# Block variant
vertical_planning(reps = c(5, 5, 5, 5, 5), step = c(-2, -1, -3, 0))
#>    index step set set_id reps
#> 1      1   -2   1      1    5
#> 2      1   -2   2      2    5
#> 3      1   -2   3      3    5
#> 4      1   -2   4      4    5
#> 5      1   -2   5      5    5
#> 6      2   -1   1      1    5
#> 7      2   -1   2      2    5
#> 8      2   -1   3      3    5
#> 9      2   -1   4      4    5
#> 10     2   -1   5      5    5
#> 11     3   -3   1      1    5
#> 12     3   -3   2      2    5
#> 13     3   -3   3      3    5
#> 14     3   -3   4      4    5
#> 15     3   -3   5      5    5
#> 16     4    0   1      1    5
#> 17     4    0   2      2    5
#> 18     4    0   3      3    5
#> 19     4    0   4      4    5
#> 20     4    0   5      5    5

# Undulating
vertical_planning(reps = c(12, 10, 8), reps_change = c(0, -4, -2, -6))
#>    index step set set_id reps
#> 1      1   -3   1      1   12
#> 2      1   -3   2      2   10
#> 3      1   -3   3      3    8
#> 4      2   -2   1      1    8
#> 5      2   -2   2      2    6
#> 6      2   -2   3      3    4
#> 7      3   -1   1      1   10
#> 8      3   -1   2      2    8
#> 9      3   -1   3      3    6
#> 10     4    0   1      1    6
#> 11     4    0   2      2    4
#> 12     4    0   3      3    2

# Undulating + Block variant
vertical_planning(
  reps = c(12, 10, 8),
  reps_change = c(0, -4, -2, -6),
  step = c(-2, -1, -3, 0)
)
#>    index step set set_id reps
#> 1      1   -2   1      1   12
#> 2      1   -2   2      2   10
#> 3      1   -2   3      3    8
#> 4      2   -1   1      1    8
#> 5      2   -1   2      2    6
#> 6      2   -1   3      3    4
#> 7      3   -3   1      1   10
#> 8      3   -3   2      2    8
#> 9      3   -3   3      3    6
#> 10     4    0   1      1    6
#> 11     4    0   2      2    4
#> 12     4    0   3      3    2

# Rep accumulation
# If used with `scheme_generic()` (or any other `scheme_`) it will provide wrong set and rep scheme.
# Use `scheme_rep_acc()` instead, or apply `.vertical_rep_accumulation.post()`
# function AFTER generating the scheme
vertical_planning(
  reps = c(10, 8, 6),
  reps_change = c(-3, -2, -1, 0),
  step = c(0, 0, 0, 0)
)
#>    index step set set_id reps
#> 1      1    0   1      1    7
#> 2      1    0   2      2    5
#> 3      1    0   3      3    3
#> 4      2    0   1      1    8
#> 5      2    0   2      2    6
#> 6      2    0   3      3    4
#> 7      3    0   1      1    9
#> 8      3    0   2      2    7
#> 9      3    0   3      3    5
#> 10     4    0   1      1   10
#> 11     4    0   2      2    8
#> 12     4    0   3      3    6


# Constant
# ----------------------------------
vertical_constant(c(5, 5, 5), 4)
#>    index step set set_id reps
#> 1      1   -3   1      1    5
#> 2      1   -3   2      2    5
#> 3      1   -3   3      3    5
#> 4      2   -2   1      1    5
#> 5      2   -2   2      2    5
#> 6      2   -2   3      3    5
#> 7      3   -1   1      1    5
#> 8      3   -1   2      2    5
#> 9      3   -1   3      3    5
#> 10     4    0   1      1    5
#> 11     4    0   2      2    5
#> 12     4    0   3      3    5
vertical_constant(c(3, 2, 1), 2)
#>   index step set set_id reps
#> 1     1   -1   1      1    3
#> 2     1   -1   2      2    2
#> 3     1   -1   3      3    1
#> 4     2    0   1      1    3
#> 5     2    0   2      2    2
#> 6     2    0   3      3    1

plot_vertical(vertical_constant)


# Linear
# ----------------------------------
vertical_linear(c(10, 8, 6), c(0, -2, -4))
#>   index step set set_id reps
#> 1     1   -2   1      1   10
#> 2     1   -2   2      2    8
#> 3     1   -2   3      3    6
#> 4     2   -1   1      1    8
#> 5     2   -1   2      2    6
#> 6     2   -1   3      3    4
#> 7     3    0   1      1    6
#> 8     3    0   2      2    4
#> 9     3    0   3      3    2
vertical_linear(c(5, 5, 5), c(0, -1, -2, -3))
#>    index step set set_id reps
#> 1      1   -3   1      1    5
#> 2      1   -3   2      2    5
#> 3      1   -3   3      3    5
#> 4      2   -2   1      1    4
#> 5      2   -2   2      2    4
#> 6      2   -2   3      3    4
#> 7      3   -1   1      1    3
#> 8      3   -1   2      2    3
#> 9      3   -1   3      3    3
#> 10     4    0   1      1    2
#> 11     4    0   2      2    2
#> 12     4    0   3      3    2

plot_vertical(vertical_linear)


# Reverse Linear
# ----------------------------------
vertical_linear_reverse(c(6, 4, 2), c(0, 1, 2))
#>   index step set set_id reps
#> 1     1   -2   1      1    6
#> 2     1   -2   2      2    4
#> 3     1   -2   3      3    2
#> 4     2   -1   1      1    7
#> 5     2   -1   2      2    5
#> 6     2   -1   3      3    3
#> 7     3    0   1      1    8
#> 8     3    0   2      2    6
#> 9     3    0   3      3    4
vertical_linear_reverse(c(5, 5, 5))
#>    index step set set_id reps
#> 1      1   -3   1      1    5
#> 2      1   -3   2      2    5
#> 3      1   -3   3      3    5
#> 4      2   -2   1      1    6
#> 5      2   -2   2      2    6
#> 6      2   -2   3      3    6
#> 7      3   -1   1      1    7
#> 8      3   -1   2      2    7
#> 9      3   -1   3      3    7
#> 10     4    0   1      1    8
#> 11     4    0   2      2    8
#> 12     4    0   3      3    8

plot_vertical(vertical_linear_reverse)


# Block
# ----------------------------------
vertical_block(c(6, 4, 2))
#>    index step set set_id reps
#> 1      1   -2   1      1    6
#> 2      1   -2   2      2    4
#> 3      1   -2   3      3    2
#> 4      2   -1   1      1    6
#> 5      2   -1   2      2    4
#> 6      2   -1   3      3    2
#> 7      3    0   1      1    6
#> 8      3    0   2      2    4
#> 9      3    0   3      3    2
#> 10     4   -3   1      1    6
#> 11     4   -3   2      2    4
#> 12     4   -3   3      3    2

plot_vertical(vertical_block)


# Block Variant
# ----------------------------------
vertical_block_variant(c(6, 4, 2))
#>    index step set set_id reps
#> 1      1   -2   1      1    6
#> 2      1   -2   2      2    4
#> 3      1   -2   3      3    2
#> 4      2   -1   1      1    6
#> 5      2   -1   2      2    4
#> 6      2   -1   3      3    2
#> 7      3   -3   1      1    6
#> 8      3   -3   2      2    4
#> 9      3   -3   3      3    2
#> 10     4    0   1      1    6
#> 11     4    0   2      2    4
#> 12     4    0   3      3    2

plot_vertical(vertical_block_variant)


# Rep Accumulation
# ----------------------------------
# If used with `scheme_generic()` (or any other `scheme_`) it will provide wrong set and rep scheme.
# Use `scheme_rep_acc()` instead, or apply `.vertical_rep_accumulation.post()`
# function AFTER generating the scheme
vertical_rep_accumulation(c(10, 8, 6))
#>    index step set set_id reps
#> 1      1    0   1      1    7
#> 2      1    0   2      2    5
#> 3      1    0   3      3    3
#> 4      2    0   1      1    8
#> 5      2    0   2      2    6
#> 6      2    0   3      3    4
#> 7      3    0   1      1    9
#> 8      3    0   2      2    7
#> 9      3    0   3      3    5
#> 10     4    0   1      1   10
#> 11     4    0   2      2    8
#> 12     4    0   3      3    6

plot_vertical(vertical_rep_accumulation)


# Set Accumulation
# ----------------------------------
# Default is accumulation of the last set
vertical_set_accumulation(c(3, 2, 1))
#>    index step set set_id reps
#> 1      1   -2   1      1    3
#> 2      1   -2   2      2    2
#> 3      1   -2   3      3    1
#> 4      2   -2   1      1    3
#> 5      2   -2   2      2    2
#> 6      2   -2   3      3    1
#> 7      2   -2   4      3    1
#> 8      3   -2   1      1    3
#> 9      3   -2   2      2    2
#> 10     3   -2   3      3    1
#> 11     3   -2   4      3    1
#> 12     3   -2   5      3    1
#> 13     4   -2   1      1    3
#> 14     4   -2   2      2    2
#> 15     4   -2   3      3    1
#> 16     4   -2   4      3    1
#> 17     4   -2   5      3    1
#> 18     4   -2   6      3    1

# We can have whole sequence being repeated
vertical_set_accumulation(c(3, 2, 1), accumulate_set = 1:3)
#>    index step set set_id reps
#> 1      1   -2   1      1    3
#> 2      1   -2   2      2    2
#> 3      1   -2   3      3    1
#> 4      2   -2   1      1    3
#> 5      2   -2   2      2    2
#> 6      2   -2   3      3    1
#> 7      2   -2   4      1    3
#> 8      2   -2   5      2    2
#> 9      2   -2   6      3    1
#> 10     3   -2   1      1    3
#> 11     3   -2   2      2    2
#> 12     3   -2   3      3    1
#> 13     3   -2   4      1    3
#> 14     3   -2   5      2    2
#> 15     3   -2   6      3    1
#> 16     3   -2   7      1    3
#> 17     3   -2   8      2    2
#> 18     3   -2   9      3    1
#> 19     4   -2   1      1    3
#> 20     4   -2   2      2    2
#> 21     4   -2   3      3    1
#> 22     4   -2   4      1    3
#> 23     4   -2   5      2    2
#> 24     4   -2   6      3    1
#> 25     4   -2   7      1    3
#> 26     4   -2   8      2    2
#> 27     4   -2   9      3    1
#> 28     4   -2  10      1    3
#> 29     4   -2  11      2    2
#> 30     4   -2  12      3    1

# Or we can have accumulation of the individual sets
vertical_set_accumulation(c(3, 2, 1), accumulate_set = 1:3, sequence = FALSE)
#>    index step set set_id reps
#> 1      1   -2   1      1    3
#> 2      1   -2   2      2    2
#> 3      1   -2   3      3    1
#> 4      2   -2   1      1    3
#> 5      2   -2   2      1    3
#> 6      2   -2   3      2    2
#> 7      2   -2   4      2    2
#> 8      2   -2   5      3    1
#> 9      2   -2   6      3    1
#> 10     3   -2   1      1    3
#> 11     3   -2   2      1    3
#> 12     3   -2   3      1    3
#> 13     3   -2   4      2    2
#> 14     3   -2   5      2    2
#> 15     3   -2   6      2    2
#> 16     3   -2   7      3    1
#> 17     3   -2   8      3    1
#> 18     3   -2   9      3    1
#> 19     4   -2   1      1    3
#> 20     4   -2   2      1    3
#> 21     4   -2   3      1    3
#> 22     4   -2   4      1    3
#> 23     4   -2   5      2    2
#> 24     4   -2   6      2    2
#> 25     4   -2   7      2    2
#> 26     4   -2   8      2    2
#> 27     4   -2   9      3    1
#> 28     4   -2  10      3    1
#> 29     4   -2  11      3    1
#> 30     4   -2  12      3    1

# We can also have two or more sequences
vertical_set_accumulation(c(10, 8, 6, 4, 2, 1), accumulate_set = c(1:2, 5:6))
#>    index step set set_id reps
#> 1      1   -2   1      1   10
#> 2      1   -2   2      2    8
#> 3      1   -2   3      3    6
#> 4      1   -2   4      4    4
#> 5      1   -2   5      5    2
#> 6      1   -2   6      6    1
#> 7      2   -2   1      1   10
#> 8      2   -2   2      2    8
#> 9      2   -2   3      1   10
#> 10     2   -2   4      2    8
#> 11     2   -2   5      3    6
#> 12     2   -2   6      4    4
#> 13     2   -2   7      5    2
#> 14     2   -2   8      6    1
#> 15     2   -2   9      5    2
#> 16     2   -2  10      6    1
#> 17     3   -2   1      1   10
#> 18     3   -2   2      2    8
#> 19     3   -2   3      1   10
#> 20     3   -2   4      2    8
#> 21     3   -2   5      1   10
#> 22     3   -2   6      2    8
#> 23     3   -2   7      3    6
#> 24     3   -2   8      4    4
#> 25     3   -2   9      5    2
#> 26     3   -2  10      6    1
#> 27     3   -2  11      5    2
#> 28     3   -2  12      6    1
#> 29     3   -2  13      5    2
#> 30     3   -2  14      6    1
#> 31     4   -2   1      1   10
#> 32     4   -2   2      2    8
#> 33     4   -2   3      1   10
#> 34     4   -2   4      2    8
#> 35     4   -2   5      1   10
#> 36     4   -2   6      2    8
#> 37     4   -2   7      1   10
#> 38     4   -2   8      2    8
#> 39     4   -2   9      3    6
#> 40     4   -2  10      4    4
#> 41     4   -2  11      5    2
#> 42     4   -2  12      6    1
#> 43     4   -2  13      5    2
#> 44     4   -2  14      6    1
#> 45     4   -2  15      5    2
#> 46     4   -2  16      6    1
#> 47     4   -2  17      5    2
#> 48     4   -2  18      6    1

# And also repeat the individual sets
vertical_set_accumulation(
  c(10, 8, 6, 4, 2, 1),
  accumulate_set = c(1:2, 5:6),
  sequence = FALSE
)
#>    index step set set_id reps
#> 1      1   -2   1      1   10
#> 2      1   -2   2      2    8
#> 3      1   -2   3      3    6
#> 4      1   -2   4      4    4
#> 5      1   -2   5      5    2
#> 6      1   -2   6      6    1
#> 7      2   -2   1      1   10
#> 8      2   -2   2      1   10
#> 9      2   -2   3      2    8
#> 10     2   -2   4      2    8
#> 11     2   -2   5      3    6
#> 12     2   -2   6      4    4
#> 13     2   -2   7      5    2
#> 14     2   -2   8      5    2
#> 15     2   -2   9      6    1
#> 16     2   -2  10      6    1
#> 17     3   -2   1      1   10
#> 18     3   -2   2      1   10
#> 19     3   -2   3      1   10
#> 20     3   -2   4      2    8
#> 21     3   -2   5      2    8
#> 22     3   -2   6      2    8
#> 23     3   -2   7      3    6
#> 24     3   -2   8      4    4
#> 25     3   -2   9      5    2
#> 26     3   -2  10      5    2
#> 27     3   -2  11      5    2
#> 28     3   -2  12      6    1
#> 29     3   -2  13      6    1
#> 30     3   -2  14      6    1
#> 31     4   -2   1      1   10
#> 32     4   -2   2      1   10
#> 33     4   -2   3      1   10
#> 34     4   -2   4      1   10
#> 35     4   -2   5      2    8
#> 36     4   -2   6      2    8
#> 37     4   -2   7      2    8
#> 38     4   -2   8      2    8
#> 39     4   -2   9      3    6
#> 40     4   -2  10      4    4
#> 41     4   -2  11      5    2
#> 42     4   -2  12      5    2
#> 43     4   -2  13      5    2
#> 44     4   -2  14      5    2
#> 45     4   -2  15      6    1
#> 46     4   -2  16      6    1
#> 47     4   -2  17      6    1
#> 48     4   -2  18      6    1
plot_vertical(vertical_set_accumulation)


# Reverse Set Accumulation
# ----------------------------------
# Default is accumulation of the last set
vertical_set_accumulation_reverse(c(3, 2, 1))
#>    index step set set_id reps
#> 1      1   -3   1      1    3
#> 2      1   -3   2      2    2
#> 3      1   -3   3      3    1
#> 4      1   -3   4      3    1
#> 5      1   -3   5      3    1
#> 6      1   -3   6      3    1
#> 7      2   -2   1      1    3
#> 8      2   -2   2      2    2
#> 9      2   -2   3      3    1
#> 10     2   -2   4      3    1
#> 11     2   -2   5      3    1
#> 12     3   -1   1      1    3
#> 13     3   -1   2      2    2
#> 14     3   -1   3      3    1
#> 15     3   -1   4      3    1
#> 16     4    0   1      1    3
#> 17     4    0   2      2    2
#> 18     4    0   3      3    1

# We can have whole sequence being repeated
vertical_set_accumulation_reverse(c(3, 2, 1), accumulate_set = 1:3)
#>    index step set set_id reps
#> 1      1   -3   1      1    3
#> 2      1   -3   2      2    2
#> 3      1   -3   3      3    1
#> 4      1   -3   4      1    3
#> 5      1   -3   5      2    2
#> 6      1   -3   6      3    1
#> 7      1   -3   7      1    3
#> 8      1   -3   8      2    2
#> 9      1   -3   9      3    1
#> 10     1   -3  10      1    3
#> 11     1   -3  11      2    2
#> 12     1   -3  12      3    1
#> 13     2   -2   1      1    3
#> 14     2   -2   2      2    2
#> 15     2   -2   3      3    1
#> 16     2   -2   4      1    3
#> 17     2   -2   5      2    2
#> 18     2   -2   6      3    1
#> 19     2   -2   7      1    3
#> 20     2   -2   8      2    2
#> 21     2   -2   9      3    1
#> 22     3   -1   1      1    3
#> 23     3   -1   2      2    2
#> 24     3   -1   3      3    1
#> 25     3   -1   4      1    3
#> 26     3   -1   5      2    2
#> 27     3   -1   6      3    1
#> 28     4    0   1      1    3
#> 29     4    0   2      2    2
#> 30     4    0   3      3    1

# Or we can have accumulation of the individual sets
vertical_set_accumulation_reverse(c(3, 2, 1), accumulate_set = 1:3, sequence = FALSE)
#>    index step set set_id reps
#> 1      1   -3   1      1    3
#> 2      1   -3   2      1    3
#> 3      1   -3   3      1    3
#> 4      1   -3   4      1    3
#> 5      1   -3   5      2    2
#> 6      1   -3   6      2    2
#> 7      1   -3   7      2    2
#> 8      1   -3   8      2    2
#> 9      1   -3   9      3    1
#> 10     1   -3  10      3    1
#> 11     1   -3  11      3    1
#> 12     1   -3  12      3    1
#> 13     2   -2   1      1    3
#> 14     2   -2   2      1    3
#> 15     2   -2   3      1    3
#> 16     2   -2   4      2    2
#> 17     2   -2   5      2    2
#> 18     2   -2   6      2    2
#> 19     2   -2   7      3    1
#> 20     2   -2   8      3    1
#> 21     2   -2   9      3    1
#> 22     3   -1   1      1    3
#> 23     3   -1   2      1    3
#> 24     3   -1   3      2    2
#> 25     3   -1   4      2    2
#> 26     3   -1   5      3    1
#> 27     3   -1   6      3    1
#> 28     4    0   1      1    3
#> 29     4    0   2      2    2
#> 30     4    0   3      3    1

# We can also have two or more sequences
vertical_set_accumulation_reverse(c(10, 8, 6, 4, 2, 1), accumulate_set = c(1:2, 5:6))
#>    index step set set_id reps
#> 1      1   -3   1      1   10
#> 2      1   -3   2      2    8
#> 3      1   -3   3      1   10
#> 4      1   -3   4      2    8
#> 5      1   -3   5      1   10
#> 6      1   -3   6      2    8
#> 7      1   -3   7      1   10
#> 8      1   -3   8      2    8
#> 9      1   -3   9      3    6
#> 10     1   -3  10      4    4
#> 11     1   -3  11      5    2
#> 12     1   -3  12      6    1
#> 13     1   -3  13      5    2
#> 14     1   -3  14      6    1
#> 15     1   -3  15      5    2
#> 16     1   -3  16      6    1
#> 17     1   -3  17      5    2
#> 18     1   -3  18      6    1
#> 19     2   -2   1      1   10
#> 20     2   -2   2      2    8
#> 21     2   -2   3      1   10
#> 22     2   -2   4      2    8
#> 23     2   -2   5      1   10
#> 24     2   -2   6      2    8
#> 25     2   -2   7      3    6
#> 26     2   -2   8      4    4
#> 27     2   -2   9      5    2
#> 28     2   -2  10      6    1
#> 29     2   -2  11      5    2
#> 30     2   -2  12      6    1
#> 31     2   -2  13      5    2
#> 32     2   -2  14      6    1
#> 33     3   -1   1      1   10
#> 34     3   -1   2      2    8
#> 35     3   -1   3      1   10
#> 36     3   -1   4      2    8
#> 37     3   -1   5      3    6
#> 38     3   -1   6      4    4
#> 39     3   -1   7      5    2
#> 40     3   -1   8      6    1
#> 41     3   -1   9      5    2
#> 42     3   -1  10      6    1
#> 43     4    0   1      1   10
#> 44     4    0   2      2    8
#> 45     4    0   3      3    6
#> 46     4    0   4      4    4
#> 47     4    0   5      5    2
#> 48     4    0   6      6    1

# And also repeat the individual sets
vertical_set_accumulation_reverse(
  c(10, 8, 6, 4, 2, 1),
  accumulate_set = c(1:2, 5:6),
  sequence = FALSE
)
#>    index step set set_id reps
#> 1      1   -3   1      1   10
#> 2      1   -3   2      1   10
#> 3      1   -3   3      1   10
#> 4      1   -3   4      1   10
#> 5      1   -3   5      2    8
#> 6      1   -3   6      2    8
#> 7      1   -3   7      2    8
#> 8      1   -3   8      2    8
#> 9      1   -3   9      3    6
#> 10     1   -3  10      4    4
#> 11     1   -3  11      5    2
#> 12     1   -3  12      5    2
#> 13     1   -3  13      5    2
#> 14     1   -3  14      5    2
#> 15     1   -3  15      6    1
#> 16     1   -3  16      6    1
#> 17     1   -3  17      6    1
#> 18     1   -3  18      6    1
#> 19     2   -2   1      1   10
#> 20     2   -2   2      1   10
#> 21     2   -2   3      1   10
#> 22     2   -2   4      2    8
#> 23     2   -2   5      2    8
#> 24     2   -2   6      2    8
#> 25     2   -2   7      3    6
#> 26     2   -2   8      4    4
#> 27     2   -2   9      5    2
#> 28     2   -2  10      5    2
#> 29     2   -2  11      5    2
#> 30     2   -2  12      6    1
#> 31     2   -2  13      6    1
#> 32     2   -2  14      6    1
#> 33     3   -1   1      1   10
#> 34     3   -1   2      1   10
#> 35     3   -1   3      2    8
#> 36     3   -1   4      2    8
#> 37     3   -1   5      3    6
#> 38     3   -1   6      4    4
#> 39     3   -1   7      5    2
#> 40     3   -1   8      5    2
#> 41     3   -1   9      6    1
#> 42     3   -1  10      6    1
#> 43     4    0   1      1   10
#> 44     4    0   2      2    8
#> 45     4    0   3      3    6
#> 46     4    0   4      4    4
#> 47     4    0   5      5    2
#> 48     4    0   6      6    1

plot_vertical(vertical_set_accumulation_reverse)


# Undulating
# ----------------------------------
vertical_undulating(c(8, 6, 4))
#>    index step set set_id reps
#> 1      1   -3   1      1    8
#> 2      1   -3   2      2    6
#> 3      1   -3   3      3    4
#> 4      2   -2   1      1    6
#> 5      2   -2   2      2    4
#> 6      2   -2   3      3    2
#> 7      3   -1   1      1    7
#> 8      3   -1   2      2    5
#> 9      3   -1   3      3    3
#> 10     4    0   1      1    5
#> 11     4    0   2      2    3
#> 12     4    0   3      3    1

# Reverse Undulating
# ----------------------------------
vertical_undulating_reverse(c(8, 6, 4))
#>    index step set set_id reps
#> 1      1   -3   1      1    8
#> 2      1   -3   2      2    6
#> 3      1   -3   3      3    4
#> 4      2   -2   1      1   10
#> 5      2   -2   2      2    8
#> 6      2   -2   3      3    6
#> 7      3   -1   1      1    9
#> 8      3   -1   2      2    7
#> 9      3   -1   3      3    5
#> 10     4    0   1      1   11
#> 11     4    0   2      2    9
#> 12     4    0   3      3    7

# Block Undulating
# ----------------------------------
# This is a combination of Block Variant (undulation in the steps) and
# Undulating (undulation in reps)
vertical_block_undulating(c(8, 6, 4))
#>    index step set set_id reps
#> 1      1   -2   1      1    8
#> 2      1   -2   2      2    6
#> 3      1   -2   3      3    4
#> 4      2   -1   1      1    6
#> 5      2   -1   2      2    4
#> 6      2   -1   3      3    2
#> 7      3   -3   1      1    7
#> 8      3   -3   2      2    5
#> 9      3   -3   3      3    3
#> 10     4    0   1      1    5
#> 11     4    0   2      2    3
#> 12     4    0   3      3    1

# Volume-Intensity
# ----------------------------------
vertical_volume_intensity(c(6, 6, 6))
#>    index step set set_id reps
#> 1      1   -3   1      1    6
#> 2      1   -3   2      2    6
#> 3      1   -3   3      3    6
#> 4      2   -2   1      1    6
#> 5      2   -2   2      2    6
#> 6      2   -2   3      3    6
#> 7      3   -1   1      1    3
#> 8      3   -1   2      2    3
#> 9      3   -1   3      3    3
#> 10     4    0   1      1    3
#> 11     4    0   2      2    3
#> 12     4    0   3      3    3

# Rep Accumulation
# --------------------------
scheme_rep_acc()
#>    index step set reps  adjustment perc_1RM
#> 1      1    0   1    7 -0.04545455 0.704733
#> 2      1    0   2    7 -0.04545455 0.704733
#> 3      1    0   3    7 -0.04545455 0.704733
#> 4      2    0   1    8 -0.04545455 0.704733
#> 5      2    0   2    8 -0.04545455 0.704733
#> 6      2    0   3    8 -0.04545455 0.704733
#> 7      3    0   1    9 -0.04545455 0.704733
#> 8      3    0   2    9 -0.04545455 0.704733
#> 9      3    0   3    9 -0.04545455 0.704733
#> 10     4    0   1   10 -0.04545455 0.704733
#> 11     4    0   2   10 -0.04545455 0.704733
#> 12     4    0   3   10 -0.04545455 0.704733

# Generate Wave scheme with rep accumulation vertical progression
# This functions doesn't allow you to use different vertical planning
# options
scheme <- scheme_rep_acc(reps = c(10, 8, 6), adjustment = c(-0.1, -0.05, 0))
plot(scheme)


# Other options is to use `.vertical_rep_accumulation.post()` and
# apply it after
# The default vertical progression is `vertical_const()`
scheme <- scheme_wave(reps = c(10, 8, 6), adjustment = c(-0.1, -0.05, 0))

.vertical_rep_accumulation.post(scheme)
#>    index step set reps adjustment  perc_1RM
#> 1      1    0   1    7         NA 0.6047330
#> 2      1    0   2    5         NA 0.6987308
#> 3      1    0   3    3         NA 0.7971086
#> 4      2    0   1    8         NA 0.6047330
#> 5      2    0   2    6         NA 0.6987308
#> 6      2    0   3    4         NA 0.7971086
#> 7      3    0   1    9         NA 0.6047330
#> 8      3    0   2    7         NA 0.6987308
#> 9      3    0   3    5         NA 0.7971086
#> 10     4    0   1   10         NA 0.6047330
#> 11     4    0   2    8         NA 0.6987308
#> 12     4    0   3    6         NA 0.7971086

# We can also create "undulating" rep decrements
.vertical_rep_accumulation.post(
  scheme,
  rep_decrement = c(-3, -1, -2, 0)
)
#>    index step set reps adjustment  perc_1RM
#> 1      1    0   1    7         NA 0.6047330
#> 2      1    0   2    5         NA 0.6987308
#> 3      1    0   3    3         NA 0.7971086
#> 4      2    0   1    9         NA 0.6047330
#> 5      2    0   2    7         NA 0.6987308
#> 6      2    0   3    5         NA 0.7971086
#> 7      3    0   1    8         NA 0.6047330
#> 8      3    0   2    6         NA 0.6987308
#> 9      3    0   3    4         NA 0.7971086
#> 10     4    0   1   10         NA 0.6047330
#> 11     4    0   2    8         NA 0.6987308
#> 12     4    0   3    6         NA 0.7971086

# `scheme_rep_acc` will not allow you to generate `scheme_ladder()`
# and `scheme_scheme_light_heavy()`
# You must use `.vertical_rep_accumulation.post()` to do so
scheme <- scheme_ladder()
scheme <- .vertical_rep_accumulation.post(scheme)
plot(scheme)


# Please note that reps < 1 are removed. If you do not want this,
# use `remove_reps = FALSE` parameter
scheme <- scheme_ladder()
scheme <- .vertical_rep_accumulation.post(scheme, remove_reps = FALSE)
plot(scheme)