! This PyFerret script plots FIG_S6 of the Paper "Artificial Upwelling - A New Narrative" ! and was written by M. Juerchott (mjuerchott@geomar.de) on the 12th September 2022. ! In order to run this script without error you have to change the path to the model output files to your personal folder structure. ! *** Only run it in -nodisplay -nojnl mode *** ! Save current state define REGION/DEFAULT "save" set data/save set grid/save ! Clean everything cancel data/all cancel variable/all cancel region/all ! Script function use /Users/mjuerchott/runs/2021_02_Pipes_noLand_COU85/tavg.02025.01.01.nc ![d=1] ArtUp_8.5 use /Users/mjuerchott/runs/2021_11_Pipes_noLand_COU60/tavg.02025.01.01.nc ![d=2] ArtUp_6.0 use /Users/mjuerchott/runs/2021_11_Pipes_noLand_COU45/tavg.02025.01.01.nc ![d=3] ArtUp_4.5 use /Users/mjuerchott/runs/2021_11_Pipes_noLand_COU26/tavg.02025.01.01.nc ![d=4] ArtUp_2.6 use /Users/mjuerchott/runs/2021_02_Pipes_noLand_CTRL/tavg.02025.01.01.nc ![d=5] ArtUp_0.0 use /Users/mjuerchott/runs/2021_02_noPipes_noLand_COU85_cont/tavg.02025.01.01.nc ![d=6] REF_8.5 use /Users/mjuerchott/runs/2021_11_noPipes_noLand_COU60_cont/tavg.02025.01.01.nc ![d=7] REF_6.0 use /Users/mjuerchott/runs/2021_11_noPipes_noLand_COU45_cont/tavg.02025.01.01.nc ![d=8] REF_4.5 use /Users/mjuerchott/runs/2021_11_noPipes_noLand_COU26_cont/tavg.02025.01.01.nc ![d=9] REF_2.6 use /Users/mjuerchott/runs/2021_02_noPipes_noLand_CTRL_cont/tavg.02025.01.01.nc ![d=10] REF_0.0 !RCP 8.5 ! Where are pipes ? let pipe_distribution_85 = O_ZPIPE[d=1] let temp_85 = O_TEMP[d=1] let temp_85_REF = O_TEMP[d=6] ! temperature change at sea surface in pipe location let surface_pipe_mask_85 = if pipe_distribution_85 GT 50 then 1 else 0 let x_temp_surface_pipe_85 = surface_pipe_mask_85 * (temp_85[k=1] - temp_85_REF[k=1]) let temp_surface_pipe_85 = x_temp_surface_pipe_85[i=@DIN,j=@DIN] / surface_pipe_mask_85[i=@DIN,j=@DIN] ! temperature change of pumped up water in pipe location let temp_85_z1100_1 = if pipe_distribution_85 LT 1200 then 1 else 0 let temp_85_z1100_2 = if pipe_distribution_85 GT 1000 then 1 else 0 let temp_85_1100 = (temp_85_z1100_1 * temp_85_z1100_2) * temp_85[z=1100] let temp_85_z900_1 = if pipe_distribution_85 LT 1000 then 1 else 0 let temp_85_z900_2 = if pipe_distribution_85 GT 800 then 1 else 0 let temp_85_900 = (temp_85_z900_1 * temp_85_z900_2) * temp_85[z=900] let temp_85_z700_1 = if pipe_distribution_85 LT 800 then 1 else 0 let temp_85_z700_2 = if pipe_distribution_85 GT 600 then 1 else 0 let temp_85_700 = (temp_85_z700_1 * temp_85_z700_2) * temp_85[z=700] let temp_85_z500_1 = if pipe_distribution_85 LT 600 then 1 else 0 let temp_85_z500_2 = if pipe_distribution_85 GT 400 then 1 else 0 let temp_85_500 = (temp_85_z500_1 * temp_85_z500_2) * temp_85[z=500] let temp_85_z300_1 = if pipe_distribution_85 LT 400 then 1 else 0 let temp_85_z300_2 = if pipe_distribution_85 GT 200 then 1 else 0 let temp_85_300 = (temp_85_z300_1 * temp_85_z300_2) * temp_85[z=300] let x_temp_85_deep = temp_85_1100 + temp_85_900 + temp_85_700 + temp_85_500 + temp_85_300 let x_temp_85_surface = temp_85[k=1] * surface_pipe_mask_85 let temp_85_deep = (x_temp_85_surface[i=@DIN,j=@DIN] / surface_pipe_mask_85[i=@DIN,j=@DIN]) - (x_temp_85_deep[i=@DIN,j=@DIN] / surface_pipe_mask_85[i=@DIN,j=@DIN]) !RCP 6.0 ! Where are pipes ? let pipe_distribution_60 = O_ZPIPE[d=2] let temp_60 = O_TEMP[d=2] let temp_60_REF = O_TEMP[d=7] ! temperature change at sea surface in pipe location let surface_pipe_mask_60 = if pipe_distribution_60 GT 50 then 1 else 0 let x_temp_surface_pipe_60 = surface_pipe_mask_60 * (temp_60[k=1] - temp_60_REF[k=1]) let temp_surface_pipe_60 = x_temp_surface_pipe_60[i=@DIN,j=@DIN] / surface_pipe_mask_60[i=@DIN,j=@DIN] ! temperature change of pumped up water in pipe location let temp_60_z1100_1 = if pipe_distribution_60 LT 1200 then 1 else 0 let temp_60_z1100_2 = if pipe_distribution_60 GT 1000 then 1 else 0 let temp_60_1100 = (temp_60_z1100_1 * temp_60_z1100_2) * temp_60[z=1100] let temp_60_z900_1 = if pipe_distribution_60 LT 1000 then 1 else 0 let temp_60_z900_2 = if pipe_distribution_60 GT 800 then 1 else 0 let temp_60_900 = (temp_60_z900_1 * temp_60_z900_2) * temp_60[z=900] let temp_60_z700_1 = if pipe_distribution_60 LT 800 then 1 else 0 let temp_60_z700_2 = if pipe_distribution_60 GT 600 then 1 else 0 let temp_60_700 = (temp_60_z700_1 * temp_60_z700_2) * temp_60[z=700] let temp_60_z500_1 = if pipe_distribution_60 LT 600 then 1 else 0 let temp_60_z500_2 = if pipe_distribution_60 GT 400 then 1 else 0 let temp_60_500 = (temp_60_z500_1 * temp_60_z500_2) * temp_60[z=500] let temp_60_z300_1 = if pipe_distribution_60 LT 400 then 1 else 0 let temp_60_z300_2 = if pipe_distribution_60 GT 200 then 1 else 0 let temp_60_300 = (temp_60_z300_1 * temp_60_z300_2) * temp_60[z=300] let x_temp_60_deep = temp_60_1100 + temp_60_900 + temp_60_700 + temp_60_500 + temp_60_300 let x_temp_60_surface = temp_60[k=1] * surface_pipe_mask_60 let temp_60_deep = (x_temp_60_surface[i=@DIN,j=@DIN] / surface_pipe_mask_60[i=@DIN,j=@DIN]) - (x_temp_60_deep[i=@DIN,j=@DIN] / surface_pipe_mask_60[i=@DIN,j=@DIN]) !RCP 4.5 ! Where are pipes ? let pipe_distribution_45 = O_ZPIPE[d=3] let temp_45 = O_TEMP[d=3] let temp_45_REF = O_TEMP[d=8] ! temperature change at sea surface in pipe location let surface_pipe_mask_45 = if pipe_distribution_45 GT 50 then 1 else 0 let x_temp_surface_pipe_45 = surface_pipe_mask_45 * (temp_45[k=1] - temp_45_REF[k=1]) let temp_surface_pipe_45 = x_temp_surface_pipe_45[i=@DIN,j=@DIN] / surface_pipe_mask_45[i=@DIN,j=@DIN] ! temperature change of pumped up water in pipe location let temp_45_z1100_1 = if pipe_distribution_45 LT 1200 then 1 else 0 let temp_45_z1100_2 = if pipe_distribution_45 GT 1000 then 1 else 0 let temp_45_1100 = (temp_45_z1100_1 * temp_45_z1100_2) * temp_45[z=1100] let temp_45_z900_1 = if pipe_distribution_45 LT 1000 then 1 else 0 let temp_45_z900_2 = if pipe_distribution_45 GT 800 then 1 else 0 let temp_45_900 = (temp_45_z900_1 * temp_45_z900_2) * temp_45[z=900] let temp_45_z700_1 = if pipe_distribution_45 LT 800 then 1 else 0 let temp_45_z700_2 = if pipe_distribution_45 GT 600 then 1 else 0 let temp_45_700 = (temp_45_z700_1 * temp_45_z700_2) * temp_45[z=700] let temp_45_z500_1 = if pipe_distribution_45 LT 600 then 1 else 0 let temp_45_z500_2 = if pipe_distribution_45 GT 400 then 1 else 0 let temp_45_500 = (temp_45_z500_1 * temp_45_z500_2) * temp_45[z=500] let temp_45_z300_1 = if pipe_distribution_45 LT 400 then 1 else 0 let temp_45_z300_2 = if pipe_distribution_45 GT 200 then 1 else 0 let temp_45_300 = (temp_45_z300_1 * temp_45_z300_2) * temp_45[z=300] let x_temp_45_deep = temp_45_1100 + temp_45_900 + temp_45_700 + temp_45_500 + temp_45_300 let x_temp_45_surface = temp_45[k=1] * surface_pipe_mask_45 let temp_45_deep = (x_temp_45_surface[i=@DIN,j=@DIN] / surface_pipe_mask_45[i=@DIN,j=@DIN]) - (x_temp_45_deep[i=@DIN,j=@DIN] / surface_pipe_mask_45[i=@DIN,j=@DIN]) !RCP 2.6 ! Where are pipes ? let pipe_distribution_26 = O_ZPIPE[d=4] let temp_26 = O_TEMP[d=4] let temp_26_REF = O_TEMP[d=9] ! temperature change at sea surface in pipe location let surface_pipe_mask_26 = if pipe_distribution_26 GT 50 then 1 else 0 let x_temp_surface_pipe_26 = surface_pipe_mask_26 * (temp_26[k=1] - temp_26_REF[k=1]) let temp_surface_pipe_26 = x_temp_surface_pipe_26[i=@DIN,j=@DIN] / surface_pipe_mask_26[i=@DIN,j=@DIN] ! temperature change of pumped up water in pipe location let temp_26_z1100_1 = if pipe_distribution_26 LT 1200 then 1 else 0 let temp_26_z1100_2 = if pipe_distribution_26 GT 1000 then 1 else 0 let temp_26_1100 = (temp_26_z1100_1 * temp_26_z1100_2) * temp_26[z=1100] let temp_26_z900_1 = if pipe_distribution_26 LT 1000 then 1 else 0 let temp_26_z900_2 = if pipe_distribution_26 GT 800 then 1 else 0 let temp_26_900 = (temp_26_z900_1 * temp_26_z900_2) * temp_26[z=900] let temp_26_z700_1 = if pipe_distribution_26 LT 800 then 1 else 0 let temp_26_z700_2 = if pipe_distribution_26 GT 600 then 1 else 0 let temp_26_700 = (temp_26_z700_1 * temp_26_z700_2) * temp_26[z=700] let temp_26_z500_1 = if pipe_distribution_26 LT 600 then 1 else 0 let temp_26_z500_2 = if pipe_distribution_26 GT 400 then 1 else 0 let temp_26_500 = (temp_26_z500_1 * temp_26_z500_2) * temp_26[z=500] let temp_26_z300_1 = if pipe_distribution_26 LT 400 then 1 else 0 let temp_26_z300_2 = if pipe_distribution_26 GT 200 then 1 else 0 let temp_26_300 = (temp_26_z300_1 * temp_26_z300_2) * temp_26[z=300] let x_temp_26_deep = temp_26_1100 + temp_26_900 + temp_26_700 + temp_26_500 + temp_26_300 let x_temp_26_surface = temp_26[k=1] * surface_pipe_mask_26 let temp_26_deep = (x_temp_26_surface[i=@DIN,j=@DIN] / surface_pipe_mask_26[i=@DIN,j=@DIN]) - (x_temp_26_deep[i=@DIN,j=@DIN] / surface_pipe_mask_26[i=@DIN,j=@DIN]) !RCP 0.0 ! Where are pipes ? let pipe_distribution_00 = O_ZPIPE[d=5] let temp_00 = O_TEMP[d=5] let temp_00_REF = O_TEMP[d=10] ! temperature change at sea surface in pipe location let surface_pipe_mask_00 = if pipe_distribution_00 GT 50 then 1 else 0 let x_temp_surface_pipe_00 = surface_pipe_mask_00 * (temp_00[k=1] - temp_00_REF[k=1]) let temp_surface_pipe_00 = x_temp_surface_pipe_00[i=@DIN,j=@DIN] / surface_pipe_mask_00[i=@DIN,j=@DIN] ! temperature change of pumped up water in pipe location let temp_00_z1100_1 = if pipe_distribution_00 LT 1200 then 1 else 0 let temp_00_z1100_2 = if pipe_distribution_00 GT 1000 then 1 else 0 let temp_00_1100 = (temp_00_z1100_1 * temp_00_z1100_2) * temp_00[z=1100] let temp_00_z900_1 = if pipe_distribution_00 LT 1000 then 1 else 0 let temp_00_z900_2 = if pipe_distribution_00 GT 800 then 1 else 0 let temp_00_900 = (temp_00_z900_1 * temp_00_z900_2) * temp_00[z=900] let temp_00_z700_1 = if pipe_distribution_00 LT 800 then 1 else 0 let temp_00_z700_2 = if pipe_distribution_00 GT 600 then 1 else 0 let temp_00_700 = (temp_00_z700_1 * temp_00_z700_2) * temp_00[z=700] let temp_00_z500_1 = if pipe_distribution_00 LT 600 then 1 else 0 let temp_00_z500_2 = if pipe_distribution_00 GT 400 then 1 else 0 let temp_00_500 = (temp_00_z500_1 * temp_00_z500_2) * temp_00[z=500] let temp_00_z300_1 = if pipe_distribution_00 LT 400 then 1 else 0 let temp_00_z300_2 = if pipe_distribution_00 GT 200 then 1 else 0 let temp_00_300 = (temp_00_z300_1 * temp_00_z300_2) * temp_00[z=300] let x_temp_00_deep = temp_00_1100 + temp_00_900 + temp_00_700 + temp_00_500 + temp_00_300 let x_temp_00_surface = temp_00[k=1] * surface_pipe_mask_00 let temp_00_deep = (x_temp_00_surface[i=@DIN,j=@DIN] / surface_pipe_mask_00[i=@DIN,j=@DIN]) - (x_temp_00_deep[i=@DIN,j=@DIN] / surface_pipe_mask_00[i=@DIN,j=@DIN]) ! plot routine cancel windows/all set windows/new set text/font='Times New Roman' set text/isiz=4 go landscape2x2.jnl define view/xlimits=0.2,0.7/ylimits=0.05,0.55 ll4 define view/xlimits=0.2,0.7/ylimits=0.5,1 ul4 set view ul4 plot/nolabel/hlimits=2020:2101:10/vlimits=-1.2:0:0.1/color=black/thick=2 temp_surface_pipe_85 plot/nolabel/overlay/color=blue/thick=2 temp_surface_pipe_60 plot/nolabel/overlay/color=red/thick=2 temp_surface_pipe_45 plot/nolabel/overlay/color=green/thick=2 temp_surface_pipe_26 plot/nolabel/overlay/color=(100,68,0)/thick=2 temp_surface_pipe_00 label/nouser -0.8,-0.8,0,0,0.2 "(a)" label/nouser -1.3,1.7,0,90,0.13 "<#916>T [°C]" label/nouser 2.5,-0.8,0,0,0.13 "[years]" set view ll4 plot/nolabel/hlimits=2020:2101:10/vlimits=16.2:17.2:0.1/color=black/thick=2 temp_85_deep plot/nolabel/overlay/color=blue/thick=2 temp_60_deep plot/nolabel/overlay/color=red/thick=2 temp_45_deep plot/nolabel/overlay/color=green/thick=2 temp_26_deep plot/nolabel/overlay/color=(100,68,0)/thick=2 temp_00_deep label/nouser -0.8,-0.8,0,0,0.2 "(b)" label/nouser -1.3,1.7,0,90,0.13 "<#916>T [°C]" label/nouser 2.5,-0.8,0,0,0.13 "[years]" ! plot legend set text/font='Times New Roman'/color=black label/nouser 0.2,8.2,-1,0,0.11 - RCP 8.5 set text/font='Times New Roman'/color=blue label/nouser 0.2,7.9,-1,0,0.11 - RCP 6.0 set text/font='Times New Roman'/color=red label/nouser 0.2,7.6,-1,0,0.11 - RCP 4.5 set text/font='Times New Roman'/color=green label/nouser 0.2,7.3,-1,0,0.11 - RCP 2.6 set text/font='Times New Roman'/color=(100,68,0) label/nouser 0.2,7.0,-1,0,0.11 - no emission set text/font='Times New Roman'/color=black frame/file = "FIG_S6.png" ! Cancel everything cancel data/all cancel variable/all cancel region/all ! Restore current state set data/restore set grid/restore