In this tutorial, we will consider a system—much like a chemical reaction—in which production of product C is dependent on the concentration of components A and B and some constant K. We will consider three stocks: A, B, and C, and three flows, all of which are to be considered equal in this model: production of C and consumption of A and B. Thus production C = consumption A = consumption B. Should this model represent a chemical reaction, we could consider it having a 1:1 stoichiometry: it takes exactly one unit of A and one unit of B to produce one unit of C. This model executes the mass-action concept often applied in natural systems, in which two or more components interact to create some product or other downstream effect: for example, chemical reactions, mating, or disease transmission. These kinds of systems depend on the concentration of multiple interacting components.
- First, we will need three stocks, named A, B, and C. Place C at the bottom and A and B in a row next to eachother, but be sure to leave room for flows. For the sake of this model, lets say the initial conditions are: A = 30, B = 50, and C = 0. Make sure to check “non-negative” in each stock.
- Next, we will need a reaction constant. Click on the term button, and place a term named “K” above our C stock. For the sake of this model, lets say that k = 0.005.
- Now let’s make our flows. We will need two outflows from A and B: name them “consumptionA” and “consumption B.” Have them coming out of the A and B stocks, but do not connect the clouds at the tip of each arrow to stock C. We will model this system such that A and B are being converted into C, in that they are disappearing at exactly the same rate that C is being produced, rather than connecting them to C and having the currency directly transferred from one stock to another. However, there are many ways we could choose the model this phenomena. Can you think of another acceptable way to model this?
- Now we need an inflow into C. Click on the flow button and place the flow next to C, and let’s name this flow “productionC.” Connect the tip of the arrow to C, but leave the cloud at the beginning of the flow: it does not need to be connected using the method we are using.
- Now let’s connect all the components. Use red arrows to connect stocks A and B and the term K to our “productionC” flow. Right click on production C, make sure it is a uniflow rather than a biflow, and using the list of components on the left side of the window, make this flow = K*A*B. Thus, production of C is proportional to the concentration of A and B times some rate constant.
- Now let’s make sure that as the reaction progresses, the components A and B are being consumed by the system. Use red arrows to connect the “productionC” flow to “consumptionA” and “consumptionB.” Right click on each consumption flow, make sure each is set as a uniflow rather than a biflow, and using the list of components on the left side of the flow window, set each consumption flow = productionC. How else might we be able to mathematically represent this in NOVA? Many methods are possible.
- Now we should have a runnable model, which will look something like this:
- This is a good example of a chemical reaction with a 1:1 stoichiometry, although mass-action type formulations apply to all kinds of other phenomena, including disease transmission, for example. Although in this case it makes sense that as we produce C in a manner that is dependent on the concentration of stocks A and B, A and B should be consumed at the same rate that C is produced, this logic will not apply in all situations. For example, in disease transmission, when an infected person comes into contact with a healthy person, the healthy person does not “take” the ailment away from the person who gave them the ailment. Rather than transforming one sick person into another sick person, a new sick person is produced: at the beginning you had one sick and one healthy person, and at the end of this exchange we have two sick people. Thus, you must think carefully on what kind of phenomena you are modeling when using mass action formulations, as this particular example model would not apply to many situations.
Now let’s make a graph to visually represent our output. Let’s name the graph “reactionprogress.” Right click on the graph and select stocks A, B and C, to be graphed. For ease in interpreting the graph, select “self” and change the scale so that all stocks are graphed on the same scale, ranging from 0-100. Click on ok. Now your model should be ready to run. Click the lambda icon, then on capture, load and run, and output should be visible on your graph, which should look like this: