Dear community ,

I am currently modelling with the DICE2016 model of Nordhaus, which code is publicly available here; http://www.econ.yale.edu/~nordhaus/homepage/homepage/DICE2016R-091916ap.gms.

and I desperately need help as I am inexperienced in GAMS (and very time constrained).

**Damage function:**

- I wish to apply an approximate Weitzman Damage function to the model (adding an extra term, with damages from temperature to the power of 7. ; (I have added this to the original code;

```
+ a4*TATM(t)**a5
```

however the values of the output variables I get, do not make sense. For example, I obtain an emissions control rate of 1 from t=2… Could anyone tell me if I have to specify the function different from this in order to obtain reasonable values? I have not changed any of the bounds, limits or constraints from the original code.

- Finally I would like to assess the model-output based on both the base-case, the optimal case and for the limiting case of 2degrees Celcius above pre-industrial level. How can I alter the model to give me the values for the latter case (the base- and the optimal cases are easily specified in one of the first arguments of the code, but not the limiting case)?

Please find my code attached.

Thank you in advance!

Dietz damage-function .gms (17.6 KB)

Don’t look at the solution before you look at the solution status. It seems that your model is infeasible and therefore the variable values reported back to GAMS are no solution.

-Michael

Dear Michael,

Thank you so much for the reply!

You are right in that and I started looking at the solution status now before moving on to the solutions itself. I will not do that anymore, thank you!

I know that there are people who have altered the damage function to obtain the extra term, however. Do you (or anyone else here) have an idea about how I can alter the function to obtain a FEASIBLE model including the Weitzman damage function?

it is defined as:

```
** Climate damage parameters
a10 Initial damage intercept /0 /
a20 Initial damage quadratic term
a1 Damage intercept /0 /
a2 Damage quadratic term /0.00236 /
a3 Damage exponent /2.00 /
a4 Damage coefficient New /0.082/
a5 Damage exponent New /7 /
xi Income elasticity of damages /0.7 /
[...]
damfraceq(t) .. DAMFRAC(t) =E= (a1*TATM(t))+(a2*TATM(t)**a3) + (a4*TATM(t)**a5);
[...]
```

Moreover, do you have any advice on how I can model the following two-degrees-celcius-limiting case? I believe I have to change the emissions control rate(miu), but I am not sure how much.

Thanks a lot in advance! Any help is highly appreciated!

Sorry, I don’t understand enough about the DICE model to be of any help. DAMFRAC suggest some value between 0 and 1. If I take the original definition the values of DAMFRAC in the optimal solution are in this range:

```
---- VAR DAMFRAC Damages as fraction of gross output
LOWER LEVEL UPPER MARGINAL
1 -INF 0.0018 +INF .
2 -INF 0.0026 +INF .
3 -INF 0.0035 +INF .
4 -INF 0.0047 +INF .
...
```

When I take the optimal values of TATM and use your definition on DAMFRAC the values are not inside [0,1] anymore:

```
solve co2 maximizing utility using nlp;
DAMFRAC.l(t) = (a1*TATM.l(t))+(a2*TATM.l(t)**a3) + (a4*TATM.l(t)**a5);
option DAMFRAC:8:0:1; display DAMFRAC.l;
```

```
---- 319 VARIABLE DAMFRAC.L Damages as fraction of gross output
1 0.02835003
2 0.09533347
3 0.28208121
4 0.74674073
5 1.79953607
6 4.00517878
7 8.32784713
8 16.32392590
9 30.38329129
10 54.01405366
11 92.15904797
12 1.515259E+2
13 2.409075E+2
14 3.714657E+2
15 5.569516E+2
16 8.138367E+2
```

-Michael