diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index a6c4154e..f2801a50 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -39,6 +39,7 @@ jobs:
pip install -r ./json-spec-engine/requirements.txt
python ./json-spec-engine/docs/spec2html.py -i ./polyfem/json-specs/input-spec.json --include-dirs ./polyfem/json-specs ./polysolve -o ./docs/_json_spec.md
python ./json-spec-engine/scripts/generate_defaults.py -i ./polyfem/json-specs/input-spec.json --include-dirs ./polyfem/json-specs ./polysolve -o ./docs/_json_defaults.json
+ python ./json-spec-engine/docs/spec2html.py -i ./polyfem/json-specs/opt-input-spec.json --include-dirs ./polyfem/json-specs ./polysolve -o ./docs/_opt_input_spec.md
cp ./polyfem/LICENSE ./docs/_polyfem_license.txt
- name: Deploy MkDocs
diff --git a/docs/_opt_input_spec.md b/docs/_opt_input_spec.md
new file mode 100644
index 00000000..2e0e85ae
--- /dev/null
+++ b/docs/_opt_input_spec.md
@@ -0,0 +1,10881 @@
+
+
+
+
+
+
+
+
+
+!!! json-spec "`/` (`object`)"
+ ```
+ /
+ ```
+
Description
+ Root of the configuration file.
+ Required
+
+
+
+
+
+ ??? json-spec "`/parameters` (`list`)"
+ ```
+ /parameters
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/parameters/*` (`object`)"
+ ```
+ /parameters/*
+ ```
+ Description
+ TODO
+ Optional
+
+
+
+ ??? json-spec "`/parameters/*/number`"
+ ```
+ /parameters/*/number
+ ```
+
+
+ === "`/parameters/*/number` (`int`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+ === "`/parameters/*/number` (`object`)"
+ Description
+ TODO
+
+ **Default**: `None`
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+ === "`/parameters/*/number` (`object`)"
+ Description
+ TODO
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/parameters/*/initial`"
+ ```
+ /parameters/*/initial
+ ```
+
+
+ === "`/parameters/*/initial` (`list`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/parameters/*/initial/*` (`float`)"
+ ```
+ /parameters/*/initial/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+ === "`/parameters/*/initial` (`float`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation` (`list`)"
+ ```
+ /variable_to_simulation
+ ```
+ Description
+ A list of mappings from the raw optimization variable to parameters in states.
+
+
+
+ ??? json-spec "`/variable_to_simulation/*`"
+ ```
+ /variable_to_simulation/*
+ ```
+
+
+ === "shape"
+
+ **Type**: shape
+ Description
+ FIXME: Missing documentation in the specification.
+ Required
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/state`"
+ ```
+ /variable_to_simulation/*/state
+ ```
+
+
+ === "`/variable_to_simulation/*/state` (`int`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+ === "`/variable_to_simulation/*/state` (`list`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/state/*` (`int`)"
+ ```
+ /variable_to_simulation/*/state/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['shape', 'elastic', 'friction', 'damping', 'macro-strain', 'initial', 'dirichlet', 'pressure']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition` (`list`)"
+ ```
+ /variable_to_simulation/*/composition
+ ```
+ Description
+ list of parametrizations that maps raw optimization variables to parameters in simulations
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*`"
+ ```
+ /variable_to_simulation/*/composition/*
+ ```
+
+
+ === "bounded-biharmonic-weights"
+
+ **Type**: bounded-biharmonic-weights
+ Description
+ TODO
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ === "scalar-velocity-parametrization"
+
+ **Type**: scalar-velocity-parametrization
+ Description
+ TODO
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+ === "append-const"
+
+ **Type**: append-const
+ Description
+ Append repeated constant at the end of the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/value` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/value
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/size` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/size
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/start` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/start
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "append-values"
+
+ **Type**: append-values
+ Description
+ Append a list of constants at the end of the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/values` (`list`)"
+ ```
+ /variable_to_simulation/*/composition/*/values
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/values/*` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/values/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "slice"
+
+ **Type**: slice
+ Description
+ Ouputs x[from:to], where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/from` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/from
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/to` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/to
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/parameter_index` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/parameter_index
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/last` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/last
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "power"
+
+ **Type**: power
+ Description
+ Ouputs x ^ power, where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/power` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/power
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "exp"
+
+ **Type**: exp
+ Description
+ Ouputs exp(x), where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/from` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/from
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/to` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/to
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "scale"
+
+ **Type**: scale
+ Description
+ Ouputs x * value, where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/value` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/value
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "per-body-to-per-elem"
+
+ **Type**: per-body-to-per-elem
+ Description
+ From per volume selection to per element.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "per-body-to-per-node"
+
+ **Type**: per-body-to-per-node
+ Description
+ From per volume selection to per FE node.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "E-nu-to-lambda-mu"
+
+ **Type**: E-nu-to-lambda-mu
+ Description
+ FIXME: Missing documentation in the specification.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/is_volume` (`bool`)"
+ ```
+ /variable_to_simulation/*/composition/*/is_volume
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "linear-filter"
+
+ **Type**: linear-filter
+ Description
+ Apply linear smoothing filter on a field per element.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_type` (`string`)"
+ ```
+ /variable_to_simulation/*/composite_map_type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `'none'`
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_indices`"
+ ```
+ /variable_to_simulation/*/composite_map_indices
+ ```
+
+
+ === "`/variable_to_simulation/*/composite_map_indices` (`file`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+ === "`/variable_to_simulation/*/composite_map_indices` (`list`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_indices/*` (`int`)"
+ ```
+ /variable_to_simulation/*/composite_map_indices/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+ === "elastic"
+
+ **Type**: elastic
+ Description
+ FIXME: Missing documentation in the specification.
+ Required
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/state`"
+ ```
+ /variable_to_simulation/*/state
+ ```
+
+
+ === "`/variable_to_simulation/*/state` (`int`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+ === "`/variable_to_simulation/*/state` (`list`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/state/*` (`int`)"
+ ```
+ /variable_to_simulation/*/state/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['shape', 'elastic', 'friction', 'damping', 'macro-strain', 'initial', 'dirichlet', 'pressure']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition` (`list`)"
+ ```
+ /variable_to_simulation/*/composition
+ ```
+ Description
+ list of parametrizations that maps raw optimization variables to parameters in simulations
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*`"
+ ```
+ /variable_to_simulation/*/composition/*
+ ```
+
+
+ === "bounded-biharmonic-weights"
+
+ **Type**: bounded-biharmonic-weights
+ Description
+ TODO
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ === "scalar-velocity-parametrization"
+
+ **Type**: scalar-velocity-parametrization
+ Description
+ TODO
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+ === "append-const"
+
+ **Type**: append-const
+ Description
+ Append repeated constant at the end of the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/value` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/value
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/size` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/size
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/start` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/start
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "append-values"
+
+ **Type**: append-values
+ Description
+ Append a list of constants at the end of the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/values` (`list`)"
+ ```
+ /variable_to_simulation/*/composition/*/values
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/values/*` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/values/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "slice"
+
+ **Type**: slice
+ Description
+ Ouputs x[from:to], where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/from` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/from
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/to` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/to
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/parameter_index` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/parameter_index
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/last` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/last
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "power"
+
+ **Type**: power
+ Description
+ Ouputs x ^ power, where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/power` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/power
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "exp"
+
+ **Type**: exp
+ Description
+ Ouputs exp(x), where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/from` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/from
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/to` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/to
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "scale"
+
+ **Type**: scale
+ Description
+ Ouputs x * value, where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/value` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/value
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "per-body-to-per-elem"
+
+ **Type**: per-body-to-per-elem
+ Description
+ From per volume selection to per element.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "per-body-to-per-node"
+
+ **Type**: per-body-to-per-node
+ Description
+ From per volume selection to per FE node.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "E-nu-to-lambda-mu"
+
+ **Type**: E-nu-to-lambda-mu
+ Description
+ FIXME: Missing documentation in the specification.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/is_volume` (`bool`)"
+ ```
+ /variable_to_simulation/*/composition/*/is_volume
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "linear-filter"
+
+ **Type**: linear-filter
+ Description
+ Apply linear smoothing filter on a field per element.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_type` (`string`)"
+ ```
+ /variable_to_simulation/*/composite_map_type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `'none'`
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_indices`"
+ ```
+ /variable_to_simulation/*/composite_map_indices
+ ```
+
+
+ === "`/variable_to_simulation/*/composite_map_indices` (`file`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+ === "`/variable_to_simulation/*/composite_map_indices` (`list`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_indices/*` (`int`)"
+ ```
+ /variable_to_simulation/*/composite_map_indices/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+ === "friction"
+
+ **Type**: friction
+ Description
+ FIXME: Missing documentation in the specification.
+ Required
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/state`"
+ ```
+ /variable_to_simulation/*/state
+ ```
+
+
+ === "`/variable_to_simulation/*/state` (`int`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+ === "`/variable_to_simulation/*/state` (`list`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/state/*` (`int`)"
+ ```
+ /variable_to_simulation/*/state/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['shape', 'elastic', 'friction', 'damping', 'macro-strain', 'initial', 'dirichlet', 'pressure']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition` (`list`)"
+ ```
+ /variable_to_simulation/*/composition
+ ```
+ Description
+ list of parametrizations that maps raw optimization variables to parameters in simulations
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*`"
+ ```
+ /variable_to_simulation/*/composition/*
+ ```
+
+
+ === "bounded-biharmonic-weights"
+
+ **Type**: bounded-biharmonic-weights
+ Description
+ TODO
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ === "scalar-velocity-parametrization"
+
+ **Type**: scalar-velocity-parametrization
+ Description
+ TODO
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+ === "append-const"
+
+ **Type**: append-const
+ Description
+ Append repeated constant at the end of the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/value` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/value
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/size` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/size
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/start` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/start
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "append-values"
+
+ **Type**: append-values
+ Description
+ Append a list of constants at the end of the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/values` (`list`)"
+ ```
+ /variable_to_simulation/*/composition/*/values
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/values/*` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/values/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "slice"
+
+ **Type**: slice
+ Description
+ Ouputs x[from:to], where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/from` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/from
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/to` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/to
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/parameter_index` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/parameter_index
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/last` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/last
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "power"
+
+ **Type**: power
+ Description
+ Ouputs x ^ power, where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/power` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/power
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "exp"
+
+ **Type**: exp
+ Description
+ Ouputs exp(x), where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/from` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/from
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/to` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/to
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "scale"
+
+ **Type**: scale
+ Description
+ Ouputs x * value, where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/value` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/value
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "per-body-to-per-elem"
+
+ **Type**: per-body-to-per-elem
+ Description
+ From per volume selection to per element.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "per-body-to-per-node"
+
+ **Type**: per-body-to-per-node
+ Description
+ From per volume selection to per FE node.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "E-nu-to-lambda-mu"
+
+ **Type**: E-nu-to-lambda-mu
+ Description
+ FIXME: Missing documentation in the specification.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/is_volume` (`bool`)"
+ ```
+ /variable_to_simulation/*/composition/*/is_volume
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "linear-filter"
+
+ **Type**: linear-filter
+ Description
+ Apply linear smoothing filter on a field per element.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_type` (`string`)"
+ ```
+ /variable_to_simulation/*/composite_map_type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `'none'`
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_indices`"
+ ```
+ /variable_to_simulation/*/composite_map_indices
+ ```
+
+
+ === "`/variable_to_simulation/*/composite_map_indices` (`file`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+ === "`/variable_to_simulation/*/composite_map_indices` (`list`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_indices/*` (`int`)"
+ ```
+ /variable_to_simulation/*/composite_map_indices/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+ === "initial"
+
+ **Type**: initial
+ Description
+ FIXME: Missing documentation in the specification.
+ Required
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/state`"
+ ```
+ /variable_to_simulation/*/state
+ ```
+
+
+ === "`/variable_to_simulation/*/state` (`int`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+ === "`/variable_to_simulation/*/state` (`list`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/state/*` (`int`)"
+ ```
+ /variable_to_simulation/*/state/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['shape', 'elastic', 'friction', 'damping', 'macro-strain', 'initial', 'dirichlet', 'pressure']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition` (`list`)"
+ ```
+ /variable_to_simulation/*/composition
+ ```
+ Description
+ list of parametrizations that maps raw optimization variables to parameters in simulations
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*`"
+ ```
+ /variable_to_simulation/*/composition/*
+ ```
+
+
+ === "bounded-biharmonic-weights"
+
+ **Type**: bounded-biharmonic-weights
+ Description
+ TODO
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ === "scalar-velocity-parametrization"
+
+ **Type**: scalar-velocity-parametrization
+ Description
+ TODO
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+ === "append-const"
+
+ **Type**: append-const
+ Description
+ Append repeated constant at the end of the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/value` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/value
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/size` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/size
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/start` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/start
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "append-values"
+
+ **Type**: append-values
+ Description
+ Append a list of constants at the end of the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/values` (`list`)"
+ ```
+ /variable_to_simulation/*/composition/*/values
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/values/*` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/values/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "slice"
+
+ **Type**: slice
+ Description
+ Ouputs x[from:to], where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/from` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/from
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/to` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/to
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/parameter_index` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/parameter_index
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/last` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/last
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "power"
+
+ **Type**: power
+ Description
+ Ouputs x ^ power, where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/power` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/power
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "exp"
+
+ **Type**: exp
+ Description
+ Ouputs exp(x), where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/from` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/from
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/to` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/to
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "scale"
+
+ **Type**: scale
+ Description
+ Ouputs x * value, where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/value` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/value
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "per-body-to-per-elem"
+
+ **Type**: per-body-to-per-elem
+ Description
+ From per volume selection to per element.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "per-body-to-per-node"
+
+ **Type**: per-body-to-per-node
+ Description
+ From per volume selection to per FE node.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "E-nu-to-lambda-mu"
+
+ **Type**: E-nu-to-lambda-mu
+ Description
+ FIXME: Missing documentation in the specification.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/is_volume` (`bool`)"
+ ```
+ /variable_to_simulation/*/composition/*/is_volume
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "linear-filter"
+
+ **Type**: linear-filter
+ Description
+ Apply linear smoothing filter on a field per element.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_type` (`string`)"
+ ```
+ /variable_to_simulation/*/composite_map_type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `'none'`
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_indices`"
+ ```
+ /variable_to_simulation/*/composite_map_indices
+ ```
+
+
+ === "`/variable_to_simulation/*/composite_map_indices` (`file`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+ === "`/variable_to_simulation/*/composite_map_indices` (`list`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_indices/*` (`int`)"
+ ```
+ /variable_to_simulation/*/composite_map_indices/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+ === "dirichlet"
+
+ **Type**: dirichlet
+ Description
+ FIXME: Missing documentation in the specification.
+ Required
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/state`"
+ ```
+ /variable_to_simulation/*/state
+ ```
+
+
+ === "`/variable_to_simulation/*/state` (`int`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+ === "`/variable_to_simulation/*/state` (`list`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/state/*` (`int`)"
+ ```
+ /variable_to_simulation/*/state/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['shape', 'elastic', 'friction', 'damping', 'macro-strain', 'initial', 'dirichlet', 'pressure']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition` (`list`)"
+ ```
+ /variable_to_simulation/*/composition
+ ```
+ Description
+ list of parametrizations that maps raw optimization variables to parameters in simulations
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*`"
+ ```
+ /variable_to_simulation/*/composition/*
+ ```
+
+
+ === "bounded-biharmonic-weights"
+
+ **Type**: bounded-biharmonic-weights
+ Description
+ TODO
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ === "scalar-velocity-parametrization"
+
+ **Type**: scalar-velocity-parametrization
+ Description
+ TODO
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+ === "append-const"
+
+ **Type**: append-const
+ Description
+ Append repeated constant at the end of the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/value` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/value
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/size` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/size
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/start` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/start
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "append-values"
+
+ **Type**: append-values
+ Description
+ Append a list of constants at the end of the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/values` (`list`)"
+ ```
+ /variable_to_simulation/*/composition/*/values
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/values/*` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/values/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "slice"
+
+ **Type**: slice
+ Description
+ Ouputs x[from:to], where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/from` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/from
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/to` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/to
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/parameter_index` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/parameter_index
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/last` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/last
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "power"
+
+ **Type**: power
+ Description
+ Ouputs x ^ power, where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/power` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/power
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "exp"
+
+ **Type**: exp
+ Description
+ Ouputs exp(x), where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/from` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/from
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/to` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/to
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "scale"
+
+ **Type**: scale
+ Description
+ Ouputs x * value, where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/value` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/value
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "per-body-to-per-elem"
+
+ **Type**: per-body-to-per-elem
+ Description
+ From per volume selection to per element.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "per-body-to-per-node"
+
+ **Type**: per-body-to-per-node
+ Description
+ From per volume selection to per FE node.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "E-nu-to-lambda-mu"
+
+ **Type**: E-nu-to-lambda-mu
+ Description
+ FIXME: Missing documentation in the specification.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/is_volume` (`bool`)"
+ ```
+ /variable_to_simulation/*/composition/*/is_volume
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "linear-filter"
+
+ **Type**: linear-filter
+ Description
+ Apply linear smoothing filter on a field per element.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_type` (`string`)"
+ ```
+ /variable_to_simulation/*/composite_map_type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `'none'`
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_indices`"
+ ```
+ /variable_to_simulation/*/composite_map_indices
+ ```
+
+
+ === "`/variable_to_simulation/*/composite_map_indices` (`file`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+ === "`/variable_to_simulation/*/composite_map_indices` (`list`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_indices/*` (`int`)"
+ ```
+ /variable_to_simulation/*/composite_map_indices/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+ === "pressure"
+
+ **Type**: pressure
+ Description
+ FIXME: Missing documentation in the specification.
+ Required
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/state`"
+ ```
+ /variable_to_simulation/*/state
+ ```
+
+
+ === "`/variable_to_simulation/*/state` (`int`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+ === "`/variable_to_simulation/*/state` (`list`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/state/*` (`int`)"
+ ```
+ /variable_to_simulation/*/state/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['shape', 'elastic', 'friction', 'damping', 'macro-strain', 'initial', 'dirichlet', 'pressure']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition` (`list`)"
+ ```
+ /variable_to_simulation/*/composition
+ ```
+ Description
+ list of parametrizations that maps raw optimization variables to parameters in simulations
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*`"
+ ```
+ /variable_to_simulation/*/composition/*
+ ```
+
+
+ === "bounded-biharmonic-weights"
+
+ **Type**: bounded-biharmonic-weights
+ Description
+ TODO
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ === "scalar-velocity-parametrization"
+
+ **Type**: scalar-velocity-parametrization
+ Description
+ TODO
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+ === "append-const"
+
+ **Type**: append-const
+ Description
+ Append repeated constant at the end of the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/value` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/value
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/size` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/size
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/start` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/start
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "append-values"
+
+ **Type**: append-values
+ Description
+ Append a list of constants at the end of the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/values` (`list`)"
+ ```
+ /variable_to_simulation/*/composition/*/values
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/values/*` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/values/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "slice"
+
+ **Type**: slice
+ Description
+ Ouputs x[from:to], where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/from` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/from
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/to` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/to
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/parameter_index` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/parameter_index
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/last` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/last
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "power"
+
+ **Type**: power
+ Description
+ Ouputs x ^ power, where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/power` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/power
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "exp"
+
+ **Type**: exp
+ Description
+ Ouputs exp(x), where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/from` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/from
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/to` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/to
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "scale"
+
+ **Type**: scale
+ Description
+ Ouputs x * value, where x is the input vector
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/value` (`float`)"
+ ```
+ /variable_to_simulation/*/composition/*/value
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "per-body-to-per-elem"
+
+ **Type**: per-body-to-per-elem
+ Description
+ From per volume selection to per element.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "per-body-to-per-node"
+
+ **Type**: per-body-to-per-node
+ Description
+ From per volume selection to per FE node.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "E-nu-to-lambda-mu"
+
+ **Type**: E-nu-to-lambda-mu
+ Description
+ FIXME: Missing documentation in the specification.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/is_volume` (`bool`)"
+ ```
+ /variable_to_simulation/*/composition/*/is_volume
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+ === "linear-filter"
+
+ **Type**: linear-filter
+ Description
+ Apply linear smoothing filter on a field per element.
+ Required
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/state` (`int`)"
+ ```
+ /variable_to_simulation/*/composition/*/state
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composition/*/type` (`string`)"
+ ```
+ /variable_to_simulation/*/composition/*/type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Options:** `['per-body-to-per-elem', 'per-body-to-per-node', 'E-nu-to-lambda-mu', 'slice', 'exp', 'scale', 'power', 'append-values', 'append-const', 'linear-filter', 'bounded-biharmonic-weights', 'scalar-velocity-parametrization']`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_type` (`string`)"
+ ```
+ /variable_to_simulation/*/composite_map_type
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `'none'`
+
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_indices`"
+ ```
+ /variable_to_simulation/*/composite_map_indices
+ ```
+
+
+ === "`/variable_to_simulation/*/composite_map_indices` (`file`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+ === "`/variable_to_simulation/*/composite_map_indices` (`list`)"
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+ ??? json-spec "`/variable_to_simulation/*/composite_map_indices/*` (`int`)"
+ ```
+ /variable_to_simulation/*/composite_map_indices/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/states` (`list`)"
+ ```
+ /states
+ ```
+ Description
+ Specify a numebr of simulations used in the optimization.
+
+
+
+
+
+ ??? json-spec "`/states/*` (`object`)"
+ ```
+ /states/*
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+ Required
+
+
+
+
+
+ ??? json-spec "`/states/*/path` (`file`)"
+ ```
+ /states/*/path
+ ```
+ Description
+ The json file path for this state.
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/states/*/initial_guess` (`int`)"
+ ```
+ /states/*/initial_guess
+ ```
+ Description
+ Specify the state ID, whose solution is used to initialize the solve in this state.
+
+ **Default**: `-1`
+
+
+
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/output` (`object`)"
+ ```
+ /output
+ ```
+ Description
+ Optimization output options
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/output/log` (`object`)"
+ ```
+ /output/log
+ ```
+ Description
+ Setting for the output log.
+
+ **Default**: `None`
+ Optional
+
+
+
+ ??? json-spec "`/output/log/level`"
+ ```
+ /output/log/level
+ ```
+
+
+ === "`/output/log/level` (`int`)"
+ Description
+ Level of logging, 0 trace, 1 debug, 2 info, 3 warning, 4 error, 5 critical, and 6 off.
+
+ **Range:** `[0, 6]`
+
+
+
+ === "`/output/log/level` (`string`)"
+ Description
+ Level of logging.
+
+ **Default**: `'debug'`
+
+ **Options:** `['trace', 'debug', 'info', 'warning', 'error', 'critical', 'off']`
+
+
+
+
+
+
+ ??? json-spec "`/output/log/file_level`"
+ ```
+ /output/log/file_level
+ ```
+
+
+ === "`/output/log/file_level` (`int`)"
+ Description
+ Level of logging to a file, 0 trace, 1 debug, 2 info, 3 warning, 4 error, 5 critical, and 6 off.
+
+ **Range:** `[0, 6]`
+
+
+
+ === "`/output/log/file_level` (`string`)"
+ Description
+ Level of logging.
+
+ **Default**: `'trace'`
+
+ **Options:** `['trace', 'debug', 'info', 'warning', 'error', 'critical', 'off']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/output/log/path` (`string`)"
+ ```
+ /output/log/path
+ ```
+ Description
+ File where to save the log; empty string is output to terminal.
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/output/log/quiet` (`bool`)"
+ ```
+ /output/log/quiet
+ ```
+ Description
+ Disable cout for logging.
+
+ **Default**: `False`
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/output/save_frequency` (`int`)"
+ ```
+ /output/save_frequency
+ ```
+ Description
+ Optimization output frequency
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/output/directory` (`string`)"
+ ```
+ /output/directory
+ ```
+ Description
+ Directory for output files.
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/output/solution` (`file`)"
+ ```
+ /output/solution
+ ```
+ Description
+ Export optimization variables to file at every iteration.
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver` (`object`)"
+ ```
+ /solver
+ ```
+ Description
+ Optimization solver parameters.
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear` (`object`)"
+ ```
+ /solver/nonlinear
+ ```
+ Description
+ Settings for nonlinear solver. Interior-loop linear solver settings are defined in the solver/linear section.
+
+ **Default**: `None`
+ Optional
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver`"
+ ```
+ /solver/nonlinear/solver
+ ```
+
+
+ === "`/solver/nonlinear/solver` (`string`)"
+ Description
+ Nonlinear solver type
+
+ **Default**: `'Newton'`
+
+ **Options:** `['Newton', 'DenseNewton', 'GradientDescent', 'ADAM', 'StochasticADAM', 'StochasticGradientDescent', 'L-BFGS', 'BFGS', 'L-BFGS-B', 'MMA']`
+
+
+
+ === "`/solver/nonlinear/solver` (`list`)"
+ Description
+ List of solvers for ballback. Eg, [{'type':'Newton'}, {'type':'L-BFGS'}, {'type':'GradientDescent'}] will solve using Newton, in case of failure will fallback to L-BFGS and eventually to GradientDescent
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*`"
+ ```
+ /solver/nonlinear/solver/*
+ ```
+
+
+ === "Newton"
+
+ **Type**: Newton
+ Description
+ Options for Newton.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/residual_tolerance` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/residual_tolerance
+ ```
+ Description
+ Tolerance of the linear system residual. If residual is above, the direction is rejected.
+
+ **Default**: `1e-05`
+
+
+
+
+
+
+ === "ProjectedNewton"
+
+ **Type**: ProjectedNewton
+ Description
+ Options for projected Newton.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/residual_tolerance` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/residual_tolerance
+ ```
+ Description
+ Tolerance of the linear system residual. If residual is above, the direction is rejected.
+
+ **Default**: `1e-05`
+
+
+
+
+
+
+ === "RegularizedNewton"
+
+ **Type**: RegularizedNewton
+ Description
+ Options for regularized Newton.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/residual_tolerance` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/residual_tolerance
+ ```
+ Description
+ Tolerance of the linear system residual. If residual is above, the direction is rejected.
+
+ **Default**: `1e-05`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/reg_weight_min` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/reg_weight_min
+ ```
+ Description
+ Minimum regulariztion weight.
+
+ **Default**: `1e-08`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/reg_weight_max` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/reg_weight_max
+ ```
+ Description
+ Maximum regulariztion weight.
+
+ **Default**: `100000000.0`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/reg_weight_inc` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/reg_weight_inc
+ ```
+ Description
+ Regulariztion weight increment.
+
+ **Default**: `10`
+
+
+
+
+
+
+ === "RegularizedProjectedNewton"
+
+ **Type**: RegularizedProjectedNewton
+ Description
+ Options for regularized projected Newton.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/residual_tolerance` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/residual_tolerance
+ ```
+ Description
+ Tolerance of the linear system residual. If residual is above, the direction is rejected.
+
+ **Default**: `1e-05`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/reg_weight_min` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/reg_weight_min
+ ```
+ Description
+ Minimum regulariztion weight.
+
+ **Default**: `1e-08`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/reg_weight_max` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/reg_weight_max
+ ```
+ Description
+ Maximum regulariztion weight.
+
+ **Default**: `100000000.0`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/reg_weight_inc` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/reg_weight_inc
+ ```
+ Description
+ Regulariztion weight increment.
+
+ **Default**: `10`
+
+
+
+
+
+
+ === "DenseNewton"
+
+ **Type**: DenseNewton
+ Description
+ Options for Newton.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/residual_tolerance` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/residual_tolerance
+ ```
+ Description
+ Tolerance of the linear system residual. If residual is above, the direction is rejected.
+
+ **Default**: `1e-05`
+
+
+
+
+
+
+ === "DenseProjectedNewton"
+
+ **Type**: DenseProjectedNewton
+ Description
+ Options for projected Newton.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/residual_tolerance` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/residual_tolerance
+ ```
+ Description
+ Tolerance of the linear system residual. If residual is above, the direction is rejected.
+
+ **Default**: `1e-05`
+
+
+
+
+
+
+ === "DenseRegularizedNewton"
+
+ **Type**: DenseRegularizedNewton
+ Description
+ Options for regularized Newton.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/residual_tolerance` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/residual_tolerance
+ ```
+ Description
+ Tolerance of the linear system residual. If residual is above, the direction is rejected.
+
+ **Default**: `1e-05`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/reg_weight_min` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/reg_weight_min
+ ```
+ Description
+ Minimum regulariztion weight.
+
+ **Default**: `1e-08`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/reg_weight_max` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/reg_weight_max
+ ```
+ Description
+ Maximum regulariztion weight.
+
+ **Default**: `100000000.0`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/reg_weight_inc` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/reg_weight_inc
+ ```
+ Description
+ Regulariztion weight increment.
+
+ **Default**: `10`
+
+
+
+
+
+
+ === "DenseRegularizedProjectedNewton"
+
+ **Type**: DenseRegularizedProjectedNewton
+ Description
+ Options for projected regularized Newton.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/residual_tolerance` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/residual_tolerance
+ ```
+ Description
+ Tolerance of the linear system residual. If residual is above, the direction is rejected.
+
+ **Default**: `1e-05`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/reg_weight_min` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/reg_weight_min
+ ```
+ Description
+ Minimum regulariztion weight.
+
+ **Default**: `1e-08`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/reg_weight_max` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/reg_weight_max
+ ```
+ Description
+ Maximum regulariztion weight.
+
+ **Default**: `100000000.0`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/reg_weight_inc` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/reg_weight_inc
+ ```
+ Description
+ Regulariztion weight increment.
+
+ **Default**: `10`
+
+
+
+
+
+
+ === "GradientDescent"
+
+ **Type**: GradientDescent
+ Description
+ Options for Gradient Descent.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+
+
+
+ === "StochasticGradientDescent"
+
+ **Type**: StochasticGradientDescent
+ Description
+ Options for Stochastic Gradient Descent.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/erase_component_probability` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/erase_component_probability
+ ```
+ Description
+ Probability of erasing a component on the gradient for stochastic solvers.
+
+ **Default**: `0.3`
+
+
+
+
+
+
+ === "L-BFGS"
+
+ **Type**: L-BFGS
+ Description
+ Options for L-BFGS.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/history_size` (`int`)"
+ ```
+ /solver/nonlinear/solver/*/history_size
+ ```
+ Description
+ The number of corrections to approximate the inverse Hessian matrix.
+
+ **Default**: `6`
+
+
+
+
+
+
+ === "BFGS"
+
+ **Type**: BFGS
+ Description
+ Options for BFGS.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+
+
+
+ === "ADAM"
+
+ **Type**: ADAM
+ Description
+ Options for ADAM.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/alpha` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/alpha
+ ```
+ Description
+ Parameter alpha for ADAM.
+
+ **Default**: `0.001`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/beta_1` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/beta_1
+ ```
+ Description
+ Parameter beta_1 for ADAM.
+
+ **Default**: `0.9`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/beta_2` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/beta_2
+ ```
+ Description
+ Parameter beta_2 for ADAM.
+
+ **Default**: `0.999`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/epsilon` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/epsilon
+ ```
+ Description
+ Parameter epsilon for ADAM.
+
+ **Default**: `1e-08`
+
+
+
+
+
+
+ === "StochasticADAM"
+
+ **Type**: StochasticADAM
+ Description
+ Options for ADAM.
+ Required
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/type` (`string`)"
+ ```
+ /solver/nonlinear/solver/*/type
+ ```
+ Description
+ Nonlinear solver type
+
+ **Options:** `['Newton', 'DenseNewton', 'ProjectedNewton', 'DenseProjectedNewton', 'RegularizedNewton', 'DenseRegularizedNewton', 'RegularizedProjectedNewton', 'DenseRegularizedProjectedNewton', 'GradientDescent', 'StochasticGradientDescent', 'ADAM', 'StochasticADAM', 'L-BFGS', 'BFGS']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/alpha` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/alpha
+ ```
+ Description
+ Parameter alpha for ADAM.
+
+ **Default**: `0.001`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/beta_1` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/beta_1
+ ```
+ Description
+ Parameter beta_1 for ADAM.
+
+ **Default**: `0.9`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/beta_2` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/beta_2
+ ```
+ Description
+ Parameter beta_2 for ADAM.
+
+ **Default**: `0.999`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/epsilon` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/epsilon
+ ```
+ Description
+ Parameter epsilon for ADAM.
+
+ **Default**: `1e-08`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/solver/*/erase_component_probability` (`float`)"
+ ```
+ /solver/nonlinear/solver/*/erase_component_probability
+ ```
+ Description
+ Probability of erasing a component on the gradient for stochastic solvers.
+
+ **Default**: `0.3`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/x_delta` (`float`)"
+ ```
+ /solver/nonlinear/x_delta
+ ```
+ Description
+ Stopping criterion: minimal change of the variables x for the iterations to continue. Computed as the L2 norm of x divide by the time step.
+
+ **Default**: `0`
+
+ **Range:** `[0, inf]`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/grad_norm` (`float`)"
+ ```
+ /solver/nonlinear/grad_norm
+ ```
+ Description
+ Stopping criterion: Minimal gradient norm for the iterations to continue.
+
+ **Default**: `1e-08`
+
+ **Range:** `[0, inf]`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/first_grad_norm_tol` (`float`)"
+ ```
+ /solver/nonlinear/first_grad_norm_tol
+ ```
+ Description
+ Minimal gradient norm for the iterations to not start, assume we already are at a minimum.
+
+ **Default**: `1e-10`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/max_iterations` (`int`)"
+ ```
+ /solver/nonlinear/max_iterations
+ ```
+ Description
+ Maximum number of iterations for a nonlinear solve.
+
+ **Default**: `500`
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/iterations_per_strategy`"
+ ```
+ /solver/nonlinear/iterations_per_strategy
+ ```
+
+
+ === "`/solver/nonlinear/iterations_per_strategy` (`int`)"
+ Description
+ Number of iterations for every substrategy before reset.
+
+ **Default**: `5`
+
+
+
+ === "`/solver/nonlinear/iterations_per_strategy` (`list`)"
+ Description
+ Number of iterations for every substrategy before reset.
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/iterations_per_strategy/*` (`int`)"
+ ```
+ /solver/nonlinear/iterations_per_strategy/*
+ ```
+ Description
+ Number of iterations for every substrategy before reset.
+
+ **Default**: `5`
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/line_search` (`object`)"
+ ```
+ /solver/nonlinear/line_search
+ ```
+ Description
+ Settings for line-search in the nonlinear solver
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/line_search/method` (`string`)"
+ ```
+ /solver/nonlinear/line_search/method
+ ```
+ Description
+ Line-search type
+
+ **Default**: `'RobustArmijo'`
+
+ **Options:** `['Armijo', 'RobustArmijo', 'Backtracking', 'None']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/line_search/use_grad_norm_tol` (`float`)"
+ ```
+ /solver/nonlinear/line_search/use_grad_norm_tol
+ ```
+ Description
+ When the energy is smaller than use_grad_norm_tol, line-search uses norm of gradient instead of energy
+
+ **Default**: `1e-06`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/line_search/min_step_size` (`float`)"
+ ```
+ /solver/nonlinear/line_search/min_step_size
+ ```
+ Description
+ Mimimum step size
+
+ **Default**: `1e-10`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/line_search/max_step_size_iter` (`int`)"
+ ```
+ /solver/nonlinear/line_search/max_step_size_iter
+ ```
+ Description
+ Number of iterations
+
+ **Default**: `30`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/line_search/min_step_size_final` (`float`)"
+ ```
+ /solver/nonlinear/line_search/min_step_size_final
+ ```
+ Description
+ Mimimum step size for last descent strategy
+
+ **Default**: `1e-20`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/line_search/max_step_size_iter_final` (`int`)"
+ ```
+ /solver/nonlinear/line_search/max_step_size_iter_final
+ ```
+ Description
+ Number of iterations for last descent strategy
+
+ **Default**: `100`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/line_search/default_init_step_size` (`float`)"
+ ```
+ /solver/nonlinear/line_search/default_init_step_size
+ ```
+ Description
+ Initial step size
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/line_search/step_ratio` (`float`)"
+ ```
+ /solver/nonlinear/line_search/step_ratio
+ ```
+ Description
+ Ratio used to decrease the step
+
+ **Default**: `0.5`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/line_search/Armijo` (`object`)"
+ ```
+ /solver/nonlinear/line_search/Armijo
+ ```
+ Description
+ Options for Armijo.
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/line_search/Armijo/c` (`float`)"
+ ```
+ /solver/nonlinear/line_search/Armijo/c
+ ```
+ Description
+ Armijo c parameter.
+
+ **Default**: `0.0001`
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/line_search/RobustArmijo` (`object`)"
+ ```
+ /solver/nonlinear/line_search/RobustArmijo
+ ```
+ Description
+ Options for RobustArmijo.
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/line_search/RobustArmijo/delta_relative_tolerance` (`float`)"
+ ```
+ /solver/nonlinear/line_search/RobustArmijo/delta_relative_tolerance
+ ```
+ Description
+ Relative tolerance on E to switch to approximate.
+
+ **Default**: `0.1`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/allow_out_of_iterations` (`bool`)"
+ ```
+ /solver/nonlinear/allow_out_of_iterations
+ ```
+ Description
+ If false (default), an exception will be thrown when the nonlinear solver reaches the maximum number of iterations.
+
+ **Default**: `False`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/L-BFGS` (`object`)"
+ ```
+ /solver/nonlinear/L-BFGS
+ ```
+ Description
+ Options for LBFGS.
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/L-BFGS/history_size` (`int`)"
+ ```
+ /solver/nonlinear/L-BFGS/history_size
+ ```
+ Description
+ The number of corrections to approximate the inverse Hessian matrix.
+
+ **Default**: `6`
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/L-BFGS-B` (`object`)"
+ ```
+ /solver/nonlinear/L-BFGS-B
+ ```
+ Description
+ Options for the boxed L-BFGS.
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/L-BFGS-B/history_size` (`int`)"
+ ```
+ /solver/nonlinear/L-BFGS-B/history_size
+ ```
+ Description
+ The number of corrections to approximate the inverse Hessian matrix.
+
+ **Default**: `6`
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/Newton` (`object`)"
+ ```
+ /solver/nonlinear/Newton
+ ```
+ Description
+ Options for Newton.
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/Newton/residual_tolerance` (`float`)"
+ ```
+ /solver/nonlinear/Newton/residual_tolerance
+ ```
+ Description
+ Tolerance of the linear system residual. If residual is above, the direction is rejected.
+
+ **Default**: `1e-05`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/Newton/reg_weight_min` (`float`)"
+ ```
+ /solver/nonlinear/Newton/reg_weight_min
+ ```
+ Description
+ Minimum regulariztion weight.
+
+ **Default**: `1e-08`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/Newton/reg_weight_max` (`float`)"
+ ```
+ /solver/nonlinear/Newton/reg_weight_max
+ ```
+ Description
+ Maximum regulariztion weight.
+
+ **Default**: `100000000.0`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/Newton/reg_weight_inc` (`float`)"
+ ```
+ /solver/nonlinear/Newton/reg_weight_inc
+ ```
+ Description
+ Regulariztion weight increment.
+
+ **Default**: `10`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/Newton/force_psd_projection` (`bool`)"
+ ```
+ /solver/nonlinear/Newton/force_psd_projection
+ ```
+ Description
+ Force the Hessian to be PSD when using second order solvers (i.e., Newton's method).
+
+ **Default**: `False`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/Newton/use_psd_projection` (`bool`)"
+ ```
+ /solver/nonlinear/Newton/use_psd_projection
+ ```
+ Description
+ Use PSD as fallback using second order solvers (i.e., Newton's method).
+
+ **Default**: `True`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/Newton/use_psd_projection_in_regularized` (`bool`)"
+ ```
+ /solver/nonlinear/Newton/use_psd_projection_in_regularized
+ ```
+ Description
+ Use PSD in regularized Newton.
+
+ **Default**: `True`
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/ADAM` (`object`)"
+ ```
+ /solver/nonlinear/ADAM
+ ```
+ Description
+ Options for ADAM.
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/ADAM/alpha` (`float`)"
+ ```
+ /solver/nonlinear/ADAM/alpha
+ ```
+ Description
+ Parameter alpha for ADAM.
+
+ **Default**: `0.001`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/ADAM/beta_1` (`float`)"
+ ```
+ /solver/nonlinear/ADAM/beta_1
+ ```
+ Description
+ Parameter beta_1 for ADAM.
+
+ **Default**: `0.9`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/ADAM/beta_2` (`float`)"
+ ```
+ /solver/nonlinear/ADAM/beta_2
+ ```
+ Description
+ Parameter beta_2 for ADAM.
+
+ **Default**: `0.999`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/ADAM/epsilon` (`float`)"
+ ```
+ /solver/nonlinear/ADAM/epsilon
+ ```
+ Description
+ Parameter epsilon for ADAM.
+
+ **Default**: `1e-08`
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/StochasticADAM` (`object`)"
+ ```
+ /solver/nonlinear/StochasticADAM
+ ```
+ Description
+ Options for ADAM.
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/StochasticADAM/alpha` (`float`)"
+ ```
+ /solver/nonlinear/StochasticADAM/alpha
+ ```
+ Description
+ Parameter alpha for ADAM.
+
+ **Default**: `0.001`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/StochasticADAM/beta_1` (`float`)"
+ ```
+ /solver/nonlinear/StochasticADAM/beta_1
+ ```
+ Description
+ Parameter beta_1 for ADAM.
+
+ **Default**: `0.9`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/StochasticADAM/beta_2` (`float`)"
+ ```
+ /solver/nonlinear/StochasticADAM/beta_2
+ ```
+ Description
+ Parameter beta_2 for ADAM.
+
+ **Default**: `0.999`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/StochasticADAM/epsilon` (`float`)"
+ ```
+ /solver/nonlinear/StochasticADAM/epsilon
+ ```
+ Description
+ Parameter epsilon for ADAM.
+
+ **Default**: `1e-08`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/StochasticADAM/erase_component_probability` (`float`)"
+ ```
+ /solver/nonlinear/StochasticADAM/erase_component_probability
+ ```
+ Description
+ Probability of erasing a component on the gradient for ADAM.
+
+ **Default**: `0.3`
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/StochasticGradientDescent` (`object`)"
+ ```
+ /solver/nonlinear/StochasticGradientDescent
+ ```
+ Description
+ Options for Stochastic Gradient Descent.
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/StochasticGradientDescent/erase_component_probability` (`float`)"
+ ```
+ /solver/nonlinear/StochasticGradientDescent/erase_component_probability
+ ```
+ Description
+ Probability of erasing a component on the gradient for StochasticGradientDescent.
+
+ **Default**: `0.3`
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/box_constraints` (`object`)"
+ ```
+ /solver/nonlinear/box_constraints
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/box_constraints/bounds` (`list`)"
+ ```
+ /solver/nonlinear/box_constraints/bounds
+ ```
+ Description
+ Box constraints on optimization variables.
+
+
+
+ ??? json-spec "`/solver/nonlinear/box_constraints/bounds/*`"
+ ```
+ /solver/nonlinear/box_constraints/bounds/*
+ ```
+
+
+ === "`/solver/nonlinear/box_constraints/bounds/*` (`list`)"
+ Description
+ Box constraint values on optimization variables.
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/box_constraints/bounds/*/*` (`float`)"
+ ```
+ /solver/nonlinear/box_constraints/bounds/*/*
+ ```
+ Description
+ Box constraint values on optimization variables.
+
+
+
+
+
+
+ === "`/solver/nonlinear/box_constraints/bounds/*` (`float`)"
+ Description
+ Box constraint values on optimization variables.
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/box_constraints/max_change`"
+ ```
+ /solver/nonlinear/box_constraints/max_change
+ ```
+
+
+ === "`/solver/nonlinear/box_constraints/max_change` (`float`)"
+ Description
+ Maximum change of optimization variables in one iteration, only for solvers with box constraints. Negative value to disable this constraint.
+
+ **Default**: `-1`
+
+
+
+ === "`/solver/nonlinear/box_constraints/max_change` (`list`)"
+ Description
+ Maximum change of optimization variables in one iteration, only for solvers with box constraints.
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/box_constraints/max_change/*` (`float`)"
+ ```
+ /solver/nonlinear/box_constraints/max_change/*
+ ```
+ Description
+ Maximum change of every optimization variable in one iteration, only for solvers with box constraints.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/advanced` (`object`)"
+ ```
+ /solver/nonlinear/advanced
+ ```
+ Description
+ Nonlinear solver advanced options
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/advanced/f_delta` (`float`)"
+ ```
+ /solver/nonlinear/advanced/f_delta
+ ```
+ Description
+ Dangerous Option: Quit the optimization if the solver reduces the energy by less than f_delta for consecutive f_delta_step_tol steps.
+
+ **Default**: `0`
+
+ **Range:** `[0, inf]`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/advanced/f_delta_step_tol` (`int`)"
+ ```
+ /solver/nonlinear/advanced/f_delta_step_tol
+ ```
+ Description
+ Dangerous Option: Quit the optimization if the solver reduces the energy by less than f_delta for consecutive f_delta_step_tol steps.
+
+ **Default**: `100`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/advanced/derivative_along_delta_x_tol` (`float`)"
+ ```
+ /solver/nonlinear/advanced/derivative_along_delta_x_tol
+ ```
+ Description
+ Quit the optimization if the directional derivative along the descent direction is smaller than this tolerance.
+
+ **Default**: `0`
+
+ **Range:** `[0, inf]`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/advanced/apply_gradient_fd` (`string`)"
+ ```
+ /solver/nonlinear/advanced/apply_gradient_fd
+ ```
+ Description
+ Expensive Option: For every iteration of the nonlinear solver, run finite difference to verify gradient of energy.
+
+ **Default**: `'None'`
+
+ **Options:** `['None', 'DirectionalDerivative', 'FullFiniteDiff']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/nonlinear/advanced/gradient_fd_eps` (`float`)"
+ ```
+ /solver/nonlinear/advanced/gradient_fd_eps
+ ```
+ Description
+ Expensive Option: Eps for finite difference to verify gradient of energy.
+
+ **Default**: `1e-07`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/advanced` (`object`)"
+ ```
+ /solver/advanced
+ ```
+ Description
+ Advanced settings for arranging forward simulations
+
+ **Default**: `None`
+ Optional
+
+
+
+
+
+ ??? json-spec "`/solver/advanced/solve_in_parallel` (`bool`)"
+ ```
+ /solver/advanced/solve_in_parallel
+ ```
+ Description
+ Run forward simulations in parallel.
+
+ **Default**: `False`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/advanced/solve_in_order` (`list`)"
+ ```
+ /solver/advanced/solve_in_order
+ ```
+ Description
+ Run forward simulations in order.
+
+
+
+
+
+ ??? json-spec "`/solver/advanced/solve_in_order/*` (`int`)"
+ ```
+ /solver/advanced/solve_in_order/*
+ ```
+ Description
+ Id of forward simulations.
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/advanced/characteristic_length` (`float`)"
+ ```
+ /solver/advanced/characteristic_length
+ ```
+ Description
+ A scaling on the nonlinear problem for better stability.
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/advanced/enable_slim` (`bool`)"
+ ```
+ /solver/advanced/enable_slim
+ ```
+ Description
+ Whether to apply slim smoothing to the optimization when step is accepted.
+
+ **Default**: `False`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/advanced/smooth_line_search` (`bool`)"
+ ```
+ /solver/advanced/smooth_line_search
+ ```
+ Description
+ Whether to apply slim smoothing to the optimization line search.
+
+ **Default**: `False`
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/solver/max_threads` (`int`)"
+ ```
+ /solver/max_threads
+ ```
+ Description
+ Maximum number of threads used; 0 is unlimited.
+
+ **Default**: `0`
+
+ **Range:** `[0, inf]`
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/stopping_conditions` (`list`)"
+ ```
+ /stopping_conditions
+ ```
+ Description
+ A list of functionals. The optimization stops if these functionals are all negative, even if the objective gradient norm is not small enough.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals` (`list`)"
+ ```
+ /functionals
+ ```
+ Description
+ A list of functionals. Their sum is the functional being optimized.
+
+
+
+ ??? json-spec "`/functionals/*`"
+ ```
+ /functionals/*
+ ```
+
+
+ === "divide"
+
+ **Type**: divide
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/objective`"
+ ```
+ /functionals/*/objective
+ ```
+
+
+ === "`/functionals/*/objective` (`object`)"
+ Description
+ TODO
+
+
+
+ === "`/functionals/*/objective` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/objective/*` (`object`)"
+ ```
+ /functionals/*/objective/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "plus-const"
+
+ **Type**: plus-const
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/objective`"
+ ```
+ /functionals/*/objective
+ ```
+
+
+ === "`/functionals/*/objective` (`object`)"
+ Description
+ TODO
+
+
+
+ === "`/functionals/*/objective` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/objective/*` (`object`)"
+ ```
+ /functionals/*/objective/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/value` (`float`)"
+ ```
+ /functionals/*/value
+ ```
+ Description
+ TODO
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "power"
+
+ **Type**: power
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/objective`"
+ ```
+ /functionals/*/objective
+ ```
+
+
+ === "`/functionals/*/objective` (`object`)"
+ Description
+ TODO
+
+
+
+ === "`/functionals/*/objective` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/objective/*` (`object`)"
+ ```
+ /functionals/*/objective/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/power` (`float`)"
+ ```
+ /functionals/*/power
+ ```
+ Description
+ TODO
+
+ **Default**: `2`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "sdf-target"
+
+ **Type**: sdf-target
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/control_points` (`list`)"
+ ```
+ /functionals/*/control_points
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/control_points/*` (`list`)"
+ ```
+ /functionals/*/control_points/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/control_points/*/*` (`float`)"
+ ```
+ /functionals/*/control_points/*/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/control_points_grid` (`list`)"
+ ```
+ /functionals/*/control_points_grid
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/control_points_grid/*` (`list`)"
+ ```
+ /functionals/*/control_points_grid/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/control_points_grid/*/*` (`float`)"
+ ```
+ /functionals/*/control_points_grid/*/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/knots` (`list`)"
+ ```
+ /functionals/*/knots
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/knots/*` (`float`)"
+ ```
+ /functionals/*/knots/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/knots_u` (`list`)"
+ ```
+ /functionals/*/knots_u
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/knots_u/*` (`float`)"
+ ```
+ /functionals/*/knots_u/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/knots_v` (`list`)"
+ ```
+ /functionals/*/knots_v
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/knots_v/*` (`float`)"
+ ```
+ /functionals/*/knots_v/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection`"
+ ```
+ /functionals/*/surface_selection
+ ```
+
+
+ === "`/functionals/*/surface_selection` (`int`)"
+ Description
+ TODO
+
+
+
+ === "`/functionals/*/surface_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection/*` (`int`)"
+ ```
+ /functionals/*/surface_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+ === "mesh-target"
+
+ **Type**: mesh-target
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection`"
+ ```
+ /functionals/*/surface_selection
+ ```
+
+
+ === "`/functionals/*/surface_selection` (`int`)"
+ Description
+ TODO
+
+
+
+ === "`/functionals/*/surface_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection/*` (`int`)"
+ ```
+ /functionals/*/surface_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+ === "node-target"
+
+ **Type**: node-target
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "function-target"
+
+ **Type**: function-target
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/target_function` (`string`)"
+ ```
+ /functionals/*/target_function
+ ```
+ Description
+ TODO
+
+ **Default**: `'0'`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/target_function_gradient` (`list`)"
+ ```
+ /functionals/*/target_function_gradient
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/target_function_gradient/*` (`string`)"
+ ```
+ /functionals/*/target_function_gradient/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection`"
+ ```
+ /functionals/*/surface_selection
+ ```
+
+
+ === "`/functionals/*/surface_selection` (`int`)"
+ Description
+ TODO
+
+
+
+ === "`/functionals/*/surface_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection/*` (`int`)"
+ ```
+ /functionals/*/surface_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+ === "target"
+
+ **Type**: target
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection`"
+ ```
+ /functionals/*/surface_selection
+ ```
+
+
+ === "`/functionals/*/surface_selection` (`int`)"
+ Description
+ TODO
+
+
+
+ === "`/functionals/*/surface_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection/*` (`int`)"
+ ```
+ /functionals/*/surface_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/reference_cached_body_ids` (`list`)"
+ ```
+ /functionals/*/reference_cached_body_ids
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/reference_cached_body_ids/*` (`int`)"
+ ```
+ /functionals/*/reference_cached_body_ids/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/target_state` (`int`)"
+ ```
+ /functionals/*/target_state
+ ```
+ Description
+ TODO
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "displacement-target"
+
+ **Type**: displacement-target
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/target_displacement` (`list`)"
+ ```
+ /functionals/*/target_displacement
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/target_displacement/*` (`float`)"
+ ```
+ /functionals/*/target_displacement/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/active_dimension` (`list`)"
+ ```
+ /functionals/*/active_dimension
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/active_dimension/*` (`bool`)"
+ ```
+ /functionals/*/active_dimension/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection`"
+ ```
+ /functionals/*/surface_selection
+ ```
+
+
+ === "`/functionals/*/surface_selection` (`int`)"
+ Description
+ TODO
+
+
+
+ === "`/functionals/*/surface_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection/*` (`int`)"
+ ```
+ /functionals/*/surface_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+ === "center-target"
+
+ **Type**: center-target
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/target_state` (`int`)"
+ ```
+ /functionals/*/target_state
+ ```
+ Description
+ TODO
+
+ **Default**: `-1`
+
+
+
+
+
+
+ === "position"
+
+ **Type**: position
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+ === "parametrized_product"
+
+ **Type**: parametrized_product
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/power` (`float`)"
+ ```
+ /functionals/*/power
+ ```
+ Description
+ TODO
+
+ **Default**: `2`
+
+
+
+
+
+
+ === "soft_constraint"
+
+ **Type**: soft_constraint
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/objective`"
+ ```
+ /functionals/*/objective
+ ```
+
+
+ === "`/functionals/*/objective` (`object`)"
+ Description
+ TODO
+
+
+
+ === "`/functionals/*/objective` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/objective/*` (`object`)"
+ ```
+ /functionals/*/objective/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/soft_bound` (`list`)"
+ ```
+ /functionals/*/soft_bound
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/soft_bound/*` (`float`)"
+ ```
+ /functionals/*/soft_bound/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/power` (`float`)"
+ ```
+ /functionals/*/power
+ ```
+ Description
+ TODO
+
+ **Default**: `2`
+
+
+
+
+
+
+ === "transient_integral"
+
+ **Type**: transient_integral
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/static_objective` (`object`)"
+ ```
+ /functionals/*/static_objective
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/integral_type` (`string`)"
+ ```
+ /functionals/*/integral_type
+ ```
+ Description
+ TODO
+
+ **Default**: `'uniform'`
+
+ **Options:** `['simpson', 'uniform', 'final', 'steps']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/steps` (`list`)"
+ ```
+ /functionals/*/steps
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+ === "acceleration"
+
+ **Type**: acceleration
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+ === "kinetic"
+
+ **Type**: kinetic
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+ === "disp_grad"
+
+ **Type**: disp_grad
+ Description
+ One entry of displacement gradient matrix
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/dimensions` (`list`)"
+ ```
+ /functionals/*/dimensions
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ === "homo_disp_grad"
+
+ **Type**: homo_disp_grad
+ Description
+ One entry of macro displacement gradient matrix, only work for homogenization
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/dimensions` (`list`)"
+ ```
+ /functionals/*/dimensions
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ === "stress"
+
+ **Type**: stress
+ Description
+ One entry of elastic stress matrix
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/dimensions` (`list`)"
+ ```
+ /functionals/*/dimensions
+ ```
+ Description
+ FIXME: Missing documentation in the specification.
+
+
+
+
+
+
+
+
+
+
+
+ === "elastic_energy"
+
+ **Type**: elastic_energy
+ Description
+ Elastic energy over the volume selection
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "stress_norm"
+
+ **Type**: stress_norm
+ Description
+ Lp Norm of elastic stress over the volume selection
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/power` (`float`)"
+ ```
+ /functionals/*/power
+ ```
+ Description
+ TODO
+
+ **Default**: `2`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "quadratic_contact_force_norm"
+
+ **Type**: quadratic_contact_force_norm
+ Description
+ Lp Norm of elastic stress over the volume selection
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection`"
+ ```
+ /functionals/*/surface_selection
+ ```
+
+
+ === "`/functionals/*/surface_selection` (`int`)"
+ Description
+ TODO
+
+
+
+ === "`/functionals/*/surface_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection/*` (`int`)"
+ ```
+ /functionals/*/surface_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/dhat` (`float`)"
+ ```
+ /functionals/*/dhat
+ ```
+ Description
+ The support size of barrier function
+
+ **Default**: `0.001`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "log_contact_force_norm"
+
+ **Type**: log_contact_force_norm
+ Description
+ Lp Norm of elastic stress over the volume selection
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection`"
+ ```
+ /functionals/*/surface_selection
+ ```
+
+
+ === "`/functionals/*/surface_selection` (`int`)"
+ Description
+ TODO
+
+
+
+ === "`/functionals/*/surface_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection/*` (`int`)"
+ ```
+ /functionals/*/surface_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/dhat` (`float`)"
+ ```
+ /functionals/*/dhat
+ ```
+ Description
+ The support size of barrier function
+
+ **Default**: `0.001`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "max_stress"
+
+ **Type**: max_stress
+ Description
+ Pointwise max stress over the volume selection
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "compliance"
+
+ **Type**: compliance
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "strain_norm"
+
+ **Type**: strain_norm
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "boundary_smoothing"
+
+ **Type**: boundary_smoothing
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/scale_invariant` (`bool`)"
+ ```
+ /functionals/*/scale_invariant
+ ```
+ Description
+ TODO
+
+ **Default**: `True`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/power` (`float`)"
+ ```
+ /functionals/*/power
+ ```
+ Description
+ TODO
+
+ **Default**: `2`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection`"
+ ```
+ /functionals/*/surface_selection
+ ```
+
+
+ === "`/functionals/*/surface_selection` (`int`)"
+ Description
+ TODO
+
+
+
+ === "`/functionals/*/surface_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/surface_selection/*` (`int`)"
+ ```
+ /functionals/*/surface_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+ === "material_smoothing"
+
+ **Type**: material_smoothing
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+ === "control_smoothing"
+
+ **Type**: control_smoothing
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "collision_barrier"
+
+ **Type**: collision_barrier
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/dhat` (`float`)"
+ ```
+ /functionals/*/dhat
+ ```
+ Description
+ The support size of barrier function
+
+ **Default**: `0.001`
+
+
+
+
+
+
+ === "deformed_collision_barrier"
+
+ **Type**: deformed_collision_barrier
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/dhat` (`float`)"
+ ```
+ /functionals/*/dhat
+ ```
+ Description
+ The support size of barrier function
+
+ **Default**: `0.001`
+
+
+
+
+
+
+ === "layer_thickness"
+
+ **Type**: layer_thickness
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/boundary_ids` (`list`)"
+ ```
+ /functionals/*/boundary_ids
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/boundary_ids/*` (`int`)"
+ ```
+ /functionals/*/boundary_ids/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/dhat` (`float`)"
+ ```
+ /functionals/*/dhat
+ ```
+ Description
+ The support size of barrier function
+
+ **Default**: `0.001`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "layer_thickness_log"
+
+ **Type**: layer_thickness_log
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/dmin` (`float`)"
+ ```
+ /functionals/*/dmin
+ ```
+ Description
+ The min distance of barrier function
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/boundary_ids` (`list`)"
+ ```
+ /functionals/*/boundary_ids
+ ```
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/boundary_ids/*` (`int`)"
+ ```
+ /functionals/*/boundary_ids/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/dhat` (`float`)"
+ ```
+ /functionals/*/dhat
+ ```
+ Description
+ The support size of barrier function
+
+ **Default**: `0.001`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "weighted_solution"
+
+ **Type**: weighted_solution
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ === "volume"
+
+ **Type**: volume
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+ Optional
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+ === "AMIPS"
+
+ **Type**: AMIPS
+ Description
+ TODO
+ Required
+
+
+
+
+
+ ??? json-spec "`/functionals/*/type` (`string`)"
+ ```
+ /functionals/*/type
+ ```
+ Description
+ TODO
+
+ **Options:** `['transient_integral', 'power', 'divide', 'plus-const', 'target', 'sdf-target', 'mesh-target', 'center-target', 'function-target', 'displacement-target', 'node-target', 'position', 'acceleration', 'kinetic', 'disp_grad', 'homo_disp_grad', 'stress', 'stress_norm', 'elastic_energy', 'quadratic_contact_force_norm', 'log_contact_force_norm', 'max_stress', 'compliance', 'weighted_solution', 'strain_norm', 'boundary_smoothing', 'collision_barrier', 'deformed_collision_barrier', 'control_smoothing', 'material_smoothing', 'volume', 'soft_constraint', 'layer_thickness', 'layer_thickness_log', 'AMIPS', 'parametrized_product']`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/state` (`int`)"
+ ```
+ /functionals/*/state
+ ```
+ Description
+ TODO
+
+
+
+ Optional
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection`"
+ ```
+ /functionals/*/volume_selection
+ ```
+
+
+ === "`/functionals/*/volume_selection` (`list`)"
+ Description
+ TODO
+
+
+
+
+
+ ??? json-spec "`/functionals/*/volume_selection/*` (`int`)"
+ ```
+ /functionals/*/volume_selection/*
+ ```
+ Description
+ TODO
+
+
+
+
+
+
+ === "`/functionals/*/volume_selection` (`file`)"
+ Description
+ TODO
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/weight` (`float`)"
+ ```
+ /functionals/*/weight
+ ```
+ Description
+ TODO
+
+ **Default**: `1`
+
+
+
+
+
+
+
+
+ ??? json-spec "`/functionals/*/print_energy` (`string`)"
+ ```
+ /functionals/*/print_energy
+ ```
+ Description
+ TODO
+
+ **Default**: `''`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ??? json-spec "`/compute_objective` (`bool`)"
+ ```
+ /compute_objective
+ ```
+ Description
+ Evaluate the functionals and exit.
+
+ **Default**: `False`
+
+
+
+
+
diff --git a/docs/json_defaults_and_spec.md b/docs/json_defaults_and_spec.md
index 0ac7901b..79ad2893 100644
--- a/docs/json_defaults_and_spec.md
+++ b/docs/json_defaults_and_spec.md
@@ -4,9 +4,9 @@ The following json contains the default values by PolyFEM.
Values of `"REQUIRED!"` indicate the field has no default and must be specified by the user.
-~~~js
+```json
{% include "_json_defaults.json" %}
-~~~
+```
## Full Specification
@@ -15,4 +15,13 @@ The following json contains the full specification of the PolyFEM JSON API.
{%
include-markdown "_json_spec.md"
heading-offset=10
-%}
\ No newline at end of file
+%}
+
+## Optimization Input Specification
+
+The following json contains the specification of the PolyFEM JSON API for optimization.
+
+{%
+ include-markdown "_opt_input_spec.md"
+ heading-offset=10
+%}
diff --git a/docs/tutorials/trajectory-optimization/trajectory-optimization.md b/docs/tutorials/trajectory-optimization/trajectory-optimization.md
index d0814df6..f0df2b91 100644
--- a/docs/tutorials/trajectory-optimization/trajectory-optimization.md
+++ b/docs/tutorials/trajectory-optimization/trajectory-optimization.md
@@ -104,7 +104,7 @@ The initial condition parameter has a dimension of `2 * dim * n_basis`, where `d
In this tutorial, we only optimize the initial velocity of the ball, so we need to build a mapping, which we call `composition` in the JSON script, from the variable of size 2 to the full initial condition parameter of size `2 * dim * n_basis`. The `composition` is a list of some pre-defined mappings, which will apply to the optimization variables in order, and the final output of the mappings will be assigned to the initial condition parameter.
-There are two objects with different volume IDs, specified in `barycenter.json` and `barycenter-target.json`, and we only want to control the initial velocity of the ball, with volume ID 1. First, in `append-values` we append two zeros to the optimization variable, which represents the zero initial velocity of the floor. Second, in `per-body-to-per-node` we map the per-volume values to per-node, whose output has the dimension of `dim * n_basis`. Finally, in `append-const` we append more zeros to the start of the vector, to account for the zero initial displacement. Please refer to the [opt-input-spec.json](https://github.com/polyfem/polyfem/blob/main/json-specs/opt-input-spec.json) for the documentation of compositions.
+There are two objects with different volume IDs, specified in `barycenter.json` and `barycenter-target.json`, and we only want to control the initial velocity of the ball, with volume ID 1. First, in `append-values` we append two zeros to the optimization variable, which represents the zero initial velocity of the floor. Second, in `per-body-to-per-node` we map the per-volume values to per-node, whose output has the dimension of `dim * n_basis`. Finally, in `append-const` we append more zeros to the start of the vector, to account for the zero initial displacement. Please refer to the [Optimization Input Specification](../../json_defaults_and_spec.md#optimization-input-specification) for the documentation of compositions.
### Functionals