IPAT-S: A scripting language for sustainability scenarios
site map |

IPAT-S: The ImPACT Connection

Paul Waggoner and Jesse Ausubel, of Rockefeller University’s Program for the Human Environment, propose a “renovated IPAT identity,” which they call the ImPACT identity. It is intended to remedy the shortcomings of IPAT as a conceptual framework for analyzing sustainability issues. This guide shows how the examples in their paper can be translated into the IPAT-S language. Also, in the IPAT-S graphical user interface (GUI), there is a special growth graph that is especially suited for ImPACT (and IPAT) calculations.

For ease of reference, the headings on this page match the relevant headings in Waggoner and Ausubel's paper. Note that the IPAT-S code shown below does not form a complete script (except for the final example). Instead, code fragments are shown. To see the structure of a complete script, view the sample scripts on this site and the examples in the IPAT-S installation, or look at the documentation.

Actors Drive Forces

The basic ImPACT calculation is


Im  =  P × A × C × T

This can be translated directly into IPAT-S as

:: P >> A * C * T -> Im

In Waggoner and Ausubel's paper, capital letters indicate forces, while the corresponding lower-case letter designates growth rates. This can be represented as

:: >> growth(p + a + c + t) -> Im

Or, since variable names are case-sensitive in IPAT-S, as

:: >> gr(p) -> P
A = gr(a)
C = gr(c)
T = gr(t)

:: P >> A * C * T -> Im

where P is a summable variable, A, C and T are ratio variables, and p, a, c and t are number variables. (Note that “gr” and “growth” are equivalent.)

The combination of C and T represent key sustainability levers, which counter the combined sustainability challenge of P and A. This can be represented in IPAT-S by writing

var SustChallenge = 100   # The SustChallenge variable is an index
ratio SustLever = C * T

:: P >>A-> SustChallenge >>SustLever-> Im

A decline in C is considered to be dematerialization, while declining T represents increasing efficiency. This can be represented in IPAT-S as

var SustChallenge = 100   # The SustChallenge variable is an index
ratio SustLever = growth(-(dematerialization + efficiency))

:: P >>A-> SustChallenge >>SustLever-> Im

or

var SustChallenge = 100   # The SustChallenge variable is an index
ratio SustLever = 1/growth(dematerialization + efficiency)

:: P >>A-> SustChallenge >>SustLever-> Im

where dematerialization and efficiency are number variables.

Note that the code fragments above are different ways of representing the same basic ImPACT calculation. Different ways of writing the IPAT-S script suggest different ways of thinking about agency and the challenge of sustainability.

Forces Connect with Each Other

If consumption is related to affluence (or, more properly, income) via an income elasticity b, then the basic ImPACT identity becomes


Im  =  P × A × Ab-1 × T

In IPAT-S, this can be written

:: P >> A * A^(b-1) * T -> Im

where b is a number variable.

If P also changes with an income elasticity of bP and T with an elasticity of bT, then the corresponding IPAT-S calculation can be written

:: A^(bP + 1 +(b-1) + bT) >>-> Im

In this example, b, bP and bT can be either number variables or IPAT-S variables. If they are defined as variables, then they can change over time and vary along different dimensions.

Sectors Act Differently

In IPAT-S it is straightforward to include sectoral detail in a calculation. Here is a complete script that implements a scenario of water use at a sectoral level of detail:

baseyear 2000
scenyears 2010 to 2050 by 10

dimension sector 'Agr' 'Mfg' 'Dom'

summvar P I{sector} Itot
ratio A C{sector} T{sector}

P.0 = 283   # million people
# These are water withdrawals in 2000
Itot.0 = 469.00 # cubic km
I.0{sector = 'Agr'} = 46% * Itot.0
I.0{sector = 'Mfg'} = 42% * Itot.0
I.0{sector = 'Dom'} = 12% * Itot.0

# For scenario, assume same rates as for 1970-1995 period from
#  Waggoner and Ausubel. 2002. "A framework for sustainability science: A
#    renovated IPAT identity". PNAS 99(12), pp. 7860-7865.

num p = <1.0%>			# Annual population growth
:: >> growth(p) -> P

num a = <1.5%>			# Income growth rate
A = growth(a) 			# Income growth rate

# Dematerialization
C{sector = 'Agr'} = growth(<-0.7%>)
C{sector = 'Mfg'} = growth(<-0.6%>)
C{sector = 'Dom'} = growth(<0.0%>) # Figure not mentioned in ImPACT paper

# Efficiency
T{sector = 'Agr'} = growth(<-1.7%>)
T{sector = 'Mfg'} = growth(<-5.0%>)
T{sector = 'Dom'} = growth(<-2.0%>) # Figure not mentioned in ImPACT paper

# The ImPACT formula:
#   - Population drives changes in impact
#   - Modified by income, dematerialization and technology
:: P >> A * C * T -> I

report 100 * I/I.2000 as "Water use by sector (2000 = 100)"

summarize I as Itot

report 100 * Itot/Itot.2000 as "Total water use (2000 = 100)"

Running this script and viewing the output in the IPAT-S GUI, it can be seen that while agricultural and public water withdrawals increase modestly over the scenario, manufacturing withdrawals drop precipitously, leading total withdrawals to decline over the scenario:

Sectoral Water Use Trends


IPAT-S home | site map