Variables
In LCA as Code, you can use formulas to express exchange quantities.
For instance, imagine a customer in a shop who wants to buy chocolate bars and candies.
She has a budget of B = 20
units.
The unit price of a chocolate bar is p_choco = 4
units.
The unit price of a candy is p_candy = 2
units.
Under a utility function of the form u = n_choco^a_choco * n_candy^a_candy
,
the demand that maximizes utility under the budget constraint is
n_choco = B * a_choco / p_choco
n_candy = B * a_candy / p_candy
In LCA as Code, this can be modelled as a process
process consumption {
products {
1 u consumer
}
inputs {
200 u * 2 u / 4 u chocolate_bar
200 u * 1 u / 2 u candy
}
}
Local variables
It is often convenient to name parts of a formula to make it easier to read, i.e., to introduce (local) variables.
For that, we use a block variables
.
process consumption {
products {
1 u consumer
}
variables {
budget = 200 u
a_choco = 2 u
p_choco = 4 u
a_candy = 1 u
p_candy = 2 u
}
inputs {
budget * a_choco / p_choco chocolate_bar
budget * a_candy / p_candy candy
}
}
Note that variables are not parameters: you cannot assign a value to a variable when invoking a process.
process p {
// products omitted in this example
inputs {
// error : budget is not a parameter
1 u consumer from consumption(budget = 400 u)
}
}
The purpose of a variable is simply to give a name to a quantity within the scope of a process. You can define new variables out of previous variables. For instance:
process consumption {
params {
budget = 200 u
}
products {
1 u consumer
}
variables {
a_choco = 2 u
p_choco = 4 u
a_candy = 1 u
p_candy = 2 u
q_choco = budget * a_choco / p_choco
q_candy = budget * a_candy / p_candy
}
inputs {
q_choco chocolate_bar
q_candy candy
}
}
Global variables
Sometimes, one may want to a variable to be available globally.
For instance, the unit prices of chocolate bar and candy can be set once and for all.
To do that, simply declare a block variables
outside any process.
variables {
p_choco = 4 u
p_candy = 2 u
}
process consumption {
params {
budget = 200 u
}
products {
1 u consumer
}
variables {
a_choco = 2 u
a_candy = 1 u
q_choco = budget * a_choco / p_choco
q_candy = budget * a_candy / p_candy
}
inputs {
q_choco chocolate_bar
q_candy candy
}
}