PROGRAM POWERWORLD C C ***************************************************************************** C LOADMATCH GRID INTEGRATION MODEL C MATCHES ALL-ENERGY DEMAND WITH SUPPLY, STORAGE, AND DEMAND RESPONSE C CONTINUOUSLY, AVOIDING BLACKOUTS, IN STATES, ISLANDS, COUNTRIES, CONTINENTS C ***************************************************************************** C COMPILE IN DOUBLE PRECISION C ifort -save -O2 -r8 -i8 -mcmodel=large powerworld.f C ***************************************************************************** C ***************************************************************************** C WRITTEN BY MARK Z. JACOBSON (JACOBSON@STANFORD.EDU) C STANFORD UNIVERSITY (1-650-723-6836) C FIRST CODING: NOV. 10, 2014. LAST UPDATE: MARCH 23, 2021 C (C) COPYRIGHT, MARK Z. JACOBSON/STANFORD UNIVERSITY C ***************************************************************************** C ***************************************************************************** C THIS CODE IS RELEASED UNDER THE GNU LGPLv3 LICENSE C https://choosealicense.com/licenses/lgpl-3.0/ C IN ADDITION... C BY USING THIS PROGRAM, EXTRACTING ANY CODING OR IDEAS FROM IT, OR EVALUATING C IT, THE USER AGREES TO CITE, THROUGH ONE OR MORE OF THE REFERENCES BELOW, C THE SOURCE OF THE PROGRAM IN ALL PUBLICATIONS THAT MAKE USE OF SUCH C INFORMATION. THE USER ALSO AGREES TO ADDRESS ANY QUESTIONS OR UNCERTAINTIES C TO MZJ (JACOBSON@STANFORD.EDU) PRIOR TO PUBLICATION. C ***************************************************************************** C REFERENCES: C ***************************************************************************** C JACOBSON, M.Z., ON THE CORRELATION BETWEEN BUILDING HEAT DEMAND AND C WIND ENERGY SUPPLY AND HOW IT HELPS TO AVOID BLACKOUTS, SMART C ENERGY, 1, 100009, DOI:10.1016/j.segy.2021.100009, 2021. C http://web.stanford.edu/group/efmh/jacobson/Articles/Others/21-Wind-Heat.pdf C C JACOBSON, M.Z., M.A. DELUCCHI, M.A. CAMERON, S.J. COUGHLIN, C. HAY, C I.P. MANOGARAN, Y. SHU, AND A.-K. VON KRAULAND, IMPACTS OF GREEN C NEW DEAL ENERGY PLANS ON GRID STABILITY, COSTS, JOBS, HEALTH, AND C CLIMATE IN 143 COUNTRIES, ONE EARTH, 1, 449-463, C DOI:10.1016/j.oneear.2019.12.003, 2019 C https://web.stanford.edu/group/efmh/jacobson/Articles/I/WWS-50-USState-plans.html C C JACOBSON, M.Z., M.A. DELUCCHI, M.A. CAMERON, AND. B.V. MATHIESEN, C MATCHING DEMAND WITH SUPPLY AT LOW COST IN 139 COUNTRIES AMONG 20 WORLD C REGIONS WITH 100% INTERMITTENT WIND, WATER, AND SUNLIGHT (WWS) FOR ALL C PURPOSES, RENEWABLE ENERGY, 123, 236-248, 2018 C https://doi.org/10.1016/j.renene.2018.02.009, 2018. C http://web.stanford.edu/group/efmh/jacobson/Articles/I/CombiningRenew/ C WorldGridIntegration.pdf C C JACOBSON, M.Z., M.A. DELUCCHI, M.A. CAMERON, AND B.A. FREW, A LOW-COST C SOLUTION TO THE GRID RELIABILITY PROBLEM WITH 100% PENETRATION OF C INTERMITTENT WIND, WATER, AND SOLAR FOR ALL PURPOSES, PROC. NATL. ACAD. C SCI, 112, 15060-15065, DOI 10.1073/PNAS.1510028112, 2015 C http://web.stanford.edu/group/efmh/jacobson/Articles/I/CombiningRenew/ C CONUSGridIntegration.pdf C ***************************************************************************** C LOADMATCH MODEL, VERSION VII C ***************************************************************************** C THIS VERSION OF LOADMATCH IS SET UP FOR THE 50 U.S. STATES AND D.C. C ***************************************************************************** C VERSION I FOR 48 CONTINENTAL U.S. STATES BY MZJ STARTING NOVEMBER 10, 2014 C VERSION II FOR 139 COUNTRIES IN 20 WORLD REGIONS BY MZJ STARTING AUGUST 23, 2015 C VERSION III FOR 143 COUNTRIES IN 23 WORLD REGIONS BY MZJ STARTING JUNE 28, 2019 C VERSION IV 143 COUNTRIES, W/BUILDING HEAT/COLD LOADS GATOR-GCMOM START MAY 25, 2020 C VERSION V FOR INDIVIDUAL AND COMBINED EUROPEAN COUNTRIES STARTING NOV 4, 2020 C VERSION VI FOR INDIVIDUAL CANARY ISLANDS STARTING NOV 18, 2020 C VERSION VII FOR THE 50 U.S. STATES & DC BY MZJ STARTING JAN 2, 2021 C C ***************************************************************************** C THIS PROGRAM CHECKS WHETHER WWS LOAD IN A STATE, MULTISTATE REGION, C ISLAND, MULTI-ISLAND REGION, COUNTRY, OR MULTI-COUNTRY REGION CAN BE C 100% OF THE TIME (EVERY 30 SECONDS FOR 1 OR MOREE YEARS) BY WWS SUPPLY FROM WIND, C SOLAR, GEOTHERMAL, HYDROELECTRIC, TIDAL, & WAVE, COMBINED WITH ELECTRICITY, C HEAT, COLD, AND HYDROGEN STORAGE AND DEMAND-RESPONSE, ASSUMING A PERFECT C TRANSMISSION GRID. ESTIMATED ALL-DISTANCE TRANSMISSION & DISTRIBUTION COSTS & C LOSSES ARE ACCOUNTED FOR. C C WIND INCLUDES ONSHORE AND OFFSHORE WIND; SOLAR INCLUDES ROOFTOP PV, UTILITY C PV, CSP, AND SOLAR THERMAL FOR HEAT. GEOTHERMAL INCLUDES GEOTHERMAL FOR C ELECTRICITY AND SEPARATELY, FOR HEAT. C C THE 3-D GLOBAL-THROUGH-LOCAL GATOR-GCMOM (GAS, AEROSOL, TRANSPORT, GENERAL- C CIRCULATION, MESOSCALE, AND OCEAN MODEL) PRODUCES WIND AND SOLAR OUTPUT AT C THE LOCATION OF EACH ONSHORE AND OFFSHORE WIND FARM, PV AND CSP POWER C PLANT, ROOFTOP PV SYSTEM, AND SOLAR THERMAL HEAT SYSTEM C THESE LOCATION-SPECIFIC VALUES ARE THEN AGGREGATED WITHIN EACH MODEL C GRID CELL TO THE LAT/LON AT THE CELL HORIZONTAL CENTREY EVERY 30 SEC C THE DATA FROM EACH GRID CELL IN GATOR-GCMOM ARE THEN AGGREGATED TO C PRODUCE STATE, ISLAND, OR COUNTRY-AGGREGATED VALUES OF EACH ONSHORE WIND, C OFFSHOREE WIND, UTILITY PV, CSP, ROOFTOP PV, AND SOLAR THERMAL FOR HEAT C IN FILE wwssupworld.dat. THE STATE, ISLAND, AND COUNTRY VALUES ARE C EITHER FED RIGHT INTO LOADMATCH OR AGGREGATED INTO REGIONS THAT ARE C FED INTO LOADMATCH. LOADMATCH ALSO INCORPORATES C GEOTHERMAL, HYDROELECTRIC, TIDAL, AND WAVE PRODUCTION VALUES FROM C countrystats.dat. C C THE NUMBERS OF WIND TURBINES, PV & CSP PLANTS, ROOFTOP AND SOLAR HEAT SYSTEMS, C GEOTHERMAL PLANTS, HYDROELECTRIC PLANTS, AND TIDAL AND WAVE DEVICES ARE C PROVIDED IN countrystats.dat AND DETERMINED FROM ROADMAP STUDIES, INCLUDING FROM C C JACOBSON, M.Z., ON THE CORRELATION BETWEEN BUILDING HEAT DEMAND AND C WIND ENERGY SUPPLY AND HOW IT HELPS TO AVOID BLACKOUTS, SMART C ENERGY, 1, 100009, DOI:10.1016/j.segy.2021.100009, 2021. C http://web.stanford.edu/group/efmh/jacobson/Articles/Others/21-Wind-Heat.pdf C C JACOBSON, M.Z., M.A. DELUCCHI, M.A. CAMERON, S.J. COUGHLIN, C. HAY, C I.P. MANOGARAN, Y. SHU, AND A.-K. VON KRAULAND, IMPACTS OF GREEN C NEW DEAL ENERGY PLANS ON GRID STABILITY, COSTS, JOBS, HEALTH, AND C CLIMATE IN 143 COUNTRIES, ONE EARTH, 1, 449-463, C DOI:10.1016/j.oneear.2019.12.003, 2019 C https://web.stanford.edu/group/efmh/jacobson/Articles/I/WWS-50-USState-plans.html C C JACOBSON. M.Z. ET AL. 100% CLEAN AND RENEWABLE WIND, WATER, AND SUNLIGHT C (WWS) ALL SECTOR ENERGY ROADMAPS FOR 139 COUNTRIES OF THE WORLD, JOULE, 1, C 108-121 DOI:10.1016/j.joule.2017.07.005, 2017, C http://web.stanford.edu/group/efmh/jacobson/Articles/I/WWS-50-USState-plans.html C C JACOBSON, M.Z., ET AL., 100% CLEAN AND RENEWABLE WIND, WATER, SUNLIGHT C (WWS) ALL-SECTOR ENERGY ROADMAPS FOR THE 50 UNITED STATES, ENERGY C AND ENVIRONMENTAL SCIENCES, 8, 2093-2117, DOI:10.1039/C5EE01283J, C 2015. C C IN THIS PROGRAM: C WHEN OVERGENERATION OCCURS, THE EXCESS IS STORED AS ELECTRICITY, HEAT, C OR COLD OR USED TO PRODUCE HYDROGEN. C WHEN UNDERGENERATION OCCURS, STORED ELECTRICITY, HEAT, OR COLD IS USED C TO SUPPLY INFLEXIBLE LOADS FIRST THEN FLEXIBLE LOADS. C FLEXIBLE LOADS NOT MET IMMEDIATELY ARE SHIFTED FORWARD IN TIME DUE TO C DEMAND-RESPONSE, BUT ONLY BY UP TO A FEW HOURS AT WHICH POINT THEY C ARE TURNED TO INFLEXIBLE LOADS. C HYDROGEN LOAD IS MET FROM STORAGE OR CURRENT ELECTRICITY. C SEVERAL TYPES OF STORAGE ARE USED FOR HEAT, COLD, AND ELECTRICITY. C C NO FAILURE IS PERMITTED TO OCCUR. C C ***************************************************************************** C MODEL SWITCHES C IFREWRITE, IFCONUS, GRIDUSE, INITYLOAD, IFINYLOAD, IBEGYLOAD, C ISUPYEAR, IFGATHEAT NYEARS, IFHRLOAD, IFCANARY, IFSTATES C C MODEL PARAMETERS TO VARY HERE FOR BOTH 50 STATE AND 143 COUNTRIES C FACONWIN, FACOFFWIN, FACRESPV, FACCOMPV, FACUTILPV, FACSHT C CSPTURBFAC, CSPSTORGAT, MXHRDRM C BATDISCH, HCHARCSP, STORHBAT C STORHCOLD, STORHHWAT, STORHPHS, C UGFAC, STORUGDYS, DAYH2STOR C HPTURBRAT, HTHRFAC, FHYDBASE C COOLSTES, PHSMIN, FHEATFLX C FCOLDFLX, FRSTORINIT, FDISTHEAT C CPERFORM, HCDDADD, FMORTBAU C HWFAC C C PARAMETERS FROM 50-STATE OR 143-COUNTRY PAPER C CAP2019LO, CAP2019HI C CAP2050LO, CAP2050HI C TDLOSLO, TDLOSHI C SDTRCOSL, STDTRCOSH C RATIOCSPDAT C C PARAMETERS TO UPDATE WHEN UPDATING LOAD DATASETS FOR 50-STATES. C VALUES AUTOMATICALLY OBTAINED FROM countrystats.dat (EXCEPT CHECK C TWONSHGAT... IN CASE THE CURRENT VALUE IS OUTDATED) C TGWONWIND, TGWOFFWIND, TGWRESPV, TGWCOMPV... C TWONSHGAT, TWOFFSHGAT, TWROOFPVG, TWUTILPVG, TWCSPGAT, TWSHTGAT C EGWONWIND, EGWOFFWIND, EGWRESPV, EGWCOMPV... C CURGEOEL, CURHYD, CURTID, CURWAV C BLOADRES, BLOADCOM, BLOADIND, BLOADTRA, BLOADAGF, BLOADOTH C FRACLOAD, PDENINST, C FRACREH2, FRACCOH2, FRACTRH2, FRACINH2 C C ***************************************************************************** C NYEARS = ACTUAL NUMBER OF YEARS OF SIMULATION (1..ANY NUMBER NOW) C C PARAMETER(NYEARS = 1) PARAMETER(NYEARS = 2) C PARAMETER(NYEARS = 3) C PARAMETER(NYEARS = 4) C PARAMETER(NYEARS = 5) C PARAMETER(NYEARS = 6) C C MXYEAR = MAXIMUM NUMBER OF YEARS OF SIMULATION >= NYEARS TO C ENSURE SOME DATA ARE PRINTED OUT OVER MULTIPLE YEARS EVEN C THOUGH SIMULATIONS ARE FOR FEWER YEARS. SET TO SOME HIGH # C PARAMETER(MXYEAR = 6) C C MXHPDAY = NUMBER OF HOURS PER DAY (24) C MXMONTH = MAX NUMBER OF MONTHS PER YEAR C MXDAYYR = MAX NUMBER OF DAYS PER YEAR (366, TO ACCOUNT FOR LEAP YEARS) C NDAYDATA = NUMBER OF DAYS OF COOLING/HEATING DEGREE DAY DATA FROM KHDD FILE. C DATA START JAN 1, 2013 TO DEC 31, 2014 (NON-LEAP YEARS) C MXHPYEAR = NUMBER OF HOURS PER YEAR FOR LEAP YEARS = 8784 C MXLOAD = MAX NUMBER OF HOURS PER YEAR FOR LOAD DATA C MXWWS = MAX NUMBER OF TIME ENTRIES IN FILE KWWS C MXDAY = MAX POSSIBLE NUMBER OF DAYS OF SIMULATION = MXDAYYR * NYEARS C ACTUAL NUMBER OF DAYS = NDSIM C MXLOADYR = MAX NUMBER OF HOURS OF LOAD DATA USED OVER NYEARS OF SIMULATION C MXHRSIM = MAX NUMBER OF GMT HOURS PER SIMULATION C MXYLOAD = MAX NUMBER OF YEARS OF ENTSOE LOAD DATA (11 = 2006 TO 2016) IN FILES C MXYHRLOAD = MAX NUMBER OF YEARS OF HI-RES LOAD DATA IN FILE C MXTSPYR = MAX NUMBER OF 30-SECOND TIME STEPS PER YEAR C FOR NON-LEAP YEARS, IT IS 1,051,200 =8760 HRS/YRx120 30-S/HR C MXTSHRALL = MAX NUMBER 30-SEC TIME STEPS IN ALL YEARS OF SIMULATION C MXREGUS = MAX NUMBER OF U.S. REGIONS FOR WHICH LOAD DATA AVAILABLE C MXHLOADUS = MAX NUMBER OF HOURS OF U.S. LOAD DATA (2016-19) = 4 * 8784 C PARAMETER(MXHPDAY = 24) PARAMETER(MXMONTH = 12) PARAMETER(MXDAYYR = 366) PARAMETER(NDAYDATA = 365 * 2) PARAMETER(MXHPYEAR = MXHPDAY * MXDAYYR) PARAMETER(MXLOAD = MXHPYEAR) PARAMETER(MXWWS = 15000000) PARAMETER(MXDAY = MXDAYYR * NYEARS) PARAMETER(MXLOADYR = MXLOAD * NYEARS) PARAMETER(MXHRSIM = MXHPYEAR * NYEARS) PARAMETER(MXYLOAD = 11) PARAMETER(MXYHRLOAD = 1) PARAMETER(MXTSPYR = MXHPYEAR * 120) PARAMETER(MXTSHRALL = MXTSPYR * NYEARS) PARAMETER(MXREGUS = 14) PARAMETER(MXHLOADUS = 4*MXHPYEAR) C C MXCAP = MAX NUMBER OF GENERATORS FOR WHICH CAPITAL COSTS AVAILABLE C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEO C HYDRO TIDAL WAVE SOLTHERM C MXSTOR = MAX NUMBER OF NON-UTES STORAGE TYPES CONSIDERED C MXSECTOR = MAX NUMBER OF LOAD SECTORS FOR COUNTRY PLANS (6) C RESIDENTIAL, COMMERCIAL, TRANSPORTATION, INDUSTRY, C AGRICULTURE/FORESTRY/FISHING, OTHER C MXJOBCAT = MAXIMUM NUMBER OF JOB CATEGORIES C MXSTORJOB = MAX TYPES OF STORAGE FOR JOB CALCULATIONS C PARAMETER(MXCAP = 13) PARAMETER(MXSTOR = 7) PARAMETER(MXSECTOR = 6) PARAMETER(MXJOBCAT = 14) PARAMETER(MXSTORJOB = 9) C C MXGRIDS = MAX NUMBER OF GRID REGIONS OF THE WORLD C ADD 1 WHEN BREAKING REGIONS INTO INDIVIDUAL COUNTRIES C ADD 38 WHEN SEPARATING ALL COUNTRIES OF EUROPE C SERBIA+MONTENEGRO+KOSOVO TREATED AS ONE IN GATOR-GCMOM C MXCOUNTRY = MAX NUMBER OF COUNTRIES READ IN C MXCOUNHDD = MAX NUMBER OF COUNTRIES READ IN heatcooldd.dat C INCLUDES THOSE FROM CANARY ISLANDS C C PARAMETER (MXGRIDS = 24) C PARAMETER (MXGRIDS = 25) PARAMETER (MXGRIDS = 62) PARAMETER (MXCOUNTRY = 143) PARAMETER (MXCOUNHDD = MXCOUNTRY + 6) C C NDAYYR = NUMBER OF DAYS PER YEAR OF SIMULATION (EITHER 365 OR 366) C NHYEAR = NUMBER OF HOURS PER YEAR OF SIMULATION (EITHER 8760 OR 8784) C DIMENSION TIMLOAD(MXLOADYR), BLOAD( MXLOADYR) DIMENSION HOTHOUR(MXLOADYR), COLDHOUR(MXLOADYR) DIMENSION TIMORIG( MXWWS) DIMENSION TIMWWS( MXWWS) DIMENSION IYRWWS( MXWWS) DIMENSION EXTRACSP( MXWWS) DIMENSION CURONSH( MXWWS), CUROFFSH(MXWWS) DIMENSION CUROOFPV( MXWWS), CURUTPV( MXWWS), CURCSP(MXWWS) DIMENSION CURWAVP( MXWWS), CURSOLHT(MXWWS) DIMENSION CURHLOAD( MXWWS), CURCLOAD(MXWWS) DIMENSION CURHFLEX( MXWWS), CURCFLEX(MXWWS) DIMENSION CURFLOAD( MXWWS) DIMENSION CINFXHLD( MXWWS), CINFXCLD(MXWWS) DIMENSION CURGEOP( MXWWS), CURTIDP( MXWWS) DIMENSION CURGEOH( MXWWS) DIMENSION CURHEAT( MXWWS), CURCOLD( MXWWS) DIMENSION FSTPWARM( MXWWS), FSTPCOOL(MXWWS) DIMENSION CLOAD( MXWWS), PERHRS( MXWWS) DIMENSION SUPPLY( MXWWS), DEMAND( MXWWS) DIMENSION SUPPHT( MXWWS) DIMENSION SUMONWIND(MXWWS) DIMENSION SUMOFWIND(MXWWS) DIMENSION SUMROOFPV(MXWWS) DIMENSION SUMUTILPV(MXWWS) DIMENSION SUMCSP( MXWWS) DIMENSION SUMSTHERM(MXWWS) DIMENSION SUMHEAT( MXWWS) DIMENSION SUMCOLD( MXWWS) DIMENSION HRINFLX(MXHPDAY,MXDAY), 1 HRONWIN(MXHPDAY,MXDAY), 1 HROFFWD(MXHPDAY,MXDAY), 1 HRROOF( MXHPDAY,MXDAY), 1 HRUTPV( MXHPDAY,MXDAY), 1 HRCSP( MXHPDAY,MXDAY), 1 HRSUPP( MXHPDAY,MXDAY), 1 HRCNT( MXHPDAY,MXDAY), 1 HRFLXLD(MXHPDAY,MXDAY), 1 ORIGLD( MXHPDAY,MXDAY) DIMENSION HRSHT( MXHPDAY,MXDAY) DIMENSION HRGHT( MXHPDAY,MXDAY) DIMENSION HRHYDR(MXHPDAY,MXDAY) DIMENSION HRWAVE(MXHPDAY,MXDAY) DIMENSION HRGEOT(MXHPDAY,MXDAY) DIMENSION HRTIDE(MXHPDAY,MXDAY) DIMENSION HCSTOR(MXHPDAY,MXDAY) DIMENSION HCSTLS(MXHPDAY,MXDAY) DIMENSION HCSTLI(MXHPDAY,MXDAY) DIMENSION PHSTOR(MXHPDAY,MXDAY) DIMENSION PHSTLS(MXHPDAY,MXDAY) DIMENSION PHSTLI(MXHPDAY,MXDAY) DIMENSION HOSTOR(MXHPDAY,MXDAY) DIMENSION HOSTLS(MXHPDAY,MXDAY) DIMENSION HOSTLI(MXHPDAY,MXDAY) DIMENSION HTSTOR(MXHPDAY,MXDAY) DIMENSION HTSTLS(MXHPDAY,MXDAY) DIMENSION HTSTLI(MXHPDAY,MXDAY) DIMENSION HBSTOR(MXHPDAY,MXDAY) DIMENSION HBSTLS(MXHPDAY,MXDAY) DIMENSION HBSTLI(MXHPDAY,MXDAY) DIMENSION UGSTOR(MXHPDAY,MXDAY) DIMENSION UGSTLS(MXHPDAY,MXDAY) DIMENSION UGSTLI(MXHPDAY,MXDAY) DIMENSION HRTDLS(MXHPDAY,MXDAY) DIMENSION HRSHED(MXHPDAY,MXDAY) DIMENSION H2STOR(MXHPDAY,MXDAY) DIMENSION COLDHR(MXHPDAY,MXDAY) DIMENSION WARMHR(MXHPDAY,MXDAY) DIMENSION H2LOAD(MXHPDAY,MXDAY) DIMENSION HDDMON( MXMONTH), CDDMON(MXMONTH) DIMENSION DAYFLEX(MXDAY), TWARMDAY(MXDAY), TCOOLDAY(MXDAY) DIMENSION H2FLEX( MXDAY) DIMENSION REMAINHR(MXHRSIM), NTIMSTEPS(MXHRSIM) DIMENSION IGMTM( MXDAY+1) DIMENSION IDYR( MXDAY+1) DIMENSION CAP2019LO(MXCAP), CAP2019HI(MXCAP), 1 CAP2050LO(MXCAP), CAP2050HI(MXCAP) DIMENSION AGWINSTAL(MXCAP), PGWINSTAL(MXCAP) DIMENSION OANDMLO( MXCAP), OANDMMN( MXCAP), OANDMHI( MXCAP) DIMENSION DECOMLO( MXCAP), DECOMMN( MXCAP), DECOMHI( MXCAP) DIMENSION ANNFACL( MXCAP), ANNFACM( MXCAP), ANNFACH( MXCAP) DIMENSION ACAPCOSL( MXCAP), ACAPCOSM( MXCAP), ACAPCOSH( MXCAP) DIMENSION PCAPCOSL( MXCAP), PCAPCOSM( MXCAP), PCAPCOSH( MXCAP) DIMENSION YEARLIFEL(MXCAP), YEARLIFEM(MXCAP), YEARLIFEH(MXCAP) DIMENSION TDLOSLO( MXCAP), TDLOSMN( MXCAP), TDLOSHI( MXCAP) DIMENSION SDTRCOSL( MXCAP), SDTRCOSM( MXCAP), SDTRCOSH( MXCAP) DIMENSION TDEFFMN( MXCAP), TDRATMN( MXCAP), FRACLOAD( MXCAP) DIMENSION AVCAPLO( MXCAP), AVCAPMN( MXCAP), AVCAPHI( MXCAP) DIMENSION PDENINST( MXCAP) DIMENSION ALLTONEW( MXCAP) DIMENSION GWFINAL( MXCAP) DIMENSION GWNEW( MXCAP) DIMENSION COSTSTORL(MXSTOR), COSTSTORM(MXSTOR), COSTSTORH(MXSTOR) DIMENSION LDMONTH(MXYEAR,MXMONTH) DIMENSION NDAYYR(MXYEAR) DIMENSION NHYEAR(MXYEAR) DIMENSION NHCUM( MXYEAR) DIMENSION AVCOLDLD(MXYEAR) DIMENSION AVHEATLD(MXYEAR) DIMENSION AVWINPOW(MXYEAR) DIMENSION HRSINYR( MXYEAR) DIMENSION AMAXLOAD( MXYEAR), AMINLOAD( MXYEAR) DIMENSION RAMPMAX( MXYEAR), TIMAXRAMP(MXYEAR) DIMENSION TIMAXLOAD(MXYEAR), TIMINLOAD(MXYEAR) DIMENSION HDDYR( NYEARS) DIMENSION CDDYR( NYEARS) DIMENSION ALOADHR( MXHPYEAR,MXYLOAD) DIMENSION ALOADREG(MXHPYEAR,MXYLOAD) DIMENSION YRLOAD( MXYLOAD) DIMENSION ILOADMW( MXYLOAD) DIMENSION IYOFLOAD(MXYLOAD) DIMENSION STORLOAD(MXCOUNTRY,MXHPYEAR) DIMENSION IFUSED( MXCOUNTRY,MXHPYEAR) DIMENSION READLOAD(MXHPYEAR) DIMENSION ILOADCOUN(MXCOUNTRY) DIMENSION STORCJOB(MXSTORJOB) DIMENSION STOROJOB(MXSTORJOB) DIMENSION BLOADMW(MXYHRLOAD) DIMENSION YLOADHR(MXYHRLOAD) DIMENSION IYOFHRLD(MXYHRLOAD) DIMENSION HRESLOAD(MXTSPYR,MXYHRLOAD) DIMENSION DLOAD( MXTSHRALL) DIMENSION TLOADHR( MXTSHRALL) DIMENSION USALOAD( MXHLOADUS,MXREGUS) C C NUMGRIDS = NUMBER OF GRID REGIONS IN countrystats.dat FILE C NAMEGRID = 1..NUMGRIDS NAME OF ALL GRID REGIONS IN countrystats.dat FILE C SUMWWS = SUM OF END-USE LOAD (GW) OVER ALL COUNTRIES IN 1..MXGRIDS REGION C SUMH2REG = GW-ELEC USED FOR H2 ELECTROLYSIS/COMPRESSION/STORAGE SUMMED C OVER ALL COUNTRIES AND SECTORS IN GRID REGION J C NCOUNGRID = NUMBER OF COUNTRIES IN EACH 1..NUMGRIDS GRID REGION C NAMORIGGR = ORIG COUNTRY NAME OF EACH 1..NCOUNGRID COUNTRY C OF EACH 1..NUMGRIDS REGION C NAMCOUNGR = FINAL COUNTRY NAME OF EACH 1..NCOUNGRID COUNTRY C OF EACH 1..NUMGRIDS REGION C NUMCOUNGR = 1..NCOUNTRY COUNTRY NUMBER OF EACH 1..NCOUNGRID COUNTRY C OF EACH 1..NUMGRIDS REGION C TLOADSUM = SUM OF TLOADSEC (GW) AMONG COUNTRIES IN EACH J=1..NUMGRIDS REGION C H2SECGRID = GW-ELEC USED FOR H2 ELECTROLYSIS/COMPRESSION/STORAGE SUMMED C OVER ALL COUNTRIES IN GRID REGION J FOR SECTOR K C TSECALL = SUM OF TLOADSEC (GW) AMONG ALL COUNTRIES OVER ALL GRID REGIONS C H2SECALL = GW-ELEC USED FOR H2 ELECTROLYSIS/COMPRESSION/STORAGE SUMMED C OVER ALL COUNTRIES IN SECTOR K C NCOUNTRY = NUMBER OF COUNTRIES READ IN DATASET C WWSTOT = TOTAL 2050 END-USE LOAD (GW) FOR EACH 1..MXCOUNTRY COUNTRY C SUPALL = 2050 TOTAL POWER SUPPLY (GW) ALL ELEC POW SOURCES (NOT SUPGHT2050) C NAMEORIG = NAME OF 1..NCOUNTRY AS READ FROM countrystats.dat C THIS NAME IS CHANGED BELOW TO MATCH THOSE FROM wwssupworld.dat C NAMECOUN = FINAL NAME OF EACH 1..NCOUNTRY COUNTRY C NAMECOUN NAMES MATCH COUNTRY NAMES FROM wwssupworld.dat C GRIDCOUN = NAME OF EACH 1..NCOUNTRY GRID REGION THE COUNTRY LIES IN C TGWINSTALL = NEW+EXIST INSTALLED GW 1..MXCAP DEVICE BY COUNTRY IN 2050 C TGWINSTGAT = NEW+EXIST INSTALLED GW 1..MXCAP DEVICE BY COUNTRY GATOR-GCMOM SIMS C EGWINSTALL = EXISTING INSTALLED GW OF EACH 1..MXCAP DEVICE C SUP2050 = 2050 ELECTRIC POWER (NOT HEAT) SUPPLY (GW) BY 1..MXCAP DEVICE C FLOADREG = FRAC 2050 END USE ELEC POWER FROM EACH 1..MXCAP DEVICE IN REGION C TLOADSEC = 2050 END-USE LOAD (GW) FOR EACH 1..MXSECTOR SECTOR BY COUNTRY C FRCH2SEC = FRACTION OF END-USE POWER DEMAND EACH 1..MXSECTOR SECTOR C GOING TO H2 ELECTROLYSIS/COMPRESSION/STORAGE C FRCH2REG = FRACTION OF END-USE POWER DEMAND EACH 1..MXSECTOR SECTOR C IN EACH 1..NUMGRIDS GRID GOING TO H2 ELECTROL/COMPRESSION/STORAGE C FELECSEC = FRAC 2050 END-USE HEAT+ELEC IN EACH SECTOR GOING TO ELECRICITY. C THE REST GOES TO HEAT. C FELECREG = FRAC 2050 END-USE HEAT+ELEC IN EACH SECTOR GOING TO ELECTRICITY C IN EACH 1..NUMGRIDS GRID. THE REST GOES TO HEAT C DIMENSION NAMEGRID( MXGRIDS) DIMENSION NAMELOAD( MXCOUNTRY) DIMENSION NCOUNGRID( MXGRIDS) DIMENSION SUMWWS( MXGRIDS) DIMENSION SUMH2REG( MXGRIDS) DIMENSION TGWALLREG( MXGRIDS) DIMENSION EGWALLREG( MXGRIDS) DIMENSION SUPALLREG( MXGRIDS) DIMENSION GATALLREG( MXGRIDS) DIMENSION REGONWIND( MXGRIDS) DIMENSION REGOFWIND( MXGRIDS) DIMENSION REGROOFPV( MXGRIDS) DIMENSION REGUTILPV( MXGRIDS) DIMENSION REGCSP( MXGRIDS) DIMENSION REGSTHERM( MXGRIDS) DIMENSION REGHEAT( MXGRIDS) DIMENSION REGCOLD( MXGRIDS) DIMENSION EXISTPHSR( MXGRIDS) DIMENSION EXISOLTHR( MXGRIDS) DIMENSION AREALKM2R( MXGRIDS) DIMENSION BAULOADR( MXGRIDS) DIMENSION BAULCOER( MXGRIDS) DIMENSION BAUHEALR( MXGRIDS) DIMENSION BAUCLIMR( MXGRIDS) DIMENSION AMORTCURR( MXGRIDS) DIMENSION AMORT50R( MXGRIDS) DIMENSION AVGCDD( MXGRIDS) DIMENSION AVGHDD( MXGRIDS) DIMENSION TGWADCSPR( MXGRIDS) DIMENSION TGWINSTGLB(MXCAP) DIMENSION EGWINSTGLB(MXCAP) DIMENSION SUPGLOB( MXCAP) DIMENSION GATGLOB( MXCAP) DIMENSION SUMEN( MXCAP) DIMENSION SUMNP( MXCAP) DIMENSION NAMORIGGR( MXGRIDS,MXCOUNTRY) DIMENSION NAMCOUNGR( MXGRIDS,MXCOUNTRY) DIMENSION NUMCOUNGR( MXGRIDS,MXCOUNTRY) DIMENSION TLOADSUM( MXGRIDS,MXSECTOR) DIMENSION H2SECGRID( MXGRIDS,MXSECTOR) DIMENSION ELLOADSEC( MXGRIDS,MXSECTOR) DIMENSION FRCH2REG( MXGRIDS,MXSECTOR) DIMENSION FELECREG( MXGRIDS,MXSECTOR) DIMENSION TGWINSTREG(MXGRIDS,MXCAP) DIMENSION EGWINSTREG(MXGRIDS,MXCAP) DIMENSION TGWGATREG( MXGRIDS,MXCAP) DIMENSION SUPGWREG( MXGRIDS,MXCAP) DIMENSION FLOADREG( MXGRIDS,MXCAP) DIMENSION TSECALL( MXSECTOR) DIMENSION H2SECALL( MXSECTOR) DIMENSION WWSTOT( MXCOUNTRY) DIMENSION SUPPALL( MXCOUNTRY) DIMENSION NAMECOUN( MXCOUNTRY) DIMENSION NAMEORIG( MXCOUNTRY) DIMENSION GRIDCOUN( MXCOUNTRY) DIMENSION NAMHTREG( MXCOUNTRY) DIMENSION MAPCOUN( MXCOUNTRY) DIMENSION ISUSED( MXCOUNTRY) DIMENSION EXISTPHSC( MXCOUNTRY) DIMENSION EXISOLTHC( MXCOUNTRY) DIMENSION AREALKM2C( MXCOUNTRY) DIMENSION BAULOADC( MXCOUNTRY) DIMENSION BAULCOEC( MXCOUNTRY) DIMENSION BAUHEALC( MXCOUNTRY) DIMENSION BAUCLIMC( MXCOUNTRY) DIMENSION AMORTCURC( MXCOUNTRY) DIMENSION AMORT50C( MXCOUNTRY) DIMENSION FELBUILD( MXCOUNTRY) DIMENSION FELIND( MXCOUNTRY) DIMENSION TGWALLCOUN(MXCOUNTRY) DIMENSION TGWADCSPC( MXCOUNTRY) DIMENSION TGWINSTALL(MXCOUNTRY,MXCAP) DIMENSION TGWINSTGAT(MXCOUNTRY,MXCAP) DIMENSION EGWINSTALL(MXCOUNTRY,MXCAP) DIMENSION SUP2050( MXCOUNTRY,MXCAP) DIMENSION TLOADSEC( MXCOUNTRY,MXSECTOR) DIMENSION FRCH2SEC( MXCOUNTRY,MXSECTOR) DIMENSION FELECSEC( MXCOUNTRY,MXSECTOR) DIMENSION HDDDAY( MXCOUNTRY,NDAYDATA) DIMENSION CDDDAY( MXCOUNTRY,NDAYDATA) DIMENSION NAMEREAD( MXCOUNHDD) DIMENSION HDDNAT( MXCOUNHDD) DIMENSION CDDNAT( MXCOUNHDD) DIMENSION HDDREG(MXGRIDS,NYEARS,MXDAYYR) DIMENSION CDDREG(MXGRIDS,NYEARS,MXDAYYR) DIMENSION POWCOUNTRY(MXCOUNTRY,MXCAP) DIMENSION ENCOUNTRY( MXCOUNTRY,MXCAP) DIMENSION FRDAYCOOL(NYEARS,MXDAYYR) DIMENSION FRDAYWARM(NYEARS,MXDAYYR) DIMENSION OPJOBSI(MXJOBCAT), OPJOBSC(MXCOUNTRY,MXJOBCAT) DIMENSION CONJOBI(MXJOBCAT), CONJOBC(MXCOUNTRY,MXJOBCAT) DIMENSION OPJOBSR(MXGRIDS,MXJOBCAT) DIMENSION CONJOBR(MXGRIDS,MXJOBCAT) DIMENSION AJOBLOSSC(MXCOUNTRY), AJOBLOSSR(MXGRIDS) DIMENSION TCONJOBC( MXCOUNTRY) DIMENSION TOPJOBC( MXCOUNTRY) DIMENSION CJOBTDC( MXCOUNTRY) DIMENSION OJOBTDC( MXCOUNTRY) DIMENSION CJOBSTORC(MXCOUNTRY) DIMENSION OJOBSTORC(MXCOUNTRY) DIMENSION CAPCOSC( MXCOUNTRY) DIMENSION ANNCOSC( MXCOUNTRY) DIMENSION CO2E2050C(MXCOUNTRY), CO2E2050R(MXGRIDS) DIMENSION DEFOPJOB(MXJOBCAT) C C COUNTRY = NAME OF COUNTRY READ IN FROM countrystats.dat C GRIDNAM = NAME OF GRID WHEN READ IN FROM countrystats.dat C GRIDUSE = NAME OF GRID REGION SIMULATED FOR PRESENT SIMULATION (SET HERE) C CHARACTER(28) PATHHOME CHARACTER(28) PATHTEMP, PATHTEM1 CHARACTER(39) PATHLOAD CHARACTER(14) COUNTRY, NAMEGRID, GRIDNAM, NAMCOUNGR, GRIDUSE, 1 NAMECOUN,DOMAIN, NAMEREAD, DUMMY, GRIDLOAD, 1 GRIDCOUN,NAMHTREG, NH, NAMEORIG, NAMORIGGR, 1 NAMELOAD,LOADNAME C C HDDMON = HEATING DEGREE DAYS PER MONTH (F) CONUS AVERAGE 1949-2011 C = DEVIATIONS BELOW MEAN DAILY TEMPERATURE OF 65 F SUMMED OVER C ALL DAYS IN MONTH. THIS IS AVERAGE 1949-2011 CONUS C TABLE 1.7 EIA http://www.eia.gov/totalenergy/data/annual/pdf/aer.pdf C DATA HDDMON / 917., 732., 593., 345., 159., 39., 1 9., 15., 77., 282., 539., 817. / C C CDDMON = COOLING DEGREE DAYS PER MONTH (F) CONUS AVERAGE 1949-2011 C = DEVIATIONS ABOVE MEAN DAILY TEMPERATURE OF 65 F SUMMED OVER C ALL DAYS IN MONTH. THIS IS AVERAGE 1949-2011 CONUS C TABLE 1.8 EIA http://www.eia.gov/totalenergy/data/annual/pdf/aer.pdf C DATA CDDMON / 9., 8., 18., 30., 97., 213., 1 321., 290., 155., 53., 15., 7. / C C CAP2019LO = 2019 LOW CAPITAL COST OF ENERGY SOURCES ($MIL/MW-INSTALLED) C FROM 50-STATE 50-state-WWS.xlsx 'Cost of Delivered Electricity' TAB C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C CSPNOST HAS MEAN OF $2.42 (2.07-2.79) MIL/MW SUBTRACTED TO REMOVE C STORAGE COST. ASSUME SOLAR THERMAL SAME AS UTILITY PV C THUS CAP2019LO(ICSPNOST) = 6.000 - 2.07 = 3.93 $MIL/MW C CAP COST SOLAR THERMAL ASSUMES $3600-4000 PER 3.716 M^2 COLLECTOR C & 0.7 KW-TH/M2 FOR CUR COST; +SAME SCALING AS UTIL PV FOR 2050 COST C CAP2019HI = 2019 HI CAPITAL COST OF ENERGY SOURCES ($MIL/MW-INSTALLED) C FROM 50-STATE 50-state-WWS.xlsx 'Cost of Delivered Electricity' TAB C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C CAP COST SOLAR THERMAL ASSUMES $3600-4000 PER 3.716 M^2 COLLECTOR C & 0.7 KW-TH/M2 FOR CUR COST; +SAME SCALING AS UTIL PV FOR 2050 COST C CAP2050LO = 2050 LOW CAPITAL COST OF ENERGY SOURCES ($MIL/MW-INSTALLED) C FROM 50-STATE 50-state-WWS.xlsx 'Cost of Delivered Electricity' TAB C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C CAP COST SOLAR THERMAL ASSUMES $3600-4000 PER 3.716 M^2 COLLECTOR C & 0.7 KW-TH/M2 FOR CUR COST; +SAME SCALING AS UTIL PV FOR 2050 COST C CAP2050HI = 2050 HI CAPITAL COST OF ENERGY SOURCES ($MIL/MW-INSTALLED) C FROM 50-STATE 50-state-WWS.xlsx 'Cost of Delivered Electricity' TAB C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C CAP COST SOLAR THERMAL ASSUMES $3600-4000 PER 3.716 M^2 COLLECTOR C & 0.7 KW-TH/M2 FOR CUR COST; +SAME SCALING AS UTIL PV FOR 2050 COST C C CSP IS GIVEN WITH AND WITHOUT STORAGE SINCE 50-STATES-WWS-xlsx ASSUMES STORAGE. C THE ADDITIONAL COST OF STORAGE IS FOR ADDITIONAL MIRRORS TO OVERSIZE C GENERATION OF HEAT RELATIVE TO RATED POWER OF TURBINE BY A FACTOR OF 3.2. C COST OF PHASE-CHANGE MATERIAL FOR STORAGE IS INCLUDED. C C CAP2019LO(ICSPSTOR) IS NOT USED HERE SINCE STORAGE COST IS CALCULATED C SEPARATE (COSTSTORL, COSTSTORM, COSTSTORH) C C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C C 2020 LOW, HIGH CAPITAL COST IN 2020 USD FROM 'Cost of delivered electricity' TAB C 143Countries.xlsx C DATA CAP2019LO 1 /1.05, 2.00, 2.525,1.30, 0.895, 6.00, 3.50, 4.05, 1 2.40, 4.50, 4.50, 1.30, 4.05/ DATA CAP2019HI 1 /1.45, 3.50, 2.825,2.16, 1.060, 9.09, 4.00, 6.05, 1 3.20, 6.50, 8.00, 1.50, 6.05/ C C 2050 LOW, HIGH CAPITAL COST IN 2020 USD FROM 'Cost of delivered electricity' TAB C 143Countries.xlsx C DATA CAP2050LO 1 /0.658, 0.974, 0.994, 0.552, 0.436, 2.082, 1.215, 3.881, 1 2.329, 1.352, 1.142, 0.815, 3.881/ DATA CAP2050HI 1 /0.909, 1.378, 1.376, 1.153, 0.615, 4.003, 1.761, 4.535, 1 3.200, 2.256, 2.776, 1.080, 4.535/ C C TDLOSLO = LO TRANSMISSION & DISTRIBUTION LOSS (FRACTION) OF OUTPUT ELECTRICITY C THIS WILL INCLUDE SHORT- AND LONG-DISTANCE TRANSMISSION LOSSES C FROM 143Countries.xlsx 'Demand Shares by tech, WWS' TAB C 'OVERALL TRANSMISSION AND DISTRIBUTION EFFICIENCY, 2050' C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C ASSUME SOLAR THERMAL SAME AS UTILITY PV C TDLOSHI = HI TRANSMISSION & DISTRIBUTION LOSS (FRACTION) OF OUTPUT ELECTRICITY C FROM 143Countries.xlsx 'Demand Shares by tech, WWS' TAB C 'OVERALL TRANSMISSION AND DISTRIBUTION EFFICIENCY, 2050' C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C DATA TDLOSLO 1 /0.05, 0.05, 0.01, 0.01, 0.05, 0.05, 0.05, 0.05, 1 0.05, 0.05, 0.05, 0.02, 0.05 / C DATA TDLOSHI 1 /0.10, 0.10, 0.02, 0.02, 0.10, 0.10, 0.10, 0.10, 1 0.10, 0.10, 0.10, 0.04, 0.10 / C C SDTRCOSL = LOW SHORT-DISTANCE TRANSMISSION COST (CENTS/KWH) C FROM 143-COUNTRY SPREADSHEET 'Trans. & distribution cost' TAB ROW 5 C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C SDTRCOSH = HIGH SHORT-DISTANCE TRANSMISSION COST (CENTS/KWH) C FROM 143-COUNTRY SPREADSHEET 'Trans. & distribution cost' TAB ROW 5 C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C DATA SDTRCOSL 1 /1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1 1.0, 1.0, 1.0, 1.0, 1.0 / C DATA SDTRCOSH 1 /1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1 1.1, 1.1, 1.1, 1.1, 1.1 / C C ***************************************************************************** C VARIABLE PLUS FIXED O&M COSTS FOR WWS AVG BETWEEN NOW & 2050 C 143-COUNTRY PAPER 'COST OF DELIVERED ELECTRICITY' TAB COLUMNS BC-BF C GEOTHERMAL ESTIMATED FROM CSP; VARIABLE COSTS OF HYDRO & OFFSHORE IGNORED C ***************************************************************************** C ONSHORE WIND $35 -40 /KW/YR C OFFSHORE WIND $60 -100/KW/YR C PV-RESIDENT $25 -30 /KW/YR C PV-COMMERCIAL $13 -20 /KW/YR C PV-UTILITY $13 -25 /KW/YR C CSP-W/ STORE $40 -60 /KW/YR C CSP-NO STORE $36 -54 /KW/YR C GEOTHERMAL $36 -54 /KW/YR C HYDRO $15 -16 /KW/YR C TIDAL $50 -200/KW/YR C WAVE $140-500/KW/YR C SOLAR THERMAL $40 -60 /KW/YR C C OANDMLO = LOW VARIABLE PLUS FIXED O&M COSTS ($/KW/YR) FOR WWS GENERATORS C OANDMMN = MEAN VARIABLE PLUS FIXED O&M COSTS ($/KW/YR) FOR WWS GENERATORS C OANDMHI = HI VARIABLE PLUS FIXED O&M COSTS ($/KW/YR) FOR WWS GENERATORS C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C DATA OANDMLO 1 /35., 60., 25., 13., 16.5, 40., 36., 36., 1 15., 50., 100., 40., 36. / C DATA OANDMHI 1 /40., 100., 30., 20., 22.5, 60., 54., 54., 1 16., 200., 250., 60., 54. / C C ***************************************************************************** C DECOMISSIONING COSTS AS FRACTION OF CAPITAL COST C 143-COUNTRY SPREADSHEET 'COST OF DELIVERED ELECTRICITY' TAB COLUMNS O-P C ***************************************************************************** C DECOMLO = LOW DECOMISSIONING COST AS FRACTION OF OVERNIGHT CAPITAL COST C DECOMHI = HIGH DECOMISSIONING COST AS FRACTION OF OVERNIGHT CAPITAL COST C C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C DATA DECOMLO 1 / 0.012, 0.02, 0.005, 0.005, 0.005, 0.010, 0.010, 0.02, 1 0.020, 0.02, 0.020, 0.010, 0.010 / C DATA DECOMHI 1 / 0.013, 0.02, 0.010, 0.010, 0.010, 0.015, 0.015, 0.03, 1 0.030, 0.03, 0.020, 0.015, 0.030 / C C ***************************************************************************** C PLANT OR DEVICE LIFETIMES C 50-STATE PAPER 'COST OF DELIVERED ELECTRICITY' TAB COLUMNS U AND V C ***************************************************************************** C HYDRO = 50-60 YEARS C GEOTHERMAL = 30-40 YEARS C ALL ELSE = 25-35 YEARS C C YEARLIFEL = LIFETIME (YEARS) OF WWS DEVICES THAT GIVES LO COST C YEARLIFEH = LIFETIME (YEARS) OF WWS DEVICES THAT GIVES HI COST C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C DATA YEARLIFEL 1 /35., 35., 47., 49., 52., 50., 50., 50., 1 100., 50., 50., 40., 50. / C DATA YEARLIFEH 1 /25., 25., 41., 43., 45., 40., 40., 40., 1 70., 40., 40., 30., 40. / C C FRACLOAD = APPROXIMATE FRACTION OF TOTAL LOAD MET BY ENERGY TECHNOLOGY C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C FROM 50-STATE 50-state-WWS.xlsx 'End-use share by WWS technology' TAB C **** THESE DATA APPLY ONLY WHEN IFCONUS=1 (48-STATES) *** C FOR 143 COUNTRIES, FRACLOAD IS CALCULATED FROM LOAD DATA READ C LATER IN PROGRAM. C C FOR IFCONUS=1: FINAL VALUES FROM 50-STATE PAPER C FOR IFCONUS=0, THESE VALUES ARE CALCULATED HEREIN C DATA FRACLOAD 1 /0.3092, 0.1908, 0.0398, 0.0324, 0.3073, 0.0730, 0.00, 0.0125, 1 0.0301, 0.0014, 0.0037, 0.0000, 0.0000 / C C ***************************************************************************** C INSTALLED POWER DENSITY (KM2/MW) C ***************************************************************************** C PDENINST = INSTALLED POWER DENSITY (KM2/MW) OF ENERGY DEVICES C FROM 143-COUNTRY SPREADSHEET 'Country and technology list' C CELLS K4..N15. FOR WIND AND WAVE, THESE NUMBERS ARE SPACING C DENSITIES. FOR EVERYTHING ELSE, THEY ARE FOOTPRINTS. C WIND VALUES FROM ENEVOLDSEN AND JACOBSON (ENERGY FOR C SUSTAINABLE DEVELOPMENT, 60, 40-51, 2021) C C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEOELEC C HYDRO TIDAL WAVE SOLTHERM GEOHEAT C DATA PDENINST 1 / 0.071,0.127,0.00523,0.00523,0.01222,0.02935,0.02935,0.00329, 1 0.50238, 0.004, 0.033, 0.00143, 0.00329 / C C ***************************************************************************** C DEFAULT NUMBER OF OPERATION JOBS PER MW-NAMEPLATE FOR EACH TECH C ***************************************************************************** C DEFOPJOB = DEFAULT NUMBER OPERATION JOBS PER MW-NAMEPLATE FOR EACH TECH C FOR TRANSMISSION, IT IS JOBS/KM C THESE ARE LONG-TERM, FULL-TIME JOBS C 1=ONWIND; 2=OFFWIND; 3=WAVE; 4=GEOELEC; 5=HYDRO; 6=TIDAL; C 7=RESPV; 8=COMGOVPV; 9=UTILPV; 10=TOTALCSP; 11=SOLHEAT; C 12=GEOHEAT; 13=CONVTRANSMIS; 14=HVDCTRANSMIS C (NOT NEEDED FOR TRANSMISSION HERE) C DATA DEFOPJOB 1 / 0.37, 0.63, 0.57, 0.46, 0.30, 0.61, 0.32, 1 0.16, 0.85, 0.86, 0.85, 0.46, 0.00, 0.00 / C C ***************************************************************************** C NUMBER OF CONSTRUCTION & OPERATION JOBS FOR STORAGE C RAM ET AL. (2019) JOB CREATION DURING THE GLOBAL C ENERGY TRANISITION TOWARDS 100% RENEWABLE POWER SYSTEM BY 2050 C TECHNOLOGICAL FORECASTING AND SOCIAL CHANGE C ***************************************************************************** C MANUFACTURING CONSTRUCTION DECOMISSIONING TOALCONST O&M C (JOB-YRS/MW) (JOB-YRS/MW) (JOB-YRS/MW) (JOB-YRS/MW) (JOBS/MW) C PHS 7.0 14.8 4.44 26.24 0.4 C BATTERIES 16.9 10.8 0.8 28.5 0.4 C H2 1.86 2.6 0.21 4.67 0.28 C C ASSUME NUMBER OF BATTERY JOBS/MW DECLINE BY FACTOR DUE TO C AUTOMATION & MORE EFFICIENY, LARGER BATTERIES C ASSUME HEAT PUMP JOB RATES SAME AS CW-STES/HW-STES/UTES JOB RATES C C STORCJOB = CONSTRUC+MANUFAC+DECOMISS JOBS STORAGE (JOB-YRS/MW) C FOR STORAGE, PER MW PEAK DISCHARGE RATE C FOR H2, PER MW NEEDED FOR ELECTROLYSIS AND COMPRESSION C STOROJOB = OPERATION AND MAINTENANCE (O&M) JOBS STORAGE (JOBS/MW) C FOR STORAGE, PER MW PEAK DISCHARGE RATE C FOR H2, PER MW NEEDED FOR ELECTROLYSIS AND COMPRESSION C 1= PHS; 2=PCM-CSP; 3=BATTERIES; 4=CW-STES; 5=PCM-ICE; C 6=HW-STES; 7=UTES; 8=HYDROGEN 9=HEAT PUMPS C DATA STORCJOB 1 /25.0, 20.0, 3.0, 5.0, 5.0, 5.0, 5.0, 4.0, 5.0/ C DATA STOROJOB 1 /0.3, 0.3, 0.2, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3/ C C ***************************************************************************** C DISCOUNT RATE C ***************************************************************************** C DISCOUNTL = LOW SOCIAL DISCOUNT RATE FOR INTERGENERATIONAL PROJECT C (SEE JACOBSON ET AL. JOULE, 2017) C DISCOUNTM = MEAN DISCOUNT RATE (FRACTION ON 1 BILLION LOAN) C DISCOUNTH = HI DISCOUNT RATE (FRACTION ON 1 BILLION LOAN) C DISCOUNTL = 0.01 DISCOUNTH = 0.03 DISCOUNTM = 0.5 * (DISCOUNTL + DISCOUNTH) C C ***************************************************************************** C COSTS OF STORAGE C ***************************************************************************** C COSTSTORL = LO LIFECYCLE COST OF STORAGE ($/KWH-TH OR $/KWH-ELEC) C COSTSTORM = MEAN LIFECYCLE COST OF STORAGE ($/KWH-TH OR $/KWH-ELEC) C COSTSTORH = HI LIFECYCLE COST OF STORAGE ($/KWH-TH OR $/KWH-ELEC) C 1=PHS-PUMPED HYDRO ($/KWH-ELEC) C (14, POONPUN&JEWELL IEEE EN CONVER 23,529,2008) C 2=COLD-WATER SENSIBLE-HEAT THERMAL ENERGY STORAGE (CW-STES) C 0.1-10 EUROS/KWH = $0.13-12.9/KWH-TH - IRENA C AND SARBU & SEBARCHIEVICI SUSTAINABILITY 10, 191 (2018) C MULTIPLY LATER BY CPERFORM TO GET $/KWH-ELEC C 3=PCM-CSP (COST OF PHASE-CHANGE MATERIAL) C PHASE CHANGE MATERIALS COSTS ARE 15.3 (10-20) $/KWH-TH C NITHYANANDAM ENERGY 64, 793 (2014) C 20.5-22.2 $/KWH FOR 6-8 HR LHTES STORAGE FROM TABLE 13 OF C XU ET AL. APPLIED ENERGY 160, 286-307 (2015) C 4=PCM-CSP (COST OF EXTRA MIRRORS) C C DOE LAZARD C DOE: 0 HRS STORAGE -- 25% CF C 6 HRS -- 42% C 10 HRS 52% ($7000/KW) C 12 HRS -- 59% C 14 HRS -- 66% C 18 HRS -- 80% = 80% ($9800/KW) USE $8700/KW TO ACCT FOR PCM C $1700/8=$212/KW-TURBINE-HR-STORAGE C RATIO OF KWH-STORAGE TO KWH-TURBINE C IS CF W/18 HRS TO CF W/0 HRS C = 80/25 = 3.2 C --> $212/3.2 = $66/ KWH-STORAGE 2013 C --> = $45.6/KWH-STORAGE 2050 C --> = $55.8/KWH-STORAGE MEAN C (INCLUDES PCM AND EXTRA MIRRORS) C C OF THIS TOTAL $15.3 (10-20)/KWH-TH IS DUE TO PCM SO SUBTRACT IT C OFF GIVING $40.5 (35.6-46)/KWH-TH FOR MIRRORS C C 5=PCM-ICE (ICE FROZEN DURING THE NIGHT; MELTED DURING THE DAY) C 10-50 EUROS/KWH-TH = $12.9-64.5/KWH - IRENA C MULTIPLY LATER BY CPERFORM TO GET $/KWH-ELEC C 6=HOT-WATER SENSIBLE-HEAT THERMAL ENERGY STORAGE (HW-STES) C USE SAME EFFICIENCES AS CW-STES ($/KWH-TH) C MULTIPLY LATER BY CPERFORM TO GET $/KWH-ELEC C 7=LITHIUM-ION BATTERIES ($/KWH-ELEC) C https://about.bnef.com/blog/behind-scenes-take-lithium-ion-battery-prices/ C DATA COSTSTORL /12.0, 0.1, 15.0, 35.6, 10.0, 0.1, 30.0 / DATA COSTSTORM /14.0, 3.0, 20.0, 40.5, 25.0, 3.0, 60.0 / DATA COSTSTORH /16.0, 10.0, 23.0, 46.0, 40.0, 10.0, 90.0 / C C COSTUTESL = LO LIFECYCLE COST OF UTES STORAGE ($/KWH-TH) C MULTIPLIED LATER BY CPERFORM SO THAT COST IS $/KWH-ELEC C SINCE ALL ENERGY GOING INTO STORAGE CONVERTED TO C ELECTRICITY C = 0.055-0.071 EUROS/KWH = 0.066-0.085 $/KWH C = (FROM GAINE, 2010) C http://arrow.dit.ie/cgi/viewcontent.cgi?article C =1007&context=dubencon2 C COSTUTESM = MEAN LIFECYCLE COST OF UTES STORAGE ($/KWH-TH) C WATER PIT STORAGE DRONNINGLUND 5.4 GWH-TH C INVESTMENT COST $0.47/kWH-TH (JACOBSON 2020 CUP P. 65) C WATER PIT STORAGE MARSTAL 6 GWH-TH C INVESTMENT COST $0.48/kWH-TH (JACOBSON 2020 CUP P. 65) C COSTUTESH = HI LIFECYCLE COST OF UTES STORAGE ($/KWH-TH) C = $3.13/kWH = AVG OF $1.71, 4.55/kWh: 1.5-3 KBTU/FT^3; C $1.5-2/FT^3; 3.41214 KBTU/KWH C http://www.igshpa.okstate.edu/membership/members_only/proceedings/ C 2011/100611-1030-B-Christopher%20Fox%20-%20Rehau%20-%20 C Underground%20Thermal%20Energy%20Storage.pdf C COSTUTESL = 0.1 COSTUTESM = 0.4 COSTUTESH = 1.0 C C GWPERMW = 0.001 GIGAWATTS (GW) PER MEGAWATT (MW) C TWPERMW = 0.000001 TERAWATTS (TW) PER MEGAWATT (MW) C TWPERGW = 0.001 TERAWATTS (TW) PER GIGAWATT (GW) C GWPTW = 1000. GIGAWATTS (GW) PER TERAWATT (TW) C AKWPTW = 1.0E+09 KILOWATTS (KW) PER TERAWATT (TW) OR KWH PER TWH C AKWPGW = 1.0E+06 KILOWATTS (KW) PER GIGAWATT (GW) C TRILPDOL = 1.0E-12 TRILLION DOLLARS PER DOLLAR C CENTPDOL = 100. CENTS PER DOLLAR C PCT = 100. CONVERTS FRACTION TO PERCENT C TRILFACT = CENTS-TW/(TRIL$-KW) = 100 CENTS/$/($TRIL/$ * 1.0E+09 KWH/TWH) C SMAL30 = 1.0E-30 = SMALL NUMBER TO PREVENT DIVIDE BY ZERO C AVHRSPYR = 8760 HOURS PER YEAR IN NON-LEAP YEARS C GWPERMW = 0.001 TWPERMW = 0.000001 TWPERGW = 0.001 GWPTW = 1000. AKWPTW = 1.0E+09 AKWPGW = 1.0E+06 TRILPDOL = 1.0E-12 CENTPDOL = 100. PCT = 100. TRILFACT = CENTPDOL / (TRILPDOL * AKWPTW) SMAL30 = 1.0E-30 AVHRSPYR = 8760. C C HRSPDAY = NUMBER OF HOURS PER DAY (24) C HRSPDAY = FLOAT(MXHPDAY) C C DTHRES = 30 = HIGH-RESOLUTION TIME STEP (S) C NTSPERHR = 120 = NUMBER OF 30-SECOND TIMES STEPS PER HR C DTHRES = 30. NTSPERHR = 120 C C ***************************************************************************** C INPUT AND OUTPUT FILE NUMBERS C ***************************************************************************** C IOUT = 6 KOUT = 7 IMON = 11 IHOU = 12 C KHTE = 14 KLOD = 15 KWWS = 16 KWW2 = 17 KDAT = 19 KHDD = 20 C C MAKE SURE THERE ARE NO OTHER FILE NUMBERS LARGER THAN KWW3 SINCE C KWW3 + NUMGRIDS - 1 FILE NUMBERS WILL BE OPENED USING KWW3 C KWW3 = 30 C C PATHHOME = DIRECTORY WHERE POWERWORLD.F AND MOST INPUT/OUTPUT LIE C PATHTEMP = DIRECTORY WHERE wwssupworld.dat READ FROM WHEN IFREWRITE=1,2 C PATHTEM1 = DIRECTORY TO WRITE wwssupreform.dat TO WHEN IFREWRITE=2 C (READS wwssupworld.dat FROM PATHTEMP) C PATHLOAD = DIRECTORY WHERE HOURLY LOAD DATA ARE LOCATED C PATHHOME = '/scratch/jacobson/loadmatch/' PATHTEMP = '/scratch/jacobson/loadmatch/' PATHTEM1 = '/scratch/jacobson/loadmatch/' PATHLOAD = '/scratch/jacobson/loadmatch/LOADHOURLY/' C C ***************************************************************************** C PARAMETERS THAT MODEL USERS CHANGE C ***************************************************************************** C IFCONUS = 1: SOLVE GRID INTEGRATION OVER 48 CONTIGUOUS UNITED STATES (CONUS) C AGGREGATE CONUS DATA ARE SPECIFIED WITHIN THIS PROGRAM C OBTAINED FROM 50-STATE 50-state-WWS.xlsx FILE C = 0: SOLVE GRID INTEGRATION OVER REGION OF THE WORLD GRIDUSE, C WHERE COUNTRIES TREATED IN EACH GRID REGION AND THEIR C CHARACTERISTICS ARE DEFINED IN countrystats.dat, WHICH IS C OBTAINED FROM 'Table for GATOR-GCMOM' TAB IN Allcountries.xlsx C IFCONUS = 0 C C IFSTATES = 1: THEN RUN SIMS WITH INDIVIDUAL OR GROUPS OF US STATES+DC C SIMULATIONS USE GATOR-GCMOM SUPPLY DATA STARTING 12 C 12 GMT JAN1 2050 (OFFSET=12.) AND IFHRLOAD=0 C C IFSTATES = 0 IFSTATES = 1 C C IFCANARY = 1: THEN RUN SIMULATIONS WITH THE CANARY ISLANDS. THESE C SIMULATIONS USE DATA STARTING 0 GMT JAN 1 RATHER THAN C 12 GMT JAN 1 (OFFSET=0). ALSO USES IFHRLOAD=1 C = 0: SIMULATIONS USING GATOR-GCMOM SUPPLY DATA STARTING 12 C 12 GMT JAN1 (OFFSET=12.). ALSO IFHRLOAD=0 C IFCANARY = 0 C IFCANARY = 1 C IF (IFCONUS.EQ.1.AND.IFSTATES.EQ.1.AND.IFCANARY.EQ.1) THEN WRITE(IOUT,*)'CAN ONLY HAVE ONE OR NONE OF IFCONUS,IFSTATES ', 1 'IFCANARY ON ', IFCONUS, IFSTATES, IFCANARY STOP ENDIF C C IFGATHEAT = 1: READ IN AND USE BUILDING HEATING AND COOLING ENERGY NEEDED EACH C TIME STEP FOR EACH COUNTRY IN wwssupworld.dat (wwssupply.xxx) C THIS IS USED TO SHAPE TIME-DEPENDENT HEATING/COOLING PROFILES C --> THIS AVOIDS USING DATA FROM heatcooldd.dat TO DO THIS C = 2: READ IN BUT DO NOT USE BUILDING HEATING AND COOLING ENERGY C INSTEAD USE HEATING-DEGREE AND COOLING-DEGREE DAY DATA C FROM heatcooldd.dat C = 0: DO NOT READ IN OR USE HEATING OR COOLING ENERGY C THIS IS USED ONLY WHEN PREVIOUS FORMAT W/O HEAT IS USED C OFFSET = TIME (HOURS) ADDED TO TIMWWS SO THAT IT IS CONSISTENT WITH TIMLOAD C SINCE SIMULATION FOR TIMWWS STARTED AT 12 GMT FIRST DAY, WHICH C ORIGINALLY CORRESPONDS TO TIMWWS=0. OFFSET MAKES THIS TIMWWS=12 C IFHRLOAD = 1: HI-RESOLUTION (30-SECOND) LOAD DATA C = 0: 1-HOUR RESOLUTION LOAD DATA C IF (IFCANARY.EQ.1) THEN IFGATHEAT = 0 OFFSET = 0. IFHRLOAD = 1 ELSE IFGATHEAT = 1 OFFSET = 12. IFHRLOAD = 0 ENDIF C C GRIDUSE = NAME OF GRID REGION SIMULATED FOR PRESENT SIMULATION (SET HERE) C GRIDUSE IS NOT USED WHEN IFCONUS = 1 C C ***************************************************************************** C THESE GRID REGIONS ARE THOSE USED IN THE 143-COUNTRY ROADMAP PAPERS C ***************************************************************************** C IF (IFCONUS.EQ.0.AND.IFSTATES.EQ.0.AND.IFCANARY.EQ.0) THEN C GRIDUSE = 'AFRICA' C GRIDUSE = 'AUSTRALIA' C GRIDUSE = 'CANADA' C GRIDUSE = 'CENTRAL-AMERIC' C GRIDUSE = 'CENTRAL-ASIA' C GRIDUSE = 'CHINA' C GRIDUSE = 'CUBA' GRIDUSE = 'EUROPE' C GRIDUSE = 'HAITI' C GRIDUSE = 'ICELAND' C GRIDUSE = 'INDIA' C GRIDUSE = 'ISRAEL' C GRIDUSE = 'JAMAICA' C GRIDUSE = 'JAPAN' C GRIDUSE = 'MAURITIUS' C GRIDUSE = 'MIDEAST' C GRIDUSE = 'NEW-ZEALAND' C GRIDUSE = 'PHILIPPINES' C GRIDUSE = 'RUSSIA' C GRIDUSE = 'SOUTH-AMERICA' C GRIDUSE = 'SOUTHEAST-ASIA' C GRIDUSE = 'SOUTH-KOREA' C GRIDUSE = 'TAIWAN' C GRIDUSE = 'UNITED-STATES' C C ***************************************************************************** C THESE GRIDS ARE FOR TESTING EFFECT OF COMBINING COUNTRIES ON GRID STABILITY C ***************************************************************************** C NORDEN = NORWAY + DENMARK C NORDENSWEGER = NORWAY + DENMARK + SWEDEN + GERMANY C NODESWGENEBELU = NOR+DEN+SWE+GER+NET+BEL+LUX C SWIGER = SWITZERLAND + GERMANY C SWIFRA = SWITZERLAND + FRANCE C SWIITA = SWITZERLAND + ITALY C NWEUROPE = NOR+DEN+SWE+GER+NET+BEL+LUX+FRA+SWI C SPAPORGIB = SPAIN + PORTUGAL + GIBRALTAR C WESTEUROPE = NOR+DEN+SWE+GER+NET+BEL+LUX+FRA+SWI+ITA+SPA+POR+GIB C DOESN'T INCLUDE UK C C INDIVIDUAL COUNTRIES C C GRIDUSE = 'BELGIUM' C GRIDUSE = 'DENMARK' C GRIDUSE = 'FRANCE' C GRIDUSE = 'GERMANY' C GRIDUSE = 'GIBRALTAR' C GRIDUSE = 'ITALY' C GRIDUSE = 'LUXEMBOURG' C GRIDUSE = 'NETHERLANDS' C GRIDUSE = 'NORWAY' C GRIDUSE = 'PORTUGAL' C GRIDUSE = 'SPAIN' C GRIDUSE = 'SWEDEN' C GRIDUSE = 'SWITZERLAND' C GRIDUSE = 'UNITED-KINGDOM' C C COMBINATIONS OF COUNTRIES C C GRIDUSE = 'NORDEN' C GRIDUSE = 'NORDENSWEGER' C GRIDUSE = 'NODESWGENEBELU' C GRIDUSE = 'SWIFRA' C GRIDUSE = 'SWIGER' C GRIDUSE = 'NWEUROPE' C GRIDUSE = 'SWIITA' C GRIDUSE = 'SPAPORGIB' C GRIDUSE = 'WESTEUROPE' C C ***************************************************************************** C THESE GRIDS ARE FOR TESTING INDIVIDUAL AND COMBINED CANARY ISLANDS C ***************************************************************************** C FOR THESE GRIDS, IFCANARY MUST = 1 C ELSEIF (IFCANARY.EQ.1) THEN C GRIDUSE = 'GRAN-CANARIA' C GRIDUSE = 'LANZAROTE-FV' C GRIDUSE = 'TENERIFE' C GRIDUSE = 'LA-PALMA' C GRIDUSE = 'LA-GOMERA' C GRIDUSE = 'EL-HIERRO' C GRIDUSE = 'GRANCAN-LZFT' C GRIDUSE = 'TENER-LAGOM' GRIDUSE = 'LANZ-FV-CSP' C GRIDUSE = 'ALL-CANARY' C C ***************************************************************************** C THESE GRID REGIONS ARE FOR INDIVIDUAL OR GROUPS OF 50 US STATES + DC C ***************************************************************************** C NORTH AMERICAN RELIABILITY CORPORATION (NERC) REGIONS C ***************************************************************************** C WECC = WESTERN ELECTRICITY COORDINATING COUNCIL C Arizona, California, Colorado, Idaho, Montana, Nevada, New Mexico, Oregon, C Utah, Washington State, Wyoming C MRO = MIDWEST RELIABILITY ORGANIZATION C Iowa, Kansas, Minnesota, Nebraska, North Dakota, Oklahoma, South Dakota, C Wisconsin C TRE = TEXAS RELIABILITY ENTITY C Texas C RFC = RELIABILITY FIRST CORPORATION C Delaware, Indiana, Maryland, Michigan, New Jersey, Ohio, Pennsylvania, C Washington D.C., West Virginia C SERC = SOUTHEASTERN ELECTRIC RELIABILITY COUNCIL C Alabama, Arkansas, Florida, Georgia, Illinois, Kentucky, Louisiana, Mississippi, C Missouri, North Carolina, South Carolina, Tennessee, Virginia C NPCC = NORTHEAST POWER COORDINATING COUNCIL C Connecticut, Maine, Massachusetts, New Hampshire, New York, Rhode Island, Vermont C ASCC = ALASKA SYSTEM COORDINATING COUNCIL C Alaska C HICC = HAWAIIAN ISLANDS COORDINATING COUNCIL C Hawaii C CALI = CALIFORNIA ALONE C FLA = FLORIDA ALONE C NEWY = NEW YORK STATE ALONE C USCON = 48 US STATES + DC C TXMRO = TEXAS + MRO (IA,KS,MN,NE,ND,OK,SD,WI) C ELSEIF (IFSTATES.EQ.1) THEN C GRIDUSE = 'WECC' C GRIDUSE = 'MRO' C GRIDUSE = 'TRE' C GRIDUSE = 'RFC' C GRIDUSE = 'SERC' C GRIDUSE = 'NPCC' C GRIDUSE = 'ASCC' GRIDUSE = 'HICC' C GRIDUSE = 'CALI' C GRIDUSE = 'FLA' C GRIDUSE = 'NEWY' C GRIDUSE = 'TXMRO' C GRIDUSE = 'USCON' C C ***************************************************************************** C THIS GRID IS THE CONTINENTAL US TREATED AS ONE, BASED ON STATE ROADMAPS C ***************************************************************************** C ELSE GRIDUSE = 'CONUS' ENDIF C WRITE(IOUT,111) GRIDUSE 111 FORMAT('DOMAIN: ',A14,' POWERWORLD.F LOADMATCH GRID INTEGRATION ', 1 'MODEL'/) C C ***************************************************************************** C WHEN HAVE A NEW wwssupply.XXXX FILE, FIRST GO THROUGH IFREWRITE=1, C THEN IFREWRITE=2, THEN IFREWRITE=3 C ***************************************************************************** C IFREWRITE = 1: REWRITE KWWS (wwssupworld.dat) FILE TO C KWW2 (wwssupreform.dat) ELIMINATING REDUNDANT TIMES C AND ELIMINATING AVERAGE VALUES (KEEPING INSTANT VALUES ONLY) C WHEN THIS IS COMPLETE, USE KWW2 FILE AS INPUT FOR IFREWRITE=2 C APPLIES WHEN IFCONUS=1 OR 0 C AFTER FINISHINING IFREWRITE=1, CAN ERASE KWWS (wwssupworld.dat) C C --> IF WANT TO INTERPOLATE SOLAR OR ADD TILT FACTORS, C RUN SOLARTILT/tilt.f, BUT ADJUST SOLAR FOR TILTING ONLY C FOR OLD FILES SINCE GATOR-GCMOM NOW INCLUDES TILTING. C APPLIES ONLY TO IFCONUS=0 C --> MOVE OUTPUT FILE FROM tilt.f (wwstilt.dat) to C wwssupreform.dat C = 2: READS KWW2 (wwssupreform.dat), C SUMS VALUES EACH TIME STEP AMONG ALL COUNTRIES IN GRID C REGION GRIDUSE, REWRITES SUMMED VALUES TO A SMALLER FILE C KWW3 (wwssupworld.REGION) (FOR EACH REGION C ALSO CALCULATES CAPACITY FACTOR (CF) OF ONSHORE, OFFSHORE WIND; C ROOFTOP & UTILITY PV AND CSP FROM GATOR-GCMOM SIMULATIONS C BY COUNTRY. C = 3: APPLIES ONLY WHEN IFCONUS=0: C READS DATA FROM FILE wwssupworld.REGION RATHER THAN C wwssupworld.dat FOR ONE GRID REGION. C FILE KWW3 CONTAINS ONLY ONE LINE OF DATA FOR EACH TIME STEP, C WHICH ARE DATA SUMMED OVER ALL COUNTRIES IN GRID REGION GRIDUSE C = 0: READ AND PROCESS FILE KWWS C APPLIES WHEN IFCONUS=1 OR 0 C (WHEN IFCONUS=0, READS ALL-COUNTRY DATA) C C WHEN IFCONUS=0, RUN IN SEQUENCE IFREWRITE=1,2,3 C IFCONUS=1, RUN IN SEQUENCE IFREWRITE=1,0 C MAY RUN SOLARTILT/tilt.f BEFORE RUNNING WITH IFREWRITE=2 C IF (IFCONUS.EQ.1) THEN IFREWRITE = 0 ELSE C IFREWRITE = 1 C IFREWRITE = 2 IFREWRITE = 3 ENDIF C C INITYEAR = INITIAL YEAR OF SIMULATIONS C INITYEAR = 2050 C C ISUPYEAR = 1: START SIMULATION WITH FIRST YEAR OF MODEL OUTPUT WIND/SOLAR C FIELDS IN KWWS C = 2: START SIMULATION SECOND YEAR OF MODEL OUTPUT WIND/SOLAR C FIELDS IN KWWS C = 3: START SIMULATION THIRD YEAR OF MODEL OUTPUT WIND/SOLAR C FIELDS IN KWWS C ISUPYEAR = 1 C ISUPYEAR = 2 C ISUPYEAR = 3 C ISUPYEAR = 4 C ISUPYEAR = 5 C ISUPYEAR = 6 C ISUPYEAR = MIN0(ISUPYEAR,NYEARS) C C ***************************************************************************** C SPECIFY MAIN SCENARIOS C ***************************************************************************** C IFHPTURB = 1: ADD HYDROPOWER TURBINES WITHOUT INCREASING ANNUAL AVERAGE C HYDRO OUTPUT TO SOME REGIONS (HPTURBRAT>1). HPTURBRAT C MAY = 1. IN THESE SCENARIOS, NO STATIONARY BATTERY STORAGE C = 0: HPTURBRAT MUST = 1. STORAGE WITH BATTERIES, CSP, ETC. C IFHPTURB = 0 C IFHPTURB = 1 C C CPERFORM = COEFFICIENT OF PERFORMANCE OF HEAT PUMPS C (J-TH/J-ELEC = = KWH-TH/KWH-ELEC = KW-TH/KW-ELEC) C = RATIO OF JOULES OF HEAT MOVED OR PRODUCED PER JOULE OF ELECTRICITY C = 1 FOR ELECTRIC RESISTANCE HEATING C = 3.2-4.5 FOR AIR SOURCE HEAT PUMPS C = 4.2-5.2 FOR GROUND SOURCE HEAT PUMPS C https://en.wikipedia.org/wiki/Heat_pump C CPFACT = JOULES OF ENERGY AVOIDED PER JOULE OF HEAT MOVED OR PRODUCED C BY A HEAT PUMP. MULTIPLY HEAD LOAD (TW) PROVIDED BY HEAT PUMP C BY CPFACT TO OBTAIN SAVED POWER (TW) DUE TO HEAT PUMP. C POWER NOT SAVED IS REQUIRED FOR ELECTRICITY TO RUN HEAT PUMP. C C SINCE CURRENT VERSION OF countrystats.dat ALREADY ASSUMES HEAT PUMPS C FOR ALL HEATING/COOLING, NO NEED TO ADJUST LOAD C CPERFORM = 4.0 CPFACT = (CPERFORM - 1.) / CPERFORM C C FMORTBAU = FRACTION OF ALL AIR POLLUTION DEATHS DUE TO BAU ENERGY C = 0.9 FROM 143-COUNTRY SPREADSHEET WHERE AP COSTS CALCULATED C FMORTBAU = 0.9 C C STORUGDYS = DAYS OF UNDERGROUND SEASONAL HEAT STORAGE IN SOIL OR WATER (UTES) (HRS) C DRAKE LANDING STORAGE SUPPLIES 100% OF WINTER AIR HEAT (90 DAYS) C STORHHWAT = MAX NUMBER HOURS HOT-WATER SENSIBLE-HEAT THERMAL ENERGY STORAGE C GRIDUSE = NAME OF GRID REGION SIMULATED FOR PRESENT SIMULATION (SET HERE) C GRIDLOAD = NAME OF LOAD DATA COUNTRY OR REGION USED FOR GRIDUSE REGION. C GRIDLOAD = 'COUNTRY2030GW' -> DATA FROM loadreg.COUNTRY2030GW C GRIDLOAD = 'CONUS2016-19' -> DATA FROM loadreg.CONUS2016-19 C GRIDLOAD = 'XXX' (WHERE XXX IS ANY COUNTRY NAME) C GRIDLOAD = 'CONUS' --> DATA FROM loadreg.CONUS C GRIDLOAD = GRIDUSE -> DATA FROM loadreg.XXX C IF GRIDLOAD = 'XXX' THEN HOURLY LOAD WILL BE SCALED TO HOURLY C FROM COUNTRY'S DATA. IF GRIDLOAD='CONUS' THEN IT WILL BE SCALED C FROM CONUS DATA. C IF GRIDLOAD = GRIDUSE OR GRIDLOAD = 'COUNTRY2030GW' THEN C SUM LOADS FOR GRID REGION OVER ALL COUNTRIES IN REGION C FOR WHICH FILES AVAILABLE. FOR EXAMPLE, IF GRIDLOAD='EUROPE', C SUM OVER ALL COUNTRIES IN EUROPE FOR WHICH DATA ARE AVAILABLE. IF C DATA ARE NOT AVAILABLE FOR A COUNTRY IN THE REGION, THAT IS OKAY, C SINCE DATA FOR THE OTHER COUNTRIES ARE STILL SUMMED, AND FINAL C LOAD IS SCALED BY TAKING THE PRODUCT OF 2050 REGIONAL INFLEX LOAD C X (CURRENT HOURLY LOAD / TOTAL YEARLY LOAD OVER ALL HOURS FOR C DATA THAT ARE AVAILABLE) C MXHRDRM = MAX NUMBER OF HOURS FORWARD THAT LOAD CAN BE SHIFTED BY C DEMAND-RESPONSE MANAGEMENT C = 24, 18, 16, 14 HOURS ALL WORK. 12 HOURS DOES NOT C HPTURBRAT = RATIO OF NEEDED DISCHARGE RATE (TW) OF HYDROPOWER C TO 2050 INSTALLED DISCHARGE RATE (TW). ADDITIONAL DISCHARGE C OBTAINED BY ADDING TURBINES/GENERATORS/TRANSFORMERS WITHOUT C INCREASING SIZE OF DAM (HOLDING ANNUAL ENERGY OUTPUT CONSTANT) C FACONWIN = FACTOR TO MULTIPLY DELIVERED ONSHORE WIND BY TO TEST WHETHER C INCREASING OUTPUT IMPROVES MATCHING DEMAND WITH SUPPLY. C FACOFFWIN = FACTOR TO MULTIPLY DELIVERED OFFSHORE WIND BY TO TEST WHETHER C INCREASING OUTPUT IMPROVES MATCHING DEMAND WITH SUPPLY. C FACRESPV = FACTOR TO MULTIPLY NAMEPLATE CAPACITY OF RES ROOF PV HERE C TO IMPROVE MATCHING DEMAND WITH SUPPLY. C FACCOMPV = FACTOR TO MULTIPLY NAMEPLATE CAPACITY OF COM/GOV ROOF PV HERE C TO IMPROVE MATCHING DEMAND WITH SUPPLY. C FACROOFPV = WEIGHTED AVG VALUE OF FACRESPV AND FACCOMPV C USED TO MULTIPLY DELIVERED TOTAL ROOFTOP PV FROM C GATOR-GCMOM BY C FACUTILPV = FACTOR TO MULTIPLY DELIVERED UTILITY PV BY TO TEST WHETHER C INCREASING OUTPUT IMPROVES MATCHING DEMAND WITH SUPPLY. C FACSHT = FACTOR TO MULTIPLY DELIVERED SOLAR THERMAL BY TO TEST WHETHER C INCREASING OUTPUT IMPROVES MATCHING DEMAND WITH SUPPLY. C = 0. MEANS ALL HOT FLUID ORIGINATES FROM ELECTRICITY (LOWER EFFIC C THAN FROM SOLAR COLLECTORS BUT ALLOWS SOLAR PV, CSP TO BE USED C FOR ELECTRICITY PLUS HEAT) = 0, THEN NO HEAT FROM SOLAR C THERMAL COLLECTORS. C CSPTURBFAC= RATIO OF MW OF CSP STEAM TURBINES DESIRED RELATIVE TO MW C ORIGINALLY INSTALLED FOR EACH CSP PLANT IN ORDER TO MEET C ANNUALLY AVERAGED POWER DEMAND FOR STATE OR COUNTRY C BEFORE CONSIDERING THE GRID. C = 1. INDICATES NO ADDITIONAL TURBINE POWER NEEDED TO MATCH DEMAND C = 1.6 INDICATES 60% MORE MW OF POWER NEEDED TO MATCH POWER DEMAND C ON GRID THAN NEEDED FOR ANNUALLY AVERAGED POWER DEMAND. C BATDISCH = MAX DISCHARGE AND CHARGE RATE (TW) OF BATTERIES C HTHRFAC = FACTOR TO MULTIPLY CURHYD * HRSPYR (TWH/YR) BY TO SPECIFY C LEVEL OF HYDROPOWER (TWH/YR) ABOVE WHICH IT NEEDS TO BE USED C RANGES FROM 0 TO 2 C PHSMIN = MIN PHS NAMEPLATE CAPAC (TW) IN 2050. C SET TO SMALLER OF A FIXED NUMBER AND NAMEPLATE HYDRO IN REGION C SINCE SOME REGIONS (E.G., JAMAICA, HAITI) NEED LESS THAN FIXED MIN C STORHPHS = MAX NUMBER HOURS PUMPED HYDRO STORAGE (PHS) C FRSTORINIT= FRACTION (0-1) OF MAX STORAGE CAPACITY THAT THE STORAGE MEDIUM C HAS IN STORAGE AT THE BEGINNING OF THE SIMULATION. APPLIES TO C ALL STORAGE EXCEPT FOR HYDROPOWER, WHICH IS ASSUMED FULL AT START C UGFAC = FACTOR TO MULTIPLY UTESCHARG BY TO INCREASE OR DECREASE C CHARGE RATE OF UTES STORAGE WITH ELECTRIC HEAT PUMPS. C IDEALLY 0-1 BUT CAN GO ABOVE 1. HIGHER UGFAC-->MORE C EXPENSIVE COST OF HEAT PUMPS TO CHARGE STORAGE WITH C ELECTRICITY. IF UGFAC=0, THEN ONLY SOLAR COLLECTORS C (FACSHT) CAN SUPPLY UTES WITH HEAT . C HWFAC = FACTOR TO MULTIPLY HOTCHARGE BY TO INCREASE OR DECREASE C CHARGE RATE OF HW-STES STORAGE WITH ELECTRIC HEAT PUMPS. C IDEALLY 0-1 BUT CAN BE ABOVE 1. C FLDISELEC = FRAC (DEFAULT 0.3) OF ALL END-USE ELECTRICITY SUBJECT TO HVDC LONG-DIST C TRANSMISSION (1200-2000 KM). FOR SMALL REGIONS (E.G., ISLANDS), C TRANSMISSION DISTANCES ARE SMALLER THUS FLDISELEC SHOULD C BE PROPORTIONATELY SMALLER C FHYDBASE = FRACTION (0-1) OF INSTANTANEOUS HYDRO OUTPUT CURHYD USED FOR C BASELOAD. THE REST IS USED FOR PEAKING C DAYH2STOR = NUMBER OF DAYS OF H2 STORAGE C IFHPTURB = 1: ADD HYDROPOWER TURBINES WITHOUT INCREASING ANNUAL AVERAGE C HYDRO OUTPUT TO SOME REGIONS (HPTURBRAT>1). HPTURBRAT C MAY = 1. IN THESE SCENARIOS, NO STATIONARY BATTERY STORAGE C = 0: HPTURBRAT MUST = 1. STORAGE WITH BATTERIES, CSP, ETC. C FDISTHEAT = FRACTION OF TOTAL AIR AND WATER HEAT AND COLD FROM DISTRICT HEATING C USING STORAGE IN UTES (BOREHOLES, WATER PITS, AQUIFERS) C DISTRICT HEAT CAN BE SUPPLIED BY HEAT PUMPS OR SOLAR C THERMAL HEAT OR GEOTHERMAL HEAT OR EXCESS ELECTRICITY. C HEAT/COLD NOT SUPPLIED BY DISTRICT HEATING IS SUPPLIED C WITHIN BUILDINGS WITH HEAT PUMPS. C GIVES DISTRICT HEATING VERSUS PROVIDING HEAT/COLD IN BUILDING C 4TH GENERATION DISTRICT HEATING HAS HEATING & COOLING LOOPS C HCDDADD = ADD DUMMY HEATING AND COOLING DEGREE DAYS FOR EACH DAY OF C YEAR TO ENSURE MAXIMUM VALUES FOR COUNTRIES THAT HAVE FEW C HDD OR CDD DAYS DON'T RESULT IN ALL HEATING OR COOLING C FALLING ON ONE DAY. IN REALITY, SOME HEATING LOAD SHOULD C BE SPREAD OVER EVERY NIGHT FOR AIR AND WATER HEATING. C SIMILARLY, SOME COOLING OCCURS EVERY DAY FOR REFRIGERATION C ENSURE THAT HDDREG AND CDDREG HAVE A MINIMUM VALUE EACH DAYS BECAUSE C 1) PEOPLE USE COLD AIR/WATER FOR REFRIG, COMPUTER COOLING EVEN IF DAY COLD C AND HOT AIR/WATER FOR SHOWERS, COOKING EVEN IF DAY IS HOT C 2) IF HDDREG OR CDDREG = 0 EVERY DAY OF YEAR, THEN HEAT OR COLD LOAD IS C SET TO ZERO EVERY DAY ALTHOUGH A LOAD MAY ACTUALLY EXIST C 3) IF HDDREG>0 ONLY ON ONE DAY OF YEAR, THE MAXIMUM HEAT LOAD = 365*TSTORAWH C SAME WITH COLD LOAD C C ***************************************************************************** C CONTINENTAL UNITED STATES (48 STATES) C ***************************************************************************** C IF (IFCONUS.EQ.1) THEN GRIDLOAD = 'CONUS' STORUGDYS = 60. STORHHWAT = 14. MXHRDRM = 11 FHYDBASE = 0. HPTURBRAT = 10. HTHRFAC = 0.5 FDISTHEAT = 0.2 DAYH2STOR = 40 FACONWIN = 1.05 FACOFFWIN = 1.0 FACUTILPV = 1.0 FACRESPV = 1.0 FACCOMPV = 1.0 CSPTURBFAC = 1.6 FACSHT = 1.0 BATDISCH = 0. PHSMIN = 0.016 FRSTORINIT = 0.5 UGFAC = 3.0 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C AFRICA C ***************************************************************************** C NO NEED FOR IFHPTURB=1 SINCE SOLVES WITH 0 BATTERIES W/HPTURBRAT=1 C ELSEIF (GRIDUSE.EQ.'AFRICA') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HPTURBRAT = 1. HTHRFAC = 0.5 FDISTHEAT = 0.1 C FACONWIN = 1.27 FACOFFWIN = 0.8 FACUTILPV = 0.9 FACRESPV = 0.7 FACCOMPV = 0.7 CSPTURBFAC = 1.0 FACSHT = 0. DAYH2STOR = 1. STORUGDYS = 20. C BATDISCH = 1.2 PHSMIN = 0.016 FRSTORINIT = 0.9 UGFAC = 3.0 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C AUSTRALIA C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'AUSTRALIA') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 3. FACONWIN = 1.2 FACOFFWIN = 0.95 FACUTILPV = 1.1 FACRESPV = 0.9 FACCOMPV = 0.9 CSPTURBFAC = 1.8 FACSHT = 0.7 BATDISCH = 0. DAYH2STOR = 45. STORUGDYS = 30. ELSE HPTURBRAT = 1. FACONWIN = 1.18 FACOFFWIN = 0.7 FACUTILPV = 1.95 FACRESPV = 0.75 FACCOMPV = 0.75 CSPTURBFAC = 1.6 FACSHT = 0.1 BATDISCH = 0.5 DAYH2STOR = 3. STORUGDYS = 5. ENDIF C PHSMIN = 0.006 FRSTORINIT = 0.75 UGFAC = 3.0 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C CANADA C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'CANADA') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 14. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.2 IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 2. FACONWIN = 1.7 FACOFFWIN = 0.8 FACUTILPV = 1.05 FACRESPV = 0.9 FACCOMPV = 0.9 CSPTURBFAC = 1.7 FACSHT = 0.21 BATDISCH = 0. DAYH2STOR = 1. STORUGDYS = 25. ELSE HPTURBRAT = 1. FACONWIN = 1.4 FACOFFWIN = 0.9 FACUTILPV = 0.6 FACUTILPV = 0.5 FACRESPV = 0.4 FACRESPV = 0.3 FACRESPV = 0.2 FACCOMPV = 0.8 FACCOMPV = 0.7 CSPTURBFAC = 0. FACSHT = 0.2 BATDISCH = 0.1 DAYH2STOR = 0. STORUGDYS = 10. ENDIF PHSMIN = 0.016 FRSTORINIT = 0.75 UGFAC = 2.0 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C CENTRAL AMERICA C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'CENTRAL-AMERIC') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 1. FACONWIN = 1.2 FACOFFWIN = 0.65 FACUTILPV = 1.2 FACRESPV = 0.95 FACCOMPV = 0.95 CSPTURBFAC = 1.6 FACSHT = 0.8 BATDISCH = 0. DAYH2STOR = 10. STORUGDYS = 3. ELSE HPTURBRAT = 1. FACONWIN = 1.35 FACOFFWIN = 1. FACUTILPV = 0.98 FACRESPV = 0.85 FACCOMPV = 0.88 CSPTURBFAC = 1.6 FACSHT = 0. BATDISCH = 0.28 DAYH2STOR = 15. STORUGDYS = 1. ENDIF C PHSMIN = 0.006 FRSTORINIT = 0.9 UGFAC = 3.0 HWFAC = 1.0 FLDISELEC = 0.2 HCDDADD = 1. C C ***************************************************************************** C CENTRAL ASIA C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'CENTRAL-ASIA') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.01 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 7. FACONWIN = 1.2 FACOFFWIN = 1.0 FACUTILPV = 1.1 FACRESPV = 0.7 FACCOMPV = 0.7 CSPTURBFAC = 1.6 FACSHT = 1.0 BATDISCH = 0. DAYH2STOR = 1. STORUGDYS = 48. ELSE HPTURBRAT = 1. FACONWIN = 1.41 FACOFFWIN = 0.9 FACUTILPV = 1.0 FACRESPV = 0.85 FACCOMPV = 0.85 CSPTURBFAC = 1. FACSHT = 0. BATDISCH = 0.8 DAYH2STOR = 3. STORUGDYS = 35. ENDIF C PHSMIN = 0.012 FRSTORINIT = 0.75 UGFAC = 1.0 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C CHINA-HONG KONG-MONGOLIA-NORTH KOREA C ***************************************************************************** C OVER 50% DISTRICT HEATING IN NORTHERN CHINA C https://www.sciencedirect.com/science/article/pii/S036054421730614X C ELSEIF (GRIDUSE.EQ.'CHINA') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 10. C STORHHWAT = 8. STORHHWAT = 5. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.3 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 1. FACONWIN = 1.8 FACOFFWIN = 0.9 FACUTILPV = 1.3 FACRESPV = 0.7 FACCOMPV = 0.7 CSPTURBFAC = 1.3 FACSHT = 0. BATDISCH = 0. DAYH2STOR = 1. STORUGDYS = 35. ELSE HPTURBRAT = 1. FACONWIN = 1.75 FACOFFWIN = 0.7 FACUTILPV = 1.7 FACRESPV = 0.55 FACCOMPV = 0.55 CSPTURBFAC = 1.4 FACSHT = 0.34 BATDISCH = 2.6 DAYH2STOR = 7. STORUGDYS = 27. ENDIF C PHSMIN = 0.016 FRSTORINIT = 0.90 UGFAC = 2.0 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C CUBA C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'CUBA') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8. FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.15 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 5. FACONWIN = 1.9 FACOFFWIN = 0.6 FACUTILPV = 1.4 FACRESPV = 0.8 FACCOMPV = 0.8 CSPTURBFAC = 2.05 FACSHT = 0. BATDISCH = 0. DAYH2STOR = 1. STORUGDYS = 12.0 FRSTORINIT = 0.75 ELSE HPTURBRAT = 1. FACONWIN = 1.5 FACOFFWIN = 1.5 FACUTILPV = 1.45 FACRESPV = 1. FACCOMPV = 1.2 CSPTURBFAC = 2.4 FACSHT = 0. BATDISCH = 0.19 DAYH2STOR = 30. STORUGDYS = 3. FRSTORINIT = 0.9 ENDIF C PHSMIN = 0.003 UGFAC = 3.0 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 2. C C ***************************************************************************** C EUROPE C ***************************************************************************** C PERCENT DISTRICT HEATING: LATVIA (65%), DENMARK (63%), ESTONIA (62%), C LITHUANIA (57%), SWEDEN (>50%), POLAND (>50%) C FINLAND (>50%) C C (GRIDLOAD=GRIDUSE) ELSEIF (GRIDUSE.EQ.'EUROPE') THEN GRIDLOAD = GRIDUSE C GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 4. FACONWIN = 1.6 FACOFFWIN = 0.85 FACUTILPV = 1.5 FACRESPV = 1. FACCOMPV = 1. CSPTURBFAC = 1.6 FACSHT = 0. BATDISCH = 0. DAYH2STOR = 2. STORUGDYS = 11. ELSE HPTURBRAT = 1. C FACONWIN = 1.45 FACONWIN = 1.42 FACOFFWIN = 1. FACUTILPV = 1. FACRESPV = 0.68 FACCOMPV = 0.9 CSPTURBFAC = 1. FACSHT = 0. BATDISCH = 1.4 C IFGATHEAT=1 DAYH2STOR = 5. C IFGATHEAT=2 C DAYH2STOR = 10. C STORUGDYS = 20. STORUGDYS = 25. ENDIF C PHSMIN = 0.016 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C HAITI-DOMINICAN REPUBLIC C ***************************************************************************** C NO NEED FOR IFHPTURB=1 SINCE SOLVES WITH 0 BATTERIES W/HPTURBRAT=1 C ELSEIF (GRIDUSE.EQ.'HAITI') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 0. MXHRDRM = 8 FHYDBASE = 0.95 HPTURBRAT = 1. HTHRFAC = 0.5 C FDISTHEAT = 0.05 FDISTHEAT = 0.2 C FACONWIN = 0.4 FACOFFWIN = 1.55 FACUTILPV = 1.2 FACRESPV = 0.5 FACCOMPV = 1. CSPTURBFAC = 1.0 FACSHT = 0.0 BATDISCH = 0.28 DAYH2STOR = 15. STORUGDYS = 15. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 2.0 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C ICELAND C ***************************************************************************** C NO NEED FOR IFHPTURB=1 SINCE SOLVES WITH 0 BATTERIES W/HPTURBRAT=1 C 92% OF ICELAND CURRENTLY IS SUBJECT TO DISTRICT HEATING C ELSEIF (GRIDUSE.EQ.'ICELAND') THEN GRIDLOAD = 'ICELAND' C GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HPTURBRAT = 1. HTHRFAC = 0.5 FDISTHEAT = 0.92 FACONWIN = 0.4 FACOFFWIN = 0.04 DAYH2STOR = 1. STORUGDYS = 0. C FACUTILPV = 0. FACRESPV = 0. FACCOMPV = 0. CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0. PHSMIN = 0. FRSTORINIT = 0.5 UGFAC = 0. HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C INDIA-NEPAL-SRI LANKA C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'INDIA') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 C FHYDBASE = 0.05 HTHRFAC = 0.5 FDISTHEAT = 0.1 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 2. FACONWIN = 1.3 FACOFFWIN = 0.5 FACUTILPV = 1.7 FACRESPV = 0.6 FACCOMPV = 0.6 CSPTURBFAC = 1.35 FACSHT = 0.16 BATDISCH = 0. DAYH2STOR = 9. STORUGDYS = 60. ELSE HPTURBRAT = 1. FACONWIN = 1.05 FACOFFWIN = 0.6 FACUTILPV = 3. FACRESPV = 0.1 FACCOMPV = 1.3 CSPTURBFAC = 2.59 FACSHT = 0. BATDISCH = 6.99 DAYH2STOR = 6. STORUGDYS = 9. ENDIF C PHSMIN = 0.012 FRSTORINIT = 0.95 UGFAC = 3.0 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C ISRAEL C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'ISRAEL') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.2 C HPTURBRAT = 1. FACONWIN = 1. FACOFFWIN = 0.88 FACUTILPV = 2.7 FACRESPV = 0.1 FACCOMPV = 2.3 CSPTURBFAC = 1.9 FACSHT = 0. BATDISCH = 0.25 DAYH2STOR = 20. STORUGDYS = 15. FRSTORINIT = 0.9 C PHSMIN = 0.01 UGFAC = 3.0 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 2. C C ***************************************************************************** C JAMAICA C ***************************************************************************** C NO NEED FOR IFHPTURB=1 SINCE SOLVES WITH 0 BATTERIES W/HPTURBRAT=1 C ELSEIF (GRIDUSE.EQ.'JAMAICA') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HPTURBRAT = 1. HTHRFAC = 0.5 FDISTHEAT = 0. C FACONWIN = 0.8 FACOFFWIN = 1. FACOFFWIN = 0.95 FACUTILPV = 1. FACRESPV = 0.9 FACCOMPV = 1. CSPTURBFAC = 1.2 FACSHT = 0. BATDISCH = 0.04 DAYH2STOR = 5. STORUGDYS = 5. C PHSMIN = 0.003 FRSTORINIT = 0.9 UGFAC = 0.3 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C JAPAN C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'JAPAN') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 6. FACONWIN = 2.0 FACOFFWIN = 2.2 FACUTILPV = 3.0 FACRESPV = 0.68 FACCOMPV = 0.68 CSPTURBFAC = 1.8 FACSHT = 0. BATDISCH = 0. DAYH2STOR = 45. STORUGDYS = 15. ELSE HPTURBRAT = 1. FACONWIN = 0.2 FACOFFWIN = 2. FACUTILPV = 2. FACRESPV = 0.2 FACCOMPV = 0.2 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.59 DAYH2STOR = 5. STORUGDYS = 5. ENDIF C PHSMIN = 0.08 FRSTORINIT = 0.9 UGFAC = 3.0 HWFAC = 1.0 FLDISELEC = 0.2 HCDDADD = 1. C C ***************************************************************************** C MAURITIUS C ***************************************************************************** C CURRENTLY NO WIND/SOLAR DATA FOR MAURITIUS C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'MAURITIUS') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. STORHHWAT = 0. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 C FDISTHEAT = 0.05 FDISTHEAT = 0.2 C HPTURBRAT = 1. FACONWIN = 0.85 FACOFFWIN = 1.95 FACUTILPV = 0.8 FACRESPV = 0.2 FACCOMPV = 0.2 CSPTURBFAC = 0.5 FACSHT = 0. BATDISCH = 0.005 DAYH2STOR = 25. STORUGDYS = 1. STORUGDYS = 5. C PHSMIN = 0.04 FRSTORINIT = 0.9 UGFAC = 2.0 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C MIDEAST C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'MIDEAST') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.05 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 1. FACONWIN = 1.4 FACOFFWIN = 0.7 FACUTILPV = 1.4 FACRESPV = 0.5 FACCOMPV = 0.5 CSPTURBFAC = 1.6 FACSHT = 0. BATDISCH = 0. C DAYH2STOR = 2. DAYH2STOR = 1. STORUGDYS = 52. FRSTORINIT = 0.5 ELSE HPTURBRAT = 1. FACONWIN = 2.1 FACOFFWIN = 0.8 FACUTILPV = 1.38 FACRESPV = 0.75 FACCOMPV = 0.75 CSPTURBFAC = 2. FACSHT = 0. BATDISCH = 2.4 DAYH2STOR = 10. STORUGDYS = 10. FRSTORINIT = 0.9 ENDIF C PHSMIN = 0.01 UGFAC = 3.0 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C NEW ZEALAND C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'NEW-ZEALAND') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.05 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 3. FACONWIN = 1.3 FACOFFWIN = 0.7 FACUTILPV = 1.1 FACRESPV = 0.6 FACCOMPV = 0.6 CSPTURBFAC = 1.0 FACSHT = 0.7 BATDISCH = 0. DAYH2STOR = 4. STORUGDYS = 10. ELSE HPTURBRAT = 1. FACONWIN = 1.49 FACOFFWIN = 0.4 FACUTILPV = 1.65 FACRESPV = 0.6 FACCOMPV = 0.6 CSPTURBFAC = 0.8 FACSHT = 0. BATDISCH = 0.14 DAYH2STOR = 3. STORUGDYS = 25. ENDIF C PHSMIN = 0.006 FRSTORINIT = 0.9 UGFAC = 2.0 HWFAC = 1.0 FLDISELEC = 0.15 HCDDADD = 1. C C ***************************************************************************** C PHILIPPINES C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'PHILIPPINES') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.05 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 4. FACONWIN = 2.5 FACOFFWIN = 0.9 FACUTILPV = 2.6 FACRESPV = 0.4 FACCOMPV = 0.4 CSPTURBFAC = 1.6 FACSHT = 1. BATDISCH = 0. DAYH2STOR = 1. STORUGDYS = 37. ELSE HPTURBRAT = 1. FACONWIN = 1.35 FACOFFWIN = 0.85 FACUTILPV = 1.75 FACRESPV = 0.9 FACCOMPV = 0.9 CSPTURBFAC = 0.9 FACSHT = 0. BATDISCH = 0.08 DAYH2STOR = 15 STORUGDYS = 36. ENDIF C PHSMIN = 0.02 FRSTORINIT = 0.9 UGFAC = 3.0 HWFAC = 1.0 FLDISELEC = 0.2 HCDDADD = 1. C C ***************************************************************************** C RUSSIA-GEORGIA C ***************************************************************************** C DISTRICT HEATING >50 % C https://www.sciencedirect.com/science/article/pii/S036054421730614X C ELSEIF (GRIDUSE.EQ.'RUSSIA') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 10. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 3. FACONWIN = 1.3 FACOFFWIN = 0.9 FACUTILPV = 1.1 FACRESPV = 0.45 FACCOMPV = 0.45 CSPTURBFAC = 1.3 FACSHT = 0. BATDISCH = 0. DAYH2STOR = 1. STORUGDYS = 10. ELSE HPTURBRAT = 1. FACONWIN = 2. FACOFFWIN = 0.6 FACUTILPV = 1.5 FACRESPV = 0.45 FACCOMPV = 0.45 CSPTURBFAC = 0.7 FACSHT = 0. BATDISCH = 0.04 DAYH2STOR = 5. STORUGDYS = 30. ENDIF C PHSMIN = 0.016 FRSTORINIT = 0.75 UGFAC = 1.0 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C SOUTH AMERICA C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'SOUTH-AMERICA') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 2. FACONWIN = 1.5 FACOFFWIN = 0.8 FACUTILPV = 1.0 FACRESPV = 0.7 FACCOMPV = 0.7 CSPTURBFAC = 1.6 FACSHT = 0.79 BATDISCH = 0. DAYH2STOR = 1. STORUGDYS = 20. ELSE HPTURBRAT = 1. FACONWIN = 1.25 FACOFFWIN = 0.75 FACUTILPV = 1.28 FACRESPV = 0.6 FACCOMPV = 0.6 CSPTURBFAC = 1.0 FACSHT = 0. BATDISCH = 0.01 DAYH2STOR = 1. STORUGDYS = 2. ENDIF C PHSMIN = 0.016 FRSTORINIT = 0.90 UGFAC = 2.0 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C SOUTHEAST ASIA C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'SOUTHEAST-ASIA') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 1. FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 1. FACONWIN = 1.47 FACOFFWIN = 1.3 FACUTILPV = 3.5 FACRESPV = 0.5 FACCOMPV = 0.5 CSPTURBFAC = 2.0 FACSHT = 0.4 BATDISCH = 0. DAYH2STOR = 7. STORUGDYS = 23. ELSE HPTURBRAT = 1. FACONWIN = 0.2 FACOFFWIN = 0.65 FACUTILPV = 1.3 FACRESPV = 0.88 FACCOMPV = 0.88 CSPTURBFAC = 7. FACSHT = 0. BATDISCH = 0.95 DAYH2STOR = 3. STORUGDYS = 5. ENDIF C PHSMIN = 0.05 FRSTORINIT = 0.95 UGFAC = 3.0 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C SOUTH KOREA C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'SOUTH-KOREA') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.15 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 6. FACONWIN = 2.0 FACOFFWIN = 2.2 FACUTILPV = 3.0 FACRESPV = 0.68 FACCOMPV = 0.68 CSPTURBFAC = 1.8 FACSHT = 0. BATDISCH = 0. DAYH2STOR = 45. STORUGDYS = 15. HCDDADD = 2. ELSE HPTURBRAT = 1. C C FACONWIN = 0.57 C FACOFFWIN = 1.75 C FACUTILPV = 2.18 C FACRESPV = 0.05 C FACCOMPV = 0.05 C CSPTURBFAC = 1.45 C FACSHT = 0. C BATDISCH = 1.9 C DAYH2STOR = 6. C STORUGDYS = 6. C HCDDADD = 2. C FACONWIN = 0.1 FACOFFWIN = 1.4 FACUTILPV = 1.2 FACRESPV = 1.5 FACCOMPV = 2.5 CSPTURBFAC = 1.6 FACSHT = 0. BATDISCH = 2.8 DAYH2STOR = 15. STORUGDYS = 15. HCDDADD = 5. ENDIF C PHSMIN = 0.08 FRSTORINIT = 0.9 UGFAC = 3.0 HWFAC = 1.0 FLDISELEC = 0. C C ***************************************************************************** C TAIWAN C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'TAIWAN') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.15 C IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 7. FACONWIN = 1.7 FACOFFWIN = 0.9 FACUTILPV = 2.3 FACRESPV = 0.98 FACCOMPV = 0.98 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0. DAYH2STOR = 1. STORUGDYS = 18. ELSE HPTURBRAT = 1. FACONWIN = 0.6 FACOFFWIN = 1.8 FACUTILPV = 1.21 FACRESPV = 0.7 FACCOMPV = 2.5 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 1.75 DAYH2STOR = 40. STORUGDYS = 1. ENDIF C PHSMIN = 0.04 FRSTORINIT = 0.95 UGFAC = 3.0 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C UNITED STATES C ***************************************************************************** C ABOUT 6.2% OF US FLOOR SPACE CURRENTLY COVERED BY DISTRICT HEATING; C ELSEIF (GRIDUSE.EQ.'UNITED-STATES') THEN GRIDLOAD = 'COUNTRY2030GW' C GRIDLOAD = 'CONUS' C GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.2 IF (IFHPTURB.EQ.1) THEN HPTURBRAT = 2. FACONWIN = 1.7 FACOFFWIN = 0.8 FACUTILPV = 1.05 FACRESPV = 0.9 FACCOMPV = 0.9 CSPTURBFAC = 1.7 FACSHT = 0.21 BATDISCH = 0. DAYH2STOR = 1. STORUGDYS = 25. ELSE HPTURBRAT = 1. FACONWIN = 1.7 FACOFFWIN = 1. FACOFFWIN = 0.9 FACOFFWIN = 0.8 FACUTILPV = 2.4 FACRESPV = 0.45 FACCOMPV = 0.45 CSPTURBFAC = 1.75 CSPTURBFAC = 1.7 FACSHT = 0. BATDISCH = 2.7 DAYH2STOR = 20. STORUGDYS = 2. ENDIF PHSMIN = 0.016 FRSTORINIT = 0.9 UGFAC = 3. HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C INDIVIDUAL + COMBINATIONS OF EUROPEAN COUNTRIES C ***************************************************************************** C ***************************************************************************** C NORDEN = NORWAY + DENMARK C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'NORDEN') THEN GRIDLOAD = 'NORDEN' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.55 C HPTURBRAT = 1. FACONWIN = 1. FACOFFWIN = 1. FACUTILPV = 0.6 FACRESPV = 0.6 FACCOMPV = 0.6 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0. DAYH2STOR = 1. STORUGDYS = 1. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C NORDENSWEGER = NORWAY + DENMARK + SWEDEN + GERMANY C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'NORDENSWEGER') THEN GRIDLOAD = 'NORDENSWEGER' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C HPTURBRAT = 1. FACONWIN = 1.3 FACOFFWIN = 1.2 FACUTILPV = 1.2 FACRESPV = 1. FACCOMPV = 2.8 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 1. DAYH2STOR = 20. STORUGDYS = 15. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C NODESWGENEBELU = NOR+DEN+SWE+GER+NET+BEL+LUX = NORTHERN EUROPE C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'NODESWGENEBELU') THEN GRIDLOAD = 'NODESWGENEBELU' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C HPTURBRAT = 1. FACONWIN = 1.3 FACONWIN = 1.5 FACOFFWIN = 1.2 FACUTILPV = 1.1 FACRESPV = 1. FACCOMPV = 2.7 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 1.4 DAYH2STOR = 17. STORUGDYS = 15. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C SWIGER = SWITZERLAND + GERMANY C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'SWIGER') THEN GRIDLOAD = 'SWIGER' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.4 C HPTURBRAT = 1. FACONWIN = 1.5 FACOFFWIN = 1. FACUTILPV = 1.5 FACRESPV = 1. FACCOMPV = 2.9 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 1.2 DAYH2STOR = 10. STORUGDYS = 10. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C SWIFRA = SWITZERLAND + FRANCE C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'SWIFRA') THEN GRIDLOAD = 'SWIFRA' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.4 C HPTURBRAT = 1. FACONWIN = 1.3 FACONWIN = 1.6 FACOFFWIN = 1. FACUTILPV = 0.9 FACRESPV = 1. FACCOMPV = 1. CSPTURBFAC = 1. FACSHT = 0. BATDISCH = 0.15 DAYH2STOR = 10. STORUGDYS = 5. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C SWIITA = SWITZERLAND + ITALY C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'SWIITA') THEN GRIDLOAD = 'SWIITA' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.3 C HPTURBRAT = 1. FACONWIN = 1.1 FACOFFWIN = 1. FACUTILPV = 1.2 FACRESPV = 0.8 FACCOMPV = 0.8 CSPTURBFAC = 1. FACSHT = 0. BATDISCH = 0.05 DAYH2STOR = 25. STORUGDYS = 20. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C NWEUROPE = NOR+DEN+SWE+GER+NET+BEL+LUX+FRA+SWI C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'NWEUROPE') THEN GRIDLOAD = 'NWEUROPE' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C HPTURBRAT = 1. FACONWIN = 1.3 FACOFFWIN = 1.2 FACUTILPV = 1.2 FACRESPV = 1. FACCOMPV = 1. CSPTURBFAC = 1. FACSHT = 0. BATDISCH = 0.8 DAYH2STOR = 15. STORUGDYS = 15. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C SPAPORGIB = SPAIN + PORTUGAL + GIBRALTAR C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'SPAPORGIB') THEN GRIDLOAD = 'SPAPORGIB' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.3 C HPTURBRAT = 1. FACONWIN = 1.3 FACOFFWIN = 0.8 FACUTILPV = 0.8 FACRESPV = 0.8 FACCOMPV = 0.8 CSPTURBFAC = 1. FACSHT = 0. BATDISCH = 0. DAYH2STOR = 20. STORUGDYS = 20. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C WESTEUROPE = NOR+DEN+SWE+GER+NET+BEL+LUX+FRA+SWI+ITA+SPA+POR+GIB C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'WESTEUROPE') THEN GRIDLOAD = 'WESTEUROPE' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C HPTURBRAT = 1. FACONWIN = 1.3 FACOFFWIN = 1. FACUTILPV = 1.15 FACRESPV = 1. FACCOMPV = 1. CSPTURBFAC = 1. FACSHT = 0. BATDISCH = 0. DAYH2STOR = 15. STORUGDYS = 15. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C GERMANY C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'GERMANY') THEN GRIDLOAD = 'GERMANY' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C HPTURBRAT = 1. FACONWIN = 1.5 FACOFFWIN = 1.25 FACUTILPV = 2. FACRESPV = 1. FACCOMPV = 3. CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 1.3 DAYH2STOR = 5. STORUGDYS = 10. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.15 HCDDADD = 1. C C ***************************************************************************** C UNITED KINGDOM C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'UNITED-KINGDOM') THEN GRIDLOAD = 'UNITED-KINGDOM' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C HPTURBRAT = 1. FACONWIN = 1.5 FACOFFWIN = 1.2 FACUTILPV = 1.8 FACRESPV = 0.8 FACCOMPV = 0.8 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.5 DAYH2STOR = 15. STORUGDYS = 15. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.15 HCDDADD = 1. C C ***************************************************************************** C FRANCE C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'FRANCE') THEN GRIDLOAD = 'FRANCE' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C HPTURBRAT = 1. FACONWIN = 1.4 FACOFFWIN = 0.95 FACUTILPV = 2.2 FACRESPV = 1. FACCOMPV = 1. CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.5 DAYH2STOR = 5. STORUGDYS = 5. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.15 HCDDADD = 1. C C ***************************************************************************** C NORWAY C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'NORWAY') THEN GRIDLOAD = 'NORWAY' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C HPTURBRAT = 1. FACONWIN = 0.8 FACOFFWIN = 0.8 FACUTILPV = 0.5 FACRESPV = 0.5 FACCOMPV = 0.5 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0. DAYH2STOR = 1. STORUGDYS = 1. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.15 HCDDADD = 1. C C ***************************************************************************** C SWEDEN C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'SWEDEN') THEN GRIDLOAD = 'SWEDEN' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C HPTURBRAT = 1. FACONWIN = 1. FACOFFWIN = 1. FACUTILPV = 1. FACRESPV = 0.8 FACCOMPV = 0.8 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.2 DAYH2STOR = 5. STORUGDYS = 40. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.15 HCDDADD = 1. C C ***************************************************************************** C DENMARK C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'DENMARK') THEN GRIDLOAD = 'DENMARK' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.63 C HPTURBRAT = 1. FACONWIN = 2.5 FACOFFWIN = 2.3 FACUTILPV = 0.8 FACRESPV = 0.8 FACCOMPV = 0.8 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.2 DAYH2STOR = 15. STORUGDYS = 15. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.1 HCDDADD = 1. C C ***************************************************************************** C NETHERLANDS C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'NETHERLANDS') THEN GRIDLOAD = 'NETHERLANDS' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C HPTURBRAT = 1. FACONWIN = 2. FACOFFWIN = 1.5 FACUTILPV = 1.5 FACRESPV = 0.7 FACCOMPV = 1.2 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.55 DAYH2STOR = 10. STORUGDYS = 5. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.1 HCDDADD = 1. C C ***************************************************************************** C BELGIUM C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'BELGIUM') THEN GRIDLOAD = 'BELGIUM' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C HPTURBRAT = 1. FACONWIN = 2.0 FACOFFWIN = 1.8 FACUTILPV = 1.3 FACRESPV = 0.7 FACCOMPV = 0.7 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.3 DAYH2STOR = 15. STORUGDYS = 15. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.1 HCDDADD = 1. C C ***************************************************************************** C LUXEMBOURG C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'LUXEMBOURG') THEN GRIDLOAD = 'LUXEMBOURG' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.5 C HPTURBRAT = 1. FACONWIN = 4.5 FACOFFWIN = 0. FACUTILPV = 1. FACRESPV = 1.4 FACCOMPV = 1.5 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.12 DAYH2STOR = 50. STORUGDYS = 50. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C SWITZERLAND C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'SWITZERLAND') THEN GRIDLOAD = 'SWITZERLAND' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.3 C HPTURBRAT = 1. FACONWIN = 0.5 FACOFFWIN = 0. FACUTILPV = 0.5 FACRESPV = 0.5 FACCOMPV = 0.5 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0. DAYH2STOR = 1. STORUGDYS = 1. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.1 HCDDADD = 1. C C ***************************************************************************** C SPAIN C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'SPAIN') THEN GRIDLOAD = 'SPAIN' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.3 C HPTURBRAT = 1. FACONWIN = 1.3 FACOFFWIN = 0.8 FACUTILPV = 0.8 FACRESPV = 0.8 FACCOMPV = 0.8 CSPTURBFAC = 1. FACSHT = 0. BATDISCH = 0.05 DAYH2STOR = 25. STORUGDYS = 15. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.15 HCDDADD = 1. C C ***************************************************************************** C PORTUGAL C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'PORTUGAL') THEN GRIDLOAD = 'PORTUGAL' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.3 C HPTURBRAT = 1. FACONWIN = 1.35 FACOFFWIN = 0.8 FACUTILPV = 1.1 FACRESPV = 0.8 FACCOMPV = 0.8 CSPTURBFAC = 1. FACSHT = 0. BATDISCH = 0.15 DAYH2STOR = 35. STORUGDYS = 35. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.15 HCDDADD = 1. C C ***************************************************************************** C GIBRALTAR C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'GIBRALTAR') THEN GRIDLOAD = 'COUNTRY2030GW' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.3 C HPTURBRAT = 1. FACONWIN = 0. FACOFFWIN = 0.9 FACUTILPV = 0.1 FACRESPV = 0.8 FACCOMPV = 0.8 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.02 DAYH2STOR = 15. STORUGDYS = 15. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C ITALY C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'ITALY') THEN GRIDLOAD = 'ITALY' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.3 C HPTURBRAT = 1. FACONWIN = 1.1 FACOFFWIN = 1. FACUTILPV = 1.2 FACRESPV = 0.8 FACCOMPV = 0.8 CSPTURBFAC = 1.4 FACSHT = 0. BATDISCH = 0.2 DAYH2STOR = 15. STORUGDYS = 15. C PHSMIN = 0.002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.15 HCDDADD = 1. C C ***************************************************************************** C CANARY ISLANDS C ***************************************************************************** C GRAN CANARIA C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'GRAN-CANARIA') THEN GRIDLOAD = 'GRAN-CANARIA' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0. C HPTURBRAT = 1. FACONWIN = 1. C FACOFFWIN = 1.78 FACOFFWIN = 1.7 FACUTILPV = 2.8 FACUTILPV = 1.28 FACRESPV = 0.91 C FACCOMPV = 1.45 FACCOMPV = 2.75 CSPTURBFAC = 0. FACSHT = 0. C BATDISCH = 0.024 BATDISCH = 0.014 C DAYH2STOR = 20. DAYH2STOR = 13. C STORUGDYS = 10. STORUGDYS = 3. C C MAX PHS (FROM JS): 0.0005145 TW; 15.28 HOURS C C PHSMIN = 0.00001 PHSMIN = 0.0005 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C LANZAROTE-FUERTEVENTURA C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'LANZAROTE-FV') THEN GRIDLOAD = 'LANZAROTE-FV' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0. C HPTURBRAT = 1. FACONWIN = 2.3 FACOFFWIN = 1. FACUTILPV = 3.4 FACRESPV = 1. FACCOMPV = 2.5 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.0035 DAYH2STOR = 5. STORUGDYS = 1. C C MAX PHS (FROM JS): 0.0000465 TW; 4.6 HOURS C PHSMIN = 0.00004 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C TENERIFE C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'TENERIFE') THEN GRIDLOAD = 'TENERIFE' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0. C HPTURBRAT = 1. FACONWIN = 1. FACOFFWIN = 1.89 FACUTILPV = 1. FACRESPV = 0.5 FACCOMPV = 3.25 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.010 DAYH2STOR = 18. STORUGDYS = 3. C C MAX PHS (FROM JS): 0.0005677 TW; 12 HOURS C PHSMIN = 0.0004 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C LA PALMA C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'LA-PALMA') THEN GRIDLOAD = 'LA-PALMA' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0. C HPTURBRAT = 1. FACONWIN = 1.53 FACOFFWIN = 0. FACUTILPV = 1.68 FACRESPV = 1. FACCOMPV = 3.27 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0. DAYH2STOR = 5. STORUGDYS = 1. C C MAX PHS (FROM JS): 0.000204 TW; 15.5 HOURS C PHSMIN = 0.0002 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C LA GOMERA C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'LA-GOMERA') THEN GRIDLOAD = 'LA-GOMERA' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0. C HPTURBRAT = 1. FACONWIN = 1.4 FACOFFWIN = 1. FACUTILPV = 2.8 FACRESPV = 1. FACCOMPV = 1.8 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0. DAYH2STOR = 5. STORUGDYS = 1. C C MAX PHS (FROM JS): 0.000085 TW; 12 HOURS C PHSMIN = 0.000085 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C EL HIERRO C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'EL-HIERRO') THEN GRIDLOAD = 'EL-HIERRO' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0. C HPTURBRAT = 1. FACONWIN = 1.6 FACOFFWIN = 1. FACUTILPV = 1.8 FACRESPV = 1. FACCOMPV = 1.95 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0. DAYH2STOR = 15. STORUGDYS = 5. C C MAX PHS (FROM JS): 0.0000113 TW; 25.2 HOURS C PHSMIN = 0.00001 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1 C C ***************************************************************************** C LANZAROTE-FUERTEVENTURA WITH CSP C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'LANZ-FV-CSP') THEN GRIDLOAD = 'LANZAROTE-FV' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0. C HPTURBRAT = 1. FACONWIN = 10. FACOFFWIN = 8. FACUTILPV = 2. FACRESPV = 1. FACCOMPV = 2. CSPTURBFAC = 2.2 FACSHT = 0. BATDISCH = 0.0029 DAYH2STOR = 18. STORUGDYS = 1. C C MAX PHS (FROM JS): 0.0000465 TW; 4.6 HOURS C PHSMIN = 0.00004 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C GRAN CANARIA-LANZAROTE-FUERTEVENTURA INTERCONNECTED C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'GRANCAN-LZFT') THEN GRIDLOAD = 'GRANCAN-LZFT' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0. C HPTURBRAT = 1. FACONWIN = 1.5 FACOFFWIN = 1.6 FACUTILPV = 1.5 FACRESPV = 0.9 FACCOMPV = 2.75 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.014 DAYH2STOR = 6. STORUGDYS = 1. C C MAX PHS GRAN-CANARIA : 0.0005145 TW; 15.28 HOURS C MAX PHS LANZAROTE-FV: 0.0000465 TW; 4.6 HOURS C MAX PHS TOTAL: 0.000561 TW C PHSMIN = 0.00056 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C TENERIFE-LA GOMERA INTERCONNECTED C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'TENER-LAGOM') THEN GRIDLOAD = 'TENER-LAGOM' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0. C HPTURBRAT = 1. FACONWIN = 1. FACONWIN = 1.2 FACOFFWIN = 1.75 FACUTILPV = 1. FACRESPV = 0.5 FACCOMPV = 3.25 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.0089 DAYH2STOR = 19. STORUGDYS = 3. C C MAX PHS TENERIFE: 0.0005677 TW; 12 HOURS C MAX PHS LA GOMERA: 0.000085 TW; 12 HOURS C MAX PHS TOTAL: 0.0006527 TW; 12 HOURS C PHSMIN = 0.00065 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C ALL SIX CANARY ISLANDS INTERCONNECTED C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'ALL-CANARY') THEN GRIDLOAD = 'ALL-CANARY' STORHHWAT = 6. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0. C HPTURBRAT = 1. FACONWIN = 1.3 FACOFFWIN = 1. FACUTILPV = 4.5 FACRESPV = 1. FACCOMPV = 1.3 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.038 DAYH2STOR = 10. STORUGDYS = 1. C C MAX PHS GRAN-CANARIA: 0.0005145 TW; 15.28 HOURS C MAX PHS LANZAROTE-FV: 0.0000465 TW; 4.6 HOURS C MAX PHS TENERIFE: 0.0005677 TW; 12 HOURS C MAX PHS LA PALMA: 0.000204 TW; 15.5 HOURS C MAX PHS LA GOMERA: 0.000085 TW; 12 HOURS C MAX PHS EL HIERRO: 0.0000113 TW; 25.2 HOURS C MAX PHS TOTAL: 0.001429 TW C PHSMIN = 0.0001 C PHSMIN = 0.0014 FRSTORINIT = 0.9 UGFAC = 1.5 HWFAC = 1.0 FLDISELEC = 0.3 HCDDADD = 1. C C ***************************************************************************** C INDIVIDUAL OR GROUPS OF THE 50 US STATES + DC C ***************************************************************************** C WECC = WESTERN ELECTRICITY COORDINATING COUNCIL C Arizona, California, Colorado, Idaho, Montana, Nevada, New Mexico, Oregon, C Utah, Washington State, Wyoming C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'WECC') THEN GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 HPTURBRAT = 1. FACONWIN = 1. FACOFFWIN = 1. FACUTILPV = 1.9 FACRESPV = 1. FACCOMPV = 1. CSPTURBFAC = 1. FACSHT = 0. BATDISCH = 0.5 DAYH2STOR = 30. STORUGDYS = 20. PHSMIN = 0.0001 FRSTORINIT = 0.9 UGFAC = 1. HWFAC = 1. FLDISELEC = 0.1 HCDDADD = 1. C C ***************************************************************************** C MRO = MIDWEST RELIABILITY ORGANIZATION C Iowa, Kansas, Minnesota, Nebraska, North Dakota, Oklahoma, South Dakota, Wisconsin C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'MRO') THEN GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 HPTURBRAT = 1. FACONWIN = 1.15 FACOFFWIN = 0.9 FACUTILPV = 1.9 FACRESPV = 1. FACCOMPV = 1.5 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 1.55 DAYH2STOR = 20. STORUGDYS = 1. PHSMIN = 0.0001 FRSTORINIT = 0.9 UGFAC = 1. HWFAC = 1. FLDISELEC = 0.1 HCDDADD = 1. C C ***************************************************************************** C TRE = TEXAS RELIABILITY ENTITY - Texas C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'TRE') THEN GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 HPTURBRAT = 1. FACONWIN = 1.7 FACOFFWIN = 1.5 FACUTILPV = 2.69 FACRESPV = 2. FACCOMPV = 2. CSPTURBFAC = 1.9 FACSHT = 0. BATDISCH = 7. DAYH2STOR = 5. STORUGDYS = 1. PHSMIN = 0.0001 FRSTORINIT = 0.9 UGFAC = 1. HWFAC = 1. FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C RFC = RELIABILITY FIRST CORPORATION C Delaware, Indiana, Maryland, Michigan, New Jersey, Ohio, Pennsylvania, C Washington D.C., West Virginia C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'RFC') THEN GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 HPTURBRAT = 1. FACONWIN = 1. FACOFFWIN = 2. FACUTILPV = 1.8 FACRESPV = 1. FACCOMPV = 1.5 FACCOMPV = 2.3 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 2.5 DAYH2STOR = 5. STORUGDYS = 5. PHSMIN = 0.0001 FRSTORINIT = 0.9 UGFAC = 1. HWFAC = 1. FLDISELEC = 0.1 HCDDADD = 1. C C ***************************************************************************** C SERC = SOUTHEASTERN ELECTRIC RELIABILITY COUNCIL C Alabama, Arkansas, Florida, Georgia, Illinois, Kentucky, Louisiana, Mississippi, C Missouri, North Carolina, South Carolina, Tennessee, Virginia C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'SERC') THEN GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 HPTURBRAT = 1. FACONWIN = 1.2 FACOFFWIN = 1.95 FACUTILPV = 2.2 FACRESPV = 1.5 FACCOMPV = 1.2 CSPTURBFAC = 0.7 CSPTURBFAC = 0.5 FACSHT = 0. BATDISCH = 3. DAYH2STOR = 10. STORUGDYS = 20. PHSMIN = 0.0001 FRSTORINIT = 0.9 UGFAC = 1. HWFAC = 1. FLDISELEC = 0.1 HCDDADD = 1. C C ***************************************************************************** C NPCC = NORTHEAST POWER COORDINATING COUNCIL C Connecticut, Maine, Massachusetts, New Hampshire, New York, Rhode Island, Vermont C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'NPCC') THEN GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 HPTURBRAT = 1. FACONWIN = 0.6 FACOFFWIN = 2.2 FACUTILPV = 1.8 FACRESPV = 1. FACCOMPV = 1. CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 1.3 DAYH2STOR = 35. STORUGDYS = 10. PHSMIN = 0.0001 FRSTORINIT = 0.9 UGFAC = 1. HWFAC = 1. FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C ASCC = ALASKA SYSTEM COORDINATING COUNCIL C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'ASCC') THEN GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 HPTURBRAT = 1. FACONWIN = 0.9 FACOFFWIN = 0.5 FACUTILPV = 0.5 FACRESPV = 0.5 FACCOMPV = 0.5 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 0.4 DAYH2STOR = 5. STORUGDYS = 1. PHSMIN = 0.0001 FRSTORINIT = 0.9 UGFAC = 1. HWFAC = 1. FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C HICC = HAWAIIAN ISLANDS COORDINATING COUNCIL C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'HICC') THEN GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 HPTURBRAT = 1. FACONWIN = 1.9 FACOFFWIN = 2.4 FACUTILPV = 2. FACRESPV = 0.5 FACCOMPV = 0.7 CSPTURBFAC = 1.4 FACSHT = 0. BATDISCH = 0.055 DAYH2STOR = 32. STORUGDYS = 1. PHSMIN = 0.0001 FRSTORINIT = 0.9 UGFAC = 0.1 HWFAC = 0.1 FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C CALI = CALIFORNIA ALONE C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'CALI') THEN GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 HPTURBRAT = 1. FACONWIN = 1. FACOFFWIN = 1. FACUTILPV = 2. FACRESPV = 1. FACCOMPV = 1. CSPTURBFAC = 1. FACSHT = 0. BATDISCH = 1.1 DAYH2STOR = 40. STORUGDYS = 20. PHSMIN = 0.0001 FRSTORINIT = 0.9 UGFAC = 1. HWFAC = 1. FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C FLA = FLORIDA ALONE C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'FLA') THEN GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 HPTURBRAT = 1. FACONWIN = 0.7 FACOFFWIN = 1.2 FACUTILPV = 2.9 FACRESPV = 0.95 FACCOMPV = 1. CSPTURBFAC = 1. FACSHT = 0. BATDISCH = 0.6 DAYH2STOR = 25. STORUGDYS = 20. PHSMIN = 0.0001 FRSTORINIT = 0.9 UGFAC = 1. HWFAC = 1. FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C NEWY = NEW YORK STATE ALONE C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'NEWY') THEN GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 HPTURBRAT = 1. FACONWIN = 1. FACOFFWIN = 3.2 FACUTILPV = 1. FACRESPV = 1. FACCOMPV = 1.4 CSPTURBFAC = 0. FACSHT = 0. BATDISCH = 1.45 DAYH2STOR = 60. STORUGDYS = 1. PHSMIN = 0.0001 FRSTORINIT = 0.9 UGFAC = 1. HWFAC = 1. FLDISELEC = 0. HCDDADD = 1. C C ***************************************************************************** C TXMRO = TEXAS + MRO (IA,KS,MN,NE,ND,OK,SD,WI) C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'TXMRO') THEN GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 HPTURBRAT = 1. FACONWIN = 1.1 FACOFFWIN = 1.1 FACUTILPV = 2.6 FACRESPV = 1. FACCOMPV = 1. CSPTURBFAC = 1. FACSHT = 0. BATDISCH = 6.63 DAYH2STOR = 4. STORUGDYS = 3. PHSMIN = 0.0001 FRSTORINIT = 0.9 UGFAC = 1. HWFAC = 1. FLDISELEC = 0.1 HCDDADD = 1. C C ***************************************************************************** C USCON = 48 STATES + DC C ***************************************************************************** C ELSEIF (GRIDUSE.EQ.'USCON') THEN GRIDLOAD = 'CONUS2016-19' STORHHWAT = 8. MXHRDRM = 8 FHYDBASE = 0.95 HTHRFAC = 0.5 FDISTHEAT = 0.1 HPTURBRAT = 1. FACONWIN = 1.15 FACOFFWIN = 1.5 FACUTILPV = 1.35 FACRESPV = 1. FACCOMPV = 1.4 CSPTURBFAC = 0.9 FACSHT = 0. BATDISCH = 9.5 DAYH2STOR = 24. STORUGDYS = 11. PHSMIN = 0.001 FRSTORINIT = 0.9 UGFAC = 1. HWFAC = 1. FLDISELEC = 0.2 HCDDADD = 1. ENDIF C ENDIF GRIDUSE C C ***************************************************************************** C SET SOME PARAMETERS C ***************************************************************************** C INITYLOAD = INITIAL YEAR (2006-2016 CURRENTLY) OF LOAD DATA USED. C IF ONLY 1 YEAR OF LOAD DATA --> C INITYLOAD=IFINYLOAD=IBEGYLOAD C = 2006 AND IFCONUS=1 OR GRIDLOAD='CONUS' C = 2008 FOR GRIDLOAD='AFRICA" SINCE THAT IS YEAR DATA FOR C IFINYLOAD = FINAL YEAR (2006-2016 CURRENTLY) OF LOAD DATA USED C IF ONLY 1 YEAR OF LOAD DATA --> C INITYLOAD=IFINYLOAD=IBEGYLOAD C = 2007 AND IFCONUS=1 OR GRIDLOAD='CONUS' C = 2008 FOR GRIDLOAD='AFRICA" SINCE THAT IS YEAR DATA FOR C IBEGYLOAD = YEAR BETWEEN AND INCLUSIVE OF INITYLOAD AND IFINYLOAD C THAT LOAD DATA STARTS. SO, FOR EXAMPLE, IF C IF ONLY 1 YEAR OF LOAD DATA --> C INITYLOAD=IFINYLOAD=IBEGYLOAD C SUPPOSE INITYLOAD = 2006 AND IFINYLOAD=2007 AND NYEARS=6 C AND IBEGYLOAD = 2007, THEN LOAD DATA USED IN THE FOLLOWING C ORDER: C 2007 2006 2007 2006 2007 2006 . C SUPPOSE INITYLOAD = 2013 AND IFINYLOAD=2015 AND NYEARS=6 C AND IBEGYLOAD=2013 THEN ORDER IS: 2013 2014 2015 2013 2014 C IYBEFORE = YEAR BEFORE START OF DATA IN loadreg.XXX FILES C THUS, FOR DATA FROM 2006-2016, IYBEFORE = 2005 C C THESE PARAMETERS (IYBEFORE, INITYLOAD, IFINYLOAD, IBEGYLOAD) NEEDED C ONLY WHEN GRIDLOAD.NE.'COUNTRY2030GW' C IF (GRIDLOAD.EQ.'CONUS') THEN IYBEFORE = 2005 INITYLOAD = 2006 IFINYLOAD = 2007 IBEGYLOAD = 2006 C IBEGYLOAD = 2007 C IF (INITYLOAD.NE.2006.AND.IFINYLOAD.NE.2007) THEN WRITE(IOUT,*) 'POWERWORLD: INITYLOAD NE 2006 ', 1 INITYLOAD,IFINYLOAD STOP ENDIF C C U.S. STATES (STATELOAD) (IFSTATES=1) C WHEN IFSTATES=1, LOAD DATA ARE FROM 2016-2019. SO WHEN INITYEAR=2050, C START WITH 2018 (NON-LEAP YEAR) SO THAT BY 2052, CYCLES BACK TO 2016 C (LEAP YEAR) C ELSEIF (IFSTATES.EQ.1) THEN IYBEFORE = 2015 INITYLOAD = 2016 IFINYLOAD = 2019 IBEGYLOAD = 2018 C IF (INITYEAR.EQ.2050.AND.IBEGYLOAD.NE.2018) THEN WRITE(IOUT,*)'INITYEAR=2050. NEED TO START ON NONLEAP YEAR ', 1 INITYEAR, IBEGYLOAD0 STOP ENDIF C C CANARY ISLANDS (IFCANARY=1) C ELSEIF (IFCANARY.EQ.1) THEN IYBEFORE = 2017 INITYLOAD = 2018 IFINYLOAD = 2018 IBEGYLOAD = 2018 C C GRIDLOAD = 'EUROPE' OR INDIVIDUAL COUNTRIES WITH DATA FROM EUROPE C ELSE IYBEFORE = 2005 INITYLOAD = 2010 IFINYLOAD = 2015 IBEGYLOAD = 2010 ENDIF C C LOAD DATA CURRENTLY DIMENSIONED FOR 2006 TO 2016. C IF (IFINYLOAD.GT.IYBEFORE+MXYLOAD) THEN WRITE(IOUT,*)'POWERWORLD: IFINYLOAD>IYBEFORE+MXYLOAD ', 1 'DEC IFINYLOAD OR INC MXYLOAD ', 1 IFINYLOAD,IYBEFORE+MXYLOAD STOP ENDIF C IF (IBEGYLOAD.LT.INITYLOAD.OR.IBEGYLOAD.GT.IFINYLOAD) THEN WRITE(IOUT,*) 'POWERWORLD: IBEGYLOAD OUT BOUNDS ', IBEGYLOAD, 1 INITYLOAD,IFINYLOAD STOP ENDIF C C HCHARCSP = MAX NUMBER HOURS THAT CSP CAN BE CHARGED FOR AT RATE CSPCHSTO C TO REACH FULL CAPACITY OF STORCTWH C STORHCOLD = MAX NUMBER HOURS PHASE-CHANGE MATERIAL (PCM)-ICE AND C CHILLED-WATER SENSIBLE-HEAT THERMAL ENERGY STORAGE (CW STES) C STORHPHS = MAX NUMBER HOURS PUMPED HYDRO STORAGE (PHS) C STORHHWAT = MAX NUMBER HOURS HOT-WATER SENSIBLE-HEAT THERMAL ENERGY STORAGE C STORHBAT = MAX HOURS BATTERY STORAGE AT MAX DISCHARGE RATE C USE TESLA POWERWALL EXAMPLE: 6.4 KWH, 3.3 KW MAX CHARGE/DISCHARGE C --> 1.94 HOURS STORAGE AT MAX DISCHARGE RATE C USE TESLA LARGE-SCALE STORAGE FACILITY EXAMPLE SW AUSTRALIA C 129 MWH, 100 MW --> 1.29 HOURS STORAGE AT MAX DISCHARGE RATE C https://www.ecowatch.com/elon-musk-australia-2454912469.html C HCHARCSP = 14.0 STORHCOLD = 14.0 STORHPHS = 14.0 STORHBAT = 1.94 C STORHBAT = 1.29 C C STORUGDYS = DAYS OF UNDERGROUND SEAS HEAT STORAGE IN SOIL OR WATER (UTES)(HRS) C DRAKE LANDING STORAGE SUPPLIES 100% OF WINTER AIR HEAT (90 DAYS) C STORUGHRS = HOURS OF UNDERGROUND SEAS HEAT STORAGE IN SOIL OR WATER (UTES)(HRS) C HRSPDAY = NUMBER OF HOURS PER DAY (24) C STORUGHRS = HRSPDAY * STORUGDYS C C CSPTURBFAC = RATIO OF MW OF CSP STEAM TURBINES DESIRED RELATIVE TO MW C ORIGINALLY INSTALLED FOR EACH CSP PLANT IN ORDER TO MEET C ANNUALLY AVERAGED POWER DEMAND FOR STATE OR COUNTRY C BEFORE CONSIDERING THE GRID. C = 1. INDICATES NO ADDITIONAL TURBINE POWER NEEDED TO MATCH DEMAND C = 1.6 INDICATES 60% MORE MW OF POWER NEEDED TO MATCH POWER DEMAND C ON GRID THAN NEEDED FOR ANNUALLY AVERAGED POWER DEMAND. C CSPSTORGAT = RATIO OF MAX CHARGE RATE (TW) OF CSP DIRECTLY-USED+STORED C ELECTRICITY TO DISCHARGE RATE (CSPDISCH) OF CSP GENERATORS. C THE NUMBER/SIZE OF MIRRORS IS ASSOCIATED WITH THE CHARGE RATE OF C STORAGE+DIRECT ELECTRICITY. GENERATOR SIZE ASSOC W/DISCHARGE RATE. C = 1->NO STORAGE.ALL CSP FOR ELEC AT CHARGE/DISCHARGE RATE CSPDISCH C = 2.6 --> TOTAL ELECTRICITY COLLECTION AT RATE 2.6 X CSPDISCH, C WHERE 1.6 X CSPDISCH FOR STORAGE & 1.0 X CSPDISCH FOR DIRECT ELEC C CSPSTORGAT MUST EQUAL CSPSTORG IN reader.f IN GATOR-GCMOM C = SET AT 2.6169 BEFORE 8/30/2015 AND 2.61244594 AFTER 8/30/2015 C = CSPCHARFAC / CSPTURBFAC AT TIME OF GATOR-GCMOM SIMULATION C FOR U.S. STATES OR 143 COUNTRIES, USE VALUE IN xlsx-spreadsheets C AT web.stanford.edu/group/efmh/jacobson/Articles/I/ C WWS-50-USState-plans.html 'Tables for GATOR-GCMOM' TAB CELL A7 C CSPCHARFAC = CSPTURBFAC * CSPSTORGAT = FACTOR THAT CSP GENERATOR SIZE (TW) C USED FOR ANNUALLY-AVERAGED POWER IN xlsx-spreadsheets IS C MULTIPLIED BY TO ACCOUNT FOR ADDITIONAL GENERATORS NEEDED TO C KEEP GRID STABLE (CSTPURBFAC) AND TO ACCOUNT FOR ADDITIONAL C MIRRORS NEEDED FOR STORAGE PLUS THOSE MIRRORS NEEDED FOR DIRECT C ELECTRICITY (CSPSTORGAT). C CSPCHARFAC NOT USED HERE, BUT CSPTURBFAC AND CSPSTORGAT ARE C HOWEVER, CSPCHARFAC NEEDED IN xlsx-spreadsheets. C = 4.17991351 WHEN CSPTURBFAC=1.6 ANND CSPSTORGAT=2.61244594 C C CSPTURBFAC=1.6 WAS USED IN FINAL CONUS SIMULATIONS (IFCONUS=1) C CSPTURBFAC=1.6 WAS USED IN 143-COUNTRY SIMULATIONS C CSPTURBFAC=1.0 WAS USED IN NEW 50-STATE SIMULATION (IFSTATE=1) C CSPSTORGAT = 2.61244594 CSPCHARFAC = CSPTURBFAC * CSPSTORGAT C IF (CSPTURBFAC.GT.CSPCHARFAC) THEN WRITE(IOUT,*)'POWERWORLD: CSPTURBFAC>CSPCHARFAC ',CSPTURBFAC, 1 CSPCHARFAC STOP ENDIF C C ***************************************************************************** C INITIALIZE SEVERAL PARAMETERS C ***************************************************************************** C IONWIND.. = 1..MXCAP INDEX NUMBER CORRESPONDING TO EACH GENERATOR TYPE C IONWIND = 1 IOFFWIND = 2 IRESPV = 3 ICOMGVPV = 4 IUTILPV = 5 ICSPSTOR = 6 ICSPNOST = 7 IGEOEL = 8 IHYDRO = 9 ITIDAL = 10 IWAVE = 11 ISOLTHM = 12 IGEOHT = 13 C C IY2006 = 1..MXYLOAD YEAR CORRESPONDING TO 2006 (1..MXYLOAD = 2006 TO 2016) C IY2007 = 1..MXYLOAD YEAR CORRESPONDING TO 2007 (1..MXYLOAD = 2006 TO 2016) C C IY2016 = 1..MXYLOAD YEAR CORRESPONDING TO 2016 (1..MXYLOAD = 2016 TO 2019) C IY2017 = 1..MXYLOAD YEAR CORRESPONDING TO 2017 (1..MXYLOAD = 2016 TO 2019) C IY2018 = 1..MXYLOAD YEAR CORRESPONDING TO 2018 (1..MXYLOAD = 2016 TO 2019) C IY2019 = 1..MXYLOAD YEAR CORRESPONDING TO 2019 (1..MXYLOAD = 2016 TO 2019) C C USED WHEN IFCONUS=1 C IY2006 = 1 IY2007 = 2 C C USED WHEN IFSTATES=1 C IY2016 = 1 IY2017 = 2 IY2018 = 3 IY2019 = 4 C C IRESID.. = 1..MXSECTOR INDEX NUMBER CORRESPONDING TO EACH SECTOR C RESIDENTIAL, COMMERCIAL, TRANSPORTATION, INDUSTRY, C AGRICULTURE/FORESTRY/FISHING, OTHER C IRESID = 1 ICOMM = 2 IIND = 3 ITRAN = 4 IAGFF = 5 IOTH = 6 C C IPHS.. = 1..MXSTOR INDEX NUMBER CORRESPONDING TO EACH STORAGE COST C IPCMCSP = TO IDENTIFY COST OF PHASE-CHANGE MATERIAL IN ALL CSP C IMIRCSP = TO IDENTIFY COST OF MIRRORS FOR ADDITIONAL CSP CAPACITY C BEYOND THAT OF RATED STEAM TURBINE POWER C IPHS = 1 ICWSTES = 2 IPCMCSP = 3 IMIRCSP = 4 IPCMICE = 5 IHWSTES = 6 ILIB = 7 C C MXGRIDS = MAX NUMBER OF GRID REGIONS IN THE WORLD C PRINFLATE = INFLATES 2020 PRICES TO 2020 DOLLARS C H2LDPEAKI = PEAK INSTANT LOAD (TW) FOR H2 ELECTROLYSIS+COMPRESSION OVER SIM C H2LDPEAKH = PEAK HOURLY LOAD (TW) FOR H2 ELECTROLYSIS+COMPRESSION OVER SIM C PRINFLATE = 1.000 C CSHTMAX = 0. H2CURMAX = 0. H2LDPEAKI = SMAL30 H2LDPEAKH = SMAL30 C DO I = 1, MXDAY DAYFLEX( I) = 0. H2FLEX( I) = 0. TWARMDAY(I) = 0. TCOOLDAY(I) = 0. ENDDO C DO I = 1, MXDAY + 1 IGMTM(I) = 0 IDYR( I) = 0 ENDDO C DO I = 1, MXHRSIM REMAINHR( I) = 0. NTIMSTEPS(I) = 0 ENDDO C DO I = 1, MXYEAR NDAYYR( I) = 0 NHYEAR( I) = 0 NHCUM( I) = 0 AMAXLOAD( I) = 0. AMINLOAD( I) = 999. RAMPMAX( I) = 0. TIMAXRAMP(I) = 0. TIMAXLOAD(I) = 0. TIMINLOAD(I) = 0. AVCOLDLD( I) = SMAL30 AVHEATLD( I) = SMAL30 AVWINPOW( I) = 0. HRSINYR( I) = 0. C DO J = 1, MXMONTH LDMONTH(I,J) = 0 ENDDO ENDDO C DO I = 1, NYEARS HDDYR(I) = 0. CDDYR(I) = 0. ENDDO C IF (NYEARS.GT.MXYEAR) THEN WRITE(IOUT,*)'POWERWORLD: NYEAR SHOULD BE<=MXYEAR ',NYEARS,MXYEAR STOP ENDIF C C ***************************************************************************** C INITIALIZE DATE PARAMETERS C ***************************************************************************** C INITYEAR = INITIAL YEAR OF SIMULATIONS C IYEAR = CURRENT YEAR OF SIMULATION C NYEARS = NUMBER OF YEARS OF SIMULATION (1..ANY NUMBER NOW) C LEAP = 1 FOR LEAP DAY; 0 IF NO LEAP DAY C NDAYYR = NUMBER OF DAYS PER YEAR OF SIMULATION (EITHER 365 OR 366) C NHYEAR = NUMBER OF HOURS PER YEAR OF SIMULATION (EITHER 8760 OR 8784) C LDMONTH = NUM DAYS IN MONTH (ACCOUNTING FOR LEAP DAYS) FOR EACH YEAR OF SIM C NDSIM = TOTAL NUMBER OF DAYS OF MODEL SIMULATION HERE C MXHPDAY = NUMBER OF HOURS PER DAY C IGMTD = 0 IYEAR = INITYEAR - 1 C NDSIM = 0 DO I = 1, MXYEAR IYEAR = IYEAR + 1 C IF (MOD(IYEAR,4).EQ.0) THEN LEAP = 1 ELSE LEAP = 0 ENDIF C NDAYYR(I) = 365 + LEAP NHYEAR(I) = NDAYYR(I) * MXHPDAY C DO K = 1, MXMONTH IF (K.EQ.4.OR.K.EQ.6.OR.K.EQ.9.OR.K.EQ.11) THEN LDMONTH(I,K) = 30 ELSEIF (K.EQ.2) THEN LDMONTH(I,K) = 28 + LEAP ELSE LDMONTH(I,K) = 31 ENDIF ENDDO C C IGMTM = 1..MXMONTH*NYEARS MONTH CORRESPONDING TO EACH GMT DAY OF SIMULATION C IGMTD = 1..NDSIM GMT DAY OF SIMULATION PERIOD. 1=JAN 1 OF FIRST YEAR C NDYEAR = 1..365 OR 366 GMT DAY OF YEAR FOR EACH 1..NDSIM DAY OF SIM C IDYR = 1..365 OR 366 GMT DAY OF YEAR CORRESP TO EACH 1..NDSIM DAY OF SIM C C THE NUMBER OF DAYS OF SIMULATION IS DEFINED BY NYEARS C IF (I.LE.NYEARS) THEN NDSIM = NDSIM + NDAYYR(I) NDYEAR = 0 DO K = 1, MXMONTH DO L = 1, LDMONTH(I,K) IGMTD = IGMTD + 1 NDYEAR = NDYEAR + 1 IGMTM(IGMTD) = K + 12 * (I - 1) IDYR( IGMTD) = NDYEAR ENDDO ENDDO ENDIF C C NHCUM = CUMULATIVE NUMBER OF HOURS OF SIMULATION FROM START TO END C OF CURRENT YEAR I=1..NYEARS. THUS, NHCUM(1)=NHYEAR(1), C NHCUM(2)=NHYEAR(1) + NHYEAR(2), ETC. C DO J = 1, I NHCUM(I) = NHCUM(I) + NHYEAR(J) ENDDO C ENDDO C ENDDO I = 1, MXYEAR C C THIS IS NEEDED ONLY FOR PRINTING C IGMTM(NDSIM+1) = IGMTM(NDSIM) + 1 C C NHRSIM = TOTAL NUMBER OF HOURS OF MODEL SIMULATION HERE C NTSSIM = TOTAL NUMBER OF HIGH-RES (30-S) TIMES STEPS OF SIMULATION C NTSPERHR = 120 = NUMBER OF 30-SECOND TIMES STEPS PER HR C NHRSIM = NDSIM * MXHPDAY NTSSIM = NHRSIM * NTSPERHR C C NDSIM = TOTAL NUMBER OF DAYS OF MODEL SIMULATION HERE C DAYSPY = AVERAGE NUMBER OF DAYS PER YEAR DURING WHOLE SIMULATION C HRSPYR = AVERAGE NUMBER OF HOURS PER YEAR DURING WHOLE SIMULATION C HRSPDAY = NUMBER OF HOURS PER DAY (24) C DAYSPY = FLOAT(NDSIM / NYEARS) HRSPYR = DAYSPY * HRSPDAY C C ***************************************************************************** C INITIALIZE OTHER PARAMETERS TO ZERO C ***************************************************************************** C IGRIDUSE = 0 IGEUROPE = 0 TWHSUPPLY = 0. TWHDEMAND = 0. TWHSHEAT = 0. TWHSCOLD = 0. TWHEHEAT = 0. TWHECOLD = 0. TWHSTORH2 = 0. TWHELECH2 = 0. TWHONWIN = 0. TWHOFFWIN = 0. TWHROOFPV = 0. TWHUTILPV = 0. TWHSTCSP = 0. TWHCSP = 0. TWHGEOEL = 0. TWHHYD = 0. TWHWAV = 0. TWHTID = 0. TWHTHEAT = 0. TWHGEOHT = 0. HRSSIM = 0. C DO I = 1, MXLOADYR TIMLOAD( I) = 0. BLOAD( I) = 0. HOTHOUR( I) = 0. COLDHOUR(I) = 0. ENDDO C DO I = 1, MXHPYEAR READLOAD( I) = 0. DO J = 1, MXYLOAD ALOADHR( I,J) = 0. ALOADREG(I,J) = 0. ENDDO DO J = 1, MXCOUNTRY IFUSED( J,I) = 0 STORLOAD(J,I) = 0. ENDDO ENDDO C DO J = 1, MXYHRLOAD BLOADMW(J) = 0. YLOADHR(J) = 0. IYOFHRLD(J) = J + IYBEFORE DO I = 1, MXTSPYR HRESLOAD(I,J) = 0. ENDDO ENDDO C DO I = 1, MXTSHRALL DLOAD( I) = 0. TLOADHR(I) = 0. ENDDO C C IYOFLOAD = YEAR (2006 TO 2016) CORRESPONDING TO EACH J=1,MXYLOAD INDEX # C DO J = 1, MXYLOAD YRLOAD( J) = 0. ILOADMW( J) = 0 IYOFLOAD(J) = J + IYBEFORE ENDDO C DO I = 1, MXWWS IYRWWS( I) = 0 TIMORIG( I) = 0. TIMWWS( I) = 0. CURONSH( I) = 0. CUROFFSH( I) = 0. CUROOFPV( I) = 0. CURUTPV( I) = 0. CURCSP( I) = 0. EXTRACSP( I) = 0. CURWAVP( I) = 0. CURHLOAD( I) = 0. CURCLOAD( I) = 0. CURHFLEX( I) = 0. CURCFLEX( I) = 0. CURFLOAD( I) = 0. CINFXHLD( I) = 0. CINFXCLD( I) = 0. CURGEOP( I) = 0. CURTIDP( I) = 0. CURSOLHT( I) = 0. CURGEOH( I) = 0. CURHEAT( I) = 0. CURCOLD( I) = 0. FSTPWARM( I) = 0. FSTPCOOL( I) = 0. CLOAD( I) = 0. DEMAND( I) = 0. SUPPLY( I) = 0. SUPPHT( I) = 0. SUMONWIND(I) = 0. SUMOFWIND(I) = 0. SUMROOFPV(I) = 0. SUMUTILPV(I) = 0. SUMCSP( I) = 0. SUMSTHERM(I) = 0. SUMHEAT( I) = 0. SUMCOLD( I) = 0. PERHRS( I) = 0. ENDDO C DO I = 1, MXHPDAY DO J = 1, MXDAY HRINFLX( I,J) = 0. HRONWIN( I,J) = 0. HROFFWD( I,J) = 0. HRROOF( I,J) = 0. HRUTPV( I,J) = 0. HRCSP( I,J) = 0. HRSHT( I,J) = 0. HRGHT( I,J) = 0. HRSUPP( I,J) = 0. HRCNT( I,J) = 0. HRFLXLD( I,J) = 0. ORIGLD( I,J) = 0. HCSTOR( I,J) = 0. HCSTLS( I,J) = 0. HCSTLI( I,J) = 0. PHSTOR( I,J) = 0. PHSTLS( I,J) = 0. PHSTLI( I,J) = 0. HOSTOR( I,J) = 0. HOSTLS( I,J) = 0. HOSTLI( I,J) = 0. HTSTOR( I,J) = 0. HTSTLS( I,J) = 0. HTSTLI( I,J) = 0. HBSTOR( I,J) = 0. HBSTLS( I,J) = 0. HBSTLI( I,J) = 0. UGSTOR( I,J) = 0. UGSTLS( I,J) = 0. UGSTLI( I,J) = 0. HRTDLS( I,J) = 0. HRSHED( I,J) = 0. HRHYDR( I,J) = 0. HRWAVE( I,J) = 0. HRGEOT( I,J) = 0. HRTIDE( I,J) = 0. H2LOAD( I,J) = 0. H2STOR( I,J) = 0. COLDHR( I,J) = 0. WARMHR( I,J) = 0. ENDDO ENDDO C DO I = 1, MXCAP TGWINSTGLB(I) = 0. EGWINSTGLB(I) = 0. SUPGLOB( I) = 0. GATGLOB( I) = 0. SUMEN( I) = 0. SUMNP( I) = 0. ALLTONEW( I) = 0. GWFINAL( I) = 0. GWNEW( I) = 0. ENDDO C DO J = 1, MXCOUNHDD NAMEREAD( J) = ' ' HDDNAT( J) = 0. CDDNAT( J) = 0. ENDDO C DO J = 1, MXCOUNTRY ISUSED( J) = 0. NAMECOUN( J) = ' ' NAMEORIG( J) = ' ' NAMELOAD( J) = ' ' GRIDCOUN( J) = ' ' NAMHTREG( J) = ' ' MAPCOUN( J) = 0 SUPPALL( J) = 0. WWSTOT( J) = 0. EXISTPHSC(J) = 0. EXISOLTHC(J) = 0. AREALKM2C(J) = 0. BAULOADC( J) = 0. BAULCOEC( J) = 0. BAUHEALC( J) = 0. BAUCLIMC( J) = 0. AMORTCURC(J) = 0. AMORT50C( J) = 0. AJOBLOSSC(J) = 0. TCONJOBC( J) = 0. TOPJOBC( J) = 0. CJOBTDC( J) = 0. OJOBTDC( J) = 0. CJOBSTORC(J) = 0. OJOBSTORC(J) = 0. CAPCOSC( J) = 0. ANNCOSC( J) = 0. CO2E2050C(J) = 0. FELBUILD( J) = 0. FELIND( J) = 0. ILOADCOUN(J) = 0 TGWALLCOUN(J) = 0. TGWADCSPC( J) = 0. C DO I = 1, MXJOBCAT OPJOBSC(J,I) = 0. CONJOBC(J,I) = 0. ENDDO C DO I = 1, MXCAP TGWINSTALL(J,I) = 0. TGWINSTGAT(J,I) = 0. EGWINSTALL(J,I) = 0. SUP2050( J,I) = 0. ENCOUNTRY( J,I) = 0. POWCOUNTRY(J,I) = 0. ENDDO C DO I = 1, MXSECTOR TLOADSEC(J,I) = 0. FRCH2SEC(J,I) = 0. FELECSEC(J,I) = 0. ENDDO C DO I = 1, NDAYDATA HDDDAY(J,I) = 0. CDDDAY(J,I) = 0. ENDDO C ENDDO C ENDDO MXCOUNTRY C DO K = 1, MXSECTOR TSECALL( K) = 0. H2SECALL( K) = 0. ENDDO C NUMGRIDS = 0 NCOUNTRY = 0 ICUSA = 0 C DO J = 1, MXGRIDS NAMEGRID( J) = ' ' NCOUNGRID(J) = 0 SUMWWS( J) = 0. SUMH2REG( J) = 0. C TGWALLREG(J) = 0. EGWALLREG(J) = 0. SUPALLREG(J) = 0. GATALLREG(J) = 0. REGONWIND(J) = 0. REGOFWIND(J) = 0. REGROOFPV(J) = 0. REGUTILPV(J) = 0. REGCSP( J) = 0. REGSTHERM(J) = 0. REGHEAT( J) = 0. REGCOLD( J) = 0. EXISTPHSR(J) = 0. EXISOLTHR(J) = 0. AREALKM2R(J) = 0. BAULOADR( J) = 0. BAULCOER( J) = 0. BAUHEALR( J) = 0. BAUCLIMR( J) = 0. AMORTCURR(J) = 0. AMORT50R( J) = 0. AJOBLOSSR(J) = 0. CO2E2050R(J) = 0. AVGCDD( J) = 0. AVGHDD( J) = 0. TGWADCSPR(J) = 0. C DO I = 1, MXJOBCAT OPJOBSR(J,I) = 0. CONJOBR(J,I) = 0. ENDDO C DO K = 1, MXSECTOR TLOADSUM( J,K) = SMAL30 H2SECGRID(J,K) = 0. FRCH2REG( J,K) = 0. ELLOADSEC(J,K) = 0. FELECREG( J,K) = 0. ENDDO C DO I = 1, MXCOUNTRY NAMORIGGR(J,I) = ' ' NAMCOUNGR(J,I) = ' ' NUMCOUNGR(J,I) = 0 ENDDO C DO K = 1, MXCAP TGWINSTREG(J,K) = SMAL30 EGWINSTREG(J,K) = 0. TGWGATREG( J,K) = 0. SUPGWREG( J,K) = 0. FLOADREG( J,K) = 0. ENDDO C DO N = 1, NYEARS DO I = 1, MXDAYYR HDDREG(J,N,I) = 0. CDDREG(J,N,I) = 0. ENDDO ENDDO C ENDDO C ENDDO J = 1, MXGRIDS DO N = 1, NYEARS DO I = 1, MXDAYYR FRDAYCOOL(N,I) = 0. FRDAYWARM(N,I) = 0. ENDDO ENDDO C DO J = 1, MXREGUS DO I = 1, MXHLOADUS USALOAD(I,J) = 0 ENDDO ENDDO C C ***************************************************************************** C OPEN FILES C ***************************************************************************** C INPUT FILES C ***************************************************************************** C countrystat.dat = COUNTRY LIST, REGION OF EACH COUNTRY, AGGREGATE LOAD C DATA BY SECTOR, NEW+EXISTING & EXISTING INSTALLATIONS C OF WWS AND OTHER DATA FROM C 'Table for GATOR-GCMOM' TAB IN THE AllCountries.xlsx FILE C heatfrac.dat = FRACTION OF TOTAL HEAT+ELEC FINAL ENERGY RESID/COMM/GOV C BUILDINGS THAT IS FOR LOW-TEMP HEAT PROCESSES AND FRACTION C OF TOTAL HEAT+ELEC IN INDUSTRY FOR HIGH TEMPERATURE HEAT C NUMBERS ARE GIVEN BY COUNTRY C heatcooldd.dat = NUMBER OF HEATING AND COOLING DEGREE DAYS (HDD, CDD) C BY COUNTRY AND DAY OF YEAR. C BizEE (2015) Custom degree day data, http://www.degreedays.net C wwssupconus.dat = INSTANTANEOUS AND CUMULATIVE WIND AND SOLAR PREDICTIONS FROM C GATOR-GCMOM FOR 48 CONTIGUOUS UNITED STATES C THIS IS OBTAINED WHEN IGLOBFARMS = 0 IN GATOR-GCMOM C wwssupworld.dat = INSTANTANEOUS AND CUMULATIVE WIND AND SOLAR PREDICTIONS FROM C GATOR-GCMOM FOR 143 COUNTRIES C IFREWRITE = 1: REWRITE KWWS (wwssupworld.dat) FILE TO C KWW2 (wwssupreform.dat) ELIMINATING REDUNDANT TIMES C AND ELIMINATING AVERAGE VALUES (KEEPING INSTANT VALUES C ONLY) WHEN THIS IS COMPLETE, USE KWW2 FILE AS INPUT FOR C IFREWRITE=2. APPLIES WHEN IFCONUS=1 OR 0 C AFTER FINISHINING IFREWRITE=1, CAN ERASE KWWS C (wwssupworld.dat) C C --> IF WANT TO INTERPOLATE SOLAR OR ADD TILT FACTORS, C RUN SOLARTILT/tilt.f, BUT ADJUST SOLAR FOR TILTING ONLY C FOR OLD FILES SINCE GATOR-GCMOM NOW INCLUDES TILTING. C APPLIES ONLY TO IFCONUS=0 C --> MOVE OUTPUT FILE FROM tilt.f (wwstilt.dat) to C wwssupreform.dat C = 2: READS KWW2 (wwssupreform.dat), C SUMS VALUES EACH TIME STEP AMONG ALL COUNTRIES IN GRID C REGION GRIDUSE, REWRITES SUMMED VALUES TO A SMALLER C FILE KWW3 (wwssupworld.REGION) (FOR EACH REGION C ALSO CALCULATES CAPACITY FACTOR (CF) OF ONSHORE, C OFFSHORE WIND; ROOFTOP & UTILITY PV AND CSP FROM GATOR-GCMOM C SIMULATiONS BY COUNTRY. C = 3: APPLIES ONLY WHEN IFCONUS=0: C READ DATA FROM FILE wwssupworld.REGION RATHER THAN C wwssupworld.dat FOR ONE GRID REGION. C FILE KWW3 CONTAINS ONLY ONE LINE OF DATA FOR EACH TIME STEP, C WHICH ARE DATA SUMMED OVER ALL COUNTRIES IN REGION GRIDUSE C = 0: READ AND PROCESS FILE KWWS C APPLIES WHEN IFCONUS=1 OR 0 C (WHEN IFCONUS=0, READS ALL-COUNTRY DATA) C IF (IFCONUS.EQ.1) THEN C IF (IFREWRITE.EQ.0) THEN OPEN(KWWS, FILE = PATHHOME//'READSUPPLY/wwssupconus.dat') ELSEIF (IFREWRITE.EQ.1) THEN OPEN(KWWS, FILE = PATHTEMP//'wwssupconus.dat') ENDIF C ELSE OPEN(KDAT, FILE = PATHHOME//'countrystats.dat') OPEN(KHTE, FILE = PATHHOME//'heatfrac.dat') OPEN(KHDD, FILE = PATHHOME//'heatcooldd.dat') C C INPUT SUPPLY DATA C IF (IFREWRITE.EQ.3) THEN OPEN(KWWS, FILE = PATHHOME//'READSUPPLY/wwssupworld.'//GRIDUSE) ELSEIF (IFREWRITE.EQ.2) THEN OPEN(KWWS, FILE = PATHTEM1//'wwssupreform.dat') ELSEIF (IFREWRITE.EQ.1.OR.IFREWRITE.EQ.0) THEN OPEN(KWWS, FILE = PATHTEMP//'wwssupworld.dat') ENDIF ENDIF C C ***************************************************************************** C OUTPUT FILES C ***************************************************************************** C countrydata.out = OUTPUT FILE SUMMARY OF COUNTRY DATA FROM countrystat.dat C AFTER SOME PROCESSING C wwsmonthly.out = OUTPUT FILE FOR MONTHLY-TOTAL STATISTICS C wwshourly.out = OUTPUT FILE FOR HOURLY-TOTAL STATISTICS C wwssupreform.dat = INSTANTANEOUS AND CUMULATIVE WIND AND SOLAR PREDICTIONS FROM C GATOR-GCMOM REWRITTEN FROM wwssupply.dat IF REDUNDANT TIMES C IFREWRITE = 1: REWRITE KWWS (wwssupworld.dat) FILE TO C KWW2 (wwssupreform.dat) ELIMINATING REDUNDANT TIMES C AND ELIM AVERAGE VALUES (KEEPING INSTANT VALUES ONLY) C WHEN THIS IS COMPLETE, USE KWW2 AS INPUT FOR IFREWRITE=2 C APPLIES WHEN IFCONUS=0. WHEN IFCONUS=1, READ C wwssupconus.dat FROM PATHTEMP AND WRITE TO PATHHOME C IF (IFCONUS.EQ.0) THEN OPEN(KOUT, FILE = PATHHOME//'countrydata.out') IF (IFREWRITE.EQ.1) THEN OPEN(KWW2, FILE = PATHTEM1//'wwssupreform.dat') ENDIF ELSE IF (IFREWRITE.EQ.1) THEN OPEN(KWW2, FILE = PATHHOME//'wwssupconus.dat') ENDIF ENDIF C OPEN(IMON, FILE = PATHHOME//'wwsmonthly.'//GRIDUSE) OPEN(IHOU, FILE = PATHHOME//'wwshourly.'//GRIDUSE) C C ***************************************************************************** C READ AND PROCESS COUNTRY DATA IN COUNTRYSTAT.DAT FROM C 'Table for GATOR-GCMOM' TAB IN THE AllCountries.xlsx FILE C ***************************************************************************** C IFCONUS = 1: SOLVE GRID INTEGRATION OVER 48 CONTIGUOUS UNITED STATES (CONUS) C AGGREGATE CONUS DATA ARE SPECIFIED WITHIN THIS PROGRAM C OBTAINED FROM 50-STATE 50-state-WWS.xlsx FILE C = 0: SOLVE GRID INTEGRATION OVER REGION OF THE WORLD GRIDUSE, C WHERE COUNTRIES TREATED IN EACH GRID REGION AND THEIR C CHARACTERISTICS ARE DEFINED IN countrystats.dat, WHICH IS C OBTAINED FROM 'Table for GATOR-GCMOM' TAB IN Allcountries.xlsx C IF (IFCONUS.EQ.0) THEN READ(KDAT,*) READ(KDAT,*) READ(KDAT,*) C C COUNTRY = COUNTRY NAME C GRIDNAM = NAME OF GRID REGION IN WHICH COUNTRY LIES C TMWONWIND = NEW+EXISTING INSTALLED MW OF ONSHORE WIND TURBINES C TMWOFFWIND = NEW+EXISTING INSTALLED MW OF OFFSHORE WIND TURBINES C TMWRESPV = NEW+EXISTING INSTALLED MW OF RESIDENTIAL ROOFTOP PV C TMWCOMPV = NEW+EXISTING INSTALLED MW OF COMMERCIAL/GOVERNMENT ROOFTOP PV C TMWUTILPV = NEW+EXISTING INSTALLED MW OF UTILITY-SCALE PV C TMWCSPORIG = NEW+EXISTING INSTALLED MW OF CONCENTRATED SOLAR POWER (CSP) C THIS IS MODIFIED HERE BY CSPTURBFAC C TMWCSPADD = ESTIMATED NEW INSTALLED MW OF CSP NEEDED FOR STORAGE C TMWGEOEL = NEW+EXISTING INSTALLED MW OF GEOTHERMAL FOR ELECTRIC POWER C TMWHYD = NEW+EXISTING INSTALLED MW OF HYDROELECTRIC POWER C TMWWAVE = NEW+EXISTING INSTALLED MW OF WAVE POWER C TMWTIDAL = NEW+EXISTING INSTALLED MW OF TIDAL POWER C TMWSOLTH = NEW+EXISTING INSTALLED MW OF SOLAR THERMAL FOR HEAT C TMWGEOHT = NEW+EXISTING INSTALLED MW OF GEOTHERMAL FOR HEAT C TMWONWGAT = NEW+EXISTING INSTALLED MW ONSHORE WIND USED IN GATOR-GCMOM SIMS C = TMWONWIND UNLESS TMWONWIND HAS BEEN UPDATE SINCE SIMS BEGAN C TMWOFFWGAT = NEW+EXISTING INSTALLED MW OFFSHORE WIND IN GATOR-GCMOM SIMS C TMWRESGAT = NEW+EXISTING INSTALLED MW RES ROOF PV IN GATOR-GCMOM SIMS C TMWCOMGAT = NEW+EXISTING INSTALLED MW COM/GOV ROOF PV IN GATOR-GCMOM SIMS C TMWUTILGAT = NEW+EXISTING INSTALLED MW UTILITY PV IN GATOR-GCMOM SIMS C TMWCSPOGAT = NEW+EXISTING INSTALLED MW ORIG UTILITY CSP IN GATOR-GCMOM SIMS C TMWCSPAGAT = NEW INSTALLED MW ADDED UTILITY CSP FOR STORAGE IN GATOR-GCMOM SIMS C TMWSTHGAT = NEW INSTALLED MW ADDED SOLAR THERMAL FOR HEAT IN GATOR-GCMOM SIMS C EMWONWIND = 2014 EXISTING INSTALLED MW OF ONSHORE WIND TURBINES C EMWOFFWIND = 2014 EXISTING INSTALLED MW OF OFFSHORE WIND TURBINES C EMWRESPV = 2014 EXISTING INSTALLED MW OF RESIDENTIAL PV C EMWCOMPV = 2014 EXISTING INSTALLED MW OF COMMERCIAL/GOVERNMENT PV C EMWUTILPV = 2014 EXISTING INSTALLED MW OF UTILITY-SCALE PV C EMWCSP = 2014 EXISTING INSTALLED MW OF CSP C EMWGEOEL = 2014 EXISTING INSTALLED MW OF GEOTHERMAL FOR ELECTRICITY C EMWHYD = 2014 EXISTING INSTALLED MW OF HYDROELECTRIC POWER C EMWWAVE = 2014 EXISTING INSTALLED MW OF WAVE POWER C EMWTIDAL = 2014 EXISTING INSTALLED MW OF TIDAL POWER C EMWGEOHT = 2014 EXISTING INSTALLED MW GEOTHERMAL HEAT COLLECTORS C SUPALL2050 = 2050 TOTAL POWER SUPPLY (GW) ALL ELEC POW SOURCES (NOT SUPGHT2050) C SUPONW2050 = 2050 ONSHORE WIND DELIV ELEC POWER AFTER T&D LOSSES (GW) C SUPOFW2050 = 2050 OFFSHORE WIND DELIV ELEC POWER AFTER T&D LOSSES (GW) C SUPRPV2050 = 2050 RESIDENTIAL ROOF PV DELIV ELEC POWER AFTER T&D LOSSES (GW) C SUPCPV2050 = 2050 COMM/GOVT ROOF PV DELIV ELEC POWER AFTER T&D LOSSES (GW) C SUPUPV2050 = 2050 UTILITY PV DELIV ELEC POWER AFTER T&D LOSSES (GW) C SUPCSP2050 = 2050 CSP DELIVERED ELEC POWER AFTER T&D LOSSES (GW) C SUPGEL2050 = 2050 GEOTHERMAL DELIV ELEC POWER AFTER T&D LOSSES (GW) C SUPHYD2050 = 2050 HYDROELECTRIC DELIVERED POWER AFTER T&D LOSSES (GW) C SUPTID2050 = 2050 TIDAL DELIVERED POWER AFTER T&D LOSSES (GW) C SUPWAV2050 = 2050 WAVE DELIVERED POWER AFTER T&D LOSSES(GW) C SUPGHT2050 = 2050 GEOTHERMAL FOR HEAT DELIV ELEC POWER AFTER T&D LOSSES (GW) C TLOADTOT = 2050 ALL-PURPOSE END-USE LOAD (GW) SHOULD = SUPALL2050 C BLOADRES = 2050 RESIDENTIAL WWS LOAD (GW) AFTER HEAT PUMPS C BLOADCOM = 2050 COMMERCIAL WWS LOAD (GW) AFTER HEAT PUMPS C BLOADIND = 2050 INDUSTRIAL WWS LOAD (GW) AFTER HEAT PUMPS C BLOADTRA = 2050 TRANSPORTATION WWS LOAD (GW) AFTER HEAT PUMPS C BLOADAGF = 2050 AG/FORESTRY/FISH WWS LOAD (GW) AFTER HEAT PUMPS C BLOADOTH = 2050 OTHER WWS LOAD (GW) AFTER HEAT PUMPS C FRACREH2 = FRACT RESIDENTIAL ELEC GOING TO H2 ELECTROLYSIS/COMPRESS/STORAGE C FRACCOH2 = FRACT COMMERCIAL ELEC GOING TO H2 ELECTROLYSIS/COMPRESS/STORAGE C FRACINH2 = FRACT INDUSTRY ELEC GOING TO H2 ELECTROLYSIS/COMPRESS/STORAGE C FRACTRH2 = FRACT TRANSPORT ELEC GOING TO H2 ELECTROLYSIS/COMPRESS/STORAGE C FRACAFH2 = FRACT AG/FOREST/FISHING ELEC GOING TO H2 ELECTROL/COMPRESS/STORAGE C FRACOTH2 = FRACT OTHER ELEC GOING TO H2 ELECTROLYSIS/COMPRESS/STORAGE C EXISTPHS = EXISTING PUMPED-HYDRO STORAGE (PHS) NAMEPLATE CAPACITY (GW) C IN COUNTRY C EXISOLTHM = EXISTING SOLAR THERMAL FOR HEAT NAMEPLATE CAPACITY (GW) IN COUNTRY C THIS IS USUALLY USED FOR HEATING WATER C AREALAND = LAND AREA (KM) (NOT INCLUDING INLAND WATER BODIES OR COASTAL C WATERS) OF COUNTRY C BAULOADGW = 2050 BAU ANNUAL AVG LOAD FOR EVERYTHING (GW) C BAULCOE1 = 2050 BAU LCOE ($2013) CENTS/KWH FOR RETAIL ELEC SECTOR C BAUHEALTH = 2050 BAU AIR POLL HEALTH COST ($2013 CENTS/KWH-ALL-ENERGY) C COST REDUCED 10% SINCE ONLY 90% OF MORTALITIES DUE TO BAU ENERGY C MORTALITY NUMBERS AMORT50F AND AMOTCURF NOT REDUCED C BAUCLIMATE = 2050 BAU CLIMATE COST ($2013 CENTS/KWH-ALL-ENERGY) C AMORTCURF = 2016 AIR POLLUTION MORTALITY BY COUNTRY FROM WHO READ IN C AMORT50F = 2050 AIR POLLUTION MORTALITY BY COUNTRY READ IN FROM FILE C COST REDUCED 10% SINCE ONLY 90% OF MORTALITIES DUE TO BAU ENERGY C MORTALITY NUMBERS AMORT50F, AMOTCURF INCLUDE ALL AIR POL DEATHS C FELECRES = FRAC 2050 END-USE HEAT+ELEC RESIDE SECTOR GOING TO ELEC. REST HEAT C FELECCOM = FRAC 2050 END-USE HEAT+ELEC COMMER SECTOR GOING TO ELEC. REST HEAT C FELECIND = FRAC 2050 END-USE HEAT+ELEC INDUST SECTOR GOING TO ELEC. REST HEAT C FELECTRA = FRAC 2050 END-USE HEAT+ELEC TRANSP SECTOR GOING TO ELEC. REST HEAT C FELECAGF = FRAC 2050 END-USE HEAT+ELEC AG/F/F SECTOR GOING TO ELEC. REST HEAT C FELECOTH = FRAC 2050 END-USE HEAT+ELEC OTHER SECTOR GOING TO ELEC. REST HEAT C AJOBLOSSI = JOB LOSS IN COUNTRY, AS CALCULATED FROM SPREADSHEET C OPJOBSI = LONG-TERM, FULL-TIME OPERATIONAL JOBS CREATED, BASED ON C NEW NAMEPLATE CAPACITIES. ADJUST HERE SO FOR NEW+EXISTING C AND BASED ON UPDATED NAMEPLATE CAPACITIES C 1=ONWIND; 2=OFFWIND; 3=WAVE; 4=GEOELEC; 5=HYDRO; 6=TIDAL; C 7=RESPV; 8=COMGOVPV; 9=UTILPV; 10=TOTALCSP; 11=SOLHEAT; C 12=GEOHEAT; 13=CONVTRANSMIS; 14=HVDCTRANSMIS C CONJOBSI = LONG-TERM, FULL-TIME CONSTRUCTION JOBS CREATED, BASED ON C NEW NAMEPLATE CAPACITIES. KEEP BASED ON NEW NAMEPLATE. C ADJUST HERE ONLY FOR NAMEPLATE CAPACITY. C THESE ARE # OF 1-YEAR JOBS DIVIDED BY LIFETIME OF DEVICE C 1=ONWIND; 2=OFFWIND; 3=WAVE; 4=GEOELEC; 5=HYDRO; 6=TIDAL; C 7=RESPV; 8=COMGOVPV; 9=UTILPV; 10=TOTALCSP; 11=SOLHEAT; C 12=GEOHEAT; 13=CONVTRANSMIS; 14=HVDCTRANSMIS C TONNECO2E = COUNTRY TONNES-CO2E (CO2-EQUIVALENT)/YR EMISSIONS IN 2050 C 113 READ(KDAT,*,END=115) COUNTRY, GRIDNAM, 1 TMWONWIND, TMWOFFWIND, TMWWAVE, TMWGEOEL, TMWHYD, 1 TMWTIDAL, TMWRESPV, TMWCOMPV, TMWUTILPV, TMWCSPORIG, 1 TMWCSPADD, TMWSOLTH, TMWGEOHT, 1 TMWONWGAT, TMWOFFWGAT, TMWRESGAT, TMWCOMGAT, TMWUTILGAT, 1 TMWCSPOGAT, TMWCSPAGAT, TMWSTHGAT, 1 EMWONWIND, EMWOFFWIND, EMWRESPV, EMWCOMPV, EMWUTILPV, 1 EMWCSP, EMWGEOEL, EMWHYD, EMWWAVE, 1 EMWTIDAL, EMWGEOHT, 1 SUPALL2050, SUPONW2050, SUPOFW2050, SUPRPV2050, SUPCPV2050, 1 SUPUPV2050, SUPCSP2050, SUPGEL2050, SUPHYD2050, SUPTID2050, 1 SUPWAV2050, SUPGHT2050, 1 TLOADTOT, BLOADRES, BLOADCOM, BLOADIND, BLOADTRA, 1 BLOADAGF, BLOADOTH, 1 FRACREH2, FRACCOH2, FRACINH2, FRACTRH2, FRACAFH2, 1 FRACOTH2, EXISTPHS, EXISOLTHM, AREALAND, 1 BAULOADGW, BAULCOE1, BAUHEALTH, BAUCLIMATE, 1 AMORTCURF, AMORT50F, AJOBLOSSI, 1 (OPJOBSI(I),I=1,MXJOBCAT), (CONJOBI(I),I=1,MXJOBCAT), 1 TONNECO2E C C NCOUNTRY = NUMBER OF COUNTRIES READ IN DATASET C MXCOUNTRY = MAX NUMBER OF COUNTRIES READ IN C NCOUNTRY = NCOUNTRY + 1 C IF (NCOUNTRY.GT.MXCOUNTRY) THEN WRITE(IOUT,*) 'POWERWORLD:NCOUNTRY>MXCOUNTY ',NCOUNTRY,MXCOUNTRY STOP ENDIF C C NAMEORIG = NAME OF 1..NCOUNTRY AS READ FROM countrystats.dat C THIS NAME IS CHANGED BELOW TO MATCH THOSE FROM wwssupworld.dat C NAMEORIG(NCOUNTRY) = COUNTRY C C COUNTRY = NAME OF CURRENT COUNTRY C IF (COUNTRY.EQ.'BRUNEI-DARUSSA') COUNTRY = 'BRUNEI DARUSSA' IF (COUNTRY.EQ.'CONGO-DEMOCRAT') COUNTRY = 'CONGO, DEMOCRA' IF (COUNTRY.EQ.'COSTA-RICA') COUNTRY = 'COSTA RICA ' IF (COUNTRY.EQ.'IVORY-COAST') COUNTRY = 'IVORY COAST ' IF (COUNTRY.EQ.'CZECH-REPUBLIC') COUNTRY = 'CZECH REPUBLIC' IF (COUNTRY.EQ.'DOMINICAN-REPU') COUNTRY = 'DOMINICAN REPU' IF (COUNTRY.EQ.'EL-SALVADOR') COUNTRY = 'EL SALVADOR ' IF (COUNTRY.EQ.'HONG-KONG') COUNTRY = 'HONG KONG ' IF (COUNTRY.EQ.'KOREA-DEM.-PEO') COUNTRY = 'KOREA, DEM. PE' IF (COUNTRY.EQ.'KYRGYZ-REPUBLI') COUNTRY = 'KYRGYZ REPUBLI' IF (COUNTRY.EQ.'LIBYAN-ARAB-JA') COUNTRY = 'LIBYAN ARAB JA' IF (COUNTRY.EQ.'MOLDOVA-REPUBL') COUNTRY = 'MOLDOVA REPUBL' IF (COUNTRY.EQ.'MACEDONIA-FORM') COUNTRY = 'MACEDONIA ' IF (COUNTRY.EQ.'MOROCCO-(INC-W') COUNTRY = 'MOROCCO (INC W' IF (COUNTRY.EQ.'DUTCH-ANTILLES') COUNTRY = 'DUTCH ANTILLES' IF (COUNTRY.EQ.'NEW-ZEALAND') COUNTRY = 'NEW ZEALAND ' IF (COUNTRY.EQ.'SAUDI-ARABIA') COUNTRY = 'SAUDI ARABIA ' IF (COUNTRY.EQ.'CURACAO') COUNTRY = 'DUTCH ANTILLES' C C CHANGE SERBIA HERE SINCE IT WILL REPRESENT SERBIA+MONENEGRO+KOSOVO C SINCE ONLY THE COMBINATION OF ALL 3 IS TREATED IN GATOR-GCMOM C IF (COUNTRY.EQ.'SERBIA') COUNTRY = 'SERBIA AND MON' IF (COUNTRY.EQ.'SOUTH-AFRICA') COUNTRY = 'SOUTH AFRICA ' IF (COUNTRY.EQ.'SRI-LANKA') COUNTRY = 'SRI LANKA ' IF (COUNTRY.EQ.'SYRIAN-ARAB-RE') COUNTRY = 'SYRIAN ARAB RE' IF (COUNTRY.EQ.'TRINIDAD-AND-T') COUNTRY = 'TRINIDAD AND T' IF (COUNTRY.EQ.'UNITED-ARAB-EM') COUNTRY = 'UNITED ARAB EM' IF (COUNTRY.EQ.'UNITED-KINGDOM') COUNTRY = 'UNITED KINGDOM' C C ICUSA = 1..NCOUNTRY INDEX CORRESPONDING TO U.S.A. C IF (COUNTRY.EQ.'UNITED-STATES-') THEN COUNTRY = 'UNITED STATES ' ICUSA = NCOUNTRY ENDIF C C NAMECOUN = FINAL NAME OF EACH 1..NCOUNTRY COUNTRY C NAMECOUN NAMES MATCH COUNTRY NAMES FROM wwssupworld.dat C GRIDCOUN = NAME OF EACH 1..NCOUNTRY GRID REGION THE COUNTRY LIES IN C NAMECOUN(NCOUNTRY) = COUNTRY GRIDCOUN(NCOUNTRY) = GRIDNAM C C NUMGRIDS = NUMBER OF GRID REGIONS IN DATASET C NAMEGRID = NAME OF EACH 1..NUMGRIDS GRID REGION C NCOUNGRID = NUMBER OF COUNTRIES IN EACH 1..NUMGRIDS GRID REGION C MXGRIDS = MAX NUMBER OF GRID REGIONS IN THE WORLD C DO J = 1, NUMGRIDS IF (GRIDNAM.EQ.NAMEGRID(J)) GOTO 110 ENDDO C NUMGRIDS = NUMGRIDS + 1 J = NUMGRIDS C IF (J.GT.MXGRIDS) THEN WRITE(IOUT,*) 'POWERWORLD: NUMGRIDS>MXGRIDS ',J,MXGRIDS STOP ENDIF C NAMEGRID(J) = GRIDNAM C C ***************************************************************************** C OPEN A FILE FOR EACH GRID REGION TO WRITE WWS DATA FROM GATOR-GCMOM, C SUMMED OVER ALL COUNTRIES IN GRID REGION, TO C ***************************************************************************** C IFREWRITE = 1: REWRITE KWWS (wwssupworld.dat) FILE TO C KWW2 (wwssupreform.dat) ELIMINATING REDUNDANT TIMES C AND ELIMINATING AVERAGE VALUES (KEEPING INSTANT VALUES ONLY) C WHEN THIS IS COMPLETE, USE KWW2 FILE AS INPUT FOR IFREWRITE=2 C APPLIES WHEN IFCONUS=0. WHEN IFCONUS=1, READ C wwssupconus.dat FROM PATHTEMP AND WRITE TO PATHHOME C AFTER FINISHINING IFREWRITE=1, CAN ERASE wwssupworld.dat C = 2: BEFORE RUNNING WITH IFREWRITE=2, RUN tilt.f TO SMOOTH SOLAR C APPLIES ONLY WHEN IFCONUS=0: READ KWW2 (wwssupreform.dat), C SUM VALUES EACH TIME STEP AMONG ALL COUNTRIES IN GRID C REGION GRIDUSE, REWRITE SUMMED VALUES TO A SMALLER FILE C KWW3 (wwssupworld.REGION) (FOR EACH REGION C ALSO CALCULATE CAPACITY FACTOR (CF) OF ONSHORE, OFFSHORE WIND; C ROOFTOP & UTILITY PV AND CSP FROM GATOR-GCMOM SIMULATIONS C BY COUNTRY. C wwsworld.GRIDUSE = SAME AS wwssupworld, BUT WITH DATA FOR EACH COUNTRY IN C GRID REGION IGRIDUSE SUMMED EACH TIME STEP INTO ONE C AGGREGATE VALUE FOR EACH ENERGY SOURCE (E.G., ONSHORE WIND) C C CODE COMES THROUGH HERE ONCE FOR EACH COUNTRY C IF (IFREWRITE.EQ.2) THEN OPEN(KWW3+J-1,FILE=PATHHOME//'READSUPPLY/wwssupworld.'//GRIDNAM) ENDIF C C IGRIDUSE = 1..NUMGRIDS INDEX NUMBER CORRESPONDING TO GRID BEING USED. C IGEUROPE = 1..NUMGRIDS INDEX NUMBER CORRESPONDING TO 'EUROPE' C NCOUNGRID = NUMBER OF COUNTRIES IN EACH 1..NUMGRIDS GRID REGION C IF (GRIDNAM.EQ.GRIDUSE) IGRIDUSE = J IF (GRIDNAM.EQ.'EUROPE') IGEUROPE = J C 110 NCOUNGRID(J) = NCOUNGRID(J) + 1 NC = NCOUNGRID(J) C IF (NC.GT.MXCOUNTRY) THEN WRITE(IOUT,*) 'POWERWORLD: NCOUNGRID>MXCOUNTY ',NC,MXCOUNTRY STOP ENDIF C C NAMORIGGR = ORIG COUNTRY NAME OF EACH 1..NCOUNGRID COUNTRY C OF EACH 1..NUMGRIDS REGION C NAMCOUNGR = FINAL COUNTRY NAME OF EACH 1..NCOUNGRID COUNTRY C OF EACH 1..NUMGRIDS REGION C NUMCOUNGR = 1..NCOUNTRY COUNTRY NUMBER OF EACH 1..NCOUNGRID COUNTRY C OF EACH 1..NUMGRIDS REGION C NAMORIGGR(J,NC) = NAMEORIG(NCOUNTRY) NAMCOUNGR(J,NC) = NAMECOUN(NCOUNTRY) NUMCOUNGR(J,NC) = NCOUNTRY C C TGWINSTALL = NEW+EXIST INSTALLED GW 1..MXCAP DEVICE BY COUNTRY IN 2050 C FOR CSP, NO NEED TO ADD TMWCSPADD TO TGWINSTALL HERE C SINCE THE ADDITIONAL CSP IS ADDED LATER WITH CSPTURBFAC C GWPERMW = GIGAWATTS (GW) PER MEGAWATT(MW) C TGWADCSPC = ADDED CSP TURBINES (GW) IN STATE/COUNTRY FROM SPREADSHEET TO C MEET CONTINUOUS LOAD. USED ONLY TO CALCULATE JOB NUMBERS C NEW SPREADSHEETS SHOULD HAVE 0 VALUES C OLD SPREADSHEET VALUES WERE TWMCSPORIG*0.6 C TGWINSTALL(NCOUNTRY,IONWIND) = GWPERMW * TMWONWIND TGWINSTALL(NCOUNTRY,IOFFWIND) = GWPERMW * TMWOFFWIND TGWINSTALL(NCOUNTRY,IRESPV) = GWPERMW * TMWRESPV TGWINSTALL(NCOUNTRY,ICOMGVPV) = GWPERMW * TMWCOMPV TGWINSTALL(NCOUNTRY,IUTILPV) = GWPERMW * TMWUTILPV C TGWINSTALL(NCOUNTRY,ICSPSTOR) = GWPERMW * (TMWCSPORIG+TMWCSPADD) TGWINSTALL(NCOUNTRY,ICSPSTOR) = GWPERMW * TMWCSPORIG TGWADCSPC( NCOUNTRY) = GWPERMW * TMWCCSPADD TGWINSTALL(NCOUNTRY,IGEOEL) = GWPERMW * TMWGEOEL TGWINSTALL(NCOUNTRY,IHYDRO) = GWPERMW * TMWHYD TGWINSTALL(NCOUNTRY,ITIDAL) = GWPERMW * TMWTIDAL TGWINSTALL(NCOUNTRY,IWAVE) = GWPERMW * TMWWAVE TGWINSTALL(NCOUNTRY,ISOLTHM) = GWPERMW * TMWSOLTH TGWINSTALL(NCOUNTRY,IGEOHT) = GWPERMW * TMWGEOHT C C TGWINSTGAT = NEW+EXIST INSTALLED MW 1..MXCAP DEVICE BY COUNTRY GATOR-GCMOM SIMS C FOR CSP, NEED TO ADD TMWCSPAGAT HERE. C TGWINSTGAT(NCOUNTRY,IONWIND) = GWPERMW * TMWONWGAT TGWINSTGAT(NCOUNTRY,IOFFWIND) = GWPERMW * TMWOFFWGAT TGWINSTGAT(NCOUNTRY,IRESPV) = GWPERMW * TMWRESGAT TGWINSTGAT(NCOUNTRY,ICOMGVPV) = GWPERMW * TMWCOMGAT TGWINSTGAT(NCOUNTRY,IUTILPV) = GWPERMW * TMWUTILGAT TGWINSTGAT(NCOUNTRY,ICSPSTOR) = GWPERMW * (TMWCSPOGAT+TMWCSPAGAT) TGWINSTGAT(NCOUNTRY,ISOLTHM) = GWPERMW * TMWSTHGAT C C EGWINSTALL = EXISTING INSTALLED GW OF EACH 1..MXCAP DEVICE C EXISOLTHM = EXISTING SOLAR THERMAL NAMEPLATE CAPACITY (GW) IN COUNTRY C THIS IS USUALLY USED FOR HEATING WATER C EGWINSTALL(NCOUNTRY,IONWIND) = GWPERMW * EMWONWIND EGWINSTALL(NCOUNTRY,IOFFWIND) = GWPERMW * EMWOFFWIND EGWINSTALL(NCOUNTRY,IRESPV) = GWPERMW * EMWRESPV EGWINSTALL(NCOUNTRY,ICOMGVPV) = GWPERMW * EMWCOMPV EGWINSTALL(NCOUNTRY,IUTILPV) = GWPERMW * EMWUTILPV EGWINSTALL(NCOUNTRY,ICSPSTOR) = GWPERMW * EMWCSP EGWINSTALL(NCOUNTRY,IGEOEL) = GWPERMW * EMWGEOEL EGWINSTALL(NCOUNTRY,IHYDRO) = GWPERMW * EMWHYD EGWINSTALL(NCOUNTRY,ITIDAL) = GWPERMW * EMWTIDAL EGWINSTALL(NCOUNTRY,IWAVE) = GWPERMW * EMWWAVE EGWINSTALL(NCOUNTRY,ISOLTHM) = EXISOLTHM EGWINSTALL(NCOUNTRY,IGEOHT) = GWPERMW * EMWGEOHT C C SUPALL = 2050 TOTAL POWER SUPPLY (GW) ALL ELEC POW SOURCES (NOT SUPGHT2050) C SUP2050 = 2050 ELECTRIC POWER (NOT HEAT) SUPPLY (GW) BY 1..MXCAP DEVICE C SUPPALL(NCOUNTRY) = SUPALL2050 SUP2050(NCOUNTRY,IONWIND) = SUPONW2050 SUP2050(NCOUNTRY,IOFFWIND) = SUPOFW2050 SUP2050(NCOUNTRY,IRESPV) = SUPRPV2050 SUP2050(NCOUNTRY,ICOMGVPV) = SUPCPV2050 SUP2050(NCOUNTRY,IUTILPV) = SUPUPV2050 SUP2050(NCOUNTRY,ICSPSTOR) = SUPCSP2050 SUP2050(NCOUNTRY,IGEOEL) = SUPGEL2050 SUP2050(NCOUNTRY,IHYDRO) = SUPHYD2050 SUP2050(NCOUNTRY,ITIDAL) = SUPTID2050 SUP2050(NCOUNTRY,IWAVE) = SUPWAV2050 SUP2050(NCOUNTRY,IGEOHT) = SUPGHT2050 C C WWSTOT = TOTAL 2050 END-USE LOAD (GW) FOR EACH 1..MXCOUNTRY COUNTRY C TLOADSEC = 2050 END-USE LOAD (GW) FOR EACH 1..MXSECTOR SECTOR BY COUNTRY C WWSTOT( NCOUNTRY) = TLOADTOT TLOADSEC(NCOUNTRY,IRESID) = BLOADRES TLOADSEC(NCOUNTRY,ICOMM) = BLOADCOM TLOADSEC(NCOUNTRY,IIND) = BLOADIND TLOADSEC(NCOUNTRY,ITRAN) = BLOADTRA TLOADSEC(NCOUNTRY,IAGFF) = BLOADAGF TLOADSEC(NCOUNTRY,IOTH) = BLOADOTH C C FRCH2SEC = FRACTION OF END-USE POWER DEMAND EACH 1..MXSECTOR SECTOR C GOING TO H2 ELECTROLYSIS/COMPRESSION/STORAGE C FRCH2SEC(NCOUNTRY,IRESID) = FRACREH2 FRCH2SEC(NCOUNTRY,ICOMM) = FRACCOH2 FRCH2SEC(NCOUNTRY,IIND) = FRACINH2 FRCH2SEC(NCOUNTRY,ITRAN) = FRACTRH2 FRCH2SEC(NCOUNTRY,IAGFF) = FRACAFH2 FRCH2SEC(NCOUNTRY,IOTH) = FRACOTH2 C C EXISTPHSC = EXISTING PUMPED-HYDRO STORAGE (PHS) INSTALLED CAPACITY (GW) C IN COUNTRY C EXISOLTHC = EXISTING SOLAR THERMAL NAMEPLATE CAPACITY (GW) IN COUNTRY C THIS IS USUALLY USED FOR HEATING WATER C EXISTPHSC(NCOUNTRY) = EXISTPHS EXISOLTHC(NCOUNTRY) = EXISOLTHM C C AREALAND = LAND AREA (KM) (NOT INCLUDING INLAND WATER BODIES OR COASTAL C WATERS) OF COUNTRY C AREALKM2C = LAND AREA (KM) (NOT INCLUDING INLAND WATER BODIES OR COASTAL C WATERS) OF COUNTRY C BAULOADGW = 2050 BAU ANNUAL AVG LOAD FOR EVERYTHING (GW) C BAULCOE1 = 2050 BAU LCOE ($2013) CENTS/KWH FOR RETAIL ELEC SECTOR C BAUHEALTH = 2050 BAU AIR POLL HEALTH COST ($2013 CENTS/KWH-ALL-ENERGY) C COST REDUCED 10% SINCE ONLY 90% OF MORTALITIES DUE TO BAU ENERGY C MORTALITY NUMBERS AMORT50F, AMOTCURF INCLUDE ALL AIR POL DEATHS C BAUCLIMATE = 2050 BAU CLIMATE COST ($2013 CENTS/KWH-ALL-ENERGY) C BAULOADC = COUNTRY 2050 BAU ANNUAL AVG LOAD FOR EVERYTHING (GW) C BAULCOEC = COUNTRY 2050 BAU LCOE ($2013) CENTS/KWH FOR RETAIL ELEC SECTOR C BAUHEALC = COUNTRY 2050 BAU AIR POLL HEALTH COST ($2013 CENTS/KWH-ALL-ENERGY) C BAUCLIMC = COUNTRY 2050 BAU CLIM COST ($2013 CENTS/KWH-ALL-ENERGY) IN C AMORTCURF = 2016 AIR POLLUTION MORTALITY BY COUNTRY FROM WHO READ IN C AMORT50F = 2050 AIR POLLUTION MORTALITY BY COUNTRY READ IN FROM FILE C AMORTCURC = 2016 AIR POL MORTALITY BY COUNTRY IN ARRAY C AMORT50C = 2050 AIR POL MORTALITY BY COUNTRY IN ARRAY C AJOBLOSSC = JOB LOSS IN COUNTRY, AS CALCULATED FROM SPREADSHEET C OPJOBSC = STATE/COUNTRY LONG-TERM, FULL-TIME OPERATIONAL JOBS CREATED, BASED ON C NEW NAMEPLATE CAPACITIES. ADJUST HERE SO FOR NEW+EXISTING C AND BASED ON UPDATED NAMEPLATE CAPACITIES C 1=ONWIND; 2=OFFWIND; 3=WAVE; 4=GEOELEC; 5=HYDRO; 6=TIDAL; C 7=RESPV; 8=COMGOVPV; 9=UTILPV; 10=TOTALCSP; 11=SOLHEAT; C 12=GEOHEAT; 13=CONVTRANSMIS; 14=HVDCTRANSMIS C CONJOBSC = COUNTRY LONG-TERM, FULL-TIME CONSTRUCTION JOBS CREATED, BASED ON C NEW NAMEPLATE CAPACITIES. KEEP BASED ON NEW NAMEPLATE. C ADJUST HERE ONLY FOR NAMEPLATE CAPACITY. C THESE ARE # OF 1-YEAR JOBS DIVIDED BY LIFETIME OF DEVICE C 1=ONWIND; 2=OFFWIND; 3=WAVE; 4=GEOELEC; 5=HYDRO; 6=TIDAL; C 7=RESPV; 8=COMGOVPV; 9=UTILPV; 10=TOTALCSP; 11=SOLHEAT; C 12=GEOHEAT; 13=CONVTRANSMIS; 14=HVDCTRANSMIS C CO2E2050C = COUNTRY TONNES-CO2E (CO2-EQUIVALENT)/YR EMISSIONS IN 2050 C AREALKM2C(NCOUNTRY) = AREALAND BAULOADC( NCOUNTRY) = BAULOADGW BAULCOEC( NCOUNTRY) = BAULCOE1 BAUHEALC( NCOUNTRY) = BAUHEALTH BAUCLIMC( NCOUNTRY) = BAUCLIMATE AMORTCURC(NCOUNTRY) = AMORTCURF AMORT50C( NCOUNTRY) = AMORT50F C AJOBLOSSC(NCOUNTRY) = AJOBLOSSI DO LJ = 1, MXJOBCAT OPJOBSC(NCOUNTRY,LJ) = OPJOBSI(LJ) CONJOBC(NCOUNTRY,LJ) = CONJOBI(LJ) ENDDO C CO2E2050C(NCOUNTRY) = TONNECO2E C GOTO 113 C CONTINUE READING countrystats.dat C 115 CLOSE(KDAT) C FINISH READING countrystats.dat C IF (IGRIDUSE.EQ.0) THEN WRITE(IOUT,*)'POWERWOLD: IFCONUS=0 BUT IGRIDUSE=0. SET GRIDUSE' STOP ENDIF C C ***************************************************************************** C READ heatfrac.dat TO READ FRAC OF TOTAL HEAT+ELEC LOADS GOING TO HEAT C ***************************************************************************** C FELECSEC = FRAC 2050 END-USE HEAT+ELEC IN EACH SECTOR GOING TO ELECRICITY. C THE REST GOES TO HEAT. C FHTBUILD = FRAC OF TOTAL HEAT+ELEC FINAL ENERGY IN RES/COM/GOV BUILDINGS C THAT IS FOR LOW-TEMPERATURE HEAT USED IN BUILDINGS (AIR/WATER) C FHTIND = FRAC OF TOTAL HEAT+ELEC FINAL ENERGY IN INDUSTRIAL SECTOR THAT C IS USED FOR HIGH-TEMPERATURE PROCESSES C 211 READ(KHTE,209) DUMMY 209 FORMAT(A14) IF (DUMMY.NE.'BEGIN') GOTO 211 C IHTREG = 0 212 READ(KHTE,207,END=213) COUNTRY, FHTBUILD, FHTINDUS 207 FORMAT(A14,1X,0PF5.3,12X,0PF5.3) C C IHTREG = NUMBER OF COUNTRIES/REGIONS IN heatfrac.dat FOR WHICH HEAT/ C HEAT+ELEC RATIOS PROVIDED. C IHTREG = IHTREG + 1 C IF (IHTREG.GT.MXCOUNTRY) THEN WRITE(IOUT,*)'POWERWORLD: IHTREG>MXCOUNTRY ',IHTREG,MXCOUNTRY STOP ENDIF C C NAMHTREG = NAME OF EACH 1..IHTREG COUNTRY OR REGION C FELBUILD = FRAC OF TOTAL HEAT+ELEC FINAL ENERGY IN RES/COM/GOV BUILDINGS C THAT IS FOR ELECTRICITY USED IN BUILDINGS (REST FOR LOW-T HEAT) C FELIND = FRAC OF TOTAL HEAT+ELEC FINAL ENERGY IN INDUSTRIAL SECTOR THAT C IS USED FOR ELECTRICITY (REST FOR HIGH-TEMPERATURE PROCESSES) C CPERFORM = COEFFICIENT OF PERFORMANCE OF HEAT PUMPS C (J-TH/J-ELEC = = KWH-TH/KWH-ELEC = KW-TH/KW-ELEC) C FHTBUILD = FRAC OF TOTAL HEAT+ELEC FINAL ENERGY IN RES/COM/GOV BUILDINGS C THAT IS FOR LOW-TEMPERATURE HEAT USED IN BUILDINGS (AIR/WATER) C FISHEAT = FRAC OF TOTAL ELEC FINAL ENERGY IN RES/COM/GOV BUILDINGS C THAT IS FOR LOW-TEMPERATURE HEAT USED IN BUILDINGS (AIR/WATER) C AFTER HEAT HAS BEEN TURNED TO ELECTRICITY FOR HEAT PUMPS C FHTHPUMP = FRAC OF TOTAL HEAT+ELEC IN RES/COM/GOV BUILDINGS THAT IS C FOR LOW-TEMP HEAT USED IN BUILDINGS (AIR/WATER) ASSUMING C THE HEAT IS OBTAINED FROM HEAT PUMPS RUNNING ON ELECTRICITY C (THUS THE FRACTION IS REDUCED TO FISHEAT/(FISHEAT+FNONHEAT) C SINCE NEED MUCH LESS ELECTRICITY TO MOVE HEAT W/HEAT PUMPT THAN C NEEDED IF DIRECT HEAT IS PRODUCED. C FNONHEAT = FRAC OF TOTAL HEAT+ELEC IN BUILDINGS FOR ELECTRICITY C FNONHEAT = 1. - FHTBUILD FISHEAT = FHTBUILD / CPERFORM FHTHPUMP = FISHEAT / (FISHEAT + FNONHEAT) C NAMHTREG(IHTREG) = COUNTRY FELBUILD(IHTREG) = 1. - FHTHPUMP FELIND( IHTREG) = 1. - FHTINDUS C GOTO 212 213 CONTINUE C C ***************************************************************************** C GO THROUGH EACH COUNTRY AND ASSIGN VALUES OF FELECSEC TO EACH SECTOR C ***************************************************************************** C FELECSEC = FRAC 2050 END-USE HEAT+ELEC IN EACH SECTOR GOING TO ELECRICITY. C THE REST GOES TO HEAT. C FELBUILD = FRAC OF TOTAL HEAT+ELEC FINAL ENERGY IN RES/COM/GOV BUILDINGS C THAT IS FOR ELECTRICITY USED IN BUILDINGS (REST FOR LOW-T HEAT) C FELIND = FRAC OF TOTAL HEAT+ELEC FINAL ENERGY IN INDUSTRIAL SECTOR THAT C IS USED FOR ELECTRICITY (REST FOR HIGH-TEMPERATURE PROCESSES) C IHTREG = NUMBER OF COUNTRIES/REGIONS IN heatfrac.dat FOR WHICH HEAT/ C HEAT+ELEC RATIOS PROVIDED. C NAMECOUN = NAME OF EACH 1..NCOUNTRY COUNTRY C GRIDCOUN = NAME OF EACH 1..NCOUNTRY GRID REGION THE COUNTRY LIES IN C DO 215 I = 1, NCOUNTRY COUNTRY = NAMECOUN(I) C C ***************************************************************************** C CHECK FOR INDIVIDUAL COUNTRIES IN heatfrac.dat C ***************************************************************************** C DO J = 1, IHTREG IF (NAMHTREG(J).EQ.COUNTRY) THEN GOTO 214 ENDIF ENDDO C C ***************************************************************************** C CHECK FOR REGIONAL DATA IN heatfrac.dat C ***************************************************************************** C IHTREG = NUMBER OF COUNTRIES/REGIONS IN heatfrac.dat FOR WHICH HEAT/ C HEAT+ELEC RATIOS PROVIDED. C ASIA-OTHER = ASIA OTHER THAN CHINA AND INDIA C LAM-OTHER = LATIN AMERICA AND CARIBBEAN OTHER THAN BRAZIL C MEA-OTHER = MIDDLE EAST AND AFRICA OTHER THAN SOUTH AFRICA AND NIGERIA C REF-OTHER = REFORMING ECONOMIES OTHER THAN POLAND AND RUSSIA C REFORMING COUNTRIES: IN CENTRAL+EASTERN EUROPE+FORMER SOVIET UNION C OECD-OTHER = OECD IN 1990 OTHER THAN AUSTRALIA,FRANCE,GERMANY,US,UK,JAPAN,ITALY C OECD: N.AMERICAL, WESTERN EUROPE, PACIFIC OECD C GRIDNAM = GRIDCOUN(I) DO J = 1, IHTREG NH = NAMHTREG(J) IF ( GRIDNAM.EQ.'CENTRAL-ASIA' .AND.NH.EQ.'ASIA-OTHER')THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'SOUTHEAST-ASIA'.AND.NH.EQ.'ASIA-OTHER')THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'PHILIPPINES' .AND.NH.EQ.'ASIA-OTHER')THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'TAIWAN' .AND.NH.EQ.'ASIA-OTHER')THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'SOUTH-AMERICA' .AND.NH.EQ.'LAM-OTHER') THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'CUBA' .AND.NH.EQ.'LAM-OTHER') THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'HAITI' .AND.NH.EQ.'LAM-OTHER') THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'JAMAICA' .AND.NH.EQ.'LAM-OTHER') THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'CENTRAL-AMERIC'.AND.NH.EQ.'LAM-OTHER') THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'AFRICA' .AND.NH.EQ.'MEA-OTHER') THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'MIDEAST' .AND.NH.EQ.'MEA-OTHER') THEN GOTO 214 C ELSEIF (GRIDNAM.EQ.'ISRAEL' .AND.NH.EQ.'MEA-OTHER') THEN ELSEIF (GRIDNAM.EQ.'ISRAEL' .AND.NH.EQ.'AUSTRALIA') THEN GOTO 214 C C BREAK UP EUROPE INTO COUNTRIES. GERMANY, ITALY, FRANCE, POLAND, UK C ALREADY ACCOUNTED FOR C C ELSEIF (GRIDNAM.EQ.'EUROPE' .AND.NH.EQ.'OECD-OTHER')THEN C GOTO 214 ELSEIF (COUNTRY.EQ.'IRELAND' .AND.NH.EQ.'UNITED KINGDOM')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'SCOTLAND' .AND.NH.EQ.'UNITED KINGDOM')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'SPAIN' .AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'GIBRALTAR' .AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'PORTUGAL' .AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'GREECE' .AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'CYPRUS' .AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'MALTA' .AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'ALBANIA' .AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'BULGARIA' .AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'MACEDONIA' .AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'SERBIA AND MON'.AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'MONTENEGRO' .AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'KOSOVO' .AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'CROATIA' .AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'ROMANIA' .AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'BOSNIA-HERZEGO'.AND.NH.EQ.'ITALY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'HUNGARY' .AND.NH.EQ.'FRANCE')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'AUSTRIA' .AND.NH.EQ.'FRANCE')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'SWITZERLAND' .AND.NH.EQ.'FRANCE')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'SLOVENIA' .AND.NH.EQ.'FRANCE')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'CZECH REPUBLIC'.AND.NH.EQ.'GERMANY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'LUXEMBOURG' .AND.NH.EQ.'GERMANY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'BELGIUM' .AND.NH.EQ.'GERMANY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'NETHERLANDS' .AND.NH.EQ.'GERMANY')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'DENMARK' .AND.NH.EQ.'RUSSIA')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'NORWAY' .AND.NH.EQ.'RUSSIA')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'SWEDEN' .AND.NH.EQ.'RUSSIA')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'FINLAND' .AND.NH.EQ.'RUSSIA')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'LITHUANIA' .AND.NH.EQ.'RUSSIA')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'LATVIA' .AND.NH.EQ.'RUSSIA')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'ESTONIA' .AND.NH.EQ.'RUSSIA')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'MOLDOVA REPUBL'.AND.NH.EQ.'RUSSIA')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'BELARUS' .AND.NH.EQ.'POLAND')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'UKRAINE' .AND.NH.EQ.'POLAND')THEN GOTO 214 ELSEIF (COUNTRY.EQ.'SLOVAKIA' .AND.NH.EQ.'POLAND')THEN GOTO 214 C C ELSEIF (GRIDNAM.EQ.'ICELAND' .AND.NH.EQ.'OECD-OTHER')THEN ELSEIF (GRIDNAM.EQ.'ICELAND' .AND.NH.EQ.'RUSSIA')THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'NEW-ZEALAND' .AND.NH.EQ.'AUSTRALIA') THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'RUSSIA' .AND.NH.EQ.'RUSSIA') THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'CHINA' .AND.NH.EQ.'CHINA') THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'JAPAN' .AND.NH.EQ.'JAPAN') THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'SOUTH-KOREA' .AND.NH.EQ.'OECD-OTHER')THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'INDIA' .AND.NH.EQ.'INDIA') THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'MAURITIUS' .AND.NH.EQ.'MEA-OTHER') THEN GOTO 214 ELSEIF (GRIDNAM.EQ.'HICC' .AND.NH.EQ.'GRAN-CANARIA') THEN GOTO 214 ELSEIF (IFSTATES.EQ.1.AND.GRIDNAM.NE.'HICC'. 1 AND.NH.EQ.'UNITED STATES') THEN GOTO 214 ENDIF ENDDO C C CAN'T FIND REGION IN heatfrac.dat CORRESPONDING TO GRIDNAM C WRITE(IOUT,*)'POWERWORLD1:GRIDNAM.NE.NH: ',GRIDNAM,NAMECOUN(I) STOP C C ASSIGN VALUES OF FELECSEC FROM COUNTRY OR REGIONAL DATA FROM heatfrac.dat C 214 FELECSEC(I,IRESID) = FELBUILD(J) FELECSEC(I,ICOMM) = FELBUILD(J) FELECSEC(I,IIND) = FELIND( J) FELECSEC(I,ITRAN) = 1. FELECSEC(I,IAGFF) = 1. FELECSEC(I,IOTH) = 1. C 215 CONTINUE C CONTINUE I = 1, NCOUNTRY C C ***************************************************************************** C SUMMARIZE LOAD STATISTICS FOR GRID REGIONS AND WRITE TO FILE countrydata.out C ***************************************************************************** C NUMGRIDS = NUMBER OF GRID REGIONS AMONG AlL COUNTRIES C NCOUNGRID = NUMBER OF COUNTRIES IN EACH 1..NUMGRIDS GRID REGION C NAMECOUN = NAME OF EACH 1..NCOUNTRY COUNTRY C NAMCOUNGR = NAME OF EACH 1..NCOUNGRID COUNTRY IN EACH 1..NUMGRIDS REGION C NUMCOUNGR = 1..NCOUNTRY COUNTRY NUMBER OF EACH 1..NCOUNGRID COUNTRY C OF EACH 1..NUMGRIDS REGION C ICOUN = 0 SUMALL = 0. SUMH2ALL = 0. PHSALL = 0. STHALL = 0. C DO J = 1, NUMGRIDS WRITE(KOUT,116) NAMEGRID(J) C DO I = 1, NCOUNGRID(J) ICOUN = ICOUN + 1 IC = NUMCOUNGR(J,I) C C SUMWWS = SUM OF END-USE LOAD (GW) OVER ALL COUNTRIES IN DATASET C EXISTPHSR = EXISTING PUMPED-HYDRO STORAGE (PHS) NAMEPLATE CAPACITY (GW) C IN GRID REGION J=1,NUMGRIDS C EXISOLTHR = EXISTING SOLAR THERMAL FOR HEAT NAMEPLATE CAPACITY (GW) C IN GRID REGION J=1,NUMGRIDS C SUMWWS( J) = SUMWWS(J) + WWSTOT( IC) EXISTPHSR(J) = EXISTPHSR(J) + EXISTPHSC(IC) EXISOLTHR(J) = EXISOLTHR(J) + EXISOLTHC(IC) C C AREALKM2C = LAND AREA (KM) (NOT INCLUDING INLAND WATER BODIES OR COASTAL C WATERS) OF COUNTRY C AREALKM2R = LAND AREA (KM) (NOT INCLUDING INLAND WATER BODIES OR COASTAL C WATERS) OF GRID REGION C BAULOADC = COUNTRY 2050 BAU ANNUAL AVG LOAD FOR EVERYTHING (GW) C BAULCOEC = COUNTRY 2050 BAU LCOE ($2013) CENTS/KWH FOR RETAIL ELEC SECTOR C BAUHEALC = COUNTRY 2050 BAU AIR POLL HEALTH COST ($2013 CENTS/KWH-ALL-ENERGY) C BAUCLIMC = COUNTRY 2050 BAU CLIM COST ($2013 CENTS/KWH-ALL-ENERGY) IN C BAULOADR = REGION 2050 BAU ANNUAL AVG LOAD FOR EVERYTHING (GW) C BAULCOER = REGION 2050 BAU LCOE ($2013) CENTS/KWH FOR RETAIL ELEC SECTOR C BAUHEALR = REGION 2050 BAU AIR POLL HEALTH COST ($2013 CENTS/KWH-ALL-ENERGY) C COST REDUCED 10% SINCE ONLY 90% OF MORTALITIES DUE TO BAU ENERGY C MORTALITY NUMBERS AMORT50F, AMOTCURF INCLUDE ALL AIR POL DEATHS C BAUCLIMR = REGION 2050 BAU CLIM COST ($2013 CENTS/KWH-ALL-ENERGY) IN C CALCULATE A WEIGHTED AVERAGE LCOE, HEALTH, AND CLIMATE C COST (CENTS/KWH), WEIGHTING WITH END USE LOAD OF COUNTRY. C AMORTCURC = 2016 AIR POL MORTALITY BY COUNTRY IN ARRAY C AMORT50C = 2050 AIR POL MORTALITY BY COUNTRY IN ARRAY C AMORTCURR = 2016 AIR POL MORTALITY BY REGION IN ARRAY C AMORT50R = 2050 AIR POL MORTALITY BY REGION IN ARRAY C AJOBLOSSR = JOB LOSS IN REGION, AS CALCULATED FROM SPREADSHEET C OPJOBSR = REGION LONG-TERM, FULL-TIME OPERATIONAL JOBS CREATED, BASED ON C NEW NAMEPLATE CAPACITIES. ADJUST HERE SO FOR NEW+EXISTING C AND BASED ON UPDATED NAMEPLATE CAPACITIES C 1=ONWIND; 2=OFFWIND; 3=WAVE; 4=GEOELEC; 5=HYDRO; 6=TIDAL; C 7=RESPV; 8=COMGOVPV; 9=UTILPV; 10=TOTALCSP; 11=SOLHEAT; C 12=GEOHEAT; 13=CONVTRANSMIS; 14=HVDCTRANSMIS C CONJOBR = REGION LONG-TERM, FULL-TIME CONSTRUCTION JOBS CREATED, BASED ON C NEW NAMEPLATE CAPACITIES. KEEP BASED ON NEW NAMEPLATE. C ADJUST HERE ONLY FOR NAMEPLATE CAPACITY. C THESE ARE # OF 1-YEAR JOBS DIVIDED BY LIFETIME OF DEVICE C 1=ONWIND; 2=OFFWIND; 3=WAVE; 4=GEOELEC; 5=HYDRO; 6=TIDAL; C 7=RESPV; 8=COMGOVPV; 9=UTILPV; 10=TOTALCSP; 11=SOLHEAT; C 12=GEOHEAT; 13=CONVTRANSMIS; 14=HVDCTRANSMIS C CO2E2050R = REGION TONNES-CO2E (CO2-EQUIVALENT)/YR EMISSIONS IN 2050 C AREALKM2R(J) = AREALKM2R(J) + AREALKM2C(IC) BAULOADR( J) = BAULOADR( J) + BAULOADC( IC) BAULCOER( J) = BAULCOER( J) + BAULCOEC( IC) * BAULOADC(IC) BAUHEALR( J) = BAUHEALR( J) + BAUHEALC( IC) * BAULOADC(IC) BAUCLIMR( J) = BAUCLIMR( J) + BAUCLIMC( IC) * BAULOADC(IC) AMORTCURR(J) = AMORTCURR(J) + AMORTCURC(IC) AMORT50R( J) = AMORT50R( J) + AMORT50C( IC) C AJOBLOSSR(J) = AJOBLOSSR(J) + AJOBLOSSC(IC) C DO LJ = 1, MXJOBCAT OPJOBSR(J,LJ) = OPJOBSR(J,LJ) + OPJOBSC(IC,LJ) CONJOBR(J,LJ) = CONJOBR(J,LJ) + CONJOBC(IC,LJ) ENDDO C CO2E2050R(J) = CO2E2050R(J) + CO2E2050C(IC) C C TLOADSUM = SUM OF TLOADSEC (GW) AMONG COUNTRIES IN EACH J=1..NUMGRIDS REGION C TSECALL = SUM OF TLOADSEC (GW) AMONG ALL COUNTRIES OVER ALL GRID REGIONS C TLOADSEC = 2050 END-USE LOAD (GW) FOR EACH 1..MXSECTOR SECTOR BY COUNTRY C H2COUN = GW-ELEC USED FOR H2 ELECTROLYSIS/COMPRESSION/STORAGE SUMMED C OVER ALL SECTORS K=1,MXSECTOR IN COUNTRY IC C H2LOADSEC = GW-ELEC USED FOR H2 ELECTROLYSIS/COMPRESSION/STORAGE IN C COUNTRY IC AND SECTOR K C H2SECGRID = GW-ELEC USED FOR H2 ELECTROLYSIS/COMPRESSION/STORAGE SUMMED C OVER ALL COUNTRIES IN GRID REGION J FOR SECTOR K C H2SECALL = GW-ELEC USED FOR H2 ELECTROLYSIS/COMPRESSION/STORAGE SUMMED C OVER ALL COUNTRIES IN SECTOR K C SUMH2REG = GW-ELEC USED FOR H2 ELECTROLYSIS/COMPRESSION/STORAGE SUMMED C OVER ALL COUNTRIES AND SECTORS IN GRID REGION J C FELECSEC = FRAC 2050 END-USE HEAT+ELEC IN EACH SECTOR GOING TO ELECRICITY. C THE REST GOES TO HEAT. C ELLOADSEC = TOTAL GW USED IN SECTOR IN COUNTRY FOR ELECTRIC POWER APPLICATIONS C REST IS USED FOR HEAT APPLICATIONS C EXISTPHSC = EXISTING PUMPED-HYDRO STORAGE (PHS) NAMEPLATE CAPACITY (GW) C IN COUNTRY C EXISOLTHC = EXISTING SOLAR THERMAL FOR HEAT NAMEPLATE CAPACITY (GW) IN COUNTRY C H2COUN = 0. DO K = 1, MXSECTOR TLOADSUM(J,K) = TLOADSUM(J,K) + TLOADSEC(IC,K) TSECALL( K) = TSECALL( K) + TLOADSEC(IC,K) C H2LOADSEC = FRCH2SEC(IC,K) * TLOADSEC(IC,K) H2COUN = H2COUN + H2LOADSEC H2SECGRID(J,K) = H2SECGRID(J,K) + H2LOADSEC H2SECALL( K) = H2SECALL( K) + H2LOADSEC SUMH2REG( J) = SUMH2REG(J) + H2LOADSEC C ELLOADSEC(J,K) = ELLOADSEC(J,K)+FELECSEC(IC,K)*TLOADSEC(IC,K) ENDDO C WRITE(KOUT,117) I, NAMCOUNGR(J,I), ICOUN, WWSTOT(IC), 1 (TLOADSEC(IC,K),K=1,MXSECTOR), 1 PCT*H2COUN/WWSTOT(IC), 1 (PCT*FRCH2SEC(IC,K),K=1,MXSECTOR), 1 EXISTPHSC(IC),EXISOLTHC(IC), 1 (PCT*FELECSEC(IC,K),K=1,MXSECTOR) ENDDO C ENDDO I = 1, NCOUNGRID C C DIVIDE BY REGIONAL LOAD TO OBTAIN AVERAGE REGIONAL VALUES OF BAU LCOE C HEALTH, AND CLIMATE COSTS PER KWH C BAULCOER( J) = BAULCOER( J) / BAULOADR(J) BAUHEALR( J) = BAUHEALR( J) / BAULOADR(J) BAUCLIMR( J) = BAUCLIMR( J) / BAULOADR(J) C C FRCH2REG = FRACTION OF END-USE POWER DEMAND EACH 1..MXSECTOR SECTOR C IN EACH 1..NUMGRIDS GRID GOING TO H2 ELECTROL/COMPRESSION/STORAGE C FELECREG = FRAC 2050 END-USE HEAT+ELEC IN EACH SECTOR GOING TO ELECTRICITY C IN EACH 1..NUMGRIDS GRID. THE REST GOES TO HEAT C TLOADSUM = SUM OF TLOADSEC (GW) AMONG COUNTRIES IN EACH J=1..NUMGRIDS REGION C TLOADSEC = 2050 END-USE LOAD (GW) FOR EACH 1..MXSECTOR SECTOR BY COUNTRY C ELLOADSEC = TOTAL GW USED IN SECTOR IN COUNTRY FOR ELECTRIC POWER APPLICATIONS C REST IS USED FOR HEAT APPLICATIONS C DO K = 1, MXSECTOR FRCH2REG(J,K) = H2SECGRID(J,K) / TLOADSUM(J,K) FELECREG(J,K) = ELLOADSEC(J,K) / TLOADSUM(J,K) ENDDO C C SUMALL = SUM OF END USE LOADS (GW) OVER ALL GRID REGIONS C PHSALL = SUM OF EXISTING PHS NAMEPLATE CAPACITY OVER ALL GRID REGIONS C STHALL = SUM OF EXISTING SOL THERMAL FOR HEAT NAMEPLATE CAPAC OVER ALL GRID REGIONS C SUMALL = SUMALL + SUMWWS( J) SUMH2ALL = SUMH2ALL + SUMH2REG( J) PHSALL = PHSALL + EXISTPHSR(J) STHALL = STHALL + EXISOLTHR(J) C IF (NCOUNGRID(J).GT.1) THEN WRITE(KOUT,118) SUMWWS(J), (TLOADSUM(J,K),K=1,MXSECTOR), 1 PCT*SUMH2REG(J)/SUMWWS(J), 1 (PCT*FRCH2REG(J,K),K=1,MXSECTOR), 1 EXISTPHSR(J),EXISOLTHR(J) ELSE WRITE(KOUT,*) ENDIF ENDDO C ENDDO J = 1, NUMGRIDS C WRITE(KOUT,119) SUMALL, (TSECALL(K),K=1,MXSECTOR), 1 PCT*SUMH2ALL/SUMALL, 1 (PCT*H2SECALL(K)/TSECALL(K),K=1,MXSECTOR), 1 PHSALL,STHALL C 116 FORMAT('GRID REGION ',A14,' 2050 GW-TOTLOAD ', 1 'GW-RES GW-COM GW-IND GW-TRA GW-AGF GW-OTH',/, 1 40X,'%H2-TOT %H2-RES %H2-COM %H2-IND %H2-TRA ', 1 '%H2-AGF %H2-OTH',/,40X,'PHSEXISTGW SOLTHEXISGW %ELECRES ', 1 '%ELECCOM %ELECIND %ELECTRA %ELECAGF %ELECOTH') C 117 FORMAT(' COUNTRY ',I3,1X,A14,1X,I3,7(1X,0PF8.2),/, 1 38X,7(1X,0PF8.2),/, 1 38X,8(1X,0PF8.2)) 118 FORMAT(' REGIONAL SUM ',19X,7(1X,0PF8.2),/, 1 38X,7(1X,0PF8.2),/, 1 38X,2(1X,0PF8.2)) 119 FORMAT(' ALL-COUNTRIES',19X,7(1X,0PF8.2),/, 1 38X,7(1X,0PF8.2),/, 1 38X,2(1X,0PF8.2)) C C ***************************************************************************** C SUMMARIZE SUPPLY STATISTICS FOR GRID REGIONS AND WRITE TO FILE countrydata.out C ***************************************************************************** C NUMGRIDS = NUMBER OF GRID REGIONS AMONG AlL COUNTRIES C NAMECOUN = NAME OF EACH 1..NCOUNTRY COUNTRY C NAMCOUNGR = NAME OF EACH 1..NCOUNGRID COUNTRY IN EACH 1..NUMGRIDS REGION C NUMCOUNGR = 1..NCOUNTRY COUNTRY NUMBER OF EACH 1..NCOUNGRID COUNTRY C OF EACH 1..NUMGRIDS REGION C ICOUN = 0 TGWALLGLB = 0. EGWALLGLB = 0. SUPALLGLB = 0. TGWGATGLB = 0. C DO J = 1, NUMGRIDS WRITE(KOUT,121) NAMEGRID(J) C DO I = 1, NCOUNGRID(J) ICOUN = ICOUN + 1 IC = NUMCOUNGR(J,I) C C TGWINSTREG = GW-SUM OVER REG J, 2050 NEW+EXIST NAMEPL CAPAC FOR DEVICE K C EGWINSTREG = GW-SUM OVER REG J, EXISTING NAMEPL CAPAC FOR DEVICE K C TGWGATREG = GW-SUM OVER REG J, 2050 NEW+EXIST NAMEPL CAPAC DEVICE K GATOR SIMS C SUPGWREG = GW-SUM OVER REG J, 2050 END-USE POWER SUPPLIED BY DEVICE K C TGWINSTALL = NEW+EXIST INSTALLED GW 1..MXCAP DEVICE BY COUNTRY IN 2050 C TGWINSTGAT = NEW+EXIST INSTALLED GW 1..MXCAP DEVICE BY COUNTRY GATOR-GCMOM SIMS C EGWINSTALL = EXISTING INSTALLED GW OF EACH 1..MXCAP DEVICE C SUP2050 = 2050 ELECTRIC POWER (NOT HEAT) SUPPLY (GW) BY 1..MXCAP DEVICE C TGWINSTGLB = GW-SUM ALL COUNTRIES, 2050 NEW+EXIST NAMEPL CAPAC DEVICE K C EGWINSTGLB = GW-SUM ALL COUNTRIES, 2014 EXIST NAMEPLATE CAPAC DEVICE K C SUPGLOB = GW-SUM ALL COUNTRIES, 2050 END-USE POWER SUPPLIED DEVICE K C GATGLOB = GW-SUM ALL COUNTRIES, 2050 NEW+EXIST NP CAPAC DEVICE K GATOR SIMS C EGWALLCOUN = 0. SUPALLCOUN = 0. TGWGATCOUN = 0. C DO K = 1, MXCAP TGWINSTREG(J,K) = TGWINSTREG(J,K) + TGWINSTALL(IC,K) EGWINSTREG(J,K) = EGWINSTREG(J,K) + EGWINSTALL(IC,K) SUPGWREG( J,K) = SUPGWREG( J,K) + SUP2050( IC,K) TGWGATREG( J,K) = TGWGATREG( J,K) + TGWINSTGAT(IC,K) TGWALLCOUN(IC) = TGWALLCOUN(IC) + TGWINSTALL(IC,K) EGWALLCOUN = EGWALLCOUN + EGWINSTALL(IC,K) SUPALLCOUN = SUPALLCOUN + SUP2050( IC,K) TGWGATCOUN = TGWGATCOUN + TGWINSTGAT(IC,K) TGWINSTGLB( K) = TGWINSTGLB(K) + TGWINSTALL(IC,K) EGWINSTGLB( K) = EGWINSTGLB(K) + EGWINSTALL(IC,K) SUPGLOB( K) = SUPGLOB( K) + SUP2050( IC,K) GATGLOB( K) = GATGLOB( K) + TGWINSTGAT(IC,K) ENDDO C C TGWALLREG = GW-SUM REGION J, 2050 NEW+EXIST NAMEPL CAPAC ALL DEVICES C EGWALLREG = GW-SUM REGION J, 2014 EXIST NAMEPLATE CAPAC ALL DEVICES C SUPALLREG = GW-SUM REGION J, 2050 END-USE POWER SUPPLIED ALL SOURCES C TGWALLREG = GW-SUM REGION J, 2050 NEW+EXIST NP CAPAC ALL DEVICE GATOR SIMS C TGWALLCOUN = GW-SUM COUNTRY IC, 2050 NEW+EXIST NAMEPL CAPAC ALL DEVICES C EGWALLCOUN = GW-SUM COUNTRY IC, 2014 EXIST NAMEPLATE CAPAC ALL DEVICES C SUPALLCOUN = GW-SUM COUNTRY IC, 2050 END-USE POWER SUPPLIED ALL SOURCES C DIFFERS FROM SUPALL, WHICH IS FOR ELECTRIC POWER SOURCES ONLY C SUPALL = 2050 TOTAL POWER SUPPLY (GW) ALL ELEC POW SOURCES (NOT SUPGHT2050) C TGWGATCOUN = GW-SUM COUNTRY IC, 2050 NEW+EXIST NP CAPAC ALL DEVICE GATOR SIMS C TGWADCSPR = ADDED CSP TURBINES (GW) IN REGION FROM SPREADSHEET TO C MEET CONTINUOUS LOAD. USED ONLY TO CALCULATE JOB NUMBERS C NEW SPREADSHEETS SHOULD HAVE 0 VALUES C OLD SPREADSHEET VALUES WERE TWMCSPORIG*0.6 C TGWALLREG(J) = TGWALLREG(J) + TGWALLCOUN(IC) EGWALLREG(J) = EGWALLREG(J) + EGWALLCOUN SUPALLREG(J) = SUPALLREG(J) + SUPALLCOUN GATALLREG(J) = GATALLREG(J) + TGWGATCOUN TGWADCSPR(J) = TGWADCSPR(J) + TGWADCSPC( IC) C C FLOADREG = FRAC 2050 END USE ELEC POWER FROM EACH 1..MXCAP DEVICE IN REGION C DO K = 1, MXCAP FLOADREG(J,K) = SUPGWREG(J,K) / SUPALLREG(J) ENDDO C WRITE(KOUT,122) I, NAMCOUNGR(J,I), ICOUN, 1 (TGWINSTALL(IC,K),K=1,MXCAP), TGWALLCOUN(IC), 1 (EGWINSTALL(IC,K),K=1,MXCAP), EGWALLCOUN, 1 (SUP2050( IC,K),K=1,MXCAP), SUPALLCOUN, 1 (TGWINSTGAT(IC,K),K=1,MXCAP), TGWGATCOUN ENDDO C ENDDO I = 1, NCOUNGRID C C TGWINSTREG = GW-SUM OVER REG J, 2050 NEW+EXIST NAMEPL CAPAC FOR DEVICE K C EGWINSTREG = GW-SUM OVER REG J, 2014 EXIST NAMEPL CAPAC FOR DEVICE K C TGWGATREG = GW-SUM OVER REG J, 2050 NEW+EXIST NAMEPL CAPAC DEVICE K GATOR SIMS C TGWALLGLB = GW-SUM ALL COUNTRIES, 2050 NEW+EXIST NAMEPL CAPAC ALL DEVICES C EGWALLGLB = GW-SUM ALL COUNTRIES, 2014 EXIST NAMEPLATE CAPAC ALL DEVICES C SUPALLGLB = GW-SUM ALL COUNTRIES, 2050 END-USE POWER SUPPLIED ALL SOURCES C TGWGATGLB = GW-SUM ALL COUNTRIES, 2050 NEW+EXIST NP CAPAC ALL DEVICE GATOR SIMS C TGWALLGLB = TGWALLGLB + TGWALLREG(J) EGWALLGLB = EGWALLGLB + EGWALLREG(J) SUPALLGLB = SUPALLGLB + SUPALLREG(J) TGWGATGLB = TGWGATGLB + GATALLREG(J) C IF (NCOUNGRID(J).GT.1) THEN WRITE(KOUT,123) (TGWINSTREG(J,K),K=1,MXCAP), TGWALLREG(J), 1 (EGWINSTREG(J,K),K=1,MXCAP), EGWALLREG(J), 1 (SUPGWREG( J,K),K=1,MXCAP), SUPALLREG(J), 1 (TGWGATREG( J,K),K=1,MXCAP), GATALLREG(J) ELSE WRITE(KOUT,*) ENDIF ENDDO C ENDDO J = 1, NUMGRIDS C WRITE(KOUT,124) (TGWINSTGLB(K),K=1,MXCAP), TGWALLGLB, 1 (EGWINSTGLB(K),K=1,MXCAP), EGWALLGLB, 1 (SUPGLOB( K),K=1,MXCAP), SUPALLGLB, 1 (GATGLOB( K),K=1,MXCAP), TGWGATGLB C 121 FORMAT(/'GRID REGION ',A14,' 2050 NEW+EX-GW-ONWND ', 1 'GW-OFWND GW-RESPV GW-COMPV GW-UTPV GW-CSPOR ', 1 'GW-CSPAD GW-GEOEL GW-HYD GW-TIDAL GW-WAVE ', 1 'GW-SOLTH GW-GEOHT GW-TOT',/ 1 28X,'2014 EXIST GW-ONWND ', 1 'GW-OFWND GW-RESPV GW-COMPV GW-UTPV GW-CSPOR ', 1 'GW-CSPAD GW-GEOEL GW-HYD GW-TIDAL GW-WAVE ', 1 'GW-SOLTH GW-GEOHT GW-TOT',/ 1 27X,'2050 SUPPLY GW-ONWND ', 1 'GW-OFWND GW-RESPV GW-COMPV GW-UTPV GW-CSPOR ', 1 'GW-CSPAD GW-GEOEL GW-HYD GW-TIDAL GW-WAVE ', 1 'GW-SOLTH GW-GEOHT GW-TOT',/ 1 21X,'2050 NEW+EXIS GAT GW-ONWND ', 1 'GW-OFWND GW-RESPV GW-COMPV GW-UTPV GW-CSPOR ', 1 'GW-CSPAD GW-GEOEL GW-HYD GW-TIDAL GW-WAVE ', 1 'GW-SOLTH GW-GEOHT GW-TOT') C 122 FORMAT(' SUB-REGION ',I3,1X,A14,1X,I3,14(1X,0PF11.5),/, 1 38X,14(1X,0PF11.5),/, 1 38X,14(1X,0PF11.5),/, 1 38X,14(1X,0PF11.5)) C 123 FORMAT(' REGIONAL SUM ', 19X,14(1X,0PF11.5),/, 1 38X,14(1X,0PF11.5),/, 1 38X,14(1X,0PF11.5),/, 1 38X,14(1X,0PF11.5),/) C 124 FORMAT(' ALL-REGIONS', 19X,14(1X,0PF11.4),/, 1 38X,14(1X,0PF11.4),/, 1 38X,14(1X,0PF11.4),/, 1 38X,14(1X,0PF11.4)) C C ***************************************************************************** C READ HEATING/COOLING DEGREE DAYS BY COUNTRY C DATA IN FILE FROM 2013 AND 2014, WHICH ARE NON-LEAP YEARS (365 DAYS PER YEAR) C DATA FROM http://www.degreedays.net C ***************************************************************************** C MXCOUNHDD = MAX NUMBER OF COUNTRIES READ IN heatcooldd.dat C NAMEREAD = NAME OF COUNTRIES READ IN FROM FILE KHDD. SHOULD BE SAME COUNTRIES C AS NAMECOUN. C READ(KHDD,*) DUMMY, (NAMEREAD(I), DUMMY, I = 1, MXCOUNHDD) READ(KHDD,*) C DO I = 1, MXCOUNHDD COUNTRY = NAMEREAD(I) IF (COUNTRY.EQ.'BRUNEI-DARUSSA') COUNTRY = 'BRUNEI DARUSSA' IF (COUNTRY.EQ.'CONGO-DEMOCRAT') COUNTRY = 'CONGO, DEMOCRA' IF (COUNTRY.EQ.'COSTA-RICA') COUNTRY = 'COSTA RICA ' IF (COUNTRY.EQ.'IVORY-COAST') COUNTRY = 'IVORY COAST ' IF (COUNTRY.EQ.'CZECH-REPUBLIC') COUNTRY = 'CZECH REPUBLIC' IF (COUNTRY.EQ.'DOMINICAN-REPU') COUNTRY = 'DOMINICAN REPU' IF (COUNTRY.EQ.'EL-SALVADOR') COUNTRY = 'EL SALVADOR ' IF (COUNTRY.EQ.'HONG-KONG') COUNTRY = 'HONG KONG ' IF (COUNTRY.EQ.'KOREA-DEM.-PEO') COUNTRY = 'KOREA, DEM. PE' IF (COUNTRY.EQ.'KYRGYZ-REPUBLI') COUNTRY = 'KYRGYZ REPUBLI' IF (COUNTRY.EQ.'LIBYAN-ARAB-JA') COUNTRY = 'LIBYAN ARAB JA' IF (COUNTRY.EQ.'MOLDOVA-REPUBL') COUNTRY = 'MOLDOVA REPUBL' IF (COUNTRY.EQ.'MACEDONIA-FORM') COUNTRY = 'MACEDONIA ' IF (COUNTRY.EQ.'MOROCCO-(INC-W') COUNTRY = 'MOROCCO (INC W' IF (COUNTRY.EQ.'CURACAO') COUNTRY = 'DUTCH ANTILLES' IF (COUNTRY.EQ.'NEW-ZEALAND') COUNTRY = 'NEW ZEALAND ' IF (COUNTRY.EQ.'SAUDI-ARABIA') COUNTRY = 'SAUDI ARABIA ' IF (COUNTRY.EQ.'SERBIA') COUNTRY = 'SERBIA AND MON' IF (COUNTRY.EQ.'SOUTH-AFRICA') COUNTRY = 'SOUTH AFRICA ' IF (COUNTRY.EQ.'SRI-LANKA') COUNTRY = 'SRI LANKA ' IF (COUNTRY.EQ.'SYRIAN-ARAB-RE') COUNTRY = 'SYRIAN ARAB RE' IF (COUNTRY.EQ.'TRINIDAD-AND-T') COUNTRY = 'TRINIDAD AND T' IF (COUNTRY.EQ.'UNITED-ARAB-EM') COUNTRY = 'UNITED ARAB EM' IF (COUNTRY.EQ.'UNITED-KINGDOM') COUNTRY = 'UNITED KINGDOM' IF (COUNTRY.EQ.'UNITED-STATES-') COUNTRY = 'UNITED STATES ' NAMEREAD(I) = COUNTRY ENDDO C C NAMECOUN = NAME OF EACH 1..NCOUNTRY COUNTRY C MAPCOUN = GIVES I=1,MXCOUNTRY VALUE FOR EACH J=1, NCOUNTRY COUNTRY C ISERBMON = IDENTIFIES 1..NCOUNTRY COUNTRY 'SERBIA AND MON' C IMONT = IDENTIFIES 1..NCOUNTRY COUNTRY 'MONTENEGRO ' C IFSTATES = 1: DON'T NEED HEATING/COOLING DEGREE DATA SINCE OBTAINING C FROM GATOR-GCMOM C ISERBMON = 0 IMONT = 0 DO 158 J = 1, NCOUNTRY IF (NAMECOUN(J).EQ.'SERBIA AND MON') ISERBMON = J IF (NAMECOUN(J).EQ.'MONTENEGRO ') IMONT = J C DO I = 1, MXCOUNHDD IF (NAMEREAD(I).EQ.NAMECOUN(J).OR. 1 (NAMEREAD(I).EQ.'UNITED STATES'.AND.IFSTATES.EQ.1)) THEN MAPCOUN(J) = I GOTO 158 ENDIF ENDDO C WRITE(IOUT,*) 'POWERWORLD: COUNTRY MISSING KHDD ',NAMECOUN(J),J STOP 158 CONTINUE C CONTINUE J = 1, NCOUNTRY C HDDNAT = HEATING DEGREE DAYS PER DAY (F) OF YEAR C CDDNAT = COOLING DEGREE DAYS PER DAY (F) OF YEAR C HDDDAY = HEATING DEGREE DAYS PER DAY (F) FOR COUNTRY I=1,NCOUNTRY C = DEVIATIONS BELOW MEAN DAILY TEMPERATURE OF 65 F SUMMED OVER C CDDDAY = COOLING DEGREE DAYS PER DAY (F) FOR COUNTRY I=1,NCOUNTRY C = DEVIATIONS ABOVE MEAN DAILY TEMPERATURE OF 65 F SUMMED OVER C NDAYDATA = NUMBER OF DAYS OF COOLING/HEATING DEGREE DAY DATA FROM KHDD FILE. C DATA START JAN 1, 2013 TO DEC 31, 2014 (NON-LEAP YEARS) C ID = DAY NUMBER (1..730) OF DATA STARTING JAN 1, 2013 TO DEC 31, 2014 C KOUNTDAY = 0 159 READ(KHDD,*) ID, (HDDNAT(I), CDDNAT(I), I=1,MXCOUNHDD) C C ID=-1 CORRESPONDS TO 2-YEAR AVERAGE VALUES DATA C IF (ID.EQ.-1) GOTO 161 C KOUNTDAY = KOUNTDAY + 1 C IF (ID.NE.KOUNTDAY) THEN WRITE(IOUT,*)'POWERWORLD: ID.NE.KOUNTDAY IN KHDD ',ID,KOUNTDAY STOP ENDIF C IF (KOUNTDAY.GT.NDAYDATA) GOTO 161 C DO J = 1, NCOUNTRY I = MAPCOUN(J) HDDDAY(J,KOUNTDAY) = HDDNAT(I) CDDDAY(J,KOUNTDAY) = CDDNAT(I) ENDDO GOTO 159 161 CLOSE(KHDD) C IF (KOUNTDAY.NE.NDAYDATA) THEN WRITE(IOUT,*)'POWERWORLD: KOUNTDAY.NE.NDAYDATA ', 1 'IN KHDD ', KOUNTDAY,NDAYDATA STOP ENDIF C C ***************************************************************************** C FOR. U.S., WEIGH DAILY VALUES FOR TWO YEARS AND LIMITED C NUMBER OF STATIONS BY RATIO OF MONTHLY AVERAGE VALUE FROM 1949-2011 AVG TO C MONTHLY VALUES FROM THE TWO YEARS C ***************************************************************************** C NDAYDATA = NUMBER OF DAYS OF COOLING/HEATING DEGREE DAY DATA FROM KHDD FILE. C DATA START JAN 1, 2013 TO DEC 31, 2014 (NON-LEAP YEARS) C HDDMON = HEATING DEGREE DAYS PER MONTH (F) CONUS AVERAGE 1949-2011 C CDDMON = COOLING DEGREE DAYS PER MONTH (F) CONUS AVERAGE 1949-2011 C ICUSA = 1..NCOUNTRY INDEX CORRESPONDING TO U.S.A. C HDDDAY = HEATING DEGREE DAYS PER DAY (F) FOR COUNTRY I=1,NCOUNTRY C CDDDAY = COOLING DEGREE DAYS PER DAY (F) FOR COUNTRY I=1,NCOUNTRY C IF (ICUSA.GT.0) THEN HDDUSMON = 0. CDDUSMON = 0. KDAY = 0 KMON = 1 KYEAR = 1 MONCUM = LDMONTH(KYEAR,1) C C ADD ONE MORE DAY TO LOOP TO ENSURE LAST MONTH (DEC) INFO IS SUMMED C DO I = 1, NDAYDATA + 1 KDAY = KDAY + 1 IF (I.GT.MONCUM) THEN C C SCALE PREVIOUS MONTH'S DAILY HDD AND CDD VALUES BY MONTHLY AVG RATIO C THIS WILL RESULT IN US ANN AVG HDD, CDD FROM DAILY DATA EQUALLING C THAT FROM MONTHLY DATA C RATHDD = HDDMON(KMON) / HDDUSMON RATCDD = CDDMON(KMON) / CDDUSMON DO J = I-LDMONTH(KYEAR,KMON), I-1 HDDDAY(ICUSA,J) = HDDDAY(ICUSA,J) * RATHDD CDDDAY(ICUSA,J) = CDDDAY(ICUSA,J) * RATCDD ENDDO C C ADVANCE TO NEXT MONTH C IF (I.LE.NDAYDATA) THEN KMON = KMON + 1 HDDUSMON = 0. CDDUSMON = 0. IF (KMON.EQ.13) THEN KDAY = 1 KMON = 1 KYEAR = KYEAR + 1 ENDIF MONCUM = MONCUM + LDMONTH(KYEAR,KMON) ENDIF C ENDIF I.LE.NDAYDATA C ENDIF C ENDIF I>MONTHCUM C IF (I.LE.NDAYDATA) THEN HDDUSMON = HDDUSMON + HDDDAY(ICUSA,I) CDDUSMON = CDDUSMON + CDDDAY(ICUSA,I) ENDIF C ENDDO C ENDDO I = 1, NDAYDATA + 1 ENDIF C ENDIF ICUSA>0 C C ***************************************************************************** C WEIGHT COUNTRY HDDDAY, CDDDAY BY LOAD TO ESTIMATE VALUES IN GRID REGION C ***************************************************************************** C WWSTOT = TOTAL 2050 END-USE LOAD (GW) FOR EACH 1..MXCOUNTRY COUNTRY C SUMWWS = SUM OF END-USE LOAD (GW) OVER ALL COUNTRIES IN DATASET C HDDDAY = HEATING DEGREE DAYS PER DAY (F) FOR COUNTRY I=1,NCOUNTRY C CDDDAY = COOLING DEGREE DAYS PER DAY (F) FOR COUNTRY I=1,NCOUNTRY C HDDREG = HEATING DEGREE DAYS PER DAY (F) FOR REGION J = 1, NUMGRIDS C CDDREG = COOLING DEGREE DAYS PER DAY (F) FOR REGION J = 1, NUMGRIDS C COUNRATIO = RATIO OF POWER LOAD IN COUNTRY TO THAT OF REG THAT COUNTRY IS IN C NDAYDATA = NUMBER OF DAYS OF COOLING/HEATING DEGREE DAY DATA FROM FILE. C DATA START JAN 1, 2013 TO DEC 31, 2014 (NON-LEAP YEARS) C NDAYYR = NUMBER OF DAYS PER YEAR OF SIMULATION (EITHER 365 OR 366) C` DO J = 1, NUMGRIDS C DO I = 1, NCOUNGRID(J) IC = NUMCOUNGR(J,I) COUNRATIO = WWSTOT(IC) / SUMWWS(J) C L = 0 DO N = 1, NYEARS DO K = 1, NDAYYR(N) C C FOR LEAP YEARS, REPEAT 365TH DATA VALUE ON 366TH DAY OF YEAR C WHEN RUN OUT OF NDAYDATA DATA VALUES, REPEAT DATA VALUES FOR SUBSEQ YEARS C IF (K.EQ.366) THEN HDDREG(J,N,K) = HDDREG(J,N,K) + HDDDAY(IC,L) * COUNRATIO CDDREG(J,N,K) = CDDREG(J,N,K) + CDDDAY(IC,L) * COUNRATIO ELSE L = L + 1 IF (L.GT.NDAYDATA) L = 1 HDDREG(J,N,K) = HDDREG(J,N,K) + HDDDAY(IC,L) * COUNRATIO CDDREG(J,N,K) = CDDREG(J,N,K) + CDDDAY(IC,L) * COUNRATIO ENDIF C ENDDO ENDDO C ENDDO C EDDO I = 1, NCOUNGRID C C DEGDAYMIN = MIN NUMBER OF HEATING OR COOLING DEGREE DAYS ON ANY DAY OF YEAR C USE HCDDADD NOW TO ENSURE WARMING/COOLING EACH DAY C DEGDAYMIN = 1.0E-10 C DO N = 1, NYEARS DO K = 1, NDAYYR(N) HDDREG(J,N,K) = MAX(HDDREG(J,N,K),DEGDAYMIN) CDDREG(J,N,K) = MAX(CDDREG(J,N,K),DEGDAYMIN) ENDDO ENDDO C C AVGHDD = ANNUAL-AVERAGE HEATING DEGREE DAYS PER YEAR (F) IN GRID J=1,NUMGRIDS C AVGCDD = ANNUAL-AVERAGE COOLING DEGREE DAYS PER YEAR (F) IN GRID J=1,NUMGRIDS C WRITE(KOUT,162) NAMEGRID(J) L = 0 DO N = 1, NYEARS SUMCDD = 0. SUMHDD = 0. DO K = 1, NDAYYR(N) L = L + 1 WRITE(KOUT,163) N, K, L, HDDREG(J,N,K), CDDREG(J,N,K) SUMCDD = SUMCDD + CDDREG(J,N,K) SUMHDD = SUMHDD + HDDREG(J,N,K) ENDDO AVGCDD(J) = AVGCDD(J) + SUMCDD AVGHDD(J) = AVGHDD(J) + SUMHDD WRITE(KOUT,165) SUMHDD, SUMCDD ENDDO AVGCDD(J) = AVGCDD(J) / NYEARS AVGHDD(J) = AVGHDD(J) / NYEARS WRITE(KOUT,203) AVGHDD(J), AVGCDD(J) C ENDDO C ENDDO J = 1, NUMGRIDS C 162 FORMAT(/'YEAR DAYOY DAYOSIM #HEATDD #COOLDD PER DAY ', 1 '65F GRID REGION ',A14) 163 FORMAT(2(I3,2X),I5,4X,2(1X,0PF10.2)) 165 FORMAT('SUM OVER YEAR ',5X,2(1X,0PF10.2)) 203 FORMAT('ANNUAL AVG ',5X,2(1X,0PF10.2)/) C ENDIF C ENDIF IFCONUS=0 C C ***************************************************************************** C LIFECYCLE COST ($/KWH) AND ROUNDTRIP EFFICIENCY OF STORAGE DEVICES C ***************************************************************************** C TES = THERMAL EN STOR (SENSIBLE HEAT: HOT WATER TANKS; UNDERGROUND: SOIL) C LOW COST BUT LOW ENERGY DENSITY AND VARIABLE DISCHARGE TEMPERATURES C ONLY NEED TANK AND EQUIPMENT TO CHARGE/DISCHARGE C STORAGE MEDIA: WATER, SOIL, CONCRETE, MOLTEN SALTS INEXPENSIVE C DENSITY: 25 KWH/M3 FOR HEATING WATER C 0.1-10 EURO/KWH; 50-90% EFFIC; 10-50 KWH/t; 0.001-10 MW THERMAL POWER C LIFETIMES: 10-30 YEARS C PCM = PHASE-CHANGE MATERIALS (SOLID:LIQUID OR SOLID:SOLID) C ICE; NA-ACETATE TRIHYDRATE; PARAFFIN; ERITRYOL C PARAFFIN WAX IN WALLS MELT DURING DAY-->COOL; FREEZE AT NIGHT-->WARM C HIGHER COST BUT HIGHER ENERGY DENSITY AND TARGETED DISCHARGE TEMPS C FOR DAILY AND SEASONAL STORAGE. C DENSITY: 100 KWH/M3 FOR ICE C 10-50 EUROS/KWH 75-90% EFFIC; 50-150 KWH/t; 0.001-1 MW THERMAL POWER C LIFETIMES: 10-30 YEARS C TCS = THERMAL-CHEMICAL STORAGE C (BINDLESS ZEOLITE; ALUMINO-PHOSPHATE; MGSO4*6H2O) C 8-100 EUROS/KWH; 75-100% EFFIC; 20-250 KWH/t; 0.01-1 MW THERMAL POWER C MUCH HIGHER COST BUT MUCH HIGHER ENERGY DENSITY C DENSITY: 300 KWH/M3 FOR ICE C LIFETIMES: 10-30 YEARS C C EFFIC = STORAGE EFFICIENCY (ACCOUNTING FOR CHARGING, DISCHARGING, AND LOSSES) C L-I BATTERY CHARGE/DISCHARGE EFFICIENCY 80-90% FROM C http://en.wikipedia.org/wiki/Lithium-ion_battery#cite_note-PHEV1-3 C INITIALLY, CHARGING EFFICIENCY 97-99%; 0 WHEN SATURATED C $1.29 PER EURO C C $MIL/MW $MIL/MW $/KWH EFFIC C LITHIUM ION 4 2.2 160(f) 85 (80-90)% C LAZARD 8.0 C O&M $22-27.5/KWH 500-750 FOR 6 HRS (2014) 75-85% C 300 FOR 6 HRS (2017) 75-85% C REDOX FLOW 4.5 3.0 C FLYWHEEL 3.1 1.7 C SODIUM SULFUR 2.0 1.4 C PUMPED HYDRO 3.3 3.4 C SENSIBLE HEAT TES (STES) 6.5(d) (0.13-12.9) 70 (50-90)%(d) C UNDERGROUND TES (UTES) 1.0(h,i)(0.07-4.55) 70 (50-90) (d) C PCM (E.G., ICE) 38.7(c) (12.9-64.5) 82.5 (75-90) (d) C ICE STORAGE 36.7(a) 82.5 (75-90) (d) C ICE STORAGE 41.6(d) 82.5 (75-90) (d) C TCS 69.7(c) (10.3-129) 87.5 (75-100)(d) C MOLTEN NITRATE SALT (SENS) 60.0(f) (56-73) 96 (93-99) C MOLTEN NITRATE SALT (LATENT) 16.0(f) (15.3-36) 96 (93-99) C C (a) http://www.kau.edu.sa/Files/320/Researches/52690_22996.pdf (36.7) C (b) http://www.missioncriticalmagazine.com/ext/resources/MC/Home/ C Files/PDFs/Using_Thermal_Energy_Storage.doc C (c) FROM ROBERT REID, STANFORD UTILITIES C STANFORD UNIVERSITY $8 MIL IN 1998 FOR ICE COILS + ROTARY SCREW C COMPRESSOR CHILLERS + PIPING + REWORKING UNDERGROUND + EST $4 MIL C FOR PRE-EXISTING STORAGE TANK (STRAT CHILLED WATER TANK) C 120,000 TON-HOURS X 3.517 KW/TON = 422,016 KWH C 1 REFRIGERATION TON (RT) COOLING = 12,000 BTU/HR = 3.517 KW C LAT HEAT FREEZ=144 BTU/LB-->1 RT(12,000 BTU)=83.33 LB ICE AT 32F C INFLAT 1998->2014 46.2%->$12 MIL->$17.54 MIL/422,040KWH=$41.6/KWH C 1 KWH=3.41214163 BTU C 4% ANN ENERGY LOSS IN STORAGE DUE TO HEAT LOSS TO GROUND C (d) http://www.irena.org/DocumentDownloads/Publications/IRENA-ETSAP C %20Tech%20Brief%20E17%20Thermal%20Energy%20Storage.pdf C (e) Kearney and Associates, Engineering evaluation of a molten salt C HTF in a parabolic trough solar field, C http://www.nrel.gov/csp/troughnet/pdfs/ulf_herrmann_salt.pdf C Reddy, R.G. Novel molten salts thermal energy storage for C concentrated solar power generation, C http://energy.gov/sites/prod/files/2014/01/f7/csp_review_ C meeting_042413_reddy.pdf C (f) http://green.autoblog.com/2013/11/08/li-ion-battery-prices- C headed--down-180-kwh/ C (g) Nithyanandam, K., and R. Pitchumani, 2014, Cost and performance C analysis of concentrating solar power systems with integrated C latent thermal energy storage, Energy, 64, 793-810. C (h) Gaine (2010) http://arrow.dit.ie/cgi/viewcontent.cgi?article C =1007&context=dubencon2 C $0.055 EURO/kWH = $0.071/kWH2 C (i) $3.13/kWH = AVG OF $1.71, 4.55/kWh: 1.5-3 KBTU/FT^3; C http://www.igshpa.okstate.edu/membership/members_only/proceed C ings/2011/100611-1030-B-Christopher%20Fox%20-%20Rehau%20-%20 C Underground%20Thermal%20Energy%20Storage.pdf C C EFFCSP = ROUND-TRIP EFFICIENCY OF CSP PHASE-CHANGE MATERIAL STORAGE (FRACTION) C http://en.wikipedia.org/wiki/Thermal_energy_storage (99%) e C THIS IS ELECTRICITY PRODUCED FROM STEAM IF SOLAR HEAT C IS STORED FIRST VERSUS IF IT IS USED IMMEDIATELY FOR STEAM C STEAM TURBINE ITSELF IS 75% EFFICIENT C https://www.physicsforums.com/threads/why-water-turbine-have- C higher-efficiency-then-steam-turbine.272234/ C EFFPHS = ROUND-TRIP EFFICIENCY OF PUMPED HYDRO (FRACTION ~ 0.8) C http://en.wikipedia.org/wiki/Pumped-storage_hydroelectricity C http://en.wikipedia.org/wiki/Grid_energy_storage C EFFPCM = ROUND-TRIP EFFICIENCY OF PCM-ICE STORAGE (FRACTION) C EFFCSTES = ROUND-TRIP EFFICIENCY OF ELECTRIC WATER CHILLERS (WATER COOLED STES) C = 60-99% WITH WATER CHILLERS AT THE HIGH END AND AIR COOLED AT LOW C http://www.utilitydive.com/news/ice-ice-energy-the-hot-market- C for-cooled-liquid-energy-storage/408356/ C = 0.88 = COP / (1 + COP), WHERE COP = 7.33 FROM P. 19 OF C https://sustainable.stanford.edu/sites/default/files/documents/ C SESI-CHP-vs-SHP-%26-CHC.pdf C = Qc / Qh = COP / (1+ COP) WHERE C COP (COEFFICIENT OF PERFORMANCE) = Qcold/W, WHERE W=WORK=Qhot-Qcold C SINCE Qhot = Qcold + W, WHERE Qhot = HEAT TRANSFERRED TO HOT C RESERVOIR, Qcold = HEAT COLLECTED FROM COLD RESERVOIR. W=ENERGY C ADDED TO SYSTEM. C EFFHSTES = ROUND-TRIP EFFICIENCY OF ELECTRIC BOILER C = 84.5% STANFORD SESE (P. 18) (54546 MMBTU IN; 46096 MMBTU OUT) C = 81.3% STANFORD SESI (P. 19) (1293390 MMBTU IN; 1051000 MMBTU OUT) C https://sustainable.stanford.edu/sites/default/files/documents/ C SESI-CHP-vs-SHP-%26-CHC.pdf C = 0.7-0.9 FOR HEAT CYCLING (ELECTRICITY TO HEAT) C = 0.3-0.6 FOR CONVERTING ELECTRICITY TO HEAT TO ELECTRICITY C SINCE STEAM TURBINE HAS 75% EFFICIENCY C P.26 http://cdn.intechopen.com/pdfs-wm/42273.pdf C EFFBAT = ROUND-TRIP EFFICIENCY OF L-I BATTERY STORAGE (FRACTION) C EFFUTES = ROUND-TRIP EFFICIENCY OF UTES STORAGE (FRACTION) C WHEN FLUID HEAT PRODUCED COMES FROM EITHER ELECTRICITY OR SUNLIGHT C (SINCE SOLAR COLLECTOR EFFICIENCY ALREADY ACCOUNTED FOR IN C EFFSOLCOL AND PV/CSP EFFICIENCIES ALREADY ACCOUNTED FOR) C = DELIVERED HEAT ONE SEASON/HEATED FLUID PROD FROM HOT FLUID IN ANOTHER C = 0.558 FROM YEAR 4 OF TABLE 2 OF C SIBBITT ET AL ENERGY PROCEDIA 30, 856, 2012 C (2460 GJ DELIVERED - 193 GJ ELEC USED) / 4060 GJ PROD IN COLLECTOR C (DISTRICT LOOP LOSSES ELIMINATED AS IN YEAR 5) C THIS IS THE EFFICENCY OF CONVERTING EXISTING C HOT WATER IN ONE SEASON TO END USE HEAT IN ANOTHER SEASON C EFFH2 = ROUND-TRIP (AC TO AC) EFFICIENCY OF H2 STORAGE (FRACTION) C = 20-45% http://en.wikipedia.org/wiki/Grid_energy_ C storage#cite_note-EconomistPSH-2 C EFFTURB = EFFICIENCY OF STEAM TURBINE (PRODUCING ELECTRICITY FROM HEAT) C = 0.75 C http://www.elliott-turbo.com/TurbineCalculator C https://www.physicsforums.com/threads/why-water-turbine-have- C higher-efficiency-then-steam-turbine.272234/ C EFFCSP = 0.99 EFFPHS = 0.80 EFFPCM = 0.825 EFFCSTES = 0.88 EFFHSTES = 0.83 EFFBAT = 0.85 EFFUTES = 0.56 C C ***************************************************************************** C 2050 NEW+EXISTING INSTALLED MW (NAMEPLATE CAPACITY) RESULTING IN SUPPLY C IN KWWS C DATA FROM 50-STATE PLANS (JACOBSON ET AL. 2014) C 'Intermediate details by state' TAB in 50-States WWS.xlsx file C 'Table for GATOR-GCMOM' TAB IN 143 countries xlsx file C AND 'Additional WWS for grid study' TAB FOR TGWSHEAT C ***************************************************************************** C TGWONWIND = NEW+EXISTING INSTALLED GW OF ONSHORE WIND TURBINES C TGWOFFWIND = NEW+EXISTING INSTALLED GW OF OFFSHORE WIND TURBINES C TGWRESPV = NEW+EXISTING INSTALLED GW OF RESIDENTIAL ROOFTOP PV C TGWCOMPV = NEW+EXISTING INSTALLED GW OF COMMERCIAL/GOVERNMENT ROOFTOP PV C TGWUTILPV = NEW+EXISTING INSTALLED GW OF UTILITY-SCALE PV C TGWCSPORIG = NEW+EXISTING INSTALLED GW OF CONCENTRATED SOLAR POWER (CSP) C ACCOUNTING FOR ANNUAL AVERAGE DEMAND PLUS ADDITIONAL C DEMAND NEEDED TO KEEP GRID STABLE. C TGWGEOEL = NEW+EXISTING INSTALLED GW OF GEOTHERMAL ELECTRIC POWER C TGWHYD = NEW+EXISTING INSTALLED GW OF HYDRPOWER OVER REGION IGRIDUSE C BEFORE ADDED TURBINES C TGWWAVE = NEW+EXISTING INSTALLED GW OF WAVE POWER C TGWTIDAL = NEW+EXISTING INSTALLED GW OF TIDAL POWER C TGWSHEAT = NEW+EXISTING INSTALLED GW OF SOLAR THERMAL C TGWGEOHT = NEW+EXISTING INSTALLED GW OF GEOTHERMAL HEAT C TGWINSTREG = GW-SUM OVER REG J, 2050 NEW+EXIST NAMEPL CAPAC FOR DEVICE K C C SUBTRACT OFF ALASKA AND HAWAII, RESPECTIVELY, FROM U.S. TOTAL FROM 50-STATE PLAN) C TO OBTAIN CONUS VALUES. FOR CSP, DO NOT INCLUDE HERE ADDITIONAL CSP FOR STORAGE C OR MIRRORS (CSPTURBFAC, CSPCHARFAC). THESE WILL BE ADDED LATER C C FOR IFCONUS=1, THESE ARE FINAL VALUES FROM 50-STATE PAPER C IF (IFCONUS.EQ.1) THEN TGWONWIND = (1700.851 - 22.005 - 1.736) TGWOFFWIND = ( 780.921 - 7.439 - 1.545) TGWRESPV = ( 379.513 - 0.414 - 2.291) TGWCOMPV = ( 276.508 - 0.242 - 1.320) TGWUTILPV = (2325.575 - 7.882 - 1.268) TGWCSPORIG = ( 227.275 - 0. - 0.441) TGWGEOEL = ( 23.251 - 1.188 - 1.321) TGWHYD = ( 91.650 - 4.144 - 0.024) TGWWAVE = ( 27.036 - 0.668 - 0.173) TGWTIDAL = ( 8.823 - 0.414 - 0.153) TGWSHEAT = ( 469.010 - 1.343 - 0.767) TGWGEOHT = SMAL30 C C NOTE THAT TGWCSPORIG HERE ACCOUNTS ONLY FOR ANNUAL AVERAGE POWER. ADDITIONAL C INSTALLED CSP ADDED BELOW WITH CSPTURBFAC C ELSE TGWONWIND = MAX(TGWINSTREG(IGRIDUSE,IONWIND), SMAL30) TGWOFFWIND = MAX(TGWINSTREG(IGRIDUSE,IOFFWIND),SMAL30) TGWRESPV = MAX(TGWINSTREG(IGRIDUSE,IRESPV), SMAL30) TGWCOMPV = MAX(TGWINSTREG(IGRIDUSE,ICOMGVPV),SMAL30) TGWUTILPV = MAX(TGWINSTREG(IGRIDUSE,IUTILPV), SMAL30) TGWCSPORIG = MAX(TGWINSTREG(IGRIDUSE,ICSPSTOR),SMAL30) TGWGEOEL = MAX(TGWINSTREG(IGRIDUSE,IGEOEL), SMAL30) TGWHYD = MAX(TGWINSTREG(IGRIDUSE,IHYDRO), SMAL30) TGWWAVE = MAX(TGWINSTREG(IGRIDUSE,IWAVE), SMAL30) TGWTIDAL = MAX(TGWINSTREG(IGRIDUSE,ITIDAL), SMAL30) TGWSHEAT = MAX(TGWINSTREG(IGRIDUSE,ISOLTHM), SMAL30) TGWGEOHT = MAX(TGWINSTREG(IGRIDUSE,IGEOHT), SMAL30) ENDIF C C ***************************************************************************** C INCREASE THE NUMBER OF STEAM TURBINES IN EACH CSP PLANT IF WANT C TO INCREASE DISCHARGE RATE OF HEAT TO ELECTRICITY. THE CHARGE RATE ALREADY C EXCEEDS DISCHARGE RATE BY A FACTOR OF ~3.2 DUE TO THE HIGH CAPACITY FACTOR OF C CSP (HEAT COLLECTED IS OVERSIZED RELATIVE TO STEAM TURBINE SIZE). THIS C FACTOR CAN BE INCREASED WITH CSPCHARFAC. MULTIPLYING C TGWCSPORIG BY CSPTURBFAC HERE INREASES DISCHARGE RATE TO CLOSER TO CHARGE RATE C ALLOWING CSP TO MEET PEAKING DEMAND MORE READILY, SINCE OTHERWISE, LOTS C OF HEAT IS STUCK IN STORAGE WHEN IT IS NEEDED. CSPTURBFAC CAN = CSPCHARFAC. C IN THAT CASE, CHARGE RATE = DISCHARGE RATE. C COSTS OF ADDITIONAL STORAGE AND ADDITIONAL TURBINE GW ARE ACCOUNTED FOR. C ***************************************************************************** C CSPTURBFAC = RATIO OF MW OF CSP STEAM TURBINES DESIRED RELATIVE TO MW C ORIGINALLY INSTALLED FOR EACH CSP PLANT IN ORDER TO MEET C ANNUALLY AVERAGED POWER DEMAND FOR STATE OR COUNTRY C BEFORE CONSIDERING THE GRID. C = 1. INDICATES NO ADDITIONAL TURBINE POWER NEEDED TO MATCH DEMAND C = 1.6 INDICATES 60% MORE MW OF POWER NEEDED TO MATCH POWER DEMAND C ON GRID THAN NEEDED FOR ANNUALLY AVERAGED POWER DEMAND. C TGWCSPORIG = EXISTING + NEW GW OF CSP STEAM TURBINES INSTALLED. UPDATED HERE C TO INCREASE RATE OF DISCHARGE OF HEAT FROM STORAGE AS ELECTRICITY C (DOES NOT INCLUDE TMWCSPADD, WHICH IS WHY IT IS MULT BY CSPTURBFAC) C TGWCSP = EXISTING + NEW GW OF CSP STEAM TURBINES INSTALLED. AFTER UPDATE C CSPDISCH = MAX DISCHARGE RATE (TW) OF CSP EITHER FROM STORAGE OR DIRECTLY C = CSPCHARG - CSPCHSTO = CSP TURBINE SIZE C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C LESS THAN OR EQUAL TO THE CHARGING RATE (CSPCHARG) OF DIRECT C ELECTRICITY PLUS STORAGE BY THE AMOUNT OF STORAGE. C COST OF TURBINES IS ACCOUNTED FOR IN AVCAPLO, AVCAPHI C TWPERGW = 0.001 TERAWATTS (TW) PER GIGAWATT(GW) C TGWCSP = MAX(TGWCSPORIG * CSPTURBFAC, SMAL30) CSPDISCH = TGWCSP * TWPERGW C C ***************************************************************************** C TW WIND & SOLAR INSTALLED IN GATOR-GCMOM TO RESULT IN SUPPLIES IN KWWS C ***************************************************************************** C TWONSHGAT = TW ONSHORE WIND INSTALLED WORLDWIDE IN GATOR-GCMOM C TWOFFSHGAT = TW OFFSHORE WIND INSTALLED WORLDWIDE IN GATOR-GCMOM C TWWINDGAT = TW ONSHORE+OFFSHORE WIND INSTALLED WORLDWIDE IN GATOR-GCMOM C = 379,189 5-MW (1,895,945 MW) ONSHORE C + 184,603 5-MW ( 923,015 MW) OFFSHORE TURBINES C = 563,792 5-MW (2,818,960 MW) ONSHORE+OFFSHORE TURBINES C TWROOFPVG = TW ALL ROOFTOP PV INSTALLED WORLDWIDE IN GATOR-GCMOM C TWUTILPVG = TW ALL UTILITY PV INSTALLED WORLDWIDE IN GATOR-GCMOM C TWCSPGAT = TW ALL CSP-MIRROR INSTALLED WORLDWIDE IN GATOR-GCMOM C TWSHTGAT = TW ALL SOLAR THERMAL INSTALLED WORLDWIDE IN GATOR-GCMOM C TGWGATREG = GW-SUM OVER REG J, 2050 NEW+EXIST NAMEPL CAPAC DEVICE K GATOR SIMS C TWPERGW = 0.001 TERAWATTS (TW) PER GIGAWATT (GW) C EGWSHEAT = EXISTING INSTALLED GW SOLAR HOT WAT/GLYCOL COLLECTORS C C FOR IFCONUS=1: FINAL VALUES FROM 50-STATE PAPER (NODES 261 AND 260 ON CLEANAIR) C IF (IFCONUS.EQ.1) THEN TWONSHGAT = 1.677111 TWOFFSHGAT = 0.771937 TWROOFPVG = 0.651754 TWUTILPVG = 2.316420 TWCSPGAT = 0.949754 TWSHTGAT = 0.466896 EGWSHEAT = 0. ELSE TWONSHGAT = MAX(TGWGATREG(IGRIDUSE,IONWIND) *TWPERGW,SMAL30) TWOFFSHGAT = MAX(TGWGATREG(IGRIDUSE,IOFFWIND) *TWPERGW,SMAL30) TWROOFPVG = MAX((TGWGATREG(IGRIDUSE,IRESPV) 1 + TGWGATREG(IGRIDUSE,ICOMGVPV))*TWPERGW,2.*SMAL30) TWUTILPVG = MAX(TGWGATREG(IGRIDUSE,IUTILPV) *TWPERGW,SMAL30) TWCSPGAT = MAX(TGWGATREG(IGRIDUSE,ICSPSTOR) *TWPERGW 1 * CSPSTORGAT,SMAL30) TWSHTGAT = MAX(TGWGATREG(IGRIDUSE,ISOLTHM) *TWPERGW,SMAL30) EGWSHEAT = EGWINSTREG(IGRIDUSE,ISOLTHM) ENDIF C C ***************************************************************************** C CALCULATE RATIOS FOR ADJUSTING INSTALLED CAPACITIES FROM countrystats.dat C IN CASE THESE WERE UP-DATED SINCE THE GATOR-GCMOM SIMULATIONS WERE RUN C WITH DIFFERENT INSTALLED CAPACITIES. THESE RATIOS SHOULD = 1 IF THERE IS C NO DIFFERENCE C ***************************************************************************** C RATONSHW = RATIO OF INSTALLED TW ONSHORE WIND ACTUALLY NEEDED TO C THAT USED IN GATOR-GCMOM TO DERIVE OUTPUT IN KWWS C RATOFFSHW = RATIO OF INSTALLED TW OFFSHORE WIND ACTUALLY NEEDED TO C THAT USED IN GATOR-GCMOM TO DERIVE OUTPUT IN KWWS C RATROOFPV = RATIO OF INSTALLED RESID+COMMERC/GOVT ROOF PV (TW) TO THAT USED C IN GATOR-GCMOM TO DERIVE OUTPUT IN KWWS C RATUTILPV = RATIO OF INSTALLED UTILITY SCALE PV (TW) TO THAT USED IN C GATOR-GCMOM TO DERIVE OUTPUT IN KWWS C RATSHEAT = RATIO OF INSTALLED TW SOLAR THERM NEEDED TO THAT USED C IN GATOR-GCMOM TO DERIVE OUTPUT IN KWWS C TGWONWIND = NEW+EXISTING INSTALLED GW OF ONSHORE WIND TURBINES C TGWOFFWIND = NEW+EXISTING INSTALLED GW OF OFFSHORE WIND TURBINES C TGWRESPV = NEW+EXISTING INSTALLED GW OF RESIDENTIAL ROOFTOP PV C TGWCOMPV = NEW+EXISTING INSTALLED GW OF COMMERCIAL/GOVERNMENT ROOFTOP PV C TGWUTILPV = NEW+EXISTING INSTALLED GW OF UTILITY-SCALE PV C TGWSHEAT = NEW+EXISTING INSTALLED GW OF SOLAR THERMAL HEAT C TWPERGW = 0.001 TERAWATTS (TW) PER GIGAWATT(GW) C RATONSHW = TGWONWIND * TWPERGW / TWONSHGAT RATOFFSHW = TGWOFFWIND * TWPERGW / TWOFFSHGAT RATROOFPV = (TGWRESPV + TGWCOMPV) * TWPERGW / TWROOFPVG RATUTILPV = TGWUTILPV * TWPERGW / TWUTILPVG RATSHEAT = TGWSHEAT * TWPERGW / TWSHTGAT C C ***************************************************************************** C PV AND CSP EFFICIENCIES USED TO CALCULATE SUPPLY IN GATOR C ***************************************************************************** C SUNPOWER E20 / 435 W PANEL C PMAX = 435 W C DIMENSIONS = 2067 MM X 1046 MM X 54 MM C PANEL SURFACE AREA = 2.1621 M^2 C CELL EFFICIENCY = 22.5% = ELEC OUTPUT OF CELL / INCIDENT ENERGY C PANEL EFFICIENCY = 20.1% = PMAX / (ONESUN * PANEL SURF AREA) C TEMP COEF FOR POWER = -0.38%/K C NORMAL OPER CELL TEMP= 45 C (EQUIV TO 25 C AIR TEMPERATURE) C WALKING AREA IN FARM = 0.5 * PANEL SURFACE AREA C C ONESUN = 1000 W M-2 = SOLAR FLUX AT RATED POWER OF SOLAR PANEL C PPANEL = SOLAR PANEL RATED POWER (W) AT 1000 W/M2 SOLAR INTENSITY C A 160 W PANEL RATED BY MANUFACTURER IS 142 W RATED BY CEC C PPANELMW = SOLAR PANEL RATED POWER (MW) AT 1000 W/M2 SOLAR INTENSITY C PVSURFA = SURFACE AREA (M2) OF SOLAR PANEL (NOT INCLUDING WALKING AREA) C APANEL = AREA OF PV SOLAR PANEL INCLUDING WALKING AREA (M2) C PANEFFIC = PANEL EFFICIENCY (FRACTION) = PPANEL / (ONESUN * PVSURFA) C AREAPV = U.S. AREA (M2) OCCUPITED BY SOLAR PV PANELS (NOT INC SPACING) C IN GATOR-GCMOM C TWROOFPVG = TW ALL ROOFTOP PV INSTALLED WORLDWIDE IN GATOR-GCMOM C TWUTILPVG = TW ALL UTILITY PV INSTALLED WORLDWIDE IN GATOR-GCMOM C ONESUN = 1000. PPANEL = 435. PPANELMW = PPANEL * 1.0E-6 PVSURFA = 2.1621 APANEL = PVSURFA * 1.5 PANEFFIC = PPANEL / (ONESUN * PVSURFA) AREAPV = PVSURFA * (TWROOFPVG+TWUTILPVG) * 1.0E+06 / PPANELMW C C CSPEFFIC = CSP EFFICIENCY (FRACTION) = FRAC OF INCOM SOLAR CONVERTED TO ELEC C = CSPSTEFF * CSPREFEF C CSPSTEFF = EFFICIENCY OF STEAM PLANT (28.72%) = ELECTRICITY PRODUCED C PER UNIT OF ENERGY REACHING SOLAR TOWER C http://en.wikipedia.org/wiki/Ivanpah_Solar_Power_Facility C CSPEFFIC = CSP EFFICIENCY (FRACTION) = FRAC OF INCOM SOLAR CONVERTED TO ELEC C = CSPSTEFF * CSPREFEF C CSPSTEFF = POWER EFFICIENCY OF STEAM PLANT (28.72%) = ELECTRICITY PRODUCED C PER UNIT OF ENERGY REACHING SOLAR TOWER C 28.72%: http://en.wikipedia.org/wiki/Ivanpah_Solar_Power_Facility C 15-38%: http://www.nrel.gov/docs/fy11osti/50686.pdf C CSPREFEF = REFLECTION EFFICIENCY (ACCOUNTS FOR ABSORPTION LOSSES TOO) OF C MIRRORS TO CENTRAL TOWER (55%). THUS 55% OF INCIDENT LIGHT REACHES C CENTRAL TOWER FROM MIRRORS) C http://en.wikipedia.org/wiki/Ivanpah_Solar_Power_Facility C CSPMIRROR = AREA (M2) OF MIRRORS IN ONE 100-MW CSP POWER PLANT C IVANPAH (377 MW NET NAMEPLATE CAPACITY) C HAS 173,500 HELIOSTATS, EACH WITH TWO MIRRORS. ONE MIRROR C HAS SURFACE AREA OF 7.02 M^2. THE TOTAL MIRROR AREA IS C 2,437,144 M^2, GIVING A MIRROR AREA OF 646,457 M^2 PER 100 MW C OR 0.646 KM2 PER 100 MW INSTALLED C http://en.wikipedia.org/wiki/Ivanpah_Solar_Power_Facility C 50-STATE PLANS IN 'ENVIRONMENTAL IMPACTS' TAB C ASSUME 1.9-2.4 KM2/100-MW PLANT C CSPLAND = AREA (M2) OF LAND FOR ONE 100-MW CSP POW PLANT (AVG OF 1.9-2.43 KM2) C IVANPAH IS 3500 ACRES = 14.16 KM^2 = 3.76 KM^2 PER 100-MW C http://en.wikipedia.org/wiki/Ivanpah_Solar_Power_Facility C CSPCFAC = CAPACITY FACTOR OF CSP PLANT (NO STORAGE) = 31.4% FOR IVANPAH C http://en.wikipedia.org/wiki/Ivanpah_Solar_Power_Facility C 377 MW x 8760 HRS/YR x 0.314 = 1.04 TWh/YR C COMPARE WITH C 2,437,144 M^2 HELIOSTATS x 7.4 kWh/m2/day x 365 DAYS/YR C x 0.55 (CSPREFEF) x 0.2872 (CSPSTEFF) = 1.04 TWh/YR C --> CSPCFACACCOUNTS FOR EFFICIENCY LOSS OF STEAM PLANT C AREACSP = U.S. AREA (M2) OCCUPITED BY CSP MIRRORS (NOT INC SPACING) C TWCSPGAT = TW ALL CSP INSTALLED WORLDWIDE IN GATOR-GCMOM C STURBCOSL = LOW STEAM TURBINE INSTALLED COST ($MIL/MW) C STURBCOSM = MEAN STEAM TURBINE INSTALLED COST ($MIL/MW) C STURBCOSH = HIGH STEAM TURBINE INSTALLED COST ($MIL/MW) C = $0.765 MIL ($0.43-1.1)MIL/MW O&M < $0.005/KWH C http://www.nrel.gov/docs/fy11osti/50686.pdf C CSPSTEFF = 0.2872 CSPREFEF = 0.55 CSPEFFIC = CSPSTEFF * CSPREFEF CSPMIRROR = 646457. CSPLAND = 2.17E+06 CSPCFAC = 0.314 AREACSP = CSPMIRROR * TWCSPGAT * 1.0E+06 / 100. STURBCOSL = 0.43 STURBCOSH = 1.10 STURBCOSM = 0.5 * (STURBCOSL + STURBCOSH) C C EFFSOLCOL = EFFICIENCY OF SOLAR COLLECTOR FOR HOT WATER/GLYCOL C = ENERGY IN HOT FLUID DIVIDED BY INCIDENT SOLAR RADIATION C = 0.34 FROM TABLE 2 OF SIBBITT ET AL ENERGY PROCEDIA 30, 856, 2012 C EFFSOLCOL = 0.34 C WRITE(IOUT,164) PANEFFIC, CSPEFFIC, AREAPV*1E-6, 1 AREACSP*1E-6, EFFSOLCOL 164 FORMAT('PANEFFIC CSPEFFIC AREAPV(KM2) ', 1 ' AREACSP(KM2) EFFSOLCOL ',/,2(0PF12.4),3(0PF14.4)/) C C ***************************************************************************** C SCALE INSTALLED CAPACITIES BY FACTOR TO TEST WHETHER INCREASING INSTALLED C CAPACITY (AND CORRESPONDING OUTPUT IMPROVES MATCHING DEMAND WITH SUPPLY) C ***************************************************************************** C FACONWIN = FACTOR TO MULTIPLY DELIVERED ONSHORE WIND BY TO TEST WHETHER C INCREASING OUTPUT IMPROVES MATCHING DEMAND WITH SUPPLY. C FACOFFWIN = FACTOR TO MULTIPLY DELIVERED OFFSHORE WIND BY TO TEST WHETHER C INCREASING OUTPUT IMPROVES MATCHING DEMAND WITH SUPPLY. C FACUTILPV = FACTOR TO MULTIPLY DELIVERED UTILITY PV BY TO TEST WHETHER C INCREASING OUTPUT IMPROVES MATCHING DEMAND WITH SUPPLY. C FACSHT = FACTOR TO MULTIPLY DELIVERED SOLAR THERMAL BY TO TEST WHETHER C INCREASING OUTPUT & NAMEPLATE CAPACITY IMPROVES MATCHING C DEMAND WITH SUPPLY. C PANEFFIC = PANEL EFFICIENCY (FRACTION) = PPANEL / (ONESUN * PVSURFA) C EGWSHEAT = EXISTING INSTALLED GW SOLAR HOT WAT/GLYCOL COLLECTORS C ENSURE NOT TO GO BELOW EXISTING SOLAR THERMAL C TGWSHEAT = NEW+EXISTING INSTALLED GW OF SOLAR THERMAL C FACRESPV = FACTOR TO MULTIPLY NAMEPLATE CAPACITY OF RES ROOF PV HERE C TO IMPROVE MATCHING DEMAND WITH SUPPLY. C FACCOMPV = FACTOR TO MULTIPLY NAMEPLATE CAPACITY OF COM/GOV ROOF PV HERE C TO IMPROVE MATCHING DEMAND WITH SUPPLY. C FACROOFPV = WEIGHTED AVG VALUE OF FACRESPV AND FACCOMPV C USED TO MULTIPLY DELIVERED TOTAL ROOFTOP PV FROM C GATOR-GCMOM BY C SUMGWPV = GW OF RES + COMM/GOVT ROOFTOP PV BEFORE ADJUSTMENTS C SUMGWPV = TGWRESPV + TGWCOMPV FACROOFPV = (FACRESPV*TGWRESPV + FACCOMPV*TGWCOMPV) / SUMGWPV C TGWONWIND = TGWONWIND * FACONWIN TGWOFFWIND = TGWOFFWIND * FACOFFWIN TGWRESPV = TGWRESPV * FACRESPV TGWCOMPV = TGWCOMPV * FACCOMPV TGWUTILPV = TGWUTILPV * FACUTILPV C IF (TGWSHEAT.GT.0.) THEN FACSHT = MAX(EGWSHEAT / TGWSHEAT, FACSHT) TGWSHEAT = TGWSHEAT * FACSHT ENDIF C C TGWTOTAL = TOTAL (GW) INSTALLED NAMEPLATE CAPACITY OF ALL NEW PLUS C EXISTING 2050 WWS ELECTRIC POWER GENERATORS (DON'T INCLUDE C HEAT: TGWSHEAT + TGWGEOHT) C TGWTOTAL = TGWONWIND + TGWOFFWIND + TGWRESPV + TGWCOMPV 1 + TGWUTILPV + TGWCSP + TGWGEOEL + TGWHYD 1 + TGWWAVE + TGWTIDAL C C ***************************************************************************** C TOTONWND = TOTAL NEW+EXISTING INSTALLED ONSHORE WIND CAPACITY (TW) C TOTOFFWND = TOTAL NEW+EXISTING INSTALLED OFFSHORE WIND CAPACITY (TW) C TOTROOFPV = TOTAL NEW+EXISTING INSTALLED RES + COMM/GOV ROOF PV CAPACITY (TW) C TOTUTILPV = TOTAL NEW+EXISTING INSTALLED UTILITY SCALE PV CAPACITY (TW) C TOTCSP = TOTAL NEW+EXISTING INSTALLED CSP INSTALLED CAPACITY (TW) C TOTHYDRO = TOTAL NEW+EXISTING INSTALLED HYDROELECTRIC CAPACITY (TW) C = HYDISCHTW = PEAK DISCHARGE RATE OF HYDRO (TW). INCLUDES ANY C HYDRO TURBINES ADDED TO INCREASE PEAK DISCHARGE RATE. C TOTWAVE = TOTAL NEW+EXISTING INSTALLED WAVE CAPACITY (TW) C TOTGEOEL = TOTAL NEW+EXISTING INSTALLED GEOTHERMAL ELEC POWER CAPACITY (TW) C TOTTID = TOTAL NEW+EXISTING INSTALLED TIDAL CAPACITY (TW) C TOTSHEAT = TOTAL NEW+EXISTING INSTALLED SOLAR THERMAL INSTALLED CAPACITY (TW) C TOTGHEAT = TOTAL NEW+EXISTING INSTALLED GEOTHERMAL HEAT INSTALLED CAPAC (TW) C TGWHYD = NEW+EXISTING INSTALLED GW OF HYDRPOWER OVER REGION IGRIDUSE C BEFORE ADDED TURBINES C TGWWAVE = NEW+EXISTING INSTALLED GW OF WAVE POWER C TWPERGW = 0.001 TERAWATTS (TW) PER GIGAWATT(GW) C TOTONWND = TGWONWIND * TWPERGW + SMAL30 TOTOFFWND = TGWOFFWIND * TWPERGW + SMAL30 TOTROOFPV = (TGWRESPV + TGWCOMPV) * TWPERGW + SMAL30 TOTUTILPV = TGWUTILPV * TWPERGW + SMAL30 TOTCSP = TGWCSP * TWPERGW + SMAL30 TOTHYDRO = TGWHYD * TWPERGW * HPTURBRAT + SMAL30 TOTWAVE = TGWWAVE * TWPERGW + SMAL30 TOTGEOEL = TGWGEOEL * TWPERGW + SMAL30 TOTTID = TGWTIDAL * TWPERGW + SMAL30 TOTSHEAT = TGWSHEAT * TWPERGW + SMAL30 TOTGHEAT = TGWGEOHT * TWPERGW + SMAL30 C C EGWONWIND = CONUS EXISTING INSTALLED GW OF ONSHORE WIND TURBINES C EGWOFFWIND = CONUS EXISTING INSTALLED GW OF OFFSHORE WIND TURBINES C EGWRESPV = CONUS EXISTING INSTALLED GW OF RESIDENTIAL PV C EGWCOMPV = CONUS EXISTING INSTALLED GW OF COMMERCIAL/GOVERNMENT PV C EGWUTILPV = CONUS EXISTING INSTALLED GW OF UTILITY-SCALE PV C EGWCSP = CONUS EXISTING INSTALLED GW OF CSP C EGWGEO = CONUS EXISTING INSTALLED GW OF GEOTHERMAL POWER C EGWHYD = CONUS EXISTING INSTALLED GW OF HYDROELECTRIC POWER C EGWWAVE = CONUS EXISTING INSTALLED GW OF WAVE POWER C EGWTIDAL = CONUS EXISTING INSTALLED GW OF TIDAL POWER C EGWSHEAT = CONUS EXISTING INSTALLED GW SOLAR HOT WAT/GLYCOL COLLECTORS C EGWINSTREG = GW-SUM OVER REG J, 2014 EXIST NAMEPL CAPAC FOR DEVICE K C C SUBTRACT OFF ALASKA AND HAWAII, RESPECTIVELY, FROM U.S. TOTAL FROM 50-STATE PLAN C TO OBTAIN CONUS VALUES C C FOR IFCONUS=1: FINAL VALUES FROM 50-STATE PAPER C FROM 'Intermediate details by state' TAB in 50-States WWS.xlsx file C IF (IFCONUS.EQ.1) THEN EGWONWIND = 61.032 - 0.062 - 0.206 EGWOFFWIND = 0. EGWRESPV = 3.550 - 0. - 0.095 EGWCOMPV = 1.775 - 0. - 0.0475 EGWUTILPV = 1.775 - 0. - 0.0475 EGWCSP = 0. EGWGEOEL = 2.406 - 0. - 0.031 EGWHYD = 87.862 - 0.4141 - 0.024 EGWWAVE = 0. EGWTIDAL = 0. EGWSHEAT = 0. EGWGEOHT = 0. ELSE EGWONWIND = EGWINSTREG(IGRIDUSE,IONWIND) EGWOFFWIND = EGWINSTREG(IGRIDUSE,IOFFWIND) EGWRESPV = EGWINSTREG(IGRIDUSE,IRESPV) EGWCOMPV = EGWINSTREG(IGRIDUSE,ICOMGVPV) EGWUTILPV = EGWINSTREG(IGRIDUSE,IUTILPV) EGWCSP = EGWINSTREG(IGRIDUSE,ICSPSTOR) EGWGEOEL = EGWINSTREG(IGRIDUSE,IGEOEL) EGWHYD = EGWINSTREG(IGRIDUSE,IHYDRO) EGWWAVE = EGWINSTREG(IGRIDUSE,IWAVE) EGWTIDAL = EGWINSTREG(IGRIDUSE,ITIDAL) EGWSHEAT = EGWINSTREG(IGRIDUSE,ISOLTHM) EGWGEOHT = EGWINSTREG(IGRIDUSE,IGEOHT) ENDIF C C EGWTOTAL = (GW) INSTALLED NAMEPLATE CAPACITY OF PRE-EXISTING WWS C ELECTRIC POWER GENERATORS (DON'T INCLUDE C HEAT: EGWSHEAT + EGWGEOHT) C EGWTOTAL = EGWONWIND + EGWOFFWIND + EGWRESPV + EGWCOMPV 1 + EGWUTILPV + EGWCSP + EGWGEOEL + EGWHYD 1 + EGWWAVE + EGWTIDAL C C AGWONWIND = NEW INSTALLED GW OF ONSHORE WIND TURBINES C AGWOFFWIND = NEW INSTALLED GW OFFSHORE WIND TURBINES C AGWRESPV = NEW INSTALLED GW RESIDENTIAL ROOFTOP PV C AGWCOMPV = NEW INSTALLED GW COMMERCIAL/GOVERNMENT ROOFTOP PV C AGWUTILPV = NEW INSTALLED GW UTILITY-SCALE PV C AGWCSP = NEW INSTALLED GW CONCENTRATED SOLAR POWER (CSP) C AGWGEOEL = NEW INSTALLED GW GEOTHERMAL FOR ELECTRICITY C AGWHYD = NEW INSTALLED GW HYDROELECTRIC POWER BEFORE ADDED TURBINES C AGWWAVE = NEW INSTALLED GW WAVE POWER C AGWTIDAL = NEW INSTALLED GW TIDAL POWER C AGWSHEAT = NEW INSTALLED GW SOLAR THERMAL HEAT C AGWGEOHT = NEW INSTALLED GW GEOTHERMAL FOR HEAT C AGWONWIND = TGWONWIND - EGWONWIND AGWOFFWIND = TGWOFFWIND - EGWOFFWIND AGWRESPV = TGWRESPV - EGWRESPV AGWCOMPV = TGWCOMPV - EGWCOMPV AGWUTILPV = TGWUTILPV - EGWUTILPV AGWCSP = TGWCSP - EGWCSP AGWGEOEL = TGWGEOEL - EGWGEOEL AGWHYD = TGWHYD - EGWHYD AGWWAVE = TGWWAVE - EGWWAVE AGWTIDAL = TGWTIDAL - EGWTIDAL AGWSHEAT = TGWSHEAT - EGWSHEAT AGWGEOHT = TGWGEOHT - EGWGEOHT C C ***************************************************************************** C C ***************************************************************************** C DELIVERED 2050 POWER FROM NON-WIND, NON-SOLAR SOURCES C AFTER TRANSMISSION & DISTRIBUTION LOSSES C ***NOT NAMEPLATE CAPACITIES*** C GWe FROM 'INTERMEDIATE DETAILS BY STATE' TAB IN 50-States WWS.xlsx FILE C ***************************************************************************** C CURGEOEL = 2050 CONUS GEOTHERMAL DELIV ELECTRIC POWER AFTER T&D LOSSES (TW) C CURHYD = 2050 CONUS HYDROELECTRIC DELIVERED POWER AFTER T&D LOSSES (TW) C CURWAV = 2050 CONUS WAVE DELIVERED POWER AFTER T&D LOSSES(TW) C CURTID = 2050 CONUS TIDAL DELIVERED POWER AFTER T&D LOSSES (TW) C CURGEOHT = 2050 CONUS GEOTHERMAL HEAT DELIVERED AFTER T&D LOSSES (TW) C SUPGWREG = GW-SUM OVER REG J, 2050 END-USE POWER SUPPLIED BY DEVICE K C C FOR IFCONUS=1: FINAL VALUES FROM 50-STATE PAPER IF (IFCONUS.EQ.1) THEN CURGEOEL = (19.81 - 1.01 - 1.13) * TWPERGW CURHYD = (47.84 - 2.16 - 0.01) * TWPERGW CURTID = ( 2.17 - 0.14 - 0.04) * TWPERGW CURWAV = ( 5.85 - 0.14 - 0.04) * TWPERGW CURGEOHT = 0. ELSE CURGEOEL = SUPGWREG(IGRIDUSE,IGEOEL) * TWPERGW CURHYD = SUPGWREG(IGRIDUSE,IHYDRO) * TWPERGW CURTID = SUPGWREG(IGRIDUSE,ITIDAL) * TWPERGW CURWAV = SUPGWREG(IGRIDUSE,IWAVE) * TWPERGW CURGEOHT = SUPGWREG(IGRIDUSE,IGEOHT) * TWPERGW C C FRACLOAD = APPROXIMATE FRACTION OF TOTAL LOAD MET BY ENERGY TECHNOLOGY C FLOADREG = FRAC 2050 END USE ELEC POWER FROM EACH 1..MXCAP DEVICE IN REGION C ALREADY CALCULATED FOR IFCONUS=1 IN DATA STATEMENT C DO I = 1, MXCAP FRACLOAD(I) = FLOADREG(IGRIDUSE,I) ENDDO ENDIF C C CURHYD = 2050 HYDROELECTRIC DELIVERED POWER AFTER T&D LOSSES (TW) C FHYDBASE = FRACTION (0-1) OF INSTANTANEOUS HYDRO OUTPUT CURHYD USED FOR C BASELOAD. THE REST IS USED FOR PEAKING C BASEHYD = 2050 HYDROPOWER DELIVERED AS BASELOAD POWER (TW) C PEAKHYD = 2050 HYDROPOWER DELIVERED USED FOR PEAKING POWER (TW) C BASEHYD = CURHYD * FHYDBASE PEAKHYD = CURHYD * (1. - FHYDBASE) C C HYDISCHTW = MAX DISCHARGE RATE OF HYDROELECTRIC POWER (TW) C = INITIAL INSTALLED CAPACITY (DISHPINIT) * HPTURBRAT C TGWHYD = NEW+EXISTING INSTALLED GW OF HYDRPOWER OVER REGION IGRIDUSE C BEFORE ADDED TURBINES C TWPERGW = 0.001 TERAWATTS (TW) PER GIGAWATT (GW) C TWPERMW = 0.000001 TERAWATTS (TW) PER MEGAWATT (MW) C DISHPINIT = INIT DISCHARGE RATE HYDROPOWER (TW) BASED ON INSTALLED CAPACITY C HPTURBRAT = RATIO OF NEEDED DISCHARGE RATE (TW) OF HYDROPOWER C TO 2050 INSTALLED DISCHARGE RATE (TW). ADDITIONAL DISCHARGE C OBTAINED BY ADDING TURBINES/GENERATORS/TRANSFORMERS WITHOUT C INCREASING SIZE OF DAM (HOLDING ANNUAL ENERGY OUTPUT CONSTANT) C ADDHPDIS = ADDED HYDROPOWER INSTALLED DISCHARGE CAPACITY (MW) C DUE TO ADDITIONAL TURBINES/GENERATORS/TRANSFORMERS C COST FROM IRENA (2012) RENEW ENERGY TECHS: COST ANAL FIG 4.7 C http://www.irena.org/documentdownloads/publications/ C re_technologies_cost_analysis-hydropower.pdf C FELECHP = FRACTION OF TOTAL CAPITAL COST OF HYDROPOWER THAT IS FOR C ELECTRICAL EQUIPMENT (TURBINES/GENERATORS/TRANSFORMERS C ~16% ($556/KW) 500 MW PLANT TOT COST $3,500 (FIG 4.5 IRENA 2012) C ($200-300/KW) 1000 MW PLANTS FIG. 4.7 C DISHPINIT = TGWHYD * TWPERGW HYDISCHTW = DISHPINIT * HPTURBRAT ADDHPDIS = (HYDISCHTW - DISHPINIT) / TWPERMW FELECHP = 0.16 C C ***************************************************************************** C CAPITAL COSTS AVERAGED BETWEEN 2013 AND 2050 IN 2013 DOLLARS C FROM 50-STATE 50-state-WWS.xlsx 'Cost of Delivered Electricity' TAB C FROM M. DELUCCHI C ***************************************************************************** C CAP COST ($MIL/MW) LOW MEDIUM HIGH C ONSHORE WIND 1 1.27535 1.48774 1.70012 C OFFSHORE WIND 2 2.69279 3.76996 4.84713 C RES ROOF PV 3 2.71462 3.21983 3.72505 C COMM/GOVT PV 4 2.20509 2.44463 2.68417 C UTILITY PV 5 1.43572 1.55650 1.67729 C CSP-WITH-STORAGE 6 4.87758 5.74921 6.62084 C CSP-NO-STORAGE 7 2.77653 3.18126 3.58599 C GEOTHERMAL 8 2.49487 4.19043 5.88598 C HYDROELECTRIC 9 2.39540 2.82170 3.24800 C TIDAL 10 3.71642 4.30233 4.88824 C WAVE 11 6.08137 6.81166 7.54196 C C JACOBSON ET AL. (2015) FROM M. DELUCCHI (INCLUDES TRANSMISSION) C CSP - NO STORAGE IVANPAH $5.6 MILLION/MW = $2.2 BIL / 392 MWW C - NO STORAGE PS10 SPAIN $4.2 MILLION/MW = $360 MIL / 11 MW C - NO STORAGE PS20 SPAIN $5.5 MILLION/MW = $109.8 MIL / 20 MW C - NO STORAGE SOLNOVA SPAIN $3.66 MILLION/MW = $548.92 MIL / 150 MW C C CAP2019LO = 2013 LOW CAPITAL COST OF ENERGY SOURCES ($MIL/MW-INSTALLED) C FROM 50-STATE 50-state-WWS.xlsx 'Cost of Delivered Electricity' TAB C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEO C HYDRO TIDAL WAVE SOLTHERM C CSPNOST HAS $2.42 MIL/MW SUBTRACTED TO REMOVE STORAGE COST C ASSUME SOLAR THERMAL SAME AS UTILITY PV C CAP2019HI = 2013 HI CAPITAL COST OF ENERGY SOURCES ($MIL/MW-INSTALLED) C FROM 50-STATE 50-state-WWS.xlsx 'Cost of Delivered Electricity' TAB C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEO C HYDRO TIDAL WAVE SOLTHERM C ASSUME SOLAR THERMAL SAME AS UTILITY PV C CAP2050LO = 2050 LOW CAPITAL COST OF ENERGY SOURCES ($MIL/MW-INSTALLED) C FROM 50-STATE 50-state-WWS.xlsx 'Cost of Delivered Electricity' TAB C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEO C HYDRO TIDAL WAVE SOLTHERM C ASSUME SOLAR THERMAL SAME AS UTILITY PV C CAP2050HI = 2050 HI CAPITAL COST OF ENERGY SOURCES ($MIL/MW-INSTALLED) C FROM 50-STATE 50-state-WWS.xlsx 'Cost of Delivered Electricity' TAB C ONWIND OFFWIND RESPV COMPV UTILPV CSPSTOR CSPNOSTOR GEO C HYDRO TIDAL WAVE SOLTHERM C ASSUME SOLAR THERMAL SAME AS UTILITY PV C PRINFLATE = INFLATES 2012 PRICES TO 2013 DOLLARS C IONWIND.. = 1..MXCAP INDEX NUMBER CORRESPONDING TO EACH GENERATOR TYPE C TDLOSLO = LO TRANSMISSION & DISTRIBUTION LOSS (FRACTION) OF OUTPUT ELECTRICITY C THIS WILL INCLUDE SHORT- AND LONG-DISTANCE TRANSMISSION LOSSES C TDLOSHI = HI TRANSMISSION & DISTRIBUTION LOSS (FRACTION) OF OUTPUT ELECTRICITY C FRACLOAD = APPROXIMATE FRACTION OF TOTAL LOAD MET BY ENERGY TECHNOLOGY C TDLOSS = TRANSMISSIO & DISTRIB LOSS (FRACTION) WEIGHTED BY ESTIMATED C END USE POWER BY GENERATOR. ACCOUNTS FOR SHORT & LONG DISTANCE C = 0.0707 BASED ON CALCULATION HERE C C ***************************************************************************** C CALC MEAN SHORT+LONG-DISTANCE T&D LOSSES AND CAPITAL COSTS PER GENERATOR C ***************************************************************************** C AVCAPLO = AVERAGE (2013 TO 2050) LOW CAP COST PER GENERATOR ($TRIL/MW) C AVCAPMN = AVERAGE (2013 TO 2050) MEAN CAP COST PER GENERATOR ($TRIL/MW) C AVCAPHI = AVERAGE (2013 TO 2050) HI CAP COST PER GENERATOR ($TRIL/MW) C TDLOSMN = MEAN TRANSMISSIO & DISTRIB LOSS (FRACTION) FOR EACH GENERATOR C ACCOUNTS FOR SHORT & LONG DISTANCE C TDEFFMN = 1-TDLOSMN = TRANSMIS+DISTRIB EFFIC AS FRACTION OF POWER TRANSMITTED C TDRATMN = TDLOSMN / TDEFFMN. MULT ENERGY (TWH) DELIVERED AFTER T&D LOSSES C BY TDRATMN TO OBTAIN T&D ENERGY LOSS (TWH) C SDTRCOSM = MEAN SHORT-DISTANCE TRANSMISSION COST (CENTS/KWH) C DECOMLO = LOW DECOMISSIONING COST AS FRACTION OF OVERNIGHT CAPITAL COST C DECOMMN = MEAN DECOMISSIONING COST AS FRACTION OF OVERNIGHT CAPITAL COST C DECOMHI = HIGH DECOMISSIONING COST AS FRACTION OF OVERNIGHT CAPITAL COST C DECOMISL = WEIGHTED AVG LOW DECOMMISS COST AS FRACTION OF OVERNIGHT CAP COST C DECOMISM = WEIGHTED AVG MEAN DECOMMISS COST AS FRACTION OF OVERNIGHT CAP COST C DECOMISH = WEIGHTED AVG HIGH DECOMMISS COST AS FRACTION OF OVERNIGHT CAP COST C DECOMISL = 0. DECOMISM = 0. DECOMISH = 0. FRCENDUSE = 0. TDLOSS = 0. DO I = 1, MXCAP AVCAPLO( I) = PRINFLATE * (CAP2019LO(I)+CAP2050LO(I)) / 2.0E+06 AVCAPHI( I) = PRINFLATE * (CAP2019HI(I)+CAP2050HI(I)) / 2.0E+06 AVCAPMN( I) = (AVCAPLO( I) + AVCAPHI( I)) / 2. OANDMMN( I) = (OANDMLO( I) + OANDMHI( I)) / 2. DECOMMN( I) = (DECOMLO( I) + DECOMHI( I)) / 2. SDTRCOSM( I) = (SDTRCOSL(I) + SDTRCOSH( I)) / 2. YEARLIFEM(I) = (YEARLIFEL(I) + YEARLIFEH(I)) / 2. TDLOSMN( I) = 0.5 * (TDLOSLO(I) + TDLOSHI(I)) TDEFFMN( I) = 1. - TDLOSMN(I) TDRATMN( I) = TDLOSMN(I) / TDEFFMN(I) DECOMISL = DECOMISL + FRACLOAD(I) * DECOMLO(I) DECOMISM = DECOMISM + FRACLOAD(I) * DECOMMN(I) DECOMISH = DECOMISH + FRACLOAD(I) * DECOMHI(I) TDLOSS = TDLOSS + FRACLOAD(I) * TDLOSMN(I) FRCENDUSE = FRCENDUSE + FRACLOAD(I) ENDDO C C TDLOSS = TRANSMISSIO & DISTRIB LOSS (FRACTION) WEIGHTED BY ESTIMATED C END USE POWER BY GENERATOR. ACCOUNTS FOR SHORT & LONG DISTANCE C = 0.0707 BASED ON CALCULATION HERE C TDLOSS = TDLOSS / FRCENDUSE C C ***************************************************************************** C 2050 END-USE 50-STATE U.S. POWER DEMAND USING WWS C THESE ARE LOADS USED AFTER T&D AND STORAGE LOSSES C 'WWS, BAU end-use TW by state' TAB IN 50-States WWS.xlsx FILE C ***************************************************************************** C BLOADRES = 50-STATE 2050 RESID WWS LOAD: 0.2825 TW C ALASKA -0.0008 C HAWAII -0.0004 C CONUS 0.2813 C BLOADCOM = 2050 COMMERCIAL WWS LOAD: 0.2955 TW C ALASKA -0.0016 C HAWAII -0.0008 C CONUS 0.2931 C BLOADIND = 2050 INDUSTRIAL WWS LOAD: 0.7166 TW C ALASKA -0.0096 C HAWAII -0.0012 C CONUS 0.7058 C BLOADTRA = 2050 TRANSPORTATION WWS LOAD: 0.2964 TW C ALASKA -0.0025 C HAWAII -0.0013 C CONUS 0.2926 C --------------------------------------------------- C TOTAL: 1.5910 TW C ALASKA -0.0145 C HAWAII -0.0037 C CONUS 1.5728 C C TLOADSUM = SUM OF TLOADSEC (GW) AMONG COUNTRIES IN EACH J=1..NUMGRIDS REGION C C FOR IFCONUS=1: FINAL VALUES FROM 50-STATE PAPER C LOAD FOR 48 CONUS STATES ONLY (SUBTRACT ALASKA/HAWAII) C IF (IFCONUS.EQ.1) THEN BLOADRES = 0.2825 - 0.0008 - 0.0004 BLOADCOM = 0.2955 - 0.0016 - 0.0008 BLOADIND = 0.7166 - 0.0096 - 0.0012 BLOADTRA = 0.2964 - 0.0025 - 0.0013 BLOADAGF = 0. BLOADOTH = 0. ELSE BLOADRES = TLOADSUM(IGRIDUSE,IRESID) * TWPERGW BLOADCOM = TLOADSUM(IGRIDUSE,ICOMM) * TWPERGW BLOADIND = TLOADSUM(IGRIDUSE,IIND) * TWPERGW BLOADTRA = TLOADSUM(IGRIDUSE,ITRAN) * TWPERGW BLOADAGF = TLOADSUM(IGRIDUSE,IAGFF) * TWPERGW BLOADOTH = TLOADSUM(IGRIDUSE,IOTH) * TWPERGW ENDIF C C TLOAD2050 = TOTAL 2050 ALL-SECTOR LOAD WITH WWS (TW) AFTER HEAT PUMPS C (SINCE BLOADRES... CALCULATED IN SPREADSHEET ASSUMING C ALL HEATING HAS BEEN CONVERTED TO HEAT PUMPS) C TLOAD2050 = BLOADRES+BLOADCOM+BLOADIND+BLOADTRA+BLOADAGF+BLOADOTH C C ***************************************************************************** C DETERMINE ELECTRIC POWER LOADS NEEDED FOR H2 PRODUCTION/COMPRESSION/STORAGE C 'Efficiency, upstream, electrify' TAB IN '50-States WWS.xlsx' FILE C ***************************************************************************** C FRACREH2 = FRACT OF RESIDENTIAL ELEC GOING TO H2 ELECTROLYSIS/COMPRESS/STORAGE C FRACCOH2 = FRACT OF COMMERCIAL ELEC GOING TO H2 ELECTROLYSIS/COMPRESS/STORAGE C FRACTRH2 = FRACT OF TRANSPORT ELEC GOING TO H2 ELECTROLYSIS/COMPRESS/STORAGE C FRACINH2 = FRACT OF INDUSTRY ELEC GOING TO H2 ELECTROLYSIS/COMPRESS/STORAGE C FROM 50-STATE PLAN C TWHH2RE = TWH/YR ELEC TO PRODUCE H2+LEAKS+ELECTROLYSIS+COMPRESS FOR C RESIDENTIAL SECTOR FROM 2050 50-STATE PLAN C TWHH2CO = TWH/YR ELEC TO PRODUCE H2+LEAKS+ELECTROLYSIS+COMPRESS FOR C COMMERCIAL SECTOR FROM 2050 50-STATE PLAN C TWHH2TR = TWH/YR ELEC TO PRODUCE H2+LEAKS+ELECTROLYSIS+COMPRESS FOR TRANSPORT C FROM 2050 50-STATE PLAN C TWHH2IN = TWH/YR ELEC TO PRODUCE H2+LEAKS+ELECTROLYSIS+COMPRESS FOR INDUSTRY C FROM 2050 50-STATE PLAN C BLOADRES = 2050 RESIDENTIAL WWS LOAD (GW) AFTER HEAT PUMPS C BLOADCOM = 2050 COMMERCIAL WWS LOAD (GW) AFTER HEAT PUMPS C BLOADIND = 2050 INDUSTRIAL WWS LOAD (GW) AFTER HEAT PUMPS C BLOADTRA = 2050 TRANSPORTATION WWS LOAD (GW) AFTER HEAT PUMPS C BLOADAGF = 2050 AG/FORESTRY/FISH WWS LOAD (GW) AFTER HEAT PUMPS C BLOADOTH = 2050 OTHER WWS LOAD (GW) AFTER HEAT PUMPS C TWHH2TOT = TOTAL TWH/YR ELEC NEEDED ALL SECTORS 2050 TO PROD/COMPRESS/STORE H2 C THIS NUMBER ACCOUNTS FOR LEAKED HYDROGEN C THIS NUMBER IS AFTER T&D LOSSES, SO T&D LOSSES MUST BE ADDED TO THESE C FRCH2REG = FRACTION OF END-USE POWER DEMAND EACH 1..MXSECTOR SECTOR C IN EACH 1..NUMGRIDS GRID GOING TO H2 ELECTROL/COMPRESSION/STORAGE C C FOR IFCONUS=1: FINAL VALUES FROM 50-STATE PAPER C IF (IFCONUS.EQ.1) THEN FRACREH2 = 0. FRACCOH2 = 0. FRACINH2 = 0.05717 FRACTRH2 = 0.47792 FRACAGH2 = 0. FRACOTH2 = 0. ELSE FRACREH2 = FRCH2REG(IGRIDUSE,IRESID) FRACCOH2 = FRCH2REG(IGRIDUSE,ICOMM) FRACINH2 = FRCH2REG(IGRIDUSE,IIND) FRACTRH2 = FRCH2REG(IGRIDUSE,ITRAN) FRACAGH2 = FRCH2REG(IGRIDUSE,IAGFF) FRACOTH2 = FRCH2REG(IGRIDUSE,IOTH) ENDIF C C HRSPYR = AVERAGE NUMBER OF HOURS PER YEAR DURING WHOLE SIMULATION C TWHH2RE = BLOADRES * HRSPYR * FRACREH2 TWHH2CO = BLOADCOM * HRSPYR * FRACCOH2 TWHH2IN = BLOADIND * HRSPYR * FRACINH2 TWHH2TR = BLOADTRA * HRSPYR * FRACTRH2 TWHH2AG = BLOADAGF * HRSPYR * FRACAGH2 TWHH2OT = BLOADOTH * HRSPYR * FRACOTH2 TWHH2TOT = TWHH2RE+TWHH2CO+TWHH2IN+TWHH2TR+TWHH2AG+TWHH2OT C C ***************************************************************************** C PARAMETERS FOR H2 ELECTROLYSIS, COMPRESSION, WATER, STORAGE C ***************************************************************************** C ELECLYZEN = 53.37 KWH/KG-H2-PRODUCED BY ELECTROLYZER C (JACOBSON ET AL., SCIENCE 2005 - J05) C COMPRESEN = 5.639 KWH/KG-H2-COMPRESSED C H2ENERGY = 59.01 TWH/TG-H2-PRODUCED-AND-COMPRESSED (=KWH/KG-H2) C = ELECRICITY REQUIRED FOR H2 PRODUCTION AND COMPRESSION C ELECTROLYZER: 53.4 KWH/KG-H2 (J05) C 50.0 KWH/KG-H2 C (https://www.nrel.gov/docs/fy11osti/50408.pdf) C COMPRESSOR: 5.639 KWH/KG-H2 (J05) C 3 (2-4) KWH/KG-H2 FOR 350 BAR STORAGE C https://www.nrel.gov/docs/fy14osti/58564.pdf C TOTAL: 53-59.1 KWH/KG-H2 FOR ELECTROLYSIS + COMPRESSION C ELECLYZEN = 53.37 COMPRESEN = 5.639 H2ENERGY = ELECLYZEN + COMPRESEN C C TGH2PYR = TG-H2/YR PRODUCED FROM ELECTROLYSIS, COMPRESSED AND EITHER USED C IMMEDIATELY OR STORED C TWHH2TOT = TOTAL TWH/YR ELEC NEEDED ALL SECTORS 2050 TO PROD/COMPRESS/STORE H2 C THIS NUMBER ACCOUNTS FOR LEAKED HYDROGEN C THIS NUMBER IS AFTER T&D LOSSES, SO T&D LOSSES MUST BE ADDED TO THESE C AVHRSPYR = 8760 HOURS PER YEAR IN NON-LEAP YEARS C TGH2PYR = TWHH2TOT / H2ENERGY C C ***************************************************************************** C ELECTROLYZER COST C ***************************************************************************** C UFADJUST = FACTOR (<=1) TO ADJUST ELECTROLYZER AND COMPRESSOR USE C FACTOR BY TO ACCOUNT FOR USE FACTORS LESS THAN PROPOSED C (0.5-0.95 = DEFAULT USE FACTORS) C UFADJUST<1 THEN LIFETIMES LONGER, O&M COSTS LOWER C ELYZLIFEL = LIFETIME OF ELECTROLYZER THAT GIVES LOW COST C NOTE THIS CORRESPONDS TO A USE FACTOR OF EUSEFACL C IF ACTUAL USE FACTOR (H2USEFACH) LESS, C LIFETIME SHOULD BE LONGER, O&M LOWER C ELYZLIFEH = LIFETIME OF ELECTROLYZER THAT GIVES HIGH COST C NOTE THIS CORRESPONDS TO A USE FACTOR OF EUSEFACH C IF ACTUAL USE FACTOR (H2USEFACH) LESS, C LIFETIME SHOULD BE LONGER, O&M LOWER C ELYZLIFEM = MEDIUM ELECTROLYZER LIFETIME (ACCOUNTS FOR USE UFADJUST) C ELYZCOSL = LOW ELECTROLYZER COST IN 2050 ($/KW) = $300 C ELYZCOSH = HI ELECTROLYZER COST IN 2050 ($/KW) = $450 C = $430 IN 2011; $300 EXPECTED BY 2020 C https://energy.gov/eere/fuelcells/doe-technical-targets- C hydrogen-production-electrolysis C EUSEFACL = FRAC OF TIME ELECTROLYZER USED GIVING LOW COST = 0.95 (J05) C EUSEFACH = FRAC OF TIME ELECTROLYZER USED GIVING HI COST = 0.5 (J05) C ELYZOM = FRACTION OF ELECTROLYZER PURCHASE COST FOR ANNUAL O&M (1.5%) (J05) C THIS ACCOUNTS FOR SHORT LIFETIME OF ELECTROLYZER (10 YR) C RELATIVE TO C AKWHPKW = 8760 KWH/YR PER KW C H2ENERGY = TWH/TG-H2-PRODUCED-AND-COMPRESSED (=KWH/KG-H2) C = ELECRICITY REQUIRED FOR H2 PRODUCTION AND COMPRESSION C ELECLYZEN = KWH/KG-H2-PRODUCED BY ELECTROLYZER (JACOBSON ET AL., 2005) C ELYZPKGL = LOW ELECTROLYZER CAPITAL COST ($/KG-H2/YR) C ELYZPKGH = HI ELECTROLYZER CAPITAL COST ($/KG-H2/YR) C FINSTALL = LOW INSTALLATION FACTOR (1.2) C FINSTALH = HI INSTALLATION FACTOR (1.3) C https://www.nrel.gov/docs/fy14osti/58564.pdf C UFADJUST = 1. C UFADJUST = 0.2 ELYZLIFEL = 15. / UFADJUST ELYZLIFEH = 10. / UFADJUST ELYZLIFEM = 0.5 * (ELYZLIFEL + ELYZLIFEH) ELYZCOSL = 300. ELYZCOSH = 450. EUSEFACL = 0.95 * UFADJUST EUSEFACH = 0.50 * UFADJUST ELYZOM = 0.015 * UFADJUST AKWHPKW = 8760. ELYZPKGL = ELYZCOSL * ELECLYZEN / (AKWHPKW * EUSEFACL) ELYZPKGH = ELYZCOSH * ELECLYZEN / (AKWHPKW * EUSEFACH) FINSTALL = 1.2 FINSTALH = 1.3 C C ELYZFACSL = LO FACTOR TO MULT CAPITAL ELECTROLYZER COST BY TO GET ANNUAL COST C AT DISCOUNT RATE DISCOUNTL AND LIFETIME ELYZLIFEL C ELYZFACSH = HI FACTOR TO MULT CAPITAL ELECTROLYZER COST BY TO GET ANNUAL COST C ELYZTERML = (1. + DISCOUNTL)**ELYZLIFEL ELYZTERMH = (1. + DISCOUNTH)**ELYZLIFEH C ELYZFACSL = DISCOUNTL * ELYZTERML / (ELYZTERML - 1.) ELYZFACSH = DISCOUNTH * ELYZTERMH / (ELYZTERMH - 1.) C C ANCOSELYZL = LO ANNUAL COST OF ELECTROLYZER + O&M ($/KG-H2) C ANCOSELYZH = HI ANNUAL COST OF ELECTROLYZER + O&M ($/KG-H2) C C ANCOSELYZL = 0.352 C ANCOSELYZH = 2.367 C ANCOSELYZL = ELYZPKGL * (FINSTALL*ELYZFACSL + ELYZOM) ANCOSELYZH = ELYZPKGH * (FINSTALH*ELYZFACSH + ELYZOM) C C ***************************************************************************** C H2 COMPRESSOR COST C ***************************************************************************** C COMPLIFEL = LIFETIME OF COMPRESSOR THAT GIVES LOW COST C NOTE THIS CORRESPONDS TO A USE FACTOR OF EUSEFACL C IF ACTUAL USE FACTOR (H2USEFACH) LESS, C LIFETIME SHOULD BE LONGER, O&M LOWER C COMPLIFEH = LIFETIME OF COMPRESSOR THAT GIVES HIGH COST C NOTE THIS CORRESPONDS TO A USE FACTOR OF EUSEFACH C IF ACTUAL USE FACTOR (H2USEFACH) LESS, C LIFETIME SHOULD BE LONGER, O&M LOWER C COSCOMPL = LOW CAPITAL COST ($) OF COMPRESSOR C COSCOMPH = HI CAPITAL COST ($) OF COMPRESSOR C P12 OF https://www.nrel.gov/docs/fy14osti/58564.pdf C COST FOR COMPRESSING 33 KG-H2/HR FROM 20 TO 350 BAR=$515,000 USD13 C LOW ESTIMATE IS CLOSE TO 25% BELOW THIS C COST OF COMPRESSOR+STORAGE ($0.80-$1.193/KG-H2) C COMPARES W/$0.91-$1.48/KG-H2 C FOR COMPRESSOR, STORAGE, DISPENSER,ELECTRICAL,COOLING,INSTALLATION C 2014 FROM TABLE 12 OF https://www.nrel.gov/docs/fy14osti/58564.pdf C COMPRATE = RATE OF H2 COMPRESSION FOR COMPRESSOR OF GIVEN COST (33 KG-H2/HR) C https://www.nrel.gov/docs/fy14osti/58564.pdf C COMPRESSION FROM 20 TO 350 BAR FOLLOWED BY DRY RUNNING PISTON C COMPRESSOR UP TO 950 BAR C COMPOM = FRACTION OF COMPRESSOR PURCHASE COST FOR ANNUAL O&M (1.5%) (J05) C AVHRSPYR = 8760 HOURS PER YEAR IN NON-LEAP YEARS C COMPCKGL = LOW COMPRESSOR CAPITAL COST ($/KG-H2/YR) C COMPCKGH = HI COMPRESSOR CAPITAL COST ($/KG-H2/YR) C COMPLIFEL = 15. / UFADJUST COMPLIFEH = 10. / UFADJUST COSCOMPL = 400000. COSCOMPH = 515000. COMPRATE = 33. COMPOM = 0.015 * UFADJUST COMPCKGL = COSCOMPL / (COMPRATE * EUSEFACL * AVHRSPYR) COMPCKGH = COSCOMPH / (COMPRATE * EUSEFACH * AVHRSPYR) C C COMPFACSL = LO FACTOR TO MULT CAPITAL COMPRESSOR COST BY TO GET ANNUAL COST C AT DISCOUNT RATE DISCOUNTL AND LIFETIME COMPLIFEL C COMPFACSH = HI FACTOR TO MULT CAPITAL COMPRESSOR COST BY TO GET ANNUAL COST C COMPTERML = (1. + DISCOUNTL)**COMPLIFEL COMPTERMH = (1. + DISCOUNTH)**COMPLIFEH C COMPFACSL = DISCOUNTL * COMPTERML / (COMPTERML - 1.) COMPFACSH = DISCOUNTH * COMPTERMH / (COMPTERMH - 1.) C C ANCOSCOMPL = LO ANNUAL COST OF COMPRESSOR + O&M ($/KG-H2) C ANCOSCOMPH = HI ANNUAL COST OF COMPRESSOR + O&M ($/KG-H2) C C ANCOSCOMPL = 0.491 C ANCOSCOMPH = 0.883 C ANCOSCOMPL = COMPCKGL * (FINSTALL*COMPFACSL + COMPOM) ANCOSCOMPH = COMPCKGH * (FINSTALH*COMPFACSH + COMPOM) C C ***************************************************************************** C COST OF WATER FOR ELECTROLYSIS C ***************************************************************************** C ANCOSWATL = LO ANNUAL COST OF WATER ($/KG-H2) (JACOBSON ETAL SCIENCE 2005) C ANCOSWATH = HI ANNUAL COST OF WATER ($/KG-H2) (JACOBSON ETAL SCIENCE 2005) C ANCOSWATL = 0.00472 ANCOSWATH = 0.00944 C C ***************************************************************************** C H2 STORAGE COST C ***************************************************************************** C H2STORMX = MAXIMUM STORAGE (TWH) AVAILABLE FOR H2 AT GIVEN TIME C = TOTAL TWH OF H2 USED DURING YEAR (THIS IS WHAT H2 STORAGE COST IS C BASED ON. THIS CAN BE CHANGED BY CHANGING DAYH2STOR). C TWHH2TOT = TOTAL TWH/YR ELEC NEEDED ALL SECTORS 2050 TO PROD/COMPRESS/STORE H2 C THIS NUMBER ACCOUNTS FOR LEAKED HYDROGEN C FRCH2REG = FRACTION OF END-USE POWER DEMAND EACH 1..MXSECTOR SECTOR C DAYSPY = AVERAGE NUMBER OF DAYS PER YEAR DURING WHOLE SIMULATION C DAYH2STOR = NUMBER OF DAYS OF H2 STORAGE C FRCH2STOR = MAX FRACTION OF TWH/YR OF H2 CONSUMPTION THAT CAN BE STORED C = 0.27 WHEN DAYH2STOR = 100. C COST OF STORING EVERY KG-H2 PRODUCED UP TO FRCH2STOR=1 ACCOUNTED FOR C FRCH2STOR = DAYH2STOR / DAYSPY H2STORMX = TWHH2TOT * FRCH2STOR C C H2STLIFEL = LIFETIME (YEARS) OF H2 STORAGE TANKS GIVING LOW COST C H2STLIFEH = LIFETIME (YEARS) OF H2 STORAGE TANKS GIVING HIGH COST C H2TANK = MAX STORAGE SIZE H2 TANKS (TG-H2) C H2ENERGY = TWH/TG-H2-PRODUCED-AND-COMPRESSED (=KWH/KG-H2) C = ELECRICITY REQUIRED FOR H2 PRODUCTION AND COMPRESSION C COSTH2TKL = LOW CAPITAL COST H2 TANK ($/KG-H2) = 450. C COSTH2TKH = HI CAPITAL COST H2 TANK ($/KG-H2) = 550. C PAGE 4 OF STETSON, USDOE C https://www.hydrogen.energy.gov/pdfs/review12/ C st_plenary_stetson_2012_o.pdf C STORAGE SYSTEM COST 2015: $667/KG-K2: 2020: $500/KG-H2 C NUMBER OF CYCLES 5,000 (5YR) 10,000 (10 YR) C COST ($/KG-H2) 0.133 0.05 C H2STOROM = O&M AS FRACTION OF CAPITAL COST FOR H2 STORAGE C H2CYCLES = NUMBER OF CYCLES THROUGH TANK 50-100% CAPACITY = 10,000 C TANKCOSTL = LOW CAP COST OF H2 TANK ($/KG-H2/YR) C WHERE KG-H2/YR IS ALL H2 PROD IN YEAR C TANKCOSTH = HI CAPITAL COST OF H2 TANK ($/KG-H2/YR) C WHERE KG-H2/YR IS ALL H2 PROD C TGH2PYR = TG-H2/YR PRODUCED FROM ELECTROLYSIS, COMPRESSED AND EITHER USED C IMMEDIATELY OR STORED C H2STLIFEL = 50. H2STLIFEH = 30. H2TANK = H2STORMX / H2ENERGY COSTH2TKL = 450. COSTH2TKH = 550. H2STOROM = 0.015 C H2CYCLES = 10000. TANKCOSTL = COSTH2TKL * H2TANK / TGH2PYR TANKCOSTH = COSTH2TKH * H2TANK / TGH2PYR C C H2STFACSL = LO FACTOR TO MULT CAPITAL H2STORAGE COST BY TO GET ANNUAL COST C AT DISCOUNT RATE DISCOUNTL AND LIFETIME H2STLIFEL C H2STFACSH = HI FACTOR TO MULT CAPITAL H2 STORAGE COST BY TO GET ANNUAL COST C H2STTERML = (1. + DISCOUNTL)**H2STLIFEL H2STTERMH = (1. + DISCOUNTH)**H2STLIFEH C H2STFACSL = DISCOUNTL * H2STTERML / (H2STTERML - 1.) H2STFACSH = DISCOUNTH * H2STTERMH / (H2STTERMH - 1.) C C ANCOSH2STL = LO ANNUAL COST OF H2 STORAGE + O&M ($/KG-H2) C ANCOSH2STH = HI ANNUAL COST OF H2 STORAGE + O&M ($/KG-H2) C C ANCOSH2STL = 0.31 C ANCOSH2STH = 0.31 C ANCOSH2STL = TANKCOSTL * (FINSTALL*H2STFACSL + H2STOROM) ANCOSH2STH = TANKCOSTH * (FINSTALH*H2STFACSH + H2STOROM) C C ***************************************************************************** C SUM H2 COSTS FOR ELECTROLYSIS, COMPRESSION, WATER, STORAGE C ***************************************************************************** C COSH2KGL = LO COST OF H2 ELECTROLYZER, COMPRESSOR, STORAGE, WATER ($/KG-H2) C DOESNT INCLUDE COST OF ELECTRICITY TO RUN ELECTROLYER OR COMPRESSOR C COSH2KGM = MN COST OF H2 ELECTROLYZER, COMPRESSOR, STORAGE, WATER ($/KG-H2) C COSH2KGH = HI COST OF H2 ELECTROLYZER, COMPRESSOR, STORAGE, WATER ($/KG-H2) C C OLD - FROM J05 EndUseforStorage.xlsx C = 1.158 - 3.57 $/KG-H2 TOTAL C = 0.352 - 2.367 $/KG-H2 FOR ELECTROLYZER C = 0.491 - 0.883 $/KG-H2 FOR COMPRESSOR C = 0.31 - 0.31 $/KG-H2 FOR STORAGE C = 0.0047 - 0.0094 $/KG-H2 FOR WATER C NEW C = 0.629 - 2.14 $/KG-H2 TOTAL C = 0.195 - 0.918 $/KG-H2 FOR ELECTROLYZER C = 0.148 - 0.596 $/KG-H2 FOR COMPRESSOR C = 0.281 - 0.612 $/KG-H2 FOR STORAGE (W/ DAYH2STOR=5) C = 0.0047 - 0.0094 $/KG-H2 FOR WATER C COSH2KGL = ANCOSELYZL + ANCOSWATL + ANCOSCOMPL + ANCOSH2STL COSH2KGH = ANCOSELYZH + ANCOSWATH + ANCOSCOMPH + ANCOSH2STH COSH2KGM = 0.5 * (COSH2KGL + COSH2KGH) C C COST OF COMPRESSOR+STORAGE ($0.80-$1.193/KG-H2) COMPARES W/$0.91-$1.48/KG-H2 C FOR COMPRESSOR, STORAGE, DISPENSER, ELECTRICAL, COOLING, INSTALLATION IN C 2014 FROM TABLE 12 OF https://www.nrel.gov/docs/fy14osti/58564.pdf C ***************************************************************************** C SUM CAPITAL COST OF H2 PER KG C ***************************************************************************** C ELYZPKGL = LOW ELECTROLYZER CAPITAL COST ($/KG-H2/YR) C ELYZPKGH = HI ELECTROLYZER CAPITAL COST ($/KG-H2/YR) C COMPCKGL = LOW COMPRESSOR CAPITAL COST ($/KG-H2/YR) C COMPCKGH = HI COMPRESSOR CAPITAL COST ($/KG-H2/YR) C TANKCOSTL = LOW CAP COST OF H2 TANK ($/KG-H2/YR) C WHERE KG-H2/YR IS ALL H2 PROD IN YEAR C TANKCOSTH = HI CAPITAL COST OF H2 TANK ($/KG-H2/YR) C WHERE KG-H2/YR IS ALL H2 PROD C CAPH2PKGL = LO H2 ELECTROLYZER, COMPRESSOR, STORAGE CAP COST ($/KG-H2/YR) C CAPH2PKGM = MID H2 ELECTROLYZER, COMPRESSOR, STORAGE CAP COST ($/KG-H2/YR) C CAPH2PKGH = HI H2 ELECTROLYZER, COMPRESSOR, STORAGE CAP COST ($/KG-H2/YR) C CAPH2PKGL = ELYZPKGL + COMPCKGL + TANKCOSTL CAPH2PKGH = ELYZPKGH + COMPCKGH + TANKCOSTH CAPH2PKGM = 0.5 * (CAPH2PKGL + CAPH2PKGH) C C ***************************************************************************** C DETERMINE GMT TIME CORRESPONDING TO EACH LOADMATCH TIME STEP C ***************************************************************************** C INITYLOAD = INITIAL YEAR (2006-2016 CURRENTLY) OF LOAD DATA USED. C IF ONLY 1 YEAR OF LOAD DATA --> INITYLOAD=IFINYLOAD=IBEGYLOAD C = 2006 AND IFCONUS=1 OR GRIDLOAD='CONUS' C = 2008 FOR GRIDLOAD='AFRICA" SINCE THAT IS YEAR DATA FOR C IFINYLOAD = FINAL YEAR (2006-2016 CURRENTLY) OF LOAD DATA USED C IF ONLY 1 YEAR OF LOAD DATA --> INITYLOAD=IFINYLOAD=IBEGYLOAD C = 2007 AND IFCONUS=1 OR GRIDLOAD='CONUS' C = 2008 FOR GRIDLOAD='AFRICA" SINCE THAT IS YEAR DATA FOR C IBEGYLOAD = YEAR BETWEEN AND INCLUSIVE OF INITYLOAD AND IFINYLOAD C THAT LOAD DATA STARTS. SO, FOR EXAMPLE, IF C IF ONLY 1 YEAR OF LOAD DATA --> INITYLOAD=IFINYLOAD=IBEGYLOAD C SUPPOSE INITYLOAD = 2006 AND IFINYLOAD=2007 AND NYEARS=6 C AND IBEGYLOAD = 2007, THEN LOAD DATA USED IN THE FOLLOWING ORDER: C 2007 2006 2007 2006 2007 2006 . C SUPPOSE INITYLOAD = 2013 AND IFINYLOAD=2015 AND NYEARS=6 C AND IBEGYLOAD=2013 THEN ORDER IS: 2013 2014 2015 2013 2014 C NHYEAR = NUMBER OF HOURS PER YEAR OF SIMULATION (EITHER 8760 OR 8784) C NHYCUM = CUMULATIVE NUMBER OF HOURS OF SIMULATION PRIOR TO JAN 1 0 GMT C OF CURRENT I=1,NYEARS YEAR C ILOAD = COUNTS NUMBER OF HOURS OF LOAD DATA = 365x24=8760 OR 366x24=8784 C MXYLOAD = MAX NUMBER OF YEARS OF LOAD DATA (11 = 2006 TO 2016) IN FILES C LOADYR = ACTUAL YEAR OF LOAD DATA (2006 TO 2016) C IYLOAD = 1..MXYLOAD YEAR OF LOAD DATA (MXYLOAD = 11: 2006 TO 2016) C FOR CURRENT I=1, NYEARS YEAR OF SIMULATION C MXHPYEAR = NUMBER OF HOURS PER YEAR FOR LEAP YEARS = 8784 C AHRSIM = CURRENT GMT HOUR OF SIM CORRESPONDING TO LOAD DATA VALUE C (0.5 = 0-1 GMT JAN 1) C NHRSIM = TOTAL NUMBER OF HOURS OF MODEL SIMULATION HERE C FHOURHR = HIGH-RES TIME STEP (DTHRES) AS FRACTION OF AN HOUR C LOADYR = IBEGYLOAD - 1 AHRSIM = -0.5 FHOURHR = DTHRES / 3600. DTIME = -1.1*FHOURHR J = 0 C DO I = 1, NYEARS LOADYR = LOADYR + 1 C IF (LOADYR.GT.IFINYLOAD) THEN LOADYR = INITYLOAD ENDIF C IYLOAD = LOADYR - IYBEFORE C KHOUR = 0 DO M = 1, MXHPYEAR C C SKIP LEAP DAY FOR NON LEAP YEARS C HOURS 1417-1440 OF A YEAR CORRESPOND TO FEBRUARY 29 (LEAP DAY)` C C KDAY = 1..NDAYYR DAY OF YEAR (1..365 NONLEAP YEARS, 1..366 LEAP YEARS) C KHOUR = 1..8760 HOURS OF YEAR FOR NON-LEAP YEARS; 1..8784 FOR LEAP YEARS C MXHPDAY = NUMBER OF HOURS PER DAY (24) C TIMLOAD = GMT HOUR OF SIMULATION (0. = 0-1 GMT JANUARY 1; 1.5 CORRESPONDS C TO 1-2 GMT JAN 1, 2.5 = 2-3 GMT JAN1 - CORRESPONDS TO C TIME OF LOAD DATA. J VARIES FROM 1..NHRSIM C IF (NHYEAR(I).EQ.MXHPYEAR.OR.M.LT.1417.OR.M.GT.1440) THEN J = J + 1 KHOUR = KHOUR + 1 KDAY = 1 + (KHOUR-1)/MXHPDAY AHRSIM = AHRSIM + 1. C IF (J.EQ.1) THEN TIMLOAD(J) = 0. ELSE TIMLOAD(J) = AHRSIM ENDIF C C DTHRES = 30 = HIGH-RESOLUTION TIME STEP (S) C FHOURHR = HIGH-RES TIME STEP (DTHRES) AS FRACTION OF AN HOUR C NTSPERHR = 120 = NUMBER OF 30-SECOND TIMES STEPS PER HR C TLOADHR = GMT HOUR OF SIM (-0.000833 = -15 TO +15 SEC JANUARY 1) CORRESPONDING TO C TIME OF HIGH-RESOLUTION LOAD DATA. VARIES FROM -0.000833...NHRSIM-0.0091667 C 0.0091667=1.1*FHOURHR C LJ = (J - 1) * NTSPERHR DO LH = 1, NTSPERHR DTIME = DTIME + FHOURHR LJ = LJ + 1 TLOADHR(LJ) = DTIME ENDDO C ENDIF C ENDDO C ENDDO M = 1, MXYPYEAR C ENDDO C ENDDO I = 1, NYEARS C C ***************************************************************************** C READ TIME-DEPENDENT WIND, SOLAR SUPPLY DATA FROM GATOR-GCMOM C ***************************************************************************** C WTIME = GMT DAYS PAST START OF SIMULATION, WHICH IS 12 GMT JAN 1, 2012 C DOMAIN = EITHER COUNTRY NAME OR TOTAL DOMAIN C CURLTWTB = CURRENT POWER GENERATION BY ONSHORE WIND TURBINES (TW) OVER C COUNTRY BEFORE T&D LOSSES BUT ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY EACH TURBINE. C CUROTWTB = CURRENT POWER GENERATION BY OFFSHORE WIND TURBINES (TW) OVER C COUNTRY BEFORE T&D LOSSES BUT ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY EACH TURBINE. C CURTWPVR = CURRENT ELEC GENERATED BY RES/COM/GOV ROOFTOP PV (TW) C (BEFORE T&D LOSSES) SUMMED OVER COUNTRY C CURTWPVU = CURRENT ELEC GENERATED BY UTILITY PV (TW) C (BEFORE T&D LOSSES) SUMMED OVER COUNTRY C CURTWCSP = CURRENT ELEC GENERATED BY SOLAR CSP (TW) (BEFORE T&D LOSSES) C SUMMED OVER COUNTRY C CURTWSTH = CURRENT HEAT GENERATED BY SOLAR COLLECTORS (TW) (BEFORE T&D LOSSES) C SUMMED OVER COUNTRY C CURTWHOT = CURRENT HEAT DEMAND (TW) FOR BUILDINGS IN COUNTRY C CURTWCLD = CURRENT COLD DEMAND (TW) FOR BUILDINGS IN COUNTRY C CUMLTWTB = CUMULATIVE POWER GEN BY ONSHORE WIND TURBINES (TW) OVER COUNTRY C CUMOTWTB = CUMULATIVE POWER GEN BY OFFHORE WIND TURBINES (TW) OVER COUNTRY C CUMTWRAV = CUM AVG ELEC GENERATED BY ROOFTOP PV (TW) (BEFORE T&D LOSSES) C SUMMED OVER COUNTRY C CUMTWUAV = CUM AVG ELEC GENERATED BY UTILITY PV (TW) (BEFORE T&D LOSSES) C SUMMED OVER COUNTRY C CUMTWCAV = CUM AVG ELEC GENERATED BY CSP (TW) (BEFORE T&D LOSSES) C SUMMED OVER COUNTRY C CUMTWSAV = CUM AVG HEAT ENERATED BY SOLAR COLLECTORS (TW) (BEFORE T&D LOSSES) C SUMMED OVER COUNTRY C CUMTWHOT = CURRENT HEAT DEMAND (TJ=TWxS) FOR BUILDINGS IN COUNTRY C CUMTWCLD = CURRENT COLD DEMAND (TJ=TWxS) FOR BUILDINGS IN COUNTRY C IFONE = 0 IWWS = 0 IFIRSTEP = 1 IENDSTEP = 1 IYRCOUNT = 1 ICUMDAYYR = NDAYYR(IYRCOUNT) C WTLAST = -1. CURTWHOT = 0. CURTWCLD = 0. C 130 DO J = 1, NUMGRIDS REGONWIND(J) = 0. REGOFWIND(J) = 0. REGROOFPV(J) = 0. REGUTILPV(J) = 0. REGCSP( J) = 0. REGSTHERM(J) = 0. REGHEAT( J) = 0. REGCOLD( J) = 0. ENDDO C C READ TIME-DEPENDENT GATOR-GCMOM WIND, SOLAR DATA FROM wwssupworld C 131 IF (IFGATHEAT.GE.1) THEN READ(KWWS,132,END=150) WTIME, DOMAIN, 1 CURLTWTB,CUROTWTB,CURTWPVR,CURTWPVU,CURTWCSP,CURTWSTH, 1 CURTWHOT,CURTWCLD ELSE READ(KWWS,*,END=150) DUMMY, WTIME, DOMAIN, 1 CURLTWTB,CUROTWTB,CURTWPVR,CURTWPVU,CURTWCSP,CURTWSTH C READ(KWWS,133,END=150) WTIME, DOMAIN, C 1 CURLTWTB,CUROTWTB,CURTWPVR,CURTWPVU,CURTWCSP,CURTWSTH ENDIF C 132 FORMAT(6X, 0PF14.8,1X,A14,8(1PE15.8)) C133 FORMAT(6X, 0PF14.8,1X,A14,6(1PE15.8)) 134 FORMAT('WWST: ',0PF14.8,1X,A14,8(1PE15.8)) 136 FORMAT('WWST: ',0PF14.8,1X,A14,6(1PE15.8)) C C ***************************************************************************** C SET INDEX NUMBER FOR TIME STEPS C ***************************************************************************** C IWWS = COUNTS THE NUMBER OF TIME STEPS OF THE LOADMATCH SIMULATION C IENDSTEP = 1: THIS ROW ENTRY IS THE LAST ENTRY OF A TIME STEP C = 0: THIS ROW ENTRY IS NOT THE LAST ENTRY OF A TIME STEP C IF (IENDSTEP.EQ.1) THEN IWWS = IWWS + 1 C IF (IWWS.GT.MXWWS) THEN WRITE(IOUT,*)'POWERWORLD: IWWS>MXWWS ',IWWS, MXWWS STOP ENDIF C C ***************************************************************************** C IDENTIFY CURRENT TIME C ***************************************************************************** C IWWS = COUNTS THE NUMBER OF TIME STEPS OF THE LOADMATCH SIMULATION C TIMWWS = GMT HOURS PAST JAN. 1, 2050 (INITYEAR) AT 0 GMT FOR WWS SUPPLY DATA C WTIME = GMT DAYS PAST START OF SIMULATION, WHICH IS 12 GMT JAN 1, 2050 C OFFSET = TIME (HOURS) ADDED TO TIMWWS SO THAT IT IS CONSISTENT WITH TIMLOAD C SINCE SIMULATION FOR TIMWWS STARTED AT 12 GMT FIRST DAY, WHICH C ORIGINALLY CORRESPONDS TO TIMWWS=0. OFFSET MAKES THIS TIMWWS=0.5 C ISUPYEAR = 1: START SIM WITH FIRST YEAR OF MODEL OUTPUT WIND/SOLAR FIELDS C = 2: START SIM WITH SECOND YEAR OF MODEL OUTPUT WIND/SOLAR FIELDS C TIMORIG = ORIGINAL GMT DAYS PAST START OF SIMULATION FROM KWWS C NDAYYR = NUMBER OF DAYS PER YEAR OF SIMULATION (EITHER 365 OR 366) C NHYEAR = NUMBER OF HOURS PER YEAR OF SIMULATION (EITHER 8760 OR 8784) C NHCUM = CUMULATIVE NUMBER OF HOURS OF SIMULATION FROM START TO END C OF CURRENT YEAR I=1..NYEARS. THUS, NHCUM(1)=NHYEAR(1), C NHCUM(2)=NHYEAR(1) + NHYEAR(2), ETC. C TIMLOAD = GMT HOUR OF SIMULATION (0. = 0-1 GMT JANUARY 1; 1.5 CORRESPONDS C TO 1-2 GMT JAN 1, 2.5 = 2-3 GMT JAN1 - CORRESPONDS TO C TIME OF LOAD DATA. J VARIES FROM 1..NHRSIM C IFONE = 1: THEN THIS IS FIRST TIME>0 READ IN C C SET WTIME TO SMALL VALUE FIRST TIME STEP FOR HIGH-RESOLUTION DOMAINS C TO ENSURE FIRST TIME STEP IS INCLUDED C IF (WTIME.EQ.0.) WTIME = SMAL30 C TIMORIG(IWWS) = WTIME TIMWWS( IWWS) = WTIME * HRSPDAY + OFFSET C C ***************************************************************************** C DETERMINE YEAR OF TIME STEP IWWS C ***************************************************************************** C IYRCOUNT = CURRENT YEAR 1..MXYEAR OF SIMULATION C ICUMDAYYR = CUMULATIVE NUMBER OF DAYS FROM BEGIN OF SIM TO END C OF CURRENT YEAR IYRCOUNT C IYRWWS = YEAR 1..MXYEAR CORRESPONDING TO EACH J=1..IWWS TIMESTEP C IF (WTIME.GT.FLOAT(ICUMDAYYR)) THEN IYRCOUNT = IYRCOUNT + 1 ICUMDAYYR = ICUMDAYYR + NDAYYR(IYRCOUNT) ENDIF IYRWWS(IWWS) = IYRCOUNT C IF (ISUPYEAR.GE.2) THEN IF (TIMWWS(IWWS).LT.NHCUM(ISUPYEAR-1)) THEN TIMWWS( IWWS) = 0. ENDIF ENDIF C C HR1, HR2 = CURRENT & PREV TIME (HOURS) FOR EACH WWS SUPPLY TIME INTERVAL C IF (IFREWRITE.EQ.2) THEN IF (TIMWWS(IWWS).GT.0.AND.IFONE.NE.-1) THEN IFONE = IFONE + 1 C C FIRST STEP IF (IFONE.EQ.1) THEN HR1 = 0. HR2 = 0. C C MIDDLE STEPS ELSEIF (TIMWWS(IWWS).LT.TIMLOAD(NHRSIM)) THEN HR1 = TIMWWS(IWWS-1) HR2 = TIMWWS(IWWS) C C LAST STEP ELSE IFONE = -1 HR1 = TIMWWS(IWWS-1) HR2 = TIMWWS(IWWS) ENDIF C ENDIF IFONE C ELSE HR1 = 0. HR2 = 0. ENDIF C ENDIF TIMWWS... ENDIF C ENDIF IFREWRITE C ENDIF C ENDIF IENDSTEP=1 C C ***************************************************************************** C ELIMINATE REPEATED TIMES DUE TO GATOR-GCMOM CODE RESTARTS C ***************************************************************************** C IFREWRITE = 1: REWRITE KWWS (wwssupworld.dat) FILE TO C KWW2 (wwssupreform.dat) ELIMINATING REDUNDANT TIMES C AND ELIMINATING AVERAGE VALUES (KEEPING INSTANT VALUES ONLY) C WHEN THIS IS COMPLETE, USE KWW2 FILE AS INPUT FOR IFREWRITE=2 C APPLIES WHEN IFCONUS=0. WHEN IFCONUS=1, READ C wwssupconus.dat FROM PATHTEMP AND WRITE TO PATHHOME C AFTER FINISHINING IFREWRITE=1, CAN ERASE wwssupworld.dat C IENDSTEP = 1: THIS ROW ENTRY IS THE LAST ENTRY OF A TIME STEP C = 0: THIS ROW ENTRY IS NOT THE LAST ENTRY OF A TIME STEP C IF (DOMAIN.EQ.' DOMAIN'.OR. 1 (IFREWRITE.EQ.3.AND.DOMAIN.EQ.GRIDUSE)) THEN IENDSTEP = 1 ELSE IENDSTEP = 0 ENDIF C IF (IFREWRITE.EQ.1) THEN IF (WTIME.GT.WTLAST) THEN C IF (IFGATHEAT.GE.1) THEN WRITE(KWW2,134) WTIME,DOMAIN, 1 CURLTWTB,CUROTWTB,CURTWPVR,CURTWPVU,CURTWCSP,CURTWSTH, 1 CURTWHOT,CURTWCLD ELSE WRITE(KWW2,136) WTIME,DOMAIN, 1 CURLTWTB,CUROTWTB,CURTWPVR,CURTWPVU,CURTWCSP,CURTWSTH ENDIF C C UPDATE WTLAST WHEN REACH LAST ENTRY OF TIME STEP C OCCURS EACH TIME STEP WHEN IFCONUS=1; AT END OF ALL COUNTRIES WHEN IFCONUS=0 C IF (IENDSTEP.EQ.1) WTLAST = WTIME C ENDIF GOTO 131 C ELSEIF (WTIME.LE.WTLAST) THEN WRITE(IOUT,*)'POWERWORLD:WTIME<=WTLAST. REMOVE REDUNDANT TIMES ', 1 'IN KWWS ',WTIME,WTLAST STOP ENDIF C C ***************************************************************************** C FOR 143-COUNTRIES, AGGEGATE WIND, SOLAR SUPPLY FROM GATOR-GCMOM OVER ALL C COUNTRIES IN GRID REGION 'GRIDUSE' C ***************************************************************************** C SUMONWIND = CURRENT TW ONSHORE WIND, SUMMED OVER ALL COUNTRIES IN GRID REGION C AS DETERMINED FROM GATOR-GCMOM SIMULATIONS, AT TIME WTIME C BEFORE T&D LOSSES BUT ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY EACH TURBINE. C WHEN IFCONUS=1, IT IS THE CONUS-AGGREGATE VALUE. C SUMOFWIND = CURRENT TW OFFSHORE WIND, SUMMED OVER ALL COUNTRIES IN GRID REGION C BEFORE T&D LOSSES BUT ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY EACH TURBINE. C SUMROOFPV = CURRENT TW ROOF PV WIND, SUMMED OVER ALL COUNTRIES IN GRID REGION C (BEFORE T&D LOSSES) C SUMUTILPV = CURRENT TW UTILITY PV, SUMMED OVER ALL COUNTRIES IN GRID REGION C (BEFORE T&D LOSSES) C SUMCSP = CURRENT TW CSP, SUMMED OVER ALL COUNTRIES IN GRID REGION C (BEFORE T&D LOSSES) C SUMSTHERM = CURRENT TW SOLAR THERMAL, SUMMED OVER ALL COUNTRIES IN GRID REGION C (BEFORE T&D LOSSES) C SUMHEAT = CURRENT BUILDING END-USE HEAT LOAD (TW) FOR REGION FROM GATOR-GCMOM C SUMCOLD = CURRENT BUILDING END-USE COLD LOAD (TW) FOR REGION FROM GATOR-GCMOM C IF (IFCONUS.EQ.1.OR.IFREWRITE.EQ.3) THEN WTLAST = WTIME SUMONWIND(IWWS) = CURLTWTB SUMOFWIND(IWWS) = CUROTWTB SUMROOFPV(IWWS) = CURTWPVR SUMUTILPV(IWWS) = CURTWPVU SUMCSP( IWWS) = CURTWCSP SUMSTHERM(IWWS) = CURTWSTH SUMHEAT( IWWS) = CURTWHOT SUMCOLD( IWWS) = CURTWCLD C ELSE C ELSEIF CONUS=0 OR IFREWRITE=1 OR 2 C C ***************************************************************************** C USE IFREWRITE=2 TO CREATE A SMALLER FILE WITH JUST INFORMATION SUMMED C OVER GRID REGION TO AVOID NEEDING TO RE-READ DATA FOR ALL 143 COUNTRIES C EACH TIME STEP OR TO SUM DATA OVER GRID REGION EACH TIME STEP. C ***************************************************************************** C IFREWRITE = 1: REWRITE KWWS (wwssupworld.dat) FILE TO C KWW2 (wwssupreform.dat) ELIMINATING REDUNDANT TIMES C AND ELIMINATING AVERAGE VALUES (KEEPING INSTANT VALUES ONLY) C WHEN THIS IS COMPLETE, USE KWW2 FILE AS INPUT FOR IFREWRITE=2 C APPLIES WHEN IFCONUS=0. WHEN IFCONUS=1, READ C wwssupconus.dat FROM PATHTEMP AND WRITE TO PATHHOME C = 2: APPLIES ONLY WHEN IFCONUS=0: READ KWW2 (wwssupreform.dat), C SUM VALUES EACH TIME STEP AMONG ALL COUNTRIES IN GRID C REGION GRIDUSE, REWRITE SUMMED VALUES TO A SMALLER FILE C KWW3 (wwssupworld.REGION) (FOR EACH REGION C ALSO CALCULATE CAPACITY FACTOR (CF) OF ONSHORE, OFFSHORE WIND; C ROOFTOP & UTILITY PV AND CSP FROM GATOR-GCMOM SIMULATIONS C BY COUNTRY. C = 3: APPLIES ONLY WHEN IFCONUS=0: C READ DATA FROM FILE wwssupworld.REGION RATHER THAN C wwssupworld.dat FOR ONE GRID REGION. C FILE KWW3 CONTAINS ONLY ONE LINE OF DATA FOR EACH TIME STEP, C WHICH ARE DATA SUMMED OVER ALL COUNTRIES IN GRID REGION GRIDUSE C = 0: READ AND PROCESS FILE KWWS C APPLIES WHEN IFCONUS=1 OR 0 C (WHEN IFCONUS=0, READS ALL-COUNTRY DATA) C C ***************************************************************************** C ENTER THIS IF AFTER REACHING LAST COUNTRY IN KWWS FILE C ***************************************************************************** C DOMAIN = ' DOMAIN' IS AN ENTRY SUMMARIZING THE DATA FOR THE 143 C COUNTRIES SO IS NOT USED WHEN IFCONUS=0 SINCE THE CODE IS AGGREGATING C OVER ALL COUNTRIES WITHIN GRID REGION IGRIDUSE. IF ALL 143 COUNTRIES ARE C INCLUDED IN GRID REGION IGRIDUSE, THIS GIVES THE EXACT SAME RESULT C AS READING IN THE VALUES FOR ' DOMAIN' C ***************************************************************************** C IF (IENDSTEP.EQ.1) THEN WTLAST = WTIME C ***************************************************************************** C ENSURE THAT ALL COUNTRIES IN EACH REGION FROM countrystats.dat ARE C ALSO TREATED IN wwssupworld FILE C ***************************************************************************** C FOR EUROPE, KNT=NCOUNGRID-2 BECAUSE IN GATOR, KOSOVO+MONTENEGRO SUMMED INTO SERBIA C FOR AFRICA, KNT=NCOUNGRID-1 BECAUSE IN GATOR, NO DATA FOR SOUTH SUDAN SO AVERAGED IN C (PREV, NO DATA FOR NIGER IN GATOR-GCMOM BUT NOW IS) C FOR SOUTH AMERICA, KNT=NCOUNGRID-1 BECAUSE NO DATA FOR SURINAME SO AVERAGED IN C (PREVIOUSLY, NO DATA FOR SURINAME IN GATOR-GCMOM, BUT NOW IS) C C WHEN A COUNTRY IN countrystats.dat IS NOT IN wwssupworld, THEN THE C WIND, SOLAR POWER OUTPUTS FROM THAT COUNTRY ARE SCALED FROM THE C COUNTRIES WITH DATA USING RATONSHW, RRATOFFSHW, RATROOFPV, ETC. C AS SUCH, WINDS, SOLAR ASSUMED AVERAGE FOR THE GRID REGION C ***************************************************************************** C IFIRSTEP = 1 DURING FIRST TIME STEP OF READING KWWS FILE C ISUSED = 1 IF COUNTRY DATA FOUND IN KWWS FILE C = 0 IF DATA NOT FOUND C C ENTER HERE IF IFREWRITE = 0 OR 2 C IF (IFIRSTEP.EQ.1) THEN IFIRSTEP = 0 C DO J = 1, NUMGRIDS KOUNT = 0 C DO I = 1, NCOUNGRID(J) IC = NUMCOUNGR(J,I) IF (ISUSED(IC).GT.0) KOUNT = KOUNT + 1 ENDDO C IF ( 1 (NAMEGRID(J).EQ.'EUROPE'.AND.KOUNT.NE.NCOUNGRID(J)-2).OR. 1 (NAMEGRID(J).EQ.'AFRICA'.AND.KOUNT.NE.NCOUNGRID(J)-1).OR. 1 (NAMEGRID(J).NE.'EUROPE'.AND.NAMEGRID(J).NE.'AFRICA'.AND. 1 KOUNT.NE.NCOUNGRID(J))) THEN C WRITE(IOUT,*)'POWERWORLD: MISSING DATA FOR COUNTRY IN KWWS ', 1 KOUNT,NCOUNGRID(J)-2,NAMEGRID(J) C DO I = 1, NCOUNGRID(J) IC = NUMCOUNGR(J,I) WRITE(IOUT,*) I,NAMCOUNGR(J,I),ISUSED(IC) ENDDO C STOP C ENDIF ENDDO C ENDIF C ENDIF IFIRSTEP C C REWRITE DATA SUMMED OVER COUNTRIES IN EACH REGION FROM KWWS TO KWW3 C IF (IFREWRITE.EQ.2) THEN IF (IFGATHEAT.GE.1) THEN DO J = 1, NUMGRIDS WRITE(KWW3+J-1,134) WTIME,NAMEGRID(J), 1 REGONWIND(J),REGOFWIND(J),REGROOFPV(J),REGUTILPV(J), 1 REGCSP( J),REGSTHERM(J),REGHEAT( J),REGCOLD( J) ENDDO ELSE DO J = 1, NUMGRIDS WRITE(KWW3+J-1,136) WTIME,NAMEGRID(J), 1 REGONWIND(J),REGOFWIND(J),REGROOFPV(J),REGUTILPV(J), 1 REGCSP( J),REGSTHERM(J) ENDDO ENDIF C GOTO 130 ENDIF C C CONTINUE PROCESSING DATA FOR CURRENT TIME STEP ONCE COUNTRIES SUMMED C PASS THROUGH HERE WHEN IFREWRITE = 0 ONLY C SUMONWIND(IWWS) = REGONWIND(IGRIDUSE) SUMOFWIND(IWWS) = REGOFWIND(IGRIDUSE) SUMROOFPV(IWWS) = REGROOFPV(IGRIDUSE) SUMUTILPV(IWWS) = REGUTILPV(IGRIDUSE) SUMCSP( IWWS) = REGCSP( IGRIDUSE) SUMSTHERM(IWWS) = REGSTHERM(IGRIDUSE) SUMHEAT( IWWS) = REGHEAT( IGRIDUSE) SUMCOLD( IWWS) = REGCOLD( IGRIDUSE) C GOTO 142 C ENDIF C ENDIF IENDSTEP=1 C C ***************************************************************************** C PASS THROUGH HERE WHEN IFREWRITE = 0 OR 2 C ***************************************************************************** C REGONWIND = CURRENT TW ONSHORE WIND, SUMMED OVER ALL COUNTRIES IN GRID REGION C AS DETERMINED FROM GATOR-GCMOM SIMULATIONS, AT TIME WTIME C BEFORE T&D LOSSES BUT ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY EACH TURBINE. C REGOFWIND = CURRENT TW OFFSHORE WIND, SUMMED OVER ALL COUNTRIES IN GRID REGION C BEFORE T&D LOSSES BUT ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY EACH TURBINE. C REGROOFPV = CURRENT TW ROOF PV WIND, SUMMED OVER ALL COUNTRIES IN GRID REGION C (BEFORE T&D LOSSES) C REGUTILPV = CURRENT TW UTILITY PV, SUMMED OVER ALL COUNTRIES IN GRID REGION C (BEFORE T&D LOSSES) C REGCSP = CURRENT TW CSP, SUMMED OVER ALL COUNTRIES IN GRID REGION C (BEFORE T&D LOSSES) C REGSTHERM = CURRENT TW SOLAR THERMAL, SUMMED OVER ALL COUNTRIES IN GRID REGION C (BEFORE T&D LOSSES) C REGHEAT = CURRENT TW BUILDING HEAT LOAD, SUMMED OVER ALL COUNTRIES IN GRID REGION C REGCOLD = CURRENT TW BUILDING COLD LOAD, SUMMED OVER ALL COUNTRIES IN GRID REGION C DO J = 1, NUMGRIDS DO I = 1, NCOUNGRID(J) IF (DOMAIN.EQ.NAMCOUNGR(J,I)) THEN IC = NUMCOUNGR(J,I) ISUSED(IC) = 1 REGONWIND(J) = REGONWIND(J) + CURLTWTB REGOFWIND(J) = REGOFWIND(J) + CUROTWTB REGROOFPV(J) = REGROOFPV(J) + CURTWPVR REGUTILPV(J) = REGUTILPV(J) + CURTWPVU REGCSP( J) = REGCSP( J) + CURTWCSP REGSTHERM(J) = REGSTHERM(J) + CURTWSTH REGHEAT( J) = REGHEAT( J) + CURTWHOT REGCOLD( J) = REGCOLD( J) + CURTWCLD ENDIF ENDDO ENDDO C C ***************************************************************************** C READ WIND/SOLAR DELIVERED POWER BY COUNTRY FROM 3-D GATOR-GCMOM FOR C CALCULATING CAPACITY FACTOR WITH, THEN STOP. THESE CFS CAN BE USED IN C SPREADSHEET TO RE-ESTIMATE NUMBERS OF WIND/SOLAR DEVICES NEEDED IN COUNTRY C ***************************************************************************** C NCOUNTRY = NUMBER OF COUNTRIES WHEN IFCONUS=0 C NAMECOUN = NAME OF EACH 1..NCOUNTRY COUNTRY C POWCOUNTRY = CURRENT POWER GENERATION BY ENERGY DEVICE (TW) IN C COUNTRY IC BEFORE T&D LOSSES BUT ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY TURBINES. C ENCOUNTRY = CUMULATIVE ENERGY PRODUCTION (TWH) OVER SIMULATION FROM C ENERGY DEVICE IN COUNTRY IC BEFORE T&D LOSSES BUT ACCOUNTING C FOR EXTRACTION OF POWER FROM WIND BY TURBINES C HR1, HR2 = CURRENT TIME INCREMENT (HOURS) FOR EACH WWS SUPPLY TIME INTERVAL C IF (IFREWRITE.EQ.2.AND.(HR1.NE.0.OR.HR2.NE.0.)) THEN DO IC = 1, NCOUNTRY IF (DOMAIN.EQ.NAMECOUN(IC)) THEN HRDIF = HR2 - HR1 C C CALCULATE ENCOUNTRY WITH VALUES FROM PREVIOUS AND CURRENT TIME STEP C ENCOUNTRY(IC,IONWIND) = ENCOUNTRY( IC,IONWIND) 1 + 0.5 * (POWCOUNTRY(IC,IONWIND) + CURLTWTB) * HRDIF ENCOUNTRY(IC,IOFFWIND) = ENCOUNTRY( IC,IOFFWIND) 1 + 0.5 * (POWCOUNTRY(IC,IOFFWIND) + CUROTWTB) * HRDIF ENCOUNTRY(IC,IRESPV) = ENCOUNTRY( IC,IRESPV) 1 + 0.5 * (POWCOUNTRY(IC,IRESPV) + CURTWPVR) * HRDIF ENCOUNTRY(IC,IUTILPV) = ENCOUNTRY( IC,IUTILPV) 1 + 0.5 * (POWCOUNTRY(IC,IUTILPV) + CURTWPVU) * HRDIF ENCOUNTRY(IC,ICSPSTOR) = ENCOUNTRY( IC,ICSPSTOR) 1 + 0.5 * (POWCOUNTRY(IC,ICSPSTOR) + CURTWCSP) * HRDIF ENCOUNTRY(IC,ISOLTHM) = ENCOUNTRY( IC,ISOLTHM) 1 + 0.5 * (POWCOUNTRY(IC,ISOLTHM) + CURTWSTH) * HRDIF C C UPDATE POWCOUNTRY (TW) WITH NEW VALUES FROM CURRENT TIME STEP C POWCOUNTRY(IC,IONWIND) = CURLTWTB POWCOUNTRY(IC,IOFFWIND) = CUROTWTB POWCOUNTRY(IC,IRESPV) = CURTWPVR POWCOUNTRY(IC,IUTILPV) = CURTWPVU POWCOUNTRY(IC,ICSPSTOR) = CURTWCSP POWCOUNTRY(IC,ISOLTHM) = CURTWSTH ENDIF C ENDIF DOMAIN=NAMECOUN C ENDDO C ENDDO IC = 1, NCOUNTRY C ENDIF C ENDIF IFREWRITE=2.AND.(HR1.NE.0.OR.HR2.NE.0.)) C C READ ANOTHER COUNTRY FOR CURRENT TIME STEP C GOTO 131 C 142 CONTINUE C CONTINUE TO PROCESS SUPPLIES FOR ONE TIME STEP C ENDIF C ENDIF IFCONUS=0 C C PROCESS ANOTHER TIME STEP OF WIND, SOLAR DATA C GOTO 130 C C FINISH READING KWWS C 150 CLOSE(KWWS) C IF (IFREWRITE.EQ.1) THEN CLOSE(KWW2) STOP ELSEIF (IFREWRITE.EQ.2) THEN DO J = 1, NUMGRIDS CLOSE(KWW3+J-1) ENDDO ENDIF C ENDIF IFREWRITE C C ***************************************************************************** C DETERMINE TIME STEPS C ***************************************************************************** C IWWS = NUMBER OF TIME STEPS OF THE LOADMATCH SIMULATION C TIMWWS = GMT HOURS PAST JAN. 1, 2050 (INITYEAR) AT 0 GMT FOR WWS SUPPLY DATA C PERHRS = TIME INCREMENT (HOURS) FOR EACH WWS SUPPLY TIME INTERVAL C IFONE = 1: THEN THIS IS FIRST TIME>0 READ IN C TIMLOAD = GMT HOUR OF SIMULATION (0.5 = 0-1 GMT JANUARY 1) CORRESPONDING TO C TIME OF LOAD DATA. VARIES FROM 0.5..NHRSIM-0.5 C HEATMIN = MIN TW OF HEAT EACH TIME STEP TO ENSURE SOME WATER HEAT C COLDMIN = MIN TW OF COLD EACH TIME STEP TO ENSURE SOME REFRIGERATION C HEATADD = SUM OF SUMHEAT (TWH) OVER ALL IWWS TIME STEPS C COLDADD = SUM OF SUMCOLD (TWH) OVER ALL IWWS TIME STEPS C IFONE = 0 AIFCOLD = 0. AIFWARM = 0. ADDHOURS = 0. HEATADD = 0. COLDADD = 0. C DO J = 1, IWWS IF (TIMWWS(J).GT.0.AND.TIMWWS(J).LT.TIMLOAD(NHRSIM)) THEN IFONE = IFONE + 1 IYY = IYRWWS(J) IF (IFONE.EQ.1) THEN PERHRS(J) = 0.5 * (TIMWWS(J+1) - TIMWWS(J)) ELSEIF (J.EQ.IWWS) THEN PERHRS(J) = 0.5 * (TIMWWS(J) - TIMWWS(J-1)) ELSE PERHRS(J) = 0.5 * (TIMWWS(J+1) - TIMWWS(J-1)) ENDIF C HRSINYR( IYY) = HRSINYR(IYY) + PERHRS(J) ADDHOURS = ADDHOURS + PERHRS(J) C HEATADD = HEATADD + SUMHEAT(J) * PERHRS(J) COLDADD = COLDADD + SUMCOLD(J) * PERHRS(J) C IF (SUMHEAT(J).GT.0.) AIFWARM = AIFWARM + 1. IF (SUMCOLD(J).GT.0.) AIFCOLD = AIFCOLD + 1. C IF (PERHRS(J).LE.0.) THEN WRITE(IOUT,*)'POWERWORLD1: TIMWWS(J+1)0 ENDDO C ENDDO J = 1, IWWS C C SUMHEAT = CURRENT BUILDING END-USE HEAT LOAD (TW) FOR REGION FROM GATOR-GCMOM C SUMCOLD = CURRENT BUILDING END-USE COLD LOAD (TW) FOR REGION FROM GATOR-GCMOM C CURHEAT = CURRENT BUILDING END-USE HEAT LOAD (TW) FOR REGION FROM GATOR-GCMOM C CURCOLD = CURRENT BUILDING END-USE COLD LOAD (TW) FOR REGION FROM GATOR-GCMOM C AVHEATLD = INITIALLY TWH-HEAT LOAD FOR BUILDINGS OVER ENTIRE KWWS DATASET C AVCOLDLD = INITIALLY TWH-COLD LOAD FOR BUILDINGS OVER ENTIRE KWWS DATASET C ADDHOURS = HOURS OF DATA OVER ENTIRE KWWS DATASET C HRSINYR = HOURS OF DATA DURING EACHYEAR IYY C HEATMIN = MIN TW OF HEAT EACH TIME STEP TO ENSURE SOME WATER HEAT C COLDMIN = MIN TW OF COLD EACH TIME STEP TO ENSURE SOME REFRIGERATION C FRCOLD = FRACTION OF TIME STEPS WHERE SUMCOLD > 0 C FRWARM = FRACTION OF TIME STEPS WHERE SUMWARM > 0 C COLDFAC = FACTOR TO DECREASE COLDMIN BY WHEN FEW HOURS OF COOLING DURING YEAR C OTHERWISE COOLING SPIKE DURING A FEW HOURS OF YEAR C WARMFAC = FACTOR TO DECREASE HEATMIN BY WHEN FEW HOURS OF HEATING DURING YEAR C OTHERWISE WARMING SPIKE DURING A FEW HOURS OF YEAR C IF (IFGATHEAT.EQ.1) THEN FRCOLD = AIFCOLD / IFONE FRWARM = AIFWARM / IFONE C IF (FRCOLD.GT.0.3) THEN COLDFAC = 30. ELSEIF (FRCOLD.GT.0.1) THEN COLDFAC = 10. ELSEIF (FRCOLD.GT.0.01) THEN COLDFAC = 1. ELSE COLDFAC = 0.01 ENDIF C IF (FRWARM.GT.0.3) THEN WARMFAC = 30. ELSEIF (FRWARM.GT.0.1) THEN WARMFAC = 10. ELSEIF (FRWARM.GT.0.01) THEN WARMFAC = 1. ELSE WARMFAC = 0.01 ENDIF C HEATMIN = HEATADD / (WARMFAC * ADDHOURS) COLDMIN = COLDADD / (COLDFAC * ADDHOURS) C DO J = 1, IWWS IF (TIMWWS(J).GT.0.AND.TIMWWS(J).LT.TIMLOAD(NHRSIM)) THEN IYY = IYRWWS(J) CURHEAT( J) = MAX(SUMHEAT( J),HEATMIN) CURCOLD( J) = MAX(SUMCOLD( J),COLDMIN) AVHEATLD(IYY) = AVHEATLD(IYY) + CURHEAT( J) * PERHRS(J) AVCOLDLD(IYY) = AVCOLDLD(IYY) + CURCOLD( J) * PERHRS(J) ENDIF C ENDIF TIMWWS>0 ENDDO C ENDDO J = 1, IWWS C ENDIF C ENDIF IFGATHEAT=1 C C AVHEATLD = ANNUAL AVG BUILDING HEAT LOAD (TW) OVER ENTIRE KWWS DATASET C FROM GATOR-GCMOM. MAKE SURE NOT=0 SINCE COLD LOAD CALCULATED FROM THIS. C AVCOLDLD = ANNUAL AVG BUILDING COLD LOAD (TW) OVER ENTIRE KWWS DATASET C FROM GATOR-GCMOM. MAKE SURE NOT=0 SINCE HEAT LOAD CALCULATED FROM THIS. C IF (IFGATHEAT.EQ.1) THEN DO I = 1, NYEARS AVHEATLD(I) = AVHEATLD(I) / HRSINYR(I) AVCOLDLD(I) = AVCOLDLD(I) / HRSINYR(I) ENDDO ENDIF C C ***************************************************************************** C ESTIMATE FRACTION OF TOTAL AIR HEATING+COOLING THAT IS COOLING C ***************************************************************************** C ACFRACTOT = EST FRACTION OF TOTAL AIR HEATING + COOLING ENERGY THAT IS COOLING C ENERGY. DO NOT INCLUDE WATER HEATING OR REFRIGERATION SINCE THOSE C TEMPERATURES MUST BE RAISED/LOWERED MUCH MORE THAN FOR AIR COMFORT C AVGHDD = ANNUAL-AVG HEATING DEGREE DAYS PER YEAR (F) IN GRID J=1,NUMGRIDS C AVGCDD = ANNUAL-AVG COOLING DEGREE DAYS PER YEAR (F) IN GRID J=1,NUMGRIDS C CDDHDD = COOLING DEGREE DAYS DIVIED BY HEATING DEGREE DAYS. MULTIPLY C FRACTION OF LOAD THAT IS AIR HEATING BY CDDHDD TO OBTAIN C FRACTION OF LOAD THAT IS AIR CONDITIONING. C TOTCOLD = ANNUAL-AVG BUILDING TOT COLD LOAD AMONG ALL SECTORS (TW) C TOTHOT = ANNUAL-AVG BUILDING TOT HEAT LOAD AMONG ALL SECTORS (TW) C AVHEATLD = ANN AVG BUILDING HEAT LOAD (TW) OVER KWWS DATASET FROM GATOR-GCMOM C AVCOLDLD = ANN AVG BUILDING COLD LOAD (TW) OVER KWWS DATASET FROM GATOR-GCMOM C C C IF READING BUIDING HEAT AND COLD ENERGY FOR EACH COUNTRY FROM GATOR-GCMOM C IF (IFGATHEAT.EQ.1) THEN ACFRACTOT = AVCOLDLD(1) / (AVCOLDLD(1) + AVHEATLD(1)) C IF (AVHEATLD(1).GT.0.) THEN CDDHDD = MIN(AVCOLDLD(1) / AVHEATLD(1),10000.) ELSE CDDHDD = 10. ENDIF C C IF USING HEATING AND COOLING DEGREE DATA FOR EACH COUNTRY C ELSE ACFRACTOT = AVGCDD(IGRIDUSE)/(AVGCDD(IGRIDUSE)+AVGHDD(IGRIDUSE)) C IF (AVGHDD(IGRIDUSE).GT.0.) THEN CDDHDD = MIN(AVGCDD(IGRIDUSE) / AVGHDD(IGRIDUSE),10000.) ELSE CDDHDD = 10. ENDIF ENDIF C ENDIF IFGATHEAT=1 C C ***************************************************************************** C FRACTIONS OF HEAT AND COLD LOAD THAT ARE FLEXIBLE (SUBJECT TO DEMAND C RESPONSE) IF CAN'T BE SUPPLIED IN CURRENT TIME STEP BY HEAT OR COLD C STORAGE, RESPECTIVELY. IF LOAD IS FLEXIBLE, THEN CAN BE PUSHED FORWARD C MXDEMRHR HOURS C ***************************************************************************** C FHEATFLX = FRACTION OF HEAT LOAD THAT IS FLEXIBLE (SUBJECT TO DEMAND RESPONSE) C IF IT CAN'T BE SUPPLIED IN CURRENT TIME STEP BY HEAT STORAGE C REMAIN LOAD INFLEXIBLE & MUST BE SUPPLIED IMMEDIATELY BY ELECTRICITY C FCOLDFLX = FRACTION OF COLD LOAD THAT IS FLEXIBLE (SUBJECT TO DEMAND RESPONSE) C IF IT CAN'T BE SUPPLIED IN CURRENT TIME STEP BY COLD STORAGE C REMAIN LOAD INFLEXIBLE & MUST BE SUPPLIED IMMEDIATELY BY ELECTRICITY C FHEATFLX = 0.15 FCOLDFLX = 0.15 C COLDINFX = 0. HOTINFLX = 0. COLDFLEX = 0. HOTFLEX = 0. C C ***************************************************************************** C FIND FRACTION OF RESIDENTIAL LOAD THAT CAN BE STORED IN TES C ***************************************************************************** C https://www.iea.org/statistics/resources/balancedefinitions/ C ***************************************************************************** C FMAXAC = MAXIMUM FRACTION OF ELECTRICITY USE THAT IS USED FOR AIR C CONDITIONING+REFRIGERATION C C FMAXAC = 0.4 FMAXAC = 0.8 C C FRCRESAC = FRACTION OF RESIDENTIAL LOAD THAT IS AC FROM US GRID PAPER C FRCRESWH = FRACTION OF TOTAL RESIDENTIAL LOAD THAT IS WATER HEATING C FRCRESAH = FRACTION OF TOTAL RESIDENTIAL LOAD THAT IS AIR HEATING C FRCRESAC = 0.062 FRCRESAH = 0.415 FRCRESWH = 0.177 C C PARTITION TOTAL WATER+AIR HEATING ENERGY BETWEEN WATER AND AIR HEATING C IF (IFCONUS.EQ.0) THEN C C FRCLOWHT = FRAC OF TOTAL HEAT+ELEC FINAL ENERGY IN RES/COM/GOV BUILDINGS C THAT IS FOR LOW-TEMPERATURE HEAT USED IN BUILDINGS (AIR/WATER) C FRCHTWAT = FRAC OF TOTAL HEAT USED IN BUILDINGS THAT IS USED FOR WATER C HEATING. THE REST IS USED FOR AIR HEATING/STOVES C FELECREG = FRAC 2050 END-USE HEAT+ELEC IN EACH SECTOR GOING TO ELECTRICITY C IN EACH 1..NUMGRIDS GRID. THE REST GOES TO HEAT C FRCLOWHT = 1. - FELECREG(IGRIDUSE,IRESID) FRCHTWAT = FRCRESWH / (FRCRESWH + FRCRESAH) C C FRCRESWH = FRACTION OF TOTAL RESIDENTIAL LOAD THAT IS WATER HEATING C FRCRESAH = FRACTION OF TOTAL RESIDENTIAL LOAD THAT IS AIR HEATING C FRCRESWH = FRCLOWHT * FRCHTWAT FRCRESAH = FRCLOWHT - FRCRESWH C C PARTITION NON-HEATING ENERGY = ELECTRICITY AMONG AC AND OTHER ELECTRICITY C LIMIT AIR CONDITIONING TO A FRACTION OF TOTAL ELECTRICITY USE C C CDDHDD = COOLING DEGREE DAYS DIVIDED BY HEATING DEGREE DAYS. MULTIPLY C FRACTION OF LOAD THAT IS AIR HEATING BY CDDHDD TO OBTAIN C FRACTION OF LOAD THAT IS AIR CONDITIONING. C FMAXAC = MAXIMUM FRACTION OF ELECTRICITY USE THAT IS USED FOR AIR C CONDITIONING+REFRIGERATION C FRCRESAC = MIN(FRCRESAH*CDDHDD,FELECREG(IGRIDUSE,IRESID)*FMAXAC) ELSE FRCLOWHT = FRCRESWH + FRCRESAH ENDIF C ENDIF IFCONUS=0 C C FRCRESOT = FRACTION OF RESIDENTIAL LOAD THAT IS OTHER (NOT AIR/WAT HEAT/COOL) C FRCRESOT = 1. - FRCRESAC - FRCRESAH - FRCRESWH C C FRCFLXRAC = FRACTION OF RESIDENTIAL AC LOAD THAT IS FLEXIBLE (OBTAINED C (FROM COLD STORAGE THEN ELECTRICITY). REST ONLY FROM ELECTRICITY. C FROM FILE EndUseforStorage.xlsx C OF LOAD NOT SATISFIED BY STORAGE, FCOLDFLX SUBJECT TO DEM RESP C IN BAU CASE, COLD LOAD IS SATISFIED BY ELECTRICITY C RUNNING AIR CONDITIONING, WHICH IS A HEAT PUMP THAT COOLS C ONLY. SO THE USE OF HEAT PUMPS HERE DOES NOT CHANGE COLD LOAD. C FRCFLXRAH = FRACTION OF RESIDENTIAL AIR HEATING LOAD THAT IS FLEXIBLE C (FROM HEAT STORAGE THEN ELECTRICITY) REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FLEX HEAT SUBJECT TO DEM RESP C FRCFLXRWH = FRACTION OF RESIDENTIAL WATER HEATING LOAD THAT IS FLEXIBLE C (FROM HEAT STORAGE THEN ELECTRICITY) REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FLEX HEAT SUBJECT TO DEM RESP C SINCE ALL WATER IN BUILDINGS IS EITHER STORED IN WATER C TANK OR DISTRICT HEAT STORAGE, ALMOST ALL WATER HEATING FLEXIBLE C FRCFLXROT = FRACTION OF RESIDENTIAL OTHER LOAD THAT IS FLEXIBLE C (SUBJECT TO DEMAND-RESPONSE) C FDISTHEAT = FRACTION OF TOTAL AIR AND WATER HEAT AND COLD FROM DISTRICT HEATING C USING STORAGE IN UTES (BOREHOLES, WATER PITS, AQUIFERS) C DISTRICT HEAT CAN BE SUPPLIED BY HEAT PUMPS OR SOLAR C THERMAL HEAT OR GEOTHERMAL HEAT OR EXCESS ELECTRICITY. C HEAT/COLD NOT SUPPLIED BY DISTRICT HEATING IS SUPPLIED C WITHIN BUILDINGS WITH HEAT PUMPS. C FRCFLXRAC = FDISTHEAT FRCFLXRAH = FDISTHEAT FRCFLXRWH = 0.95 FRCFLXROT = 0.15 C C BLOADRES = 2050 RESIDENTIAL WWS LOAD (GW) AFTER HEAT PUMPS C FLXLDRAC = RES AC LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES OR H2) C FLXLDRAH = RES AIR HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES OR H2) C FLXLDRWH = RES WATER HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES OR H2) C FLXLDROT = RES OTHER LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES OR H2) C FLXLDRAC = BLOADRES * FRCRESAC * FRCFLXRAC FLXLDRAH = BLOADRES * FRCRESAH * FRCFLXRAH FLXLDRWH = BLOADRES * FRCRESWH * FRCFLXRWH FLXLDROT = BLOADRES * FRCRESOT * FRCFLXROT C C ***************************************************************************** C REDUCE RESIDENTIAL LOAD DUE TO SUPPLYING HEAT/COLD WITH HEAT PUMPS C ***************************************************************************** C ADDCOLD = 2050 TOTAL INFLEXIBLE COLD LOAD (TW) IN CURRENT SECTOR C ADDHOT = 2050 TOTAL INFLEXIBLE HOT LOAD (TW) IN CURRENT SECTOR C COLDINFX = ANNUAL AVG TOTAL INFLEXIBLE COLD LOAD (TW) ACROSS ALL SECTORS C HOTINFLX = ANNUAL AVG TOTAL INFLEXIBLE HOT LOAD (TW) ACROSS ALL SECTORS C FRCRESAC = FRACTION OF RESIDENTIAL LOAD THAT IS AC C FRCRESWH = FRACTION OF TOTAL RESIDENTIAL LOAD THAT IS WATER HEATING C FRCRESAH = FRACTION OF TOTAL RESIDENTIAL LOAD THAT IS AIR HEATING C COLDFLEX = PORTION OF COLD LOAD (TW) NOT MET BY STORAGE THAT CAN C BE MET BY DEMAND RESPONSE. C HOTFLEX = PORTION OF WARM LOAD (TW) NOT MET BY STORAGE THAT CAN C BE MET BY DEMAND RESPONSE. C ADDCOLD = BLOADRES * FRCRESAC * (1. - FRCFLXRAC) ADDHOT = BLOADRES * FRCRESAH * (1. - FRCFLXRAH) 1 + BLOADRES * FRCRESWH * (1. - FRCFLXRWH) C C COLDINFX AND HOTINFLX COULD BE MULTIPLIED BY FRCFLXROT TO GIVE THE C COLD AND HOT LOAD NOT SUBJECT TO STORAGE THAT IS SUBJECT TO DEMAND C RESPONSE. OTHERWISE, COLD & HOT LOADS NOT SUBJECT TO STORAGE ARE C NOT SUBJECT TO DEMAND RESPONSE. THE RESULT WOULD BE ADDED TO TLOADDRM C C COLDINFX = COLDINFX + ADDCOLD C HOTINFLX = HOTINFLX + ADDHOT COLDINFX = COLDINFX + ADDCOLD * (1. - FRCFLXROT) HOTINFLX = HOTINFLX + ADDHOT * (1. - FRCFLXROT) COLDFLEX = COLDFLEX + ADDCOLD * FRCFLXROT HOTFLEX = HOTFLEX + ADDHOT * FRCFLXROT C C TFLEXRES = TOTAL RESIDENTIAL FLEXIBLE LOAD (TW) SUBJECT TO STORAGE C FRCFLEXRES = FRACTION OF RESIDENTIAL LOAD THAT IS FLEXIBLE C TFLEXRES = FLXLDRAC + FLXLDRAH + FLXLDRWH + FLXLDROT FRCFLEXRES = TFLEXRES / BLOADRES C WRITE(IOUT,137) FRCLOWHT, FRCRESAH, FRCRESWH, FRCRESAC, FRCRESOT, 1 FRCFLXRAH,FRCFLXRWH,FRCFLXRAC,FRCFLXROT, 1 FLXLDRAH, FLXLDRWH, FLXLDRAC, FLXLDROT, 1 TFLEXRES, BLOADRES, FRCFLEXRES C 137 FORMAT('********** RESIDENTIAL SECTOR **********'/, 1 'FRCLOWHT FRCRESAH FRCRESWH FRCRESAC FRCRESOT'/, 1 5(0PF11.4)//, 1 'FRCFLXRAH FRCFLXRWH FRCFLXRAC FRCFLXROT '/, 1 4(0PF11.4)//, 1 'FLXLDRAHTW FLXLDRWH FLXLDRAC FLXLDROT ', 1 'TFLEXRES BLOADRES FRCFLEXRES'/,7(1PE11.4)//) C C ***************************************************************************** C FRAC OF COMMERCIAL & PUBLIC SERVICE (GOVERNMENT) LOAD THAT CAN BE STORED IN TES C ***************************************************************************** C COMMERCIAL AND PUBLIC SERVICE C https://www.iea.org/statistics/resources/balancedefinitions/ C ***************************************************************************** C FRCCOMWH = FRACTION OF COMMERCIAL LOAD THAT IS WATER HEATING C FRCCOMAH = FRACTION OF COMMERCIAL LOAD THAT IS AIR HEATING C FRCCOMAH = 0.3626 FRCCOMWH = 0.0768 C C RFTOAC = RATIO OF FRACTION REFRIG TO AIR CONDITIONING LOADS IN COMMERCIAL SECT C FRCCOMAC = FRACTION OF COMMERCIAL LOAD THAT IS AC C FRCCOMRF = FRACTION OF COMMERCIAL LOAD THAT IS REFRIGERATION C FRCCOMAC = 0.0791 FRCCOMRF = 0.0584 RFTOAC = FRCCOMRF / FRCCOMAC C C PARTITION TOTAL WATER+AIR HEATING ENERGY BETWEEN WATER AND AIR HEATING C C FRCLOWHT = FRAC OF TOTAL HEAT+ELEC FINAL ENERGY IN RES/COM/GOV BUILDINGS C THAT IS FOR LOW-TEMPERATURE HEAT USED IN BUILDINGS (AIR/WATER) C FRCHTWAT = FRAC OF TOTAL HEAT USED IN BUILDINGS THAT IS USED FOR WATER C HEATING. THE REST IS USED FOR AIR HEATING/STOVES C IF (IFCONUS.EQ.0) THEN FRCLOWHT = 1. - FELECREG(IGRIDUSE,ICOMM) FRCHTWAT = FRCCOMWH / (FRCCOMWH + FRCCOMAH) C C FRCCOMWH = FRACTION OF COMMERCIAL LOAD THAT IS WATER HEATING C FRCCOMAH = FRACTION OF COMMERCIAL LOAD THAT IS AIR HEATING C FRCCOMWH = FRCLOWHT * FRCHTWAT FRCCOMAH = FRCLOWHT - FRCCOMWH C C PARTITION NON-HEATING ENERGY = ELECTRICITY AMONG AC, REFRIGERATION, AND OTHER C LIMIT AIR CONDITIONING TO A FRACTION OF TOTAL ELECTRICITY USE C C CDDHDD = COOLING DEGREE DAYS DIVIED BY HEATING DEGREE DAYS. MULTIPLY C FRACTION OF LOAD THAT IS AIR HEATING BY CDDHDD TO OBTAIN C FRACTION OF LOAD THAT IS AIR CONDITIONING. C FMAXAC = MAXIMUM FRACTION OF ELECTRICITY USE THAT IS USED FOR AIR C CONDITIONING+REFRIGERATION C FRCCOMAC = MIN(FRCCOMAH*CDDHDD,FELECREG(IGRIDUSE,ICOMM)*FMAXAC) FRCCOMRF = RFTOAC * FRCCOMAC ELSE FRCLOWHT = FRCCOMWH + FRCCOMAH ENDIF C C FRCCOMOT = FRACTION OF COMMERCIAL LOAD THAT IS OTHER C FRCCOMOT = 1. - FRCCOMAC - FRCCOMRF - FRCCOMAH - FRCCOMWH C C FRCFLXCAC = FRACTION OF COMMERCIAL AC LOAD THAT IS FLEXIBLE C (FROM COLD STORAGE THEN ELECTRICITY). REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FCOLDFLX SUBJECT TO DEM RESP C FRCFLXCRF = FRACTION OF COMMERCIAL REFRIGERATION LOAD THAT IS FLEXIBLE C (FROM COLD STORAGE THEN ELECTRICITY). REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FCOLDFLX SUBJECT TO DEM RESP C FRCFLXCAH = FRACTION OF COMMERCIAL AIR HEATING LOAD THAT IS FLEXIBLE C (FROM HEAT STORAGE THEN ELECTRICITY) REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FLEX HEAT SUBJECT TO DEM RESP C FRCFLXCWH = FRACTION OF COMMERCIAL WATER HEATING LOAD THAT IS FLEXIBLE C (FROM HEAT STORAGE THEN ELECTRICITY) REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FLEX HEAT SUBJECT TO DEM RESP C SINCE ALL WATER IN BUILDINGS IS EITHER STORED IN WATER C TANK OR DISTRICT HEAT STORAGE, ALMOST ALL WATER HEATING FLEXIBLE C FRCFLXCOT = FRACTION OF COMMERCIAL OTHER LOAD THAT IS FLEXIBLE C (SUBJECT TO DEMAND-RESPONSE) C FDISTHEAT = FRACTION OF TOTAL AIR AND WATER HEAT AND COLD FROM DISTRICT HEATING C USING STORAGE IN UTES (BOREHOLES, WATER PITS, AQUIFERS) C DISTRICT HEAT CAN BE SUPPLIED BY HEAT PUMPS OR SOLAR C THERMAL HEAT OR GEOTHERMAL HEAT OR EXCESS ELECTRICITY. C HEAT/COLD NOT SUPPLIED BY DISTRICT HEATING IS SUPPLIED C WITHIN BUILDINGS WITH HEAT PUMPS. C FRCFLXCAC = FDISTHEAT FRCFLXCRF = FDISTHEAT FRCFLXCAH = FDISTHEAT FRCFLXCWH = 0.95 FRCFLXCOT = 0.15 C C BLOADCOM = 2050 COMMERCIAL WWS LOAD (GW) AFTER HEAT PUMPS C FLXLDCAC = COM AC LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDCRF = COM REFRIGERATION LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDCAH = COM AIR HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDCWH = COM WATER HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDCOT = COM OTHER LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDCAC = BLOADCOM * FRCCOMAC * FRCFLXCAC FLXLDCRF = BLOADCOM * FRCCOMRF * FRCFLXCRF FLXLDCAH = BLOADCOM * FRCCOMAH * FRCFLXCAH FLXLDCWH = BLOADCOM * FRCCOMWH * FRCFLXCWH FLXLDCOT = BLOADCOM * FRCCOMOT * FRCFLXCOT C C ***************************************************************************** C REDUCE COMMERICAL LOAD DUE TO SUPPLYING HEAT/COLD WITH HEAT PUMPS C ***************************************************************************** C BLOADCOM = 2050 COMMERCIAL WWS LOAD (GW) AFTER HEAT PUMPS C ADDCOLD = 2050 TOTAL INFLEXIBLE COLD LOAD (TW) IN CURRENT SECTOR C ADDHOT = 2050 TOTAL INFLEXIBLE HOT LOAD (TW) IN CURRENT SECTOR C COLDINFX = 2050 TOTAL INFLEXIBLE COLD LOAD (TW) ACROSS ALL SECTORS C HOTINFLX = 2050 TOTAL INFLEXIBLE HOT LOAD (TW) ACROSS ALL SECTORS C FRCCOMAC = FRACTION OF COMMERCIAL LOAD THAT IS AC C FRCCOMRF = FRACTION OF COMMERCIAL LOAD THAT IS REFRIGERATION C FRCLOWHT = FRAC OF TOTAL HEAT+ELEC FINAL ENERGY IN RES/COM/GOV BUILDINGS C THAT IS FOR LOW-TEMPERATURE HEAT USED IN BUILDINGS (AIR/WATER) C FRCHTWAT = FRAC OF TOTAL HEAT USED IN BUILDINGS THAT IS USED FOR WATER C HEATING. THE REST IS USED FOR AIR HEATING/STOVES C ADDCOLD = BLOADCOM * FRCCOMAC * (1. - FRCFLXCAC) 1 + BLOADCOM * FRCCOMRF * (1. - FRCFLXCRF) ADDHOT = BLOADCOM * FRCCOMAH * (1. - FRCFLXCAH) 1 + BLOADCOM * FRCCOMWH * (1. - FRCFLXCWH) C C COLDINFX AND HOTINFLX COULD BE MULTIPLIED BY FRCFLXROT TO GIVE THE C COLD AND HOT LOAD NOT SUBJECT TO STORAGE THAT IS SUBJECT TO DEMAND C RESPONSE. OTHERWISE, COLD & HOT LOADS NOT SUBJECT TO STORAGE ARE C NOT SUBJECT TO DEMAND RESPONSE. THE RESULT WOULD BE ADDED TO TLOADDRM C C COLDINFX = COLDINFX + ADDCOLD C HOTINFLX = HOTINFLX + ADDHOT COLDINFX = COLDINFX + ADDCOLD * (1. - FRCFLXCOT) HOTINFLX = HOTINFLX + ADDHOT * (1. - FRCFLXCOT) COLDFLEX = COLDFLEX + ADDCOLD * FRCFLXCOT HOTFLEX = HOTFLEX + ADDHOT * FRCFLXCOT C C TFLEXCOM = TOTAL COMMERCIAL FLEXIBLE LOAD (TW) SUBJECT TO STORAGE C FRCFLEXCOM = FRACTION OF COMMERCIAL LOAD THAT IS FLEXIBLE (0.5218) C TFLEXCOM = FLXLDCAC + FLXLDCRF + FLXLDCAH + FLXLDCWH + FLXLDCOT FRCFLEXCOM = TFLEXCOM / BLOADCOM C WRITE(IOUT,138) FRCLOWHT,FRCCOMAH,FRCCOMWH,FRCCOMAC,FRCCOMRF, 1 FRCCOMOT, 1 FRCFLXCAH,FRCFLXCWH,FRCFLXCAC,FRCFLXCRF,FRCFLXCOT, 1 FLXLDCAH, FLXLDCWH, FLXLDCAC, FLXLDCRF,FLXLDCOT, 1 TFLEXCOM, BLOADCOM, FRCFLEXCOM C 138 FORMAT('********** COMMERCIAL SECTOR **********'/, 1 'FRCLOWHT FRCCOMAH FRCCOMWH FRCCOMAC FRCCOMRF ', 1 'FRCCOMOT'/,6(0PF11.4)//, 1 'FRCFLXCAH FRCFLXCWH FRCFLXCAC FRCFLXCRF FRCFLXCOT '/, 1 5(0PF11.4)//, 1 'FLXLDCAHTW FLXLDCWH FLXLDCAC FLXLDCRF FLXLDCOT ', 1 'TFLEXCOM BLOADCOM FRCFLEXCOM'/,8(1PE11.4)//) C C ***************************************************************************** C FIND FRACTION OF TRANSPORATION LOAD THAT IS FLEXIBLE (EITHER FROM C DRM OR HYDROGEN) C H2 FROM 'Efficiency, upstream, electrify' TAB IN '50-States WWS.xlsx' FILE C ***************************************************************************** C TRANSPORT INCLUDES ALL TRANSPORT ACTIVITIES REGARDLESS OF SECTORS, INCLUDING C DOMESTIC AVIATION, ROAD, RAIL, PIPELINE TRANSPORT, DOMESTIC NAVIGATION, C & NONSPECIFIED. DOES NOT INCLUDE INTERNATIONAL AVIATION. C FOR ROADS, INCLUDES AG & INDUSTRIAL HIGHWAY USE C FOR PIPELINES, INCLUDES ENERGY USED IN SUPPORT & OPERATION OF PIPELINES C FOR DOMESTIC NAVIGATION, INCLUDES FUELS DELIVERED TO SHIPS NOT INVOLVED IN C INTERNATIONAL NAVIGATION C https://www.iea.org/statistics/resources/balancedefinitions/ C ***************************************************************************** C BLOADTRA = 2050 TRANSPORTATION WWS LOAD (GW) AFTER HEAT PUMPS C FRCFLEXTRA = FRACTION OF TRANSPORTATION LOAD THAT IS FLEXIBLE (0.85) C (SUBJECT TO DEMAND-RESPONSE) C INCLUDES ALL LOADS FOR HFCVS, WHICH ARE TREATED C AS FLEXIBLE LOADS BUT WITH HIGHER COSTS DUE C TO ELECTROLYZER, COMPRESSER, STORAGE, AND FUEL CELL C TFLEXTRA = TOTAL TRANSPORTATION LOAD (TW) THAT IS FLEXIBLE C FRCFLEXTRA = 0.85 TFLEXTRA = BLOADTRA * FRCFLEXTRA C WRITE(IOUT,140) TFLEXTRA, BLOADTRA, FRCFLEXTRA C 140 FORMAT('********** TRANSPORTATION SECTOR **********'/, 1 'TFLEXTRA BLOADTRA FRCFLEXTRA'/,3(1PE11.4)//) C C ***************************************************************************** C FRACTION OF INDUSTRIAL LOAD THAT IS FLEXIBLE OR CAN BE STORED IN TES OR H2 C H2 FROM 'Efficiency, upstream, electrify' TAB IN '50-States WWS.xlsx' FILE C ***************************************************************************** C INDUSTRIAL LOADS INCLUDE C IRON AND STEEL C CHEMICAL AND PETROCHEMICAL (INCL. CRACKING & REFORMING PROCES FOR C PROD HC-BASED MATERIALS (E.G., PLASTICS) C NON-FERROUS METALS C NON-METALLIC MINERALS C TRANSPORT EQUIPMENT C MINING (EXCLUDING FUELS) C MACHINERY C FOOD AND TOBACCO C PAPER, PULP, AND PRINT C WOOD AND WOOD PRODUCTS C CONSTRUCTION C TEXTILE AND LEATHER C NON-SPECIFIED C https://www.iea.org/statistics/resources/balancedefinitions/ C ***************************************************************************** C ACFRACTOT = EST FRACTION OF TOTAL AIR HEATING + COOLING ENERGY THAT IS COOLING C ENERGY. DO NOT INCLUDE WATER HEATING OR REFRIGERATION SINCE THOSE C TEMPERATURES MUST BE RAISED/LOWERED MUCH MORE THAN FOR AIR COMFORT C FRACHVAC = FRACTION OF INDUSTRIAL LOAD THAT IS AIR HEATING AND COOLING (HVAC) C FRACCOOL = FRACTION OF INDUSTRIAL HVAC THAT IS AIR CONDITIONING C (USES AN AVERAGE OF RESIDENTIAL & COMMERCIAL SECTOR VALUES) C FRCINDAC = FRACTION OF INDUSTRIAL LOAD THAT IS AIR COOLING C FRCINDRF = FRACTION OF INDUSTRY LOAD THAT IS REFRIGERATION C FRCINDAH = FRACTION OF INDUSTRIAL LOAD THAT IS AIR HEATING C FRCINDTR = FRACTION OF INDUSTRIAL LOAD THAT IS ON-SITE TRANSPORT C FRCINDHT = FRACTION OF INDUSTRIAL LOAD THAT IS HI-T, CHEM, OR ELEC PROCS C FRACHVAC = 0.0624 FRCINDRF = 0.024 FRCINDTR = 0.0072 C IF (IFCONUS.EQ.1) THEN FRACCOOL = 0.15 FRCINDAC = FRACHVAC * FRACCOOL FRCINDAH = FRACHVAC * (1. - FRACCOOL) FRCINDHT = 0.8719 ELSE FRCINDAC = MIN(FRACHVAC*ACFRACTOT,FELECREG(IGRIDUSE,IIND)*FMAXAC) FRCINDAH = FRACHVAC - FRCINDAC FRCINDHT = 1. - FELECREG(IGRIDUSE,IIND) ENDIF C C FRCINDOT = FRACTION OF INDUSTRIAL LOAD THAT IS OTHER C SUMIND = FRCINDTR + FRCINDRF + FRCINDAC + FRCINDAH + FRCINDHT C IF (SUMIND.LT.1.) THEN FRCINDOT = 1. - SUMIND ELSE FRCINDOT = 0. FRCINDTR = FRCINDTR / SUMIND FRCINDRF = FRCINDRF / SUMIND FRCINDAC = FRCINDAC / SUMIND FRCINDAH = FRCINDAH / SUMIND FRCINDHT = FRCINDHT / SUMIND ENDIF C C FRCFLXIAC = FRACTION OF INDUSTRIAL AC LOAD THAT IS FLEXIBLE C (FROM COLD STORAGE THEN ELECTRICITY). REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FCOLDFLX SUBJECT TO DEM RESP C FRCFLXIRF = FRACTION OF INDUSTRIAL REFRIGERATION LOAD THAT IS FLEXIBLE C (FROM COLD STORAGE THEN ELECTRICITY). REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FCOLDFLX SUBJECT TO DEM RESP C FRCFLXIAH = FRACTION OF INDUSTRIAL AIR HEATING LOAD THAT IS FLEXIBLE C (FROM HEAT STORAGE THEN ELECTRICITY) REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FLEX HEAT SUBJECT TO DEM RESP C FRCFLXITR = FRACTION OF INDUSTRIAL ON-SITE TRANSPORT LOAD THAT IS FLEXIBLE C (SUBJECT TO DEMAND-RESPONSE) C FRCFLXIHT = FRACTION OF INDUSTRIAL HI-TEMP, CHEM, ELEC PROCS THAT ARE FLEXIBLE C (SUBJECT TO DEMAND-RESPONSE) C FRCFLXIOT = FRACTION OF INDUSTRIAL OTHER PROCS THAT ARE FLEXIBLE C (SUBJECT TO DEMAND-RESPONSE) C FDISTHEAT = FRACTION OF TOTAL AIR AND WATER HEAT AND COLD FROM DISTRICT HEATING C USING STORAGE IN UTES (BOREHOLES, WATER PITS, AQUIFERS) C DISTRICT HEAT CAN BE SUPPLIED BY HEAT PUMPS OR SOLAR C THERMAL HEAT OR GEOTHERMAL HEAT OR EXCESS ELECTRICITY. C HEAT/COLD NOT SUPPLIED BY DISTRICT HEATING IS SUPPLIED C WITHIN BUILDINGS WITH HEAT PUMPS. C FRCFLXIAC = FDISTHEAT FRCFLXIRF = FDISTHEAT FRCFLXIAH = FDISTHEAT FRCFLXITR = 0.85 FRCFLXIHT = 0.70 FRCFLXIOT = 0.15 C C BLOADIND = 2050 INDUSTRIAL WWS LOAD (GW) AFTER HEAT PUMPS C FLXLDIAC = IND AC LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDIRF = IND REFRIGERATION LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDIAH = IND AIR HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDITR = IND ON-SITE TRANSPORT LOAD (TW) THAT IS FLEXIBLE C FLXLDIHT = IND HI-T, CHEM, ELEC LOAD (TW) THAT IS FLEXIBLE C FLXLDIOT = IND OTHER ELEC LOAD (TW) THAT IS FLEXIBLE & SUBJECT TO DRM C FLXLDIAC = BLOADIND * FRCINDAC * FRCFLXIAC FLXLDIRF = BLOADIND * FRCINDRF * FRCFLXIRF FLXLDIAH = BLOADIND * FRCINDAH * FRCFLXIAH FLXLDITR = BLOADIND * FRCINDTR * FRCFLXITR FLXLDIHT = BLOADIND * FRCINDHT * FRCFLXIHT FLXLDIOT = BLOADIND * FRCINDOT * FRCFLXIOT C C ***************************************************************************** C REDUCE INDUSTRIAL LOAD DUE TO SUPPLYING LOW-TEMP HEAT/COLD WITH HEAT PUMPS C ***************************************************************************** C BLOADIND = 2050 INDUSTRIAL WWS LOAD (GW) AFTER HEAT PUMPS C ADDCOLD = 2050 TOTAL INFLEXIBLE COLD LOAD (TW) IN CURRENT SECTOR C ADDHOT = 2050 TOTAL INFLEXIBLE HOT LOAD (TW) IN CURRENT SECTOR C COLDINFX = 2050 TOTAL INFLEXIBLE COLD LOAD (TW) ACROSS ALL SECTORS C HOTINFLX = 2050 TOTAL INFLEXIBLE HOT LOAD (TW) ACROSS ALL SECTORS C FRCINDAC = FRACTION OF INDUSTRIAL LOAD THAT IS AIR COOLING C FRCINDRF = FRACTION OF INDUSTRY LOAD THAT IS REFRIGERATION C FRCINDAH = FRACTION OF INDUSTRIAL LOAD THAT IS AIR HEATING C ADDCOLD = BLOADIND * FRCINDAC * (1. - FRCFLXIAC) 1 + BLOADIND * FRCINDRF * (1. - FRCFLXIRF) ADDHOT = BLOADIND * FRCINDAH * (1. - FRCFLXIAH) C C COLDINFX AND HOTINFLX COULD BE MULTIPLIED BY FRCFLXROT TO GIVE THE C COLD AND HOT LOAD NOT SUBJECT TO STORAGE THAT IS SUBJECT TO DEMAND C RESPONSE. OTHERWISE, COLD & HOT LOADS NOT SUBJECT TO STORAGE ARE C NOT SUBJECT TO DEMAND RESPONSE. THE RESULT WOULD BE ADDED TO TLOADDRM C C COLDINFX = COLDINFX + ADDCOLD C HOTINFLX = HOTINFLX + ADDHOT COLDINFX = COLDINFX + ADDCOLD * (1. - FRCFLXIOT) HOTINFLX = HOTINFLX + ADDHOT * (1. - FRCFLXIOT) COLDFLEX = COLDFLEX + ADDCOLD * FRCFLXIOT HOTFLEX = HOTFLEX + ADDHOT * FRCFLXIOT C C TFLEXIND = TOTAL INDUSTRIAL LOAD (TW) THAT IS FLEXIBLE & SUBJECT C TO EITHER TES OR DRM C FRCFLEXIND = FRACTION OF INDUSTRIAL LOAD THAT IS FLEXIBLE (0.6877) C TFLEXIND = FLXLDIAC + FLXLDIRF + FLXLDIAH + FLXLDITR + FLXLDIHT 1 + FLXLDIOT FRCFLEXIND = TFLEXIND / BLOADIND C WRITE(IOUT,141) FRCINDHT,FRCINDAH,FRCINDAC,FRCINDRF,FRCINDTR, 1 FRCINDOT, 1 FRCFLXIHT,FRCFLXIAH,FRCFLXIAC,FRCFLXIRF,FRCFLXITR, 1 FRCFLXIOT, 1 FLXLDIHT, FLXLDIAH, FLXLDIAC, FLXLDIRF, FLXLDITR, 1 FLXLDIOT, TFLEXIND, BLOADIND, FRCFLEXIND C 141 FORMAT('********** INDUSTRIAL SECTOR **********'/, 1 'FRCINDHT FRCINDAH FRCINDAC FRCINDRF FRCINDTR ', 1 'FRCINDOT'/,6(0PF11.4)// 1 'FRCFLXIHT FRCFLXIAH FRCFLXIAC FRCFLXIRF FRCFLXITR ', 1 'FRCFLXIOT'/,6(0PF11.4)// 1 'FLXLDIHTTW FLXLDIAH FLXLDIAH FLXLDIRF FLXLDITR ', 1 'FLXLDIOT TFLEXIND BLOADIND FRCFLEXIND'/,9(1PE11.4)//) C C ***************************************************************************** C FRACTION OF AGRICULTURAL/FORESTRY/FISHING LOAD THAT IS FLEXIBLE C FROM DRM ONLY SINCE NO H2 LOAD FOR THIS SECTOR C ***************************************************************************** C AG/FORESTRY INCLUDES ENERGY CONSUMED DURING AGRICULTURE/FORESTRY FOR TRACTION C (EXCLUDING AG HIGHWAY USE), POWER, AND AGRICULTURAL/DOMESTIC HEATING; C FISHING INCLUDES FUELS FOR INLAND, COASTAL, DEEP-SEA FISHING. INCLUDES FUELS C DELIVERED TO SHIPS OF ALL FLAGS THAT HAVE RE-FUELED IN THE COUNTRY C (INCL. INTERNATIONAL FISHING) AS WELL AS ENERGY USED IN THE FISHING INDUSTRY C https://www.iea.org/statistics/resources/balancedefinitions/ C ***************************************************************************** C ACFRACTOT = EST FRACTION OF TOTAL AIR HEATING + COOLING ENERGY THAT IS COOLING C ENERGY. DO NOT INCLUDE WATER HEATING OR REFRIGERATION SINCE THOSE C TEMPERATURES MUST BE RAISED/LOWERED MUCH MORE THAN FOR AIR COMFORT C FRCAGFAC = FRACTION OF AG/FORESTRY/FISHING LOAD THAT IS AC C FRCAGFRF = FRACTION OF AG/FORESTRY/FISHING LOAD THAT IS REFRIGERATION C FRCAGFAH = FRACTION OF AG/FORESTRY/FISHING LOAD THAT IS AIR HEATING C FRCAGFWH = FRACTION OF AG/FORESTRY/FISHING LOAD THAT IS WATER HEATING C FRCAGFOT = FRACTION OF AG/FORESTRY/FISHING LOAD THAT IS OTHER C FELECREG = FRAC 2050 END-USE HEAT+ELEC IN EACH SECTOR GOING TO ELECTRICITY C IN EACH 1..NUMGRIDS GRID. THE REST GOES TO HEAT C CDDHDD = COOLING DEGREE DAYS DIVIED BY HEATING DEGREE DAYS. MULTIPLY C FRACTION OF LOAD THAT IS AIR HEATING BY CDDHDD TO OBTAIN C FRACTION OF LOAD THAT IS AIR CONDITIONING. C FRCAGFAC = 0.0791 FRCAGFAH = 0.3626 FRCAGFRF = 0.0584 FRCAGFWH = 0.0768 RFTOAC = FRCAGFRF / FRCAGFAC C IF (IFCONUS.EQ.0) THEN C C FRCLOWHT = FRACTION OF TOTAL ELEC+HEAT IN SECTOR GOING TO HEAT C FRCHTWAT = FRACTION OF AIR + WATER HEATING THAT IS WATER HEATING C FRCLOWHT = 1. - FELECREG(IGRIDUSE,IAGFF) C C ALL AGRICULTURAL ENERGY IS ELECTRICITY C IF (FRCLOWHT.EQ.0.) THEN FRCAGFAC = 0. FRCAGFAH = 0. FRCAGFRF = 0. FRCAGFWH = 0. C C SOME ELECTRICITY, SOME HEATING/COOLING C ELSE FRACHVAC = FRCAGFAC + FRCAGFAH FRCAGFAC = FRACHVAC * ACFRACTOT FRCAGFAH = FRACHVAC * (1. - ACFRACTOT) C FRCHTWAT = FRCAGFWH / (FRCAGFWH + FRCAGFAH) FRCAGFWH = FRCLOWHT * FRCHTWAT FRCAGFAH = FRCLOWHT * (1. - FRCHTWAT) C C PARTITION NON-HEATING ENERGY = ELECTRICITY AMONG AC, REFRIGERATION, AND OTHER C LIMIT AIR CONDITIONING TO A FRACTION OF TOTAL ELECTRICITY USE C FRCAGFAC = MIN(FRCAGFAH*CDDHDD,FELECREG(IGRIDUSE,IAGFF)*FMAXAC) FRCAGFRF = FRCAGFAC * RFTOAC ENDIF C ENDIF FRCLOWHT=0 C ENDIF C ENDIF IFCONUS=1 C C FRCAGFOT = FRACTION OF AG/FORESTRY/FISHING LOAD THAT IS OTHER C FRCAGFOT = 1. - FRCAGFAC - FRCAGFRF - FRCAGFAH - FRCAGFWH C C FRCFLXAAC = FRACTION OF AG/FORESTRY/FISHING AC LOAD THAT IS FLEXIBLE C (FROM COLD STORAGE THEN ELECTRICITY). REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FCOLDFLX SUBJECT TO DEM RESP C FRCFLXARF = FRACTION OF AG/FORESTRY/FISHING REFRIGERATION LOAD THAT IS FLEXIBLE C (FROM COLD STORAGE THEN ELECTRICITY). REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FCOLDFLX SUBJECT TO DEM RESP C FRCFLXAAH = FRACTION OF AG/FORESTRY/FISHING AIR HEATING LOAD THAT IS FLEXIBLE C (FROM HEAT STORAGE THEN ELECTRICITY) REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FLEX HEAT SUBJECT TO DEM RESP C FRCFLXAWH = FRACTION OF AG/FORESTRY/FISHING WATER HEATING LOAD THAT IS FLEXIBLE C (FROM HEAT STORAGE THEN ELECTRICITY) REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FLEX HEAT SUBJECT TO DEM RESP C SINCE ALL WATER IN BUILDINGS IS EITHER STORED IN WATER C TANK OR DISTRICT HEAT STORAGE, ALMOST ALL WATER HEATING FLEXIBLE C FRCFLXAOT = FRACTION OF AG/FORESTRY/FISHING OTHER LOAD THAT IS FLEXIBLE C (SUBJECT TO DEMAND-RESPONSE) C FDISTHEAT = FRACTION OF TOTAL AIR AND WATER HEAT AND COLD FROM DISTRICT HEATING C USING STORAGE IN UTES (BOREHOLES, WATER PITS, AQUIFERS) C DISTRICT HEAT CAN BE SUPPLIED BY HEAT PUMPS OR SOLAR C THERMAL HEAT OR GEOTHERMAL HEAT OR EXCESS ELECTRICITY. C HEAT/COLD NOT SUPPLIED BY DISTRICT HEATING IS SUPPLIED C FRCFLXAAC = FDISTHEAT FRCFLXARF = FDISTHEAT FRCFLXAAH = FDISTHEAT FRCFLXAWH = 0.95 FRCFLXAOT = 0.15 C C BLOADAGF = 2050 AG/FORESTRY/FISH WWS LOAD (GW) AFTER HEAT PUMPS C FLXLDAAC = A/F/F AC LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDARF = A/F/F REFRIGERATION LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDAAH = A/F/F AIR HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDAWH = A/F/F WATER HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDAOT = A/F/F OTHER LOAD (TW) THAT IS FLEXIBLE & SUBJECT TO DRM C FLXLDAAC = BLOADAGF * FRCAGFAC * FRCFLXAAC FLXLDARF = BLOADAGF * FRCAGFRF * FRCFLXARF FLXLDAAH = BLOADAGF * FRCAGFAH * FRCFLXAAH FLXLDAWH = BLOADAGF * FRCAGFWH * FRCFLXAWH FLXLDAOT = BLOADAGF * FRCAGFOT * FRCFLXAOT C C ***************************************************************************** C REDUCE AG/FOR/FISH LOAD DUE TO SUPPLYING LOW-TEMP HEAT/COLD WITH HEAT PUMPS C ***************************************************************************** C BLOADAGF = 2050 AG/FORESTRY/FISH WWS LOAD (GW) AFTER HEAT PUMPS C ADDCOLD = 2050 TOTAL INFLEXIBLE COLD LOAD (TW) IN CURRENT SECTOR C ADDHOT = 2050 TOTAL INFLEXIBLE HOT LOAD (TW) IN CURRENT SECTOR C COLDINFX = 2050 TOTAL INFLEXIBLE COLD LOAD (TW) ACROSS ALL SECTORS C HOTINFLX = 2050 TOTAL INFLEXIBLE HOT LOAD (TW) ACROSS ALL SECTORS C FRCAGFAC = FRACTION OF AG/FORESTRY/FISHING LOAD THAT IS AC C FRCAGFRF = FRACTION OF AG/FORESTRY/FISHING LOAD THAT IS REFRIGERATION C FRCAGFAH = FRACTION OF AG/FORESTRY/FISHING LOAD THAT IS AIR HEATING C FRCAGFWH = FRACTION OF AG/FORESTRY/FISHING LOAD THAT IS WATER HEATING C FRCAGFOT = FRACTION OF AG/FORESTRY/FISHING LOAD THAT IS OTHER C ADDCOLD = BLOADAGF * FRCAGFAC * (1. - FRCFLXAAC) 1 + BLOADAGF * FRCAGFRF * (1. - FRCFLXARF) ADDHOT = BLOADAGF * FRCAGFAH * (1. - FRCFLXAAH) 1 + BLOADAGF * FRCAGFWH * (1. - FRCFLXAWH) C C COLDINFX AND HOTINFLX COULD BE MULTIPLIED BY FRCFLXROT TO GIVE THE C COLD AND HOT LOAD NOT SUBJECT TO STORAGE THAT IS SUBJECT TO DEMAND C RESPONSE. OTHERWISE, COLD & HOT LOADS NOT SUBJECT TO STORAGE ARE C NOT SUBJECT TO DEMAND RESPONSE. THE RESULT WOULD BE ADDED TO TLOADDRM C C COLDINFX = COLDINFX + ADDCOLD C HOTINFLX = HOTINFLX + ADDHOT COLDINFX = COLDINFX + ADDCOLD * (1. - FRCFLXAOT) HOTINFLX = HOTINFLX + ADDHOT * (1. - FRCFLXAOT) COLDFLEX = COLDFLEX + ADDCOLD * FRCFLXAOT HOTFLEX = HOTFLEX + ADDHOT * FRCFLXAOT C C TFLEXAGF = TOTAL AG/FOR/FISH LOAD (TW) THAT IS FLEXIBLE & SUBJECT C TO EITHER TES OR DRM C FRCFLEXAGF = FRACTION OF AG/FOR/FISH LOAD THAT IS FLEXIBLE (0.85) C TFLEXAGF = FLXLDAAC + FLXLDARF + FLXLDAAH + FLXLDAWH + FLXLDAOT FRCFLEXAGF = TFLEXAGF / BLOADAGF C WRITE(IOUT,143) FRCAGFAH,FRCAGFWH,FRCAGFAC,FRCAGFRF,FRCAGFOT, 1 FRCFLXAAH,FRCFLXAWH,FRCFLXAAC,FRCFLXARF,FRCFLXAOT, 1 FLXLDAAH, FLXLDAWH, FLXLDAAC, FLXLDARF, FLXLDAOT, 1 TFLEXAGF, BLOADAGF, FRCFLEXAGF C 143 FORMAT('********* AGRICULTURE/FORESTRY/FISHING SECTOR *********'/, 1 'FRCAGFAH FRCAGFWH FRCAGFAC FRCAGFRF FRCAGFOT'/, 1 5(0PF11.4)//, 1 'FRCFLXAAH FRCFLXAWH FRCFLXAAC FRCFLXARF FRCFLXAOT'/, 1 5(0PF11.4)//, 1 'FLXLDAAHTW FLXLDAWH FLXLDAAC FLXLDARF FLXLDAOT ', 1 'TFLEXAGF BLOADAGF FRCFLEXAGF'/,8(0PE11.4)//) C C ***************************************************************************** C FRACTION OF 'OTHER' LOAD THAT IS FLEXIBLE C FROM DRM ONLY SINCE NO H2 LOAD FOR THIS SECTOR C ***************************************************************************** C OTHER INCLUDES RESIDENTIAL, COMMERCIAL AND PUBLIC SERVICES, MILITARY, C AND NON-SPECIFIED C https://www.iea.org/statistics/resources/balancedefinitions/ C ***************************************************************************** C FRCLOWHT = FRAC OF TOTAL HEAT+ELEC FINAL ENERGY IN OTHER SECTOR C THAT IS FOR LOW-TEMPERATURE HEAT FOR AIR C FRCLOWHT = 1. - FELECREG(IGRIDUSE,IOTH) C C FRCFLXOAH = FRACTION OF OTHER AIR HEATING LOAD THAT IS FLEXIBLE C (FROM HEAT STORAGE THEN ELECTRICITY) REST ONLY FROM ELECTRICITY. C OF LOAD NOT SATISFIED BY STORAGE, FLEX HEAT SUBJECT TO DEM RESP C FRCFLEXOTH = FRACTION OF OTHER LOAD THAT IS FLEXIBLE C (SUBJECT TO DEMAND-RESPONSE) C FDISTHEAT = FRACTION OF TOTAL AIR AND WATER HEAT AND COLD FROM DISTRICT HEATING C USING STORAGE IN UTES (BOREHOLES, WATER PITS, AQUIFERS) C DISTRICT HEAT CAN BE SUPPLIED BY HEAT PUMPS OR SOLAR C THERMAL HEAT OR GEOTHERMAL HEAT OR EXCESS ELECTRICITY. C HEAT/COLD NOT SUPPLIED BY DISTRICT HEATING IS SUPPLIED C FRCFLXOAH = FDISTHEAT FRCFLEXOTH = 0.75 C C BLOADOTH = 2050 OTHER WWS LOAD (GW) AFTER HEAT PUMPS C FLXLDOAH = OTHER AIR HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDOEL = OTHER LOAD (TW) THAT IS ELECTRIC AND FLEXIBLE & SUBJECT TO DRM C FLXLDOAH = BLOADOTH * FRCLOWHT * FRCFLXOAH FLXLDOEL = BLOADOTH * FELECREG(IGRIDUSE,IOTH) * FRCFLEXOTH C C ***************************************************************************** C REDUCE OTHER LOAD DUE TO SUPPLYING LOW-TEMP HEAT/COLD WITH HEAT PUMPS C ***************************************************************************** C BLOADOTH = 2050 OTHER WWS LOAD (GW) AFTER HEAT PUMPS C ADDCOLD = 2050 TOTAL INFLEXIBLE COLD LOAD (TW) IN CURRENT SECTOR C ADDHOT = 2050 TOTAL INFLEXIBLE HOT LOAD (TW) IN CURRENT SECTOR C COLDINFX = 2050 TOTAL INFLEXIBLE COLD LOAD (TW) ACROSS ALL SECTORS C HOTINFLX = 2050 TOTAL INFLEXIBLE HOT LOAD (TW) ACROSS ALL SECTORS C FRCLOWHT = FRAC OF TOTAL HEAT+ELEC FINAL ENERGY IN OTHER SECTOR C THAT IS FOR LOW-TEMPERATURE HEAT FOR AIR C ADDHOT = BLOADOTH * FRCLOWHT * (1. - FRCFLXOAH) C C COLDINFX AND HOTINFLX COULD BE MULTIPLIED BY FRCFLXROT TO GIVE THE C COLD AND HOT LOAD NOT SUBJECT TO STORAGE THAT IS SUBJECT TO DEMAND C RESPONSE. OTHERWISE, COLD & HOT LOADS NOT SUBJECT TO STORAGE ARE C NOT SUBJECT TO DEMAND RESPONSE. THE RESULT WOULD BE ADDED TO TLOADDRM C C HOTINFLX = HOTINFLX + ADDHOT HOTINFLX = HOTINFLX + ADDHOT * (1. - FRCFLXAOT) HOTFLEX = HOTFLEX + ADDHOT * FRCFLXAOT C C TFLEXRES = TOTAL RESIDENTIAL FLEXIBLE LOAD (TW) C FRCFLEXOTH = FRACTION OF OTHER ENERGY LOAD THAT IS FLEXIBLE C TFLEXOTH = TOTAL OTHER LOAD (TW) THAT IS FLEXIBLE & SUBJECT TO DRM C TFLEXOTH = FLXLDOEL + FLXLDOAH FRCFLEXOTH = TFLEXOTH / BLOADOTH C C WRITE(IOUT,145) FRCLOWHT, 1 FRCFLXOAH, FRCFLEXOTH, 1 FLXLDOAH, FLXLDOEL, TFLEXOTH, BLOADOTH, FRCFLEXOTH C 145 FORMAT('********** OTHER SECTOR **********'/, 1 'FRLOWHT'/,1(0PF11.4)//, 1 'FRCFLXOAH FRCFLEXOTH'/,2(0PF11.4)//, 1 'FLXLDOAHTW FLXLDOEL TFLEXOTH BLOADOTH FRCFLEXOTH '/, 1 5(1PE11.4)//) C C ***************************************************************************** C SUM AIR CONDITIONING, REFRIGERATION, HEATING LOADS SUBJECT TO THERMAL-ENERGY C STORAGE. SUM OTHER FLEXIBLE LOADS FOR DEMAND-RESPONSE MANAGEMENT C THESE NUMBERS DO NOT INCLUDE HEATING, COOLING THAT IS PART OF INFLEXIBLE C ELECTRICITY LOAD OR HIGH-TEMPERATURE INDUSTRIAL HEAT C ***************************************************************************** C COOLING C ***************************************************************************** C TSTORAIRC = AVG ANNUAL LOAD (TW) FOR AIR COOLING (TW) SUBJECT TO STORAGE C FLXLDRAC = RES AC LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDCAC = COM AC LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDIAC = IND AC LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDAAC = A/F/F AC LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C TSTORAIRC = FLXLDRAC + FLXLDCAC + FLXLDIAC + FLXLDAAC C C TSTORREFR = AVG ANNUAL LOAD (TW) FOR REFRIGERATION SUBJECT TO STORAGE C FLXLDCRF = COM REFRIGERATION LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDIRF = IND REFRIGERATION LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDARF = A/F/F REFRIGERATION LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C TSTORREFR = FLXLDCRF + FLXLDIRF + FLXLDARF C C TSTORCOOL = AVG ANNUAL LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C TSTORCOOL = TSTORAIRC + TSTORREFR C C COOLSTES = FRACTION OF AIR CONDITIONING PLUS REFRIGERATION LOAD FROM C CHILLED WATER (CW-STES). THE REST IS FROM PCM-ICE C COOLSTES = 0.4 C C CHILDISCH = MAX DISCHARGE AND CHARGE RATE (TW) CHILLED-WATER (CW)-STES STORAGE C PCMDISCH = MAX DISCHARGE AND CHARGE RATE (TW) PCM-ICE STORAGE C CHILDISCH = TSTORCOOL * COOLSTES PCMDISCH = TSTORCOOL - CHILDISCH C C ***************************************************************************** C HEATING C ***************************************************************************** C TSTORAIRH = TOTAL LOAD (TW) FOR AIR HEATING SUBJECT TO STORAGE C FLXLDRAH = RES AIR HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDCAH = COM AIR HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDIAH = IND AIR HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDAAH = A/F/F AIR HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDOAH = OTHER AIR HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C TSTORAIRH = FLXLDRAH + FLXLDCAH + FLXLDIAH + FLXLDAAH + FLXLDOAH C C TSTORWATH = TOTAL FLEX LOAD (TW) FOR WATER HEATING SUBJECT TO STORAGE C FLXLDRWH = RES WATER HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDCWH = COM WATER HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDAWH = A/F/F WATER HEAT LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C TSTORWATH = FLXLDRWH + FLXLDCWH + FLXLDAWH C C TSTORAWH = TOTAL LOAD (TW) FOR LOW-TEMP AIR AND WATER HEATING SUBJ TO STORAGE C TSTORAWH = TSTORAIRH + TSTORWATH C C TOTCOLD = TOTAL ANNUAL-AVG BUILDING COLD LOAD AMONG ALL SECTORS (TW) C TOTHOT = TOTAL ANNUAL-AVG BUILDING HEAT LOAD AMONG ALL SECTORS (TW) C TOTCOLD = TSTORCOOL + COLDINFX + COLDFLEX TOTHOT = TSTORAWH + HOTINFLX + HOTFLEX C IF (IFGATHEAT.EQ.1) THEN WRITE(IOUT,120)TOTCOLD,AVCOLDLD(1),TOTHOT,AVHEATLD(1), 1 CDDHDD,ACFRACTOT,FRCOLD,FRWARM,COLDFAC,WARMFAC ELSE WRITE(IOUT,135)TOTCOLD,AVGCDD(IGRIDUSE),TOTHOT,AVGHDD(IGRIDUSE), 1 CDDHDD,ACFRACTOT,0.,0.,0.,0. ENDIF C 120 FORMAT('TOTCOLD-TW AVCOLLD-TW TOTHOT-TW AVHOTLD-TW CDDHDD ', 1 'ACFRACTOT'/,6(0PF11.4)/, 1 'FRCOLD FRWARM COLDFAC WARMFAC'/,4(0PF11.4)/) C 135 FORMAT('TOTCOLD-TW AVGCDD-F TOTHOT-TW AVGHDD-F CDDHDD ', 1 'ACFRACTOT '/,6(0PF11.4)/, 1 'FRCOLD FRWARM COLDFAC WARMFAC'/,4(0PF11.4)/) C C ***************************************************************************** C MONTHLY VARIATION OF HEATING/COOLING LOADS IN U.S. C ***************************************************************************** C COOLMAX = 0. WARMMAX = 0. C C HDDYEAR = HEATING DEGREE DAYS PER YEAR (F) = 4524 C CDDYEAR = COOLING DEGREE DAYS PER YEAR (F) = 1216 C HDDMON = HEATING DEGREE DAYS PER MONTH (F) C = DEVIATIONS BELOW MEAN DAILY TEMPERATURE OF 65 F SUMMED OVER C ALL DAYS IN MONTH C CDDMON = COOLING DEGREE DAYS PER MONTH (F) C = DEVIATIONS ABOVE MEAN DAILY TEMPERATURE OF 65 F SUMMED OVER C ALL DAYS IN MONTH C IF (IFCONUS.EQ.1) THEN C HDDYEAR = 0. CDDYEAR = 0. C DO I = 1, MXMONTH HDDYEAR = HDDYEAR + HDDMON(I) CDDYEAR = CDDYEAR + CDDMON(I) ENDDO C C FRDAYCOOL = FRAC OF YEARLY AIR COOLING + REFRIG THAT OCCURS ON CURRENT GMT DAY C DETERMINED FROM NUMBER OF DEGREE-COOLING DAYS ON DAY C FRDAYWARM = FRAC OF YEARLY AIR & WATER HEATING THAT OCCURS ON CURRENT GMT DAY C DETERMINED FROM NUMBER OF DEGREE-HEATING DAYS ON DAY C TSTORCOOL = ANNUAL AVG LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C TSTORAWH = ANNUAL AVG LOAD (TW) FOR AIR AND WATER HEATING SUBJECT TO STORAGE C WARMMAX = MAX LOW-TEMP HEATING LOAD SUBJ TO STORAGE (TW) ANY TIME DURING SIM PERIOD C (ALREADY CONVERTED TO ELECTRICAL LOAD THAT WOULD PRODUCE THAT HEAT C LOAD, ASSUMING HEAT PUMPS RUNNING ON ELECTRICITY, IN C countrystats.dat) C COOLMAX = MAX COOLING LOAD SUBJ TO STORAGE (TW) ANY TIME DURING SIMULATION PERIOD C TCOOLMON = FLEXIBLE COOLING LOAD ON ANY DAY IN CURRENT MONTH OF YEAR (TW) C TWARMMON = FLEXIBLE HEATING LOAD ON ANY DAY IN CURRENT MONTH OF YEAR (TW) C LDMONTH = NUMBER OF DAYS IN A MONTH C NDAYYR = NUMBER OF DAYS PER YEAR OF SIMULATION (EITHER 365 OR 366) C DO N = 1, NYEARS DO I = 1, MXMONTH FRDAYCOOL(N,I) = CDDMON(I) / (CDDYEAR * LDMONTH(N,I)) FRDAYWARM(N,I) = HDDMON(I) / (HDDYEAR * LDMONTH(N,I)) TCOOLMON = TSTORCOOL * NDAYYR(N) * FRDAYCOOL(N,I) TWARMMON = TSTORAWH * NDAYYR(N) * FRDAYWARM(N,I) COOLMAX = MAX(COOLMAX,TCOOLMON) WARMMAX = MAX(WARMMAX,TWARMMON) ENDDO ENDDO C ELSE C ELSEIF IFCONUS=0 C C NDAYYR = NUMBER OF DAYS PER YEAR OF SIMULATION (EITHER 365 OR 366) C LDMONTH = NUM DAYS IN MONTH (ACCOUNTING FOR LEAP DAYS) FOR EACH YEAR OF SIM C HDDREG = HEATING DEGREE DAYS PER DAY (F) FOR REGION J = 1, NUMGRIDS C CDDREG = COOLING DEGREE DAYS PER DAY (F) FOR REGION J = 1, NUMGRIDS C NDAYYR = NUMBER OF DAYS PER YEAR OF SIMULATION (EITHER 365 OR 366) C FRDAYCOOL = FRAC OF YEARLY AIR COOLING + REFRIG THAT OCCURS ON CURRENT GMT DAY C DETERMINED FROM NUMBER OF DEGREE-COOLING DAYS ON DAY C FRDAYWARM = FRAC OF YEARLY AIR & WATER HEATING THAT OCCURS ON CURRENT GMT DAY C DETERMINED FROM NUMBER OF DEGREE-HEATING DAYS ON DAY C TCOOLMON = FLEXIBLE COOLING LOAD ON ANY DAY IN CURRENT DAY OF YEAR (TW) C TWARMMON = FLEXIBLE HEATING LOAD ON ANY DAY IN CURRENT DAY OF YEAR (TW) C TSTORCOOL = AVG ANNUAL LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C TSTORAWH = ANNUAL LOAD (TW) FOR AIR AND WATER HEATING SUBJECT TO STORAGE C TWARMDAY = LOAD ON SPECIFIC DAY OF YEAR (TW) FOR WARMING (AIR AND WATER) C WARMMAX = MAX LOW-TEMP HEATING LOAD SUBJ TO STORAGE (TW) ANY TIME DURING SIM PERIOD C (ALREADY CONVERTED TO ELECTRICAL LOAD THAT WOULD PRODUCE THAT HEAT C LOAD, ASSUMING HEAT PUMPS RUNNING ON ELECTRICITY, IN C countrystats.dat) C COOLMAX = MAX COOLING LOAD SUBJ TO STORAGE (TW) ANY TIME DURING SIMULATION PERIOD C HDDYR = NUMBER OF HEATING DEGREE DAYS PER YEAR. DIVIDE BY NDAYYR C TO OBTAIN YEARLY-AVG NUMBER OF HEATING DEGREE DAYS PER DAY. C HCDDADD = ADD DUMMY HEATING AND COOLING DEGREE DAYS FOR EACH DAY OF C YEAR TO ENSURE MAXIMUM VALUES FOR COUNTRIES THAT HAVE FEW C HDD OR CDD DAYS DON'T RESULT IN ALL HEATING OR COOLING C FALLING ON ONE DAY. IN REALITY, SOME HEATING LOAD SHOULD C BE SPREAD OVER EVERY NIGHT FOR AIR AND WATER HEATING. C SIMILARLY, SOME COOLING OCCURS EVERY DAY FOR REFRIGERATION C ENSURE THAT HDDREG AND CDDREG HAVE A MINIMUM VALUE EACH DAYS BECAUSE C 1) PEOPLE USE COLD AIR/WATER FOR REFRIG, COMPUTER COOLING EVEN IF DAY COLD C AND HOT AIR/WATER FOR SHOWERS, COOKING EVEN IF DAY IS HOT C 2) IF HDDREG OR CDDREG = 0 EVERY DAY OF YEAR, THEN HEAT OR COLD LOAD IS C SET TO ZERO EVERY DAY ALTHOUGH A LOAD MAY ACTUALLY EXIST C 3) IF HDDREG>0 ONLY ON ONE DAY OF YEAR, THE MAXIMUM HEAT LOAD = 365*TSTORAWH C SAME WITH COLD LOAD C DO N = 1, NYEARS HDDYR(N) = 0. CDDYR(N) = 0. C C NOTE THAT HDDREG AND CDDREG HAVE MIN VALS DEGDAYMIN, SO HDDYR, CDDYR NEVER 0 C DO I = 1, NDAYYR(N) HDDYR(N) = HDDYR(N) + HDDREG(IGRIDUSE,N,I) + HCDDADD CDDYR(N) = CDDYR(N) + CDDREG(IGRIDUSE,N,I) + HCDDADD ENDDO C DO I = 1, NDAYYR(N) FRDAYCOOL(N,I) = (CDDREG(IGRIDUSE,N,I) + HCDDADD) / CDDYR(N) FRDAYWARM(N,I) = (HDDREG(IGRIDUSE,N,I) + HCDDADD) / HDDYR(N) TCOOLDAY1 = TSTORCOOL * NDAYYR(N) * FRDAYCOOL(N,I) TWARMDAY1 = TSTORAWH * NDAYYR(N) * FRDAYWARM(N,I) COOLMAX = MAX(COOLMAX,TCOOLDAY1) WARMMAX = MAX(WARMMAX,TWARMDAY1) ENDDO C ENDDO C ENDDO N = 1, NYEARS C ENDIF C ENDIF IFCONUS=1 C C ***************************************************************************** C OVERRIDE WARMMAX, COOLMAX WHEN IFGATHEAT=1 C ***************************************************************************** C WARMMAX = MAX LOW-TEMP HEATING LOAD SUBJ TO STORAGE (TW) ANY TIME DURING SIM PERIOD C (ALREADY CONVERTED TO ELECTRICAL LOAD THAT WOULD PRODUCE THAT HEAT C LOAD, ASSUMING HEAT PUMPS RUNNING ON ELECTRICITY, IN C countrystats.dat) C COOLMAX = MAX COOLING LOAD SUBJ TO STORAGE (TW) ANY TIME DURING SIMULATION PERIOD C TSTORCOOL = AVG ANNUAL LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C TSTORAWH = ANNUAL LOAD (TW) FOR AIR AND WATER HEATING SUBJECT TO STORAGE C CURCOLD = CURRENT BUILDING END-USE COLD LOAD (TW) FOR REGION FROM GATOR-GCMOM C CURHEAT = CURRENT BUILDING END-USE HEAT LOAD (TW) FOR REGION FROM GATOR-GCMOM C AVHEATLD = ANNUAL AVG BUILDING HEAT LOAD (TW) OVER ENTIRE KWWS DATASET C AVCOLDLD = ANNUAL AVG BUILDING COLD LOAD (TW) OVER ENTIRE KWWS DATASET C FSTPCOOL = FRAC OF ANNUAL AVG COLD LOAD OCCURRING IN GIVEN TIME STEP C FSTPWARM = FRAC OF ANNUAL AVG WARM LOAD OCCURRING IN GIVEN TIME STEP C IF (IFGATHEAT.EQ.1) THEN COOLMAX = 0. WARMMAX = 0. DO J = 1, IWWS IYY = IYRWWS(J) IF (TIMWWS(J).GT.0.AND.TIMWWS(J).LT.TIMLOAD(NHRSIM)) THEN FSTPCOOL(J) = CURCOLD(J) / AVCOLDLD(IYY) FSTPWARM(J) = CURHEAT(J) / AVHEATLD(IYY) TCOOLDAY1 = TSTORCOOL * FSTPCOOL(J) TWARMDAY1 = TSTORAWH * FSTPWARM(J) COOLMAX = MAX(COOLMAX,TCOOLDAY1) WARMMAX = MAX(WARMMAX,TWARMDAY1) ENDIF ENDDO ENDIF C ENDIF IFGATHEAT=1 C C ***************************************************************************** C SET SOIL STORAGE CHARGING/DISCHARGING RATES C ***************************************************************************** C UTESDISCH = MAX DISCHARGE RATE (TW) UNDERGROUND SEASONAL HEAT STORAGE C = MAX HEAT LOAD C SINCE HEATING IS PROVIDED BY HEAT PUMPS AND HEATING LOAD C WAS CONVERTED TO EQUIVALENT ELECTRICAL LOAD IN C countrystats.dat, THIS MAX DISCHARGE RATE IS OF C ELECTRICITY TO PROVIDE THE HEAT FROM HEAT PUMPS C THUS, NO NEED TO ADJUST UTESCHARG WITH CPERFORM, SINCE C UTES STORAGE IS ALREADY EFFECTIVE ELECTRICAL STORAGE C UTESCHARG = MAX CHARGE RATE (TW) UNDERGROUND SEASONAL HEAT STORAGE C FROM EXCESS ELECTRIC POWER GENERATION C SINCE LOW-TEMP HEAT LOAD IN countrystats.dat ALREADY C CONVERTED TO EQUIVALENT ELECTRICAL LOAD ASSUMING C HEAT PUMPS WITH CPERFORM, UTESCCHARG IS REALLY THE CHARGE C RATE OF EQUIV ELECTRICITY TO GIVE HEATING FROM HEAT PUMPS C CPERFORM = COEFFICIENT OF PERFORMANCE OF HEAT PUMPS C (J-TH/J-ELEC = = KWH-TH/KWH-ELEC = KW-TH/KW-ELEC) C = RATIO OF JOULES OF HEAT MOVED OR PRODUCED PER JOULE OF ELECTRICITY C = 1 FOR ELECTRIC RESISTANCE HEATING C = 3.2-4.5 FOR AIR SOURCE HEAT PUMPS C = 4.2-5.2 FOR GROUND SOURCE HEAT PUMPS C STORUGHRS = HOURS OF UNDERGROUND SEASONAL HEAT STORAGE IN SOIL (UTES) (HRS) C WARMMAX = MAX LOW-TEMPERATURE HEATING LOAD ANY DAY OF YEAR (TW) C (ALREADY CONVERTED TO ELECTRICAL LOAD THAT WOULD PRODUCE THAT HEAT C LOAD, ASSUMING HEAT PUMPS RUNNING ON ELECTRICITY, IN C countrystats.dat) C UGFAC = FACTOR TO MULTIPLY UTESCHARG BY TO INCREASE OR DECREASE C CHARGE RATE OF UTES STORAGE WITH ELECTRIC HEAT PUMPS. C IDEALLY 0-1 BUT CAN GO ABOVE 1. HIGHER UGFAC-->MORE C EXPENSIVE COST OF HEAT PUMPS TO CHARGE STORAGE WITH C ELECTRICITY. IF UGFAC=0, THEN ONLY SOLAR COLLECTORS C (FACSHT) CAN SUPPLY UTES WITH HEAT . C TSTORCOOL = AVG ANNUAL LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C UTESDISCH = WARMMAX UTESCHARG = WARMMAX * UGFAC C WRITE(IOUT,167)TSTORCOOL*1E3,COOLMAX*1E3,TSTORAWH*1E3,WARMMAX*1E3, 1 COOLSTES 167 FORMAT('AVGCOOLING MAXCOOLING-GW AVGHEATING MAXHEATING-GW '/, 1 4(0PF11.5)/ 1 'COOLSTES'/1(0PF11.5)) C C HOTDISCH = MAX DISCHARGE RATE (TW) OF HOT WATER (HW)-STES C REALLY MAX DISCHARGE RATE OF ELECTRICITY TO C PRODUCE THE HEAT SINCE HEAT LOAD CONVERTED TO ELECTRICAL LOAD C THAT WOULD PRODUCE THAT HEAT WITH HEAT PUMPS IN C countrystats.dat C HOTCHARG = MAX CHARGE RATE (TW) OF HOT WATER (HW)-STES C REALLY MAX CHARGE RATE OF ELECTRICITY TO C PRODUCE THE HEAT SINCE HEAT LOAD CONVERTED TO ELECTRICAL LOAD C THAT WOULD PRODUCE THAT HEAT WITH HEAT PUMPS IN C countrystats.dat C HWFAC = FACTOR TO MULTIPLY HOTCHARGE BY TO INCREASE OR DECREASE C CHARGE RATE OF HW-STES STORAGE WITH ELECTRIC HEAT PUMPS. C IDEALLY 0-1 BUT CAN BE ABOVE 1. C HOTDISCH = WARMMAX HOTCHARG = WARMMAX * HWFAC C C ***************************************************************************** C SET LOAD SUBJECT TO DEMAND-RESPONSE C THESE ARE LOADS ASIDE FROM LOW-TEMPERATURE HEATING LOADS C ***************************************************************************** C TLOADH2 = LOAD (TW) FOR H2 PROD/COMPRESSION/STORAGE C TLOADDRM = TOTAL LOAD (TW) SUBJECT TO DEMAND-RESPONSE MANAGEMENT C TFLEXTRA = TOTAL TRANSPORTATION LOAD (TW) THAT IS FLEXIBLE C FLXLDITR = INDUSTRY ON-SITE TRANSPORT LOAD (TW) THAT IS FLEXIBLE C FLXLDIHT = INDUSTRY HI-T, CHEM, ELEC LOAD (TW) THAT IS FLEXIBLE C FLXLDROT = RES OTHER LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES OR H2) C FLXLDCOT = COM OTHER LOAD (TW) THAT IS FLEXIBLE (DESIGNED WITH TES) C FLXLDAOT = A/F/F OTHER LOAD (TW) THAT IS FLEXIBLE & SUBJECT TO DRM C FLXLDIOT = IND OTHER ELEC LOAD (TW) THAT IS FLEXIBLE & SUBJECT TO DRM C FLXLDOEL = OTHER LOAD (TW) THAT IS ELECTRIC AND FLEXIBLE & SUBJECT TO DRM C TWHH2TOT = TOTAL TWH/YR ELEC NEEDED ALL SECTORS 2050 TO PROD/COMPRESS/STORE H2 C THIS NUMBER ACCOUNTS FOR LEAKED HYDROGEN C TLOADH2 = TWHH2TOT / HRSPYR TLOADDRM = TFLEXTRA + FLXLDITR + FLXLDIHT + FLXLDIOT 1 + FLXLDROT + FLXLDCOT + FLXLDAOT + FLXLDOEL - TLOADH2 1 + COLDFLEX + HOTFLEX C IF (TLOADDRM.LT.0.) THEN WRITE(IOUT,*)'POWERWORLD: TLOADDRM=0 --> EITHER TOO MUCH H2 ', 1 'PRODUCTION OR TOO LITTLE FLEXIBLE LOAD --> ', 1 'INCREASE TFLEXTRA, FLXLDITR, OR FLXLDIHT ', 1 TLOADH2,TWHH2TOT, 1 TFLEXTRA, FLXLDITR, FLXLDIHT, FLXLDIOT, FLXLDROT, 1 FLXLDCOT, FLXLDAOT, FLXLDOEL, COLDFLEX, HOTFLEX STOP ENDIF C C ***************************************************************************** C IF USING HEAT PUMPS, RECALCULATE TOTAL LOAD, WHICH WILL BE LOWER NOW C ***************************************************************************** C TLOAD2050 = TOTAL 2050 ALL-SECTOR LOAD WITH WWS (TW) AFTER HEAT PUMPS C TLFIN2050 = TOTAL 2050 ALL-SECTOR LOAD WITH WWS (TW) AFTER HEAT PUMPS C BLOADRES = 2050 RESIDENTIAL WWS LOAD (GW) AFTER HEAT PUMPS C BLOADCOM = 2050 COMMERCIAL WWS LOAD (GW) AFTER HEAT PUMPS C BLOADIND = 2050 INDUSTRIAL WWS LOAD (GW) AFTER HEAT PUMPS C BLOADTRA = 2050 TRANSPORTATION WWS LOAD (GW) AFTER HEAT PUMPS C BLOADAGF = 2050 AG/FORESTRY/FISH WWS LOAD (GW) AFTER HEAT PUMPS C BLOADOTH = 2050 OTHER WWS LOAD (GW) AFTER HEAT PUMPS C DECLOAD = TLOAD2050 - TLFIN2050 SHOULD = 0. C CPERFORM = COEFFICIENT OF PERFORMANCE OF HEAT PUMPS C (J-TH/J-ELEC = = KWH-TH/KWH-ELEC = KW-TH/KW-ELEC) C = RATIO OF JOULES OF HEAT MOVED OR PRODUCED PER JOULE OF ELECTRICITY C TLFIN2050 = BLOADRES+BLOADCOM+BLOADIND+BLOADTRA+BLOADAGF+BLOADOTH DECLOAD = TLOAD2050 - TLFIN2050 C WRITE(IOUT,160) TLOAD2050*GWPTW,TLFIN2050*GWPTW, 1 BLOADRES *GWPTW,BLOADRES *GWPTW, 1 BLOADCOM *GWPTW,BLOADCOM *GWPTW, 1 BLOADTRA *GWPTW,BLOADTRA *GWPTW, 1 BLOADIND *GWPTW,BLOADIND *GWPTW, 1 BLOADAGF *GWPTW,BLOADAGF *GWPTW, 1 BLOADOTH *GWPTW,BLOADOTH *GWPTW, 1 FDISTHEAT, FMORTBAU, 1 CPERFORM, 1 DECLOAD*GWPTW 160 FORMAT(/ 1 'ALL-PURPOSE LOAD (GW) BEF/AFT HEAT PUMPS = ',2(0PF12.6),/ 1 'RESIDENTIAL LOAD (GW) BEF/AFT HEAT PUMPS = ',2(0PF12.6),/ 1 'COMMERCIAL LOAD (GW) BEF/AFT HEAT PUMPS = ',2(0PF12.6),/ 1 'TRANSPORT LOAD (GW) BEF/AFT HEAT PUMPS = ',2(0PF12.6),/ 1 'INDUSTRIAL LOAD (GW) BEF/AFT HEAT PUMPS = ',2(0PF12.6),/ 1 'AG/FOR/FISH LOAD (GW) BEF/AFT HEAT PUMPS = ',2(0PF12.6),/ 1 'OTHER LOAD (GW) BEF/AFT HEAT PUMPS = ',2(0PF12.6),/ 1 'FDISTHEAT-FRAC HEAT,COLD THAT IS DH, FMORTBAU = ',2(0PF12.6),/ 1 'HEAT PUMP COEFFICIENT OF PERFORMANCE = ',0PF12.6,/ 1 'DECLOAD (GW) SHOULD = 0 = ',0PF12.6,/) C C ***************************************************************************** C CALCULATE TOTAL FLEXIBLE & INFLEXIBLE LOADS C ***************************************************************************** C TLOADFLEX = TOTAL FLEXIBLE LOAD (TW) 2050 WITH WWS C INCLUDES LOADS SUBJECT TO STORAGE, DEMAND-RESPONSE, AND H2 PROD C TSTORCOOL = ANNUAL AVG LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C DOES NOT INCLUDE ELECCOLD (INFLEX COLD LOAD) C TSTORAWH = ANNUAL AVG LOAD (TW) FOR AIR+WATER HEATING SUBJECT TO STORAGE C DOES NOT INCLUDE ELECHOT (INFLEX HEAT LOAD) C TLOADDRM = TOTAL LOAD (TW) SUBJECT TO DEMAND-RESPONSE MANAGEMENT C TLOADH2 = LOAD (TW) FOR H2 PROD/COMPRESSION/STORAGE C TLOADINFX = TOTALINFLEXIBLE LOAD IN 2050 WITH WWS (TW) C FRCFLEXALL = FRACTION OF TOTAL 2050 LOAD THAT IS FLEXIBLE C TWHH2RE = TWH/YR ELEC TO PRODUCE H2+LEAKS+ELECTROLYSIS+COMPRESS FOR C RESIDENTIAL SECTOR FROM 2050 50-STATE PLAN C TWHH2CO = TWH/YR ELEC TO PRODUCE H2+LEAKS+ELECTROLYSIS+COMPRESS FOR C COMMERCIAL SECTOR FROM 2050 50-STATE PLAN C TWHH2TR = TWH/YR ELEC TO PRODUCE H2+LEAKS+ELECTROLYSIS+COMPRESS FOR TRANSPORT C FROM 2050 50-STATE PLAN C TWHH2IN = TWH/YR ELEC TO PRODUCE H2+LEAKS+ELECTROLYSIS+COMPRESS FOR INDUSTRY C FROM 2050 50-STATE PLAN C TWHH2TOT = TOTAL TWH/YR ELEC NEEDED ALL SECTORS 2050 TO PROD/COMPRESS/STORE H2 C THIS NUMBER ACCOUNTS FOR LEAKED HYDROGEN C FRCH2ALL = FRAC OF ALL-SECTOR 2050 LOAD USED TO PRODUCE/COMPRESS/STORE H2 C TLOAD2050 = TOTAL 2050 ALL-SECTOR LOAD WITH WWS (TW) AFTER HEAT PUMPS C TLFIN2050 = TOTAL 2050 ALL-SECTOR LOAD WITH WWS (TW) AFTER HEAT PUMPS C TLOADFLEX = TSTORCOOL + TSTORAWH + TLOADDRM + TLOADH2 TLOADINFX = TLFIN2050 - TLOADFLEX C FRCFLEXALL = TLOADFLEX / TLFIN2050 FRCH2ALL = TWHH2TOT / (TLFIN2050 * HRSPYR) C C COLDINFX = ANNUAL AVG TOTAL INFLEXIBLE COLD LOAD (TW) ACROSS ALL SECTORS C CALCULATED AFTER HEAT PUMPS HAVE BEEN ACCOUNTED FOR C HOTINFLX = ANNUAL AVG TOTAL INFLEXIBLE HOT LOAD (TW) ACROSS ALL SECTORS C CALCULATED AFTER HEAT PUMPS HAVE BEEN ACCOUNTED FOR C ELECCOLD = ANNUAL AVG ELEC LOAD (TW) TO SATISFY INFLEX COLD LOAD W/HEAT PUMPS C ELECHOT = ANNUAL AVG ELEC LOAD (TW) TO SATISFY INFLEX HOT LOAD W/HEAT PUMPS C TNONHC = ANNUAL AVG TOTAL INFLEXIBLE LOAD (TW) THAT IS NOT HOT OR COLD LOAD C ELECCOLD = COLDINFX ELECHOT = HOTINFLX TNONHC = TLOADINFX - ELECCOLD - ELECHOT C C ***************************************************************************** C PRINT LOAD AND H2 STATISTICS BY SECTOR C ***************************************************************************** C TLFIN2050 = TOTAL 2050 ALL-SECTOR LOAD WITH WWS (TW) AFTER HEAT PUMPS C BLOADRES = 2050 RESIDENTIAL WWS LOAD (GW) AFTER HEAT PUMPS C BLOADCOM = 2050 COMMERCIAL WWS LOAD (GW) AFTER HEAT PUMPS C BLOADIND = 2050 INDUSTRIAL WWS LOAD (GW) AFTER HEAT PUMPS C BLOADTRA = 2050 TRANSPORTATION WWS LOAD (GW) AFTER HEAT PUMPS C BLOADAGF = 2050 AG/FORESTRY/FISH WWS LOAD (GW) AFTER HEAT PUMPS C BLOADOTH = 2050 OTHER WWS LOAD (GW) AFTER HEAT PUMPS C WRITE(IOUT,184) TLFIN2050*GWPTW,TLOADINFX*GWPTW,TLOADFLEX*GWPTW, 1 TSTORCOOL*GWPTW,TSTORAWH *GWPTW,TLOADDRM *GWPTW, 1 TLOADH2 *GWPTW 184 FORMAT('TLFIN2050-GW TLOADINFX TLOADFLEX TSTORCOOL TSTORAWH ', 1 'TLOADDRM TLOADH2 ',/7(0PF11.5)/) C WRITE(IOUT,169) BLOADRES *GWPTW, BLOADCOM*GWPTW, BLOADIND*GWPTW, 1 BLOADTRA *GWPTW, BLOADAGF*GWPTW, BLOADOTH*GWPTW, 1 TLFIN2050*GWPTW 169 FORMAT('BLOADRES-GW BLOADCOM BLOADIND BLOADTRA BLOADAGF ', 1 'BLOADOTH BLFIN2050 '/,7(0PF11.4)/) C WRITE(IOUT,170) 1 TFLEXRES*GWPTW, (TFLEXRES-TWHH2RE/HRSPYR)*GWPTW, 1 TWHH2RE*GWPTW/HRSPYR, TWHH2RE, FRACREH2, 1 TFLEXCOM*GWPTW, (TFLEXCOM-TWHH2CO/HRSPYR)*GWPTW, 1 TWHH2CO*GWPTW/HRSPYR, TWHH2CO, FRACCOH2, 1 TFLEXIND*GWPTW, (TFLEXIND-TWHH2IN/HRSPYR)*GWPTW, 1 TWHH2IN*GWPTW/HRSPYR, TWHH2IN, FRACINH2, 1 TFLEXTRA*GWPTW, (TFLEXTRA-TWHH2TR/HRSPYR)*GWPTW, 1 TWHH2TR*GWPTW/HRSPYR, TWHH2TR, FRACTRH2, 1 TFLEXAGF*GWPTW, (TFLEXAGF-TWHH2AG/HRSPYR)*GWPTW, 1 TWHH2AG*GWPTW/HRSPYR, TWHH2AG, FRACAGH2, 1 TFLEXOTH*GWPTW, (TFLEXOTH-TWHH2OT/HRSPYR)*GWPTW, 1 TWHH2OT*GWPTW/HRSPYR, TWHH2OT, FRACOTH2, 1 TLOADFLEX*GWPTW, (TLOADFLEX-TWHH2TOT/HRSPYR)*GWPTW, 1 TWHH2TOT*GWPTW/HRSPYR, TWHH2TOT, FRCH2ALL C 170 FORMAT( 1 'GWRES-2050ALLFLEX FLEX-H2GW H2GW H2TWH FRACH2 ',5(0PF12.5),/ 1 'GWCOM-2050ALLFLEX FLEX-H2GW H2GW H2TWH FRACH2 ',5(0PF12.5),/ 1 'GWIND=2050ALLFLEX FLEX-H2GW H2GW H2TWH FRACH2 ',5(0PF12.5),/ 1 'GWTRA-2050ALLFLEX FLEX-H2GW H2GW H2TWH FRACH2 ',5(0PF12.5),/ 1 'GWAGF-2050ALLFLEX FLEX-H2GW H2GW H2TWH FRACH2 ',5(0PF12.5),/ 1 'GWOTH-2050ALLFLEX FLEX-H2GW H2GW H2TWH FRACH2 ',5(0PF12.5),/ 1 'GWTOT-2050ALLFLEX FLEX-H2GW H2GW H2TWH FRACH2 ',5(0PF12.5),/) C WRITE(IOUT,171) FRCFLEXRES*PCT, FRCFLEXCOM*PCT, FRCFLEXIND*PCT, 1 FRCFLEXTRA*PCT, FRCFLEXAGF*PCT, FRCFLEXOTH*PCT, 1 FRCFLEXALL*PCT 171 FORMAT('FRCFLEXRES% FRCFLEXCOM FRCFLEXIND FRCFLEXTRA FRCFLEXAGF ', 1 'FRCFLEXOTH FRCFLEXALL '/,7(0PF11.5)/) C C ***************************************************************************** C SET CHARGING/DISCHARGING RATES FOR NON-UTES STORAGE C ***************************************************************************** C TSTORAIRC = AVG ANNUAL LOAD (TW) FOR AIR COOLING (TW) SUBJECT TO STORAGE C TSTORREFR = AVG ANNUAL LOAD (TW) FOR REFRIGERATION SUBJECT TO STORAGE C TSTORAWH = AVG ANNUAL LOAD FOR AIR+WATER HEATING (TW) FROM STORAGE C (HOT WATER OR SOIL) C TSTORPHS = MAX DISCHARGE & CHARGE RATE PUMPED HYDRO STORAGE (TW) C = 57.683 GW 2010 U.S. C = 21.5 GW CURRENT PLUS PENDING LICENSES AS OF 10/1/14 C + 34.033 MW PRELIMINARY PERMITS ISSUED + 2.15 MW PENDING PERMITS C http://www.ferc.gov/industries/hydropower/gen-info/licensing/ C pump-storage.asp C C 2012 PHS WORLDWIDE 132.36 GW (EIA INTERNATIONAL ENERGY STATS) C (JAPAN 26.744 GW; US 22.368 GW; JAPAN; CHINA 21 GW) C http://www.eia.gov/cfapps/ipdbproject/IEDIndex3.cfm?tid=2&pid=2&aid=7 C TGWUTILPV = NEW+EXISTING INSTALLED GW OF UTILITY-SCALE PV C STORCTWH = MAX NUMBER OF TWH OF CSP STORAGE C TEXISTPHS = CURRENT-YEAR PUMPED-HYDRO STORAGE (PHS) NAMEPLATE CAPACITY (TW) C TEXISTSTH = CURRENT-YEAR SOLAR THERMAL FOR HEAT NAMEPLATE CAPACITY (TW) C EXISTPHSR = PRE-EXISTING PUMPED-HYDRO STORAGE (PHS) NAMEPLATE CAPACITY (GW) C IN GRID REGION J=1,NUMGRIDS C EXISOLTHR = PRE-EXISTING SOLAR THERMAL FOR HEAT NAMEPLATE CAPACITY (GW) C IN GRID REGION J=1,NUMGRIDS C TWPERGW = 0.001 TERAWATTS (TW) PER GIGAWATT (GW) C PHSMIN = MIN PHS NAMEPLATE CAPAC (TW) IN 2050. C SOME REGIONS (E.G., JAMAICA, HAITI) NEED SMALL VALUES C EGWHYD = CURYEAR-YEAR INSTALLED GW OF HYDROELECTRIC POWER IN REGION C C FOR NON-US COUNTRIES ONLY: C MULTIPLY EXISTPHSR BY THE PROJECTED RATIO OF US PENDING+EXISTING/EXISTING C AND ADD CONSTANT SINCE SOME REGIONS HAVE NO INSTALLATIONS TO DATE C IF (IFCONUS.EQ.1) THEN TEXISTSTH = 0. TEXISTPHS = 0.022368 TSTORPHS = 0.057683 ELSEIF (IFSTATES.EQ.1.OR.IFCANARY.EQ.1) THEN TEXISTSTH = EXISOLTHR(IGRIDUSE) * TWPERGW TEXISTPHS = EXISTPHSR(IGRIDUSE) * TWPERGW TSTORPHS = MAX(TEXISTPHS,PHSMIN) ELSE TEXISTSTH = EXISOLTHR(IGRIDUSE) * TWPERGW TEXISTPHS = EXISTPHSR(IGRIDUSE) * TWPERGW TSTORPHS = 3.5 * TEXISTPHS + PHSMIN ENDIF C C CSPSTORGAT = RATIO OF MAX CHARGE RATE (TW) OF CSP DIRECTLY-USED+STORED C ELECTRICITY TO DISCHARGE RATE (CSPDISCH) OF CSP GENERATORS. C THE NUMBER/SIZE OF MIRRORS IS ASSOCIATED WITH THE CHARGE RATE OF C STORAGE+DIRECT ELECTRICITY. GENERATOR SIZE ASSOC W/DISCHARGE RATE. C = 1->NO STORAGE.ALL CSP FOR ELEC AT CHARGE/DISCHARGE RATE CSPDISCH C = 2.6 --> TOTAL ELECTRICITY COLLECTION AT RATE 2.6 X CSPDISCH, C WHERE 1.6 X CSPDISCH FOR STORAGE & 1.0 X CSPDISCH FOR DIRECT ELEC C CSPSTORGAT MUST EQUAL CSPSTORG IN reader.f IN GATOR-GCMOM C FOR U.S. STATES OR 143 COUNTRIES, USE VALUE IN xlsx-spreadsheets C AT web.stanford.edu/group/efmh/jacobson/Articles/I/ C WWS-50-USState-plans.html 'Tables for GATOR-GCMOM' TAB CELL A7 C CSPCHSTO = MAX CHARGE RATE (TW) OF CSP STORAGE ONLY (NOT STORAGE + C DIRECT ELECTRICITY FROM TURBINES) WHEN STORAGE EXISTS. C = CSPCHARG - CSPDISCH C IF NO CSP STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C CSPCHARG = MAX CHARGE RATE (TW) OF CSP DIRECT ELECTRICITY + STORAGE C = CSPDISCH + CSPCHSTO C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C BASED ON SIZE OF MIRRORS (NOT SIZE OF GENERATOR) C CSP SOLAR COLLECTOR FIELD ARE OVERSIZED BY A FACTOR OF 3-5 C COMPARED WITH THE SIZE NEEDED TO FEED THE STEAM TURBINE AT C NOMINAL DESIGN CAPACITY WITH MAX SOLAR IRRADIANCE (1 KW/M2) C http://www.irena.org/DocumentDownloads/Publications/IRENA- C ETSAP%20Tech%20Brief%20E10%20Concentrating%20Solar%20Power.pdf C PAGE 5 C CSPDISCH = MAX DISCHARGE RATE (TW) OF CSP EITHER FROM STORAGE OR DIRECTLY C = CSPCHARG - CSPCHSTO = CSP TURBINE SIZE C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C CSPCHSTO = CSPDISCH * (CSPSTORGAT - 1.) CSPCHARG = CSPDISCH + CSPCHSTO C C RATIOCSP = RATIO OF TW OF CSP COLLECED IN MIRRORS FOR DIRECT ELECTRICITY C USE PLUS STORAGE TO THAT USED TO DERIVE OUTPUT IN GATOR-GCMOM (KWWS) C (WHICH IS BASED ONLY ON DISCHARGE RATE) C = CSPCHARG / TWCSPGAT C CSPCHARG = MAX CHARGE RATE (TW) OF CSP DIRECT ELECTRICITY + STORAGE C = CSPDISCH + CSPCHSTO C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C BASED ON SIZE OF MIRRORS (NOT SIZE OF GENERATOR) C CSP SOLAR COLLECTOR FIELD ARE OVERSIZED BY A FACTOR OF 3-5 C COMPARED WITH THE SIZE NEEDED TO FEED THE STEAM TURBINE AT C NOMINAL DESIGN CAPACITY WITH MAX SOLAR IRRADIANCE (1 KW/M2) C http://www.irena.org/DocumentDownloads/Publications/IRENA- C ETSAP%20Tech%20Brief%20E10%20Concentrating%20Solar%20Power.pdf C PAGE 5 C TWCSPGAT = TW ALL CSP INSTALLED WORLDWIDE IN GATOR-GCMOM C TGWSHEAT = NEW+EXISTING INSTALLED GW OF SOLAR HOT WAT/GLYCOL COLLECTORS C AGWSHEAT = NEW INSTALLED GW SOLAR THERM HOT WAT/GLYCOL SOLN COLLECTORS C FOR COST PURPOSES (SINCE COST/MW ASSUMED SAME AS UTILITY PV) C ENERGY OUTPUT FROM SOLAR HEAT C IF (TWCSPGAT.GT.SMAL30) THEN RATIOCSP = CSPCHARG / TWCSPGAT ELSE RATIOCSP = 0. ENDIF C WRITE(IOUT,148) RATONSHW, RATOFFSHW, RATROOFPV, 1 RATUTILPV, RATIOCSP, RATSHEAT, 1 TWONSHGAT, TWOFFSHGAT,TWROOFPVG, 1 TWUTILPVG, TWCSPGAT, TWSHTGAT 148 FORMAT('RATONSHW RATOFFSHW RATROOFPV = ',3(0PF12.4),/ 1 'RATUTILPV RATIOCSP RATSHEAT = ',3(0PF12.4),/ 1 'TWONSHGAT TWOFFSHGAT TWROOFPVG = ',3(0PF12.4),/ 1 'TWUTILPVG TWCSPGAT TWSHTGAT = ',3(0PF12.4),/) C C TGWSHEAT = NEW+EXISTING INSTALLED GW OF SOLAR HOT WAT/GLYCOL COLLECTORS C TWPERGW = 0.001 TERAWATTS (TW) PER GIGAWATT (GW) C TWINUTES = MAX CHARGE RATE (TW) OF UTES STORAGE FROM SOLAR THERMAL COLLECTORS C SET EQUAL TO NAMEPLATE CAPACITY OFF SOLAR THERMAL C COLLECTORS DIVIDED BY COP OFF HEAT PUMPS (CPERFORM) SINCE C SUPPLY OF HEAT ALSO CONVERTED TO EQUIVALENT ELECTRICITY C NEEDED TO SUPPLY HEAT FROM ELECTRIC HEAT PUMPS C CPERFORM = COEFFICIENT OF PERFORMANCE OF HEAT PUMPS C (J-TH/J-ELEC = = KWH-TH/KWH-ELEC = KW-TH/KW-ELEC) C = RATIO OF JOULES OF HEAT MOVED OR PRODUCED PER JOULE OF ELECTRICITY C = 1 FOR ELECTRIC RESISTANCE HEATING C = 3.2-4.5 FOR AIR SOURCE HEAT PUMPS C = 4.2-5.2 FOR GROUND SOURCE HEAT PUMPS C TWINUTES = TGWSHEAT * TWPERGW / CPERFORM C C STORCTWH = MAX STORAGE CAPACITY (TWH) OF CSP STORAGE C STORPTWH = MAX STORAGE CAPACITY (TWH) OF PHS STORAGE C STOROTWH = MAX STORAGE CAPACITY (TWH) OF CW-STES + PCM-ICE STORAGE C STORBTWH = MAX STORAGE CAPACITY (TWH) OF BATTERY STORAGE C STORHTWH = MAX STORAGE CAPACITY (TWH) OF HW-STES STORAGE C STORWTWH = MAX STORAGE CAPACITY (TWH) OF CW-STES STORAGE C STORITWH = MAX STORAGE CAPACITY (TWH) OF PCM-ICE STORAGE C CSPDISCH = MAX DISCHARGE RATE (TW) OF CSP EITHER FROM STORAGE OR DIRECTLY C = CSPCHARG - CSPCHSTO = CSP TURBINE SIZE C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C CSPCHSTO = MAX CHARGE RATE (TW) OF CSP STORAGE ONLY (NOT STORAGE + C DIRECT ELECTRICITY FROM TURBINES) WHEN STORAGE EXISTS. C = CSPCHARG - CSPDISCH C IF NO CSP STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C TSTORPHS = MAX DISCHARGE AND CHARGE RATE (TW) OF PHS C TSTORCOOL = AVG ANNUAL ELEC LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C BATDISCH = MAX DISCHARGE AND CHARGE RATE (TW) OF BATTERIES C HOTDISCH = MAX DISCHARGE AND CHARGE RATE (TW) OF HW-STES C REALLY MAX DISCHARGE AND CHARGE RATE OF ELECTRICITY TO C PRODUCE THE HEAT SINCE HEAT LOAD CONVERTED TO ELECTRICAL LOAD C THAT WOULD PRODUCE THAT HEAT WITH HEAT PUMPS IN C countrystats.dat C CHILDISCH = MAX DISCHARGE AND CHARGE RATE (TW) CHILLED-WATER (CW)-STES STORAGE C PCMDISCH = MAX DISCHARGE AND CHARGE RATE (TW) PCM-ICE STORAGE C HCHARCSP = MAX NUMBER HOURS THAT CSP CAN BE CHARGED FOR AT RATE CSPCHSTO C TO REACH FULL CAPACITY OF STORCTWH C STORHPHS = MAX HOURS PUMPED HYDRO STORAGE (PHS) C STORHCOLD = MAX HOURS PHASE-CHANGE MATERIAL (PCM)-ICE AND C CHILLED-WATER SENSIBLE-HEAT THERMAL ENERGY STORAGE (CW STES) C STORHBAT = MAX HOURS BATTERY STORAGE AT MAX DISCHARGE RATE C USE TESLA POWERWALL EXAMPLE: 6.4 KWH, 3.3 KW MAX CHARGE/DISCHARGE C --> 1.94 HOURS STORAGE AT MAX DISCHARGE RATE C STORHHWAT = MAX HOURS HOT-WATER SENSIBLE-HEAT THERMAL ENERGY STORAGE C C IT IS CORRECT TO USE CSPCHSTO INSTEAD OF CSPDISCH HERE C STORCTWH = CSPCHSTO * HCHARCSP STORPTWH = TSTORPHS * STORHPHS STOROTWH = TSTORCOOL * STORHCOLD STORBTWH = BATDISCH * STORHBAT STORHTWH = HOTDISCH * STORHHWAT C C THESE TWO SUM UP TO STOROTWH C STORWTWH = CHILDISCH * STORHCOLD STORITWH = PCMDISCH * STORHCOLD C C STORHCSP = HOURS OF CSP STORAGE (HOURS TO DISCHARGE CSP STORAGE AT RATE C CSPDISCH WHEN STORAGE AT FULL CAPACITY) C STORHCSP = STORCTWH / CSPDISCH C C STORTWH = MAX STORAGE CAPACITY (TWH) OF NON-UTES, NON-H2 STORAGE C CHARGTW = MAX RATE OF CHARGING (TW) OF NON-UTES, NON-H2 STORAGE C THIS IS GREATER THAN RATE OF DISCHARGING SINCE CSP COLLECTORS C ARE OVERSIZED RELATIVE TO STEAM TURBINE. C CHARGING AND DISCHARGING RATES ARE THE SAME FOR OTHERS. C DISCHTW = DISCHARGE RATE ALL NON-UTES, NON-H2 STORAGE (TW) C STORTWH = STORCTWH + STORPTWH + STOROTWH + STORBTWH + STORHTWH CHARGTW = CSPCHSTO + TSTORPHS + TSTORCOOL + BATDISCH + HOTCHARG DISCHTW = CSPDISCH + TSTORPHS + TSTORCOOL + BATDISCH + HOTDISCH C C STORHOURS = AVG NUMBER OF HOURS OF STORAGE AMONG ALL NON-UTES, NON-H2 STORAGE C STORHOURS = STORTWH / DISCHTW C C UTESTWH = MAX STORAGE CAPACITY (TWH) UNDERGROUND SEAS HEAT STORAGE IN SOIL C REALLY TWH OF ELECTRICITY STORAGE THAT GIVES NECESSARY C HEATING FROM HEAT PUMPS WITH COP=CPERFORM C UTESDISCH = MAX DISCHARGE RATE (TW) UNDERGROUND SEASONAL HEAT STORAGE C SINCE HEATING IS PROVIDED BY HEAT PUMPS AND HEATING LOAD C WAS CONVERTED TO EQUIVALENT ELECTRICAL LOAD IN C countrystats.dat, THIS MAX DISCHARGE RATE IS OF C ELECTRICITY TO PROVIDE THE HEAT FROM HEAT PUMPS C STORUGHRS = HOURS OF UNDERGROUND SEASONAL HEAT STORAGE (UTES) (HRS) C UTESTWH = UTESDISCH * STORUGHRS C C FEXISTPHS = FRACTION OF PROPOSED PHS STORAGE THAT ALREADY EXISTS C TEXISTPHS = EXISTING PUMPED-HYDRO STORAGE (PHS) INSTALLED CAPACITY (TW) C FEXISTPHS = TEXISTPHS / TSTORPHS C C FRACCSP = FRAC OF KWH OF NON-UTES STORAGE IN PHASE-CHANGE MATERIAL FROM CSP C FRACPHS = FRAC OF KWH OF NON-UTES STORAGE IN PUMPED-HYDRO STORAGE C FRACOLD = FRAC OF KWH OF NON-UTES STORAGE IN COLD-WATER (CW)-STES C FRACPCM = FRAC OF KWH OF NON-UTES STORAGE IN PCM (ICE) C FRACHOT = FRAC OF KWH OF NON-UTES STORAGE IN HOT-WATER STES C FRACBAT = FRAC OF KWH OF NON-UTES STORAGE THAT IS L-I BATTERIES C HCHARCSP = MAX NUMBER HOURS THAT CSP CAN BE CHARGED FOR AT RATE CSPCHSTO C TO REACH FULL CAPACITY OF STORCTWH C STORHCSP = HOURS OF CSP STORAGE (HOURS TO DISCHARGE CSP STORAGE AT RATE C CSPDISCH WHEN STORAGE AT FULL CAPACITY) C STORHPHS = MAX HOURS PUMPED HYDRO STORAGE (PHS) C STORHCOLD = MAX HOURS PHASE-CHANGE MATERIAL (PCM)-ICE AND C CHILLED-WATER SENSIBLE-HEAT THERMAL ENERGY STORAGE (CW STES) C STORHHWAT = MAX HOURS HOT-WATER SENSIBLE-HEAT THERMAL ENERGY STORAGE C STORHBAT = MAX HOURS BATTERY STORAGE C STORUGHRS = HOURS OF UNDERGROUND SEASONAL HEAT STORAGE IN SOIL (UTES) (HRS) C CSPCHSTO = MAX CHARGE RATE (TW) OF CSP STORAGE ONLY (NOT STORAGE + C DIRECT ELECTRICITY FROM TURBINES) WHEN STORAGE EXISTS. C = CSPCHARG - CSPDISCH C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C TSTORPHS = MAX DISCHARGE AND CHARGE RATE (TW) OF PHS C TSTORCOOL = AVG ANNUAL LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C CHILDISCH = MAX DISCHARGE AND CHARGE RATE (TW) CHILLED-WATER (CW)-STES STORAGE C PCMDISCH = MAX DISCHARGE AND CHARGE RATE (TW) PCM-ICE STORAGE C TSTORPHS = MAX DISCHARGE AND CHARGE RATE (TW) OF PHS C HOTDISCH = MAX DISCHARGE AND CHARGE RATE (TW) OF HW-STES C REALLY MAX DISCHARGE AND CHARGE RATE OF ELECTRICITY TO C PRODUCE THE HEAT SINCE HEAT LOAD CONVERTED TO ELECTRICAL LOAD C THAT WOULD PRODUCE THAT HEAT WITH HEAT PUMPS IN C countrystats.dat C BATDISCH = MAX DISCHARGE AND CHARGE RATE (TW) OF BATTERIES C FRACCSP = CSPCHSTO * HCHARCSP / STORTWH FRACPHS = TSTORPHS * STORHPHS / STORTWH FRACOLD = CHILDISCH * STORHCOLD / STORTWH FRACPCM = PCMDISCH * STORHCOLD / STORTWH FRACHOT = HOTDISCH * STORHHWAT / STORTWH FRACBAT = BATDISCH * STORHBAT / STORTWH C SUMFRAC = FRACCSP + FRACPHS + FRACOLD + FRACPCM 1 + FRACHOT + FRACBAT C C TSTORAIRC = AVG ANNUAL LOAD (TW) FOR AIR COOLING (TW) SUBJECT TO STORAGE C TSTORREFR = AVG ANNUAL LOAD (TW) FOR REFRIGERATION SUBJECT TO STORAGE C TSTORCOOL = AVG ANNUAL LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C CHILDISCH = MAX DISCHARGE AND CHARGE RATE (TW) CHILLED-WATER (CW)-STES STORAGE C PCMDISCH = MAX DISCHARGE AND CHARGE RATE (TW) PCM-ICE STORAGE C FRSTORINIT = FRACTION (0-1) OF MAX STORAGE CAPACITY THAT THE STORAGE MEDIUM C HAS IN STORAGE AT THE BEGINNING OF THE SIMULATION. APPLIES TO C ALL STORAGE EXCEPT FOR HYDROPOWER, WHICH IS ASSUMED FULL AT START C WRITE(IOUT,179) 1 TSTORCOOL*1E3, TSTORAIRC*1E3, TSTORREFR*1E3, 1 TSTORCOOL*1E3, CHILDISCH*1E3, PCMDISCH *1E3, 1 PHSMIN *1E3, HCDDADD, FRSTORINIT C 179 FORMAT('TSTORCOOL(GW) = ',0PF13.6,/ 1 'TSTORAIRC(GW) = ',0PF13.6,/ 1 'TSTORREFR(GW) = ',0PF13.6,/ 1 'CHARGE-RATE STES+PCM (GW) = ',0PF13.6,/ 1 'CHARGE-RATE STES (GW) = ',0PF13.6,/ 1 'CHARGE-RATE PCM (GW) = ',0PF13.6,/ 1 'PHSMIN (GW) = ',0PF13.6,/ 1 'HCDDADD (HDD & CDD DAYS) = ',0PF13.6,/ 1 'FRSTORINIT (FRACTION) = ',0PF13.6,/) C C STORCINIT = INITIAL ENERGY AVAILABLE IN CSP STORAGE (TWH) C STORCCUR = CURRENT ENERGY AVAILABLE IN CSP STORAGE (TWH) C STORCINIT = FRSTORINIT * STORCTWH STORCCUR = STORCINIT TREMCSTOR = 0. C C STORPINIT = INITIAL ENERGY AVAILABLE IN PHS STORAGE (TWH) C STORPCUR = CURRENT ENERGY AVAILABLE IN PHS STORAGE (TWH) C STORPINIT = FRSTORINIT * STORPTWH STORPCUR = STORPINIT TREMPSTOR = 0. C C STOROINIT = INITIAL ENERGY AVAILABLE IN CW-STES + PCM-ICE STORAGE (TWH) C STOROCUR = CURRENT ENERGY AVAILABLE IN CW-STES + PCM-ICE STORAGE (TWH) C STOROINIT = FRSTORINIT * STOROTWH STOROCUR = STOROINIT TREMOSTOR = 0. C C STORHINIT = INITIAL ENERGY AVAILABLE IN HW-STES STORAGE (TWH) C STORHCUR = CURRENT ENERGY AVAILABLE IN HW-STES STORAGE (TWH) C STORHINIT = FRSTORINIT * STORHTWH STORHCUR = STORHINIT TREMHSTOR = 0. C C STORBINIT = INITIAL ENERGY AVAILABLE IN BATTERY STORAGE (TWH) C STORBCUR = CURRENT ENERGY AVAILABLE IN BATTERY STORAGE (TWH) C STORBINIT = FRSTORINIT * STORBTWH STORBCUR = STORBINIT TREMBSTOR = 0. C C UGSTINIT = INITIAL ENERGY AVAILABLE IN UNDERGROUND UTES STORAGE (TWH) C REALLY EQUIVALENT ELECTRICITY THAT GIVES NEEDED HEAT C WITH HEAT PUMPS OF COP=CPERFORM C UGSTORCUR = CURRENT ENERGY IN UNDERGROUND SOIL OR WATER STORAGE (TWH) C REALLY CURRENT TWH OF ELECTRICITY STORED IN UTES THAT GIVES NECESSARY C HEATING FROM HEAT PUMPS WITH COP=CPERFORM C UGSTINIT = FRSTORINIT * UTESTWH UGSTORCUR = UGSTINIT C C H2STINIT = INITIAL STORED H2 (TWH-ELEC USED TO PRODUCE/COMPRESS/STORE/H2) C H2STORMX = MAXIMUM STORAGE (TWH) AVAILABLE FOR H2 AT GIVEN TIME C H2CURSTOR = CUR STORED H2 (TWH-ELECTRICITY USED TO PRODUCE/COMPRESS/STORE H2) C H2STINIT = 0.9 * H2STORMX H2CURSTOR = H2STINIT C C HYDROTWH = TWH OF AVAILABLE HYDRO POWER FOR PEAKING DURING YEAR C INITIALIZE AS IF RESERVOIR HOLDS CUR ANNUAL ENERGY C (CURHYD*MXHPYEAR/TDEFFMN IN TWH). EACH TIME STEP, RIVERS ADD C PEAKHYD*PERHRS/TDEFFMN TWH. RESERVOIR ALSO ADDS C BASEHYD*PERHRS/TDEFFMN TWH EACH TIME STEP, BUT THIS IS NOT C STORED IN HYDROTWH. HYDRO IS SUBTRACTED FROM HYDROTWH DURING YEAR C UP TO HYDROTWH AVAILABLE OR ACCUMULATED UP TO HYDTHRESH TWH C HYDROTWH INCLUDES ENERGY NEEDED FOR T&D LOSSES C HYDTHRESH = LEVEL OF HYDROELEC POWER (TWH/YR) ABOVE WHICH IT NEEDS TO BE USED C HRSPYR = AVERAGE NUMBER OF HOURS PER YEAR DURING WHOLE SIMULATION C HTHRFAC = FACTOR TO MULTIPLY CURHYD * HRSPYR (TWH/YR) BY TO SPECIFY C LEVEL OF HYDROPOWER (TWH/YR) ABOVE WHICH IT NEEDS TO BE USED C RANGES FROM 0 TO 2 C CURHYD = 2050 HYDROELECTRIC DELIVERED POWER AFTER T&D LOSSES (TW) C HYDROTWH = CURHYD * MXHPYEAR / TDEFFMN(IHYDRO) HYDTHRESH = HTHRFAC * CURHYD * HRSPYR / TDEFFMN(IHYDRO) C CUMSHED = 0. C C UTESDISCH = MAX DISCHARGE RATE (TW) UNDERGROUND SEASONAL HEAT STORAGE C SINCE HEATING IS PROVIDED BY HEAT PUMPS AND HEATING LOAD C WAS CONVERTED TO EQUIVALENT ELECTRICAL LOAD IN C countrystats.dat, THIS MAX DISCHARGE RATE IS OF C ELECTRICITY TO PROVIDE THE HEAT FROM HEAT PUMPS C UTESCHARG = MAX CHARGE RATE (TW) UNDERGROUND SEASONAL HEAT STORAGE C FROM EXCESS ELECTRIC POWER GENERATION C SINCE LOW-TEMP HEAT LOAD IN countrystats.dat ALREADY C CONVERTED TO EQUIVALENT ELECTRICAL LOAD ASSUMING C HEAT PUMPS WITH CPERFORM, UTESCCHARG IS REALLY THE CHARGE C RATE OF EQUIV ELECTRICITY TO GIVE HEATING FROM HEAT PUMPS C UTESTWH = TWH OF UNDERGROUND SEASONAL HEAT STORAGE IN SOIL OR WATER C REALLY TWH OF ELECTRICITY STORAGE THAT GIVES NECESSARY C HEATING FROM HEAT PUMPS WITH COP=CPERFORM C TWHNONU = MAX STARAGE CAPACITY (TWH) OF NON-UTES, NON-HW-STES, NON-H2 STORAGE C FRACOOL = FRAC OF NON-UTES, NON-HW-STES STORAGE THAT IS CW-STES OR PCM-ICE C TSTORCOOL = AVG ANNUAL LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C BATDISCH = MAX DISCHARGE AND CHARGE RATE (TW) OF BATTERIES C CHARGTW = MAX RATE OF CHARGING (TW) OF NON-UTES, NON-H2 STORAGE C THIS IS GREATER THAN RATE OF DISCHARGING SINCE CSP COLLECTORS C ARE OVERSIZED RELATIVE TO STEAM TURBINE. C CHARGING AND DISCHARGING RATES ARE THE SAME FOR OTHERS. C DISCHTW = DISCHARGE RATE ALL NON-UTES, NON-H2 STORAGE (TW) C CSPCHELC = MAX CHARGE RATE (TW) OF CSP FOR DIRECTLY ELECTRICITY PRODUCTION C = THE REST OF CSP CHARGE GOES TO STORAGE. C = CSPCHARG - CSPCHSTO. C FRACOOL = FRACOLD + FRACPCM CSPCHELC = CSPCHARG - CSPCHSTO C WRITE(IOUT,182) 1 CSPCHELC *1E3, CSPDISCH *1E3, 0., 0., 1 CSPCHSTO *1E3, 0., FRACCSP *STORTWH,FRACCSP*100., 1 TSTORPHS *1E3, TSTORPHS *1E3, FRACPHS *STORTWH,FRACPHS*100., 1 CHILDISCH*1E3, CHILDISCH*1E3, FRACOLD *STORTWH,FRACOLD*100., 1 PCMDISCH *1E3, PCMDISCH *1E3, FRACPCM *STORTWH,FRACPCM*100., 1 TSTORCOOL*1E3, TSTORCOOL*1E3, FRACOOL *STORTWH,FRACOOL*100., 1 BATDISCH *1E3, BATDISCH *1E3, FRACBAT *STORTWH,FRACBAT*100., 1 HOTCHARG *1E3, HOTDISCH *1E3, FRACHOT *STORTWH,FRACHOT*100., 1 CHARGTW *1E3, DISCHTW *1E3, STORTWH, 100., 1 TWINUTES *1E3, UTESDISCH*1E3, UTESTWH, 100., 1 UTESCHARG*1E3, UTESDISCH*1E3, UTESTWH, 100., 1 CURHYD *1E3, HYDISCHTW/TWPERGW,CURHYD*HRSPYR, 100. C 182 FORMAT('STORAGE-TECHNOL GW-CHARGE GW-DISCHARG TWH-STOR ', 1 ' PERCENT-TWH',/ 1 'CSP-ELEC ',4(0PF13.6),/ 1 'CSP-PCM ',4(0PF13.6),/ 1 'PUMPED HYDRO ',4(0PF13.6),/ 1 'CHILLED-WAT-STES ',4(0PF13.6),/ 1 'PCM-ICE ',4(0PF13.6),/ 1 'CW-STES+PCMICE ',4(0PF13.6),/ 1 'BATTERIES ',4(0PF13.6),/ 1 'HOT-WAT-STES ',4(0PF13.6),/ 1 'NON-UTES, NON-H2 ',4(0PF13.6),/ 1 'UTES-FROMHEAT ',4(0PF13.6),/ 1 'UTES-FROMELEC ',4(0PF13.6),/ 1 'HYDROPOWER ',4(0PF13.6),/) C WRITE(IOUT,183) CSPCHSTO/TWPERGW, 1 CSPCHARG/TWPERGW, 1 CSPDISCH/TWPERGW, 1 CSPSTORGAT, 1 CSPCHARG / (TWPERGW * TGWCSP), 1 CSPTURBFAC, 1 CSPCHARFAC, 1 CSPCHARG / CSPDISCH, 1 CSPCHSTO / CSPDISCH, 1 RATIOCSP, 1 FHYDBASE, 1 BASEHYD *1E3, 1 PEAKHYD *1E3 C 183 FORMAT( 1 'CSPCHSTO-GW (MX CHARGE RATE CSP STORAGE = ',1(0PF15.8),/ 1 'CSPCHARG-GW (MX CHARGE RATE CSP DIRECELEC+STOR = ',1(0PF15.8),/ 1 'CSPDISCH-GW (MX DISCHARGE RATE CSP = ',1(0PF15.8),/ 1 'CSPSTORGAT ORIG = ',1(0PF15.8),/ 1 'CSPSTORGAT AFT= CSPCHARG*1E3/TGWCSP = ',1(0PF15.8),/ 1 'CSPTURBFAC = ',1(0PF15.8),/ 1 'CSCHARFAC = CSPTURBFAC * CSPSTORGAT = ',1(0PF15.8),/ 1 'CSPCHARG/CSPDISCH = ',1(0PF15.8),/ 1 'CSPCHSTO/CSPDISCH = ',1(0PF15.8),/ 1 'RATIOCSP = CSPCHARG / TWCSPGAT = ',1(0PF15.8),/ 1 'FHYDBASE (FRACTION) = ',1(0PF15.8),/ 1 'BASEHYD = HYDRO USED AS BASELOAD - GW = ',1(0PF15.8),/ 1 'PEAKHYD = HYDRO USED FOR PEAKING - GW = ',1(0PF15.8)) C IF (ABS(SUMFRAC-1.).GT.0.00001) THEN WRITE(IOUT,*)'POWERWORLD: SUMFRAC NE 1 ',SUMFRAC STOP ENDIF C C ***************************************************************************** C FACTORS FOR HEAT PUMPS POWERING HW/CW-STES AND UTES HEAT STORAGE C ***************************************************************************** C COSTHPL = LO COST ($/KW-ELEC) LARGE HEAT PUMPS TO CHARGE HW/CW-STES+UTES STORAGE C COSTHPM = MEAN COST ($/KW-ELEC) LARGE HEAT PUMPS TO CHARGE HW/CW-STES+UTES STORAGE C COSTHPH = HI COST ($/KW-ELEC) LARGE HEAT PUMPS TO CHARGE HW/CW-STES+UTES STORAGE C https://www.globalspec.com/reference/56411/203279/a-capital-cost- C comparison-of-commercial-ground-source-heat-pump-systems C WITH >500 TONS, COST $47/KW-TH ($165/TON=$13,750/(MMBtu/h)) C 12000 BTU/TON; 0.012 MMBtu/TON; 293.07107 kWh/MMBTu C ASSUME $47/KW-TH AT HIGH END 2050 C ASSUME $40/KW-TH MEDIUM VALUE 2050 C ASSUME $33/KW-TH LOW VALUE 2050 C C https://www.energy.gov/sites/prod/files/2014/05/f15/heatpump.pdf C 293.07107 kWh/MMBtu, COP OF HEAT PUMPS = 4u C --> $50,000/(MMBtu/h) x 4kW-HEAT/4kW-ELEC / (293.07107 kWh/MMBtu) C = $682.43/kW-ELEC C CPERFORM = COEF OF PERFORMANCE OF HEAT PUMPS (KW-THERMAL/KW-ELEC) C COSTHPL = 33.0 * CPERFORM COSTHPM = 40.0 * CPERFORM COSTHPH = 47.0 * CPERFORM C C HPLIFEL = LO LIFETIME (YEARS) OF HEAT PUMP C HPLIFEM = MID LIFETIME (YEARS) OF HEAT PUMP C HPLIFEH = HI LIFETIME (YEARS) OF HEAT PUMP C HPLIFEL = 10. HPLIFEM = 20. HPLIFEH = 50. C C ANFACHPL = LO FACTOR TO MULTIPLY CAPITAL HEAT PUMP COST BY TO GET ANNUAL COST C AT DISCOUNT RATE DISCOUNTL AND LIFETIME HPLIFEL C ANFACHPM = MEAN FACTOR TO MULTIPLY CAPITAL HEAT PUMP COST BY TO GET ANNUAL COST C ANFACHPH = HI FACTOR TO MULTIPLY CAPITAL HEAT PUMP COST BY TO GET ANNUAL COST C ANNTERML = (1. + DISCOUNTL)**HPLIFEL ANNTERMM = (1. + DISCOUNTM)**HPLIFEM ANNTERMH = (1. + DISCOUNTH)**HPLIFEH C ANFACHPL = DISCOUNTL * ANNTERML / (ANNTERML - 1.) ANFACHPM = DISCOUNTM * ANNTERMM / (ANNTERMM - 1.) ANFACHPH = DISCOUNTH * ANNTERMH / (ANNTERMH - 1.) C C CONVERT COSTS OF THERMAL ENERGY STORAGE (CW-STES, ICE, HW-STES, C AND UTES) FROM $/KWH-TH TO $/KWH-ELEC SINCE ALL ENERGY IN MODEL C IS CARRIED AND STORED AS ELECTRICITY. C COSTSTORL(ICWSTES) = COSTSTORL(ICWSTES) * CPERFORM COSTSTORM(ICWSTES) = COSTSTORM(ICWSTES) * CPERFORM COSTSTORH(ICWSTES) = COSTSTORH(ICWSTES) * CPERFORM COSTSTORL(IPCMICE) = COSTSTORL(IPCMICE) * CPERFORM COSTSTORM(IPCMICE) = COSTSTORM(IPCMICE) * CPERFORM COSTSTORH(IPCMICE) = COSTSTORH(IPCMICE) * CPERFORM COSTSTORL(IHWSTES) = COSTSTORL(IHWSTES) * CPERFORM COSTSTORM(IHWSTES) = COSTSTORM(IHWSTES) * CPERFORM COSTSTORH(IHWSTES) = COSTSTORH(IHWSTES) * CPERFORM COSTUTESL = COSTUTESL * CPERFORM COSTUTESM = COSTUTESM * CPERFORM COSTUTESH = COSTUTESH * CPERFORM C C STODPKWHL = AVERAGE OF LO LIFECYCLE COST ($/KWH) OF NON-UTES STORAGE C NOTE THAT THIS AVERAGE INCLUDES THE COST OF EXISTING PHS C THE ACTUAL $ REQUIRED FOR NON-UTES STORAGE (TRILSTORL..) C EXCLUDES THE COST OF PHS ALEADY EXISTING C STODPKWHM = AVERAGE OF MEAN LIFECYCLE COST ($/KWH) OF NON-UTES STORAGE C STODPKWHH = AVERAGE OF HI LIFECYCLE COST ($/KWH) OF NON-UTES STORAGE C IPHS.. = 1..MXSTOR INDEX NUMBER CORRESPONDING TO EACH STORAGE COST C IPCMCSP = TO IDENTIFY COST OF PHASE-CHANGE MATERIAL IN ALL CSP C IMIRCSP = TO IDENTIFY COST OF MIRRORS FOR ADDITIONAL CSP CAPACITY C BEYOND THAT OF RATED STEAM TURBINE POWER C C NOT NECESSARY TO INCLUDE COST OF MIRRORS IN COST OF STORAGE HERE C SINCE MIRRORS ARE INCLUDED IN CAPITAL COST OF CSP TURBINES WHEN MIRRORS C OVERSIZED. C STODPKWHL = FRACPHS * COSTSTORL(IPHS) 1 + FRACOLD * COSTSTORL(ICWSTES) 1 + FRACCSP * COSTSTORL(IPCMCSP) 1 + FRACPCM * COSTSTORL(IPCMICE) 1 + FRACHOT * COSTSTORL(IHWSTES) 1 + FRACBAT * COSTSTORL(ILIB) C STODPKWHM = FRACPHS * COSTSTORM(IPHS) 1 + FRACOLD * COSTSTORM(ICWSTES) 1 + FRACCSP * COSTSTORM(IPCMCSP) 1 + FRACPCM * COSTSTORM(IPCMICE) 1 + FRACHOT * COSTSTORM(IHWSTES) 1 + FRACBAT * COSTSTORM(ILIB) C STODPKWHH = FRACPHS * COSTSTORH(IPHS) 1 + FRACOLD * COSTSTORH(ICWSTES) 1 + FRACCSP * COSTSTORH(IPCMCSP) 1 + FRACPCM * COSTSTORH(IPCMICE) 1 + FRACHOT * COSTSTORH(IHWSTES) 1 + FRACBAT * COSTSTORH(ILIB) C C EFFCOLD = AVERAGE ROUND-TRIP EFFICIENCY OF CW-STES + PCM-ICE STORAGE C ACCOUNTING FOR CHARGING, STORAGE, AND DISCHARGING. C EFFCSTES = ROUND-TRIP EFFICIENCY OF ELECTRIC WATER CHILLERS (WATER COOLED STES) C EFFHSTES = ROUND-TRIP EFFICIENCY OF ELECTRIC BOILER C HEATING FROM HEAT PUMPS WITH COP=CPERFORM C IF (FRACOLD+FRACPCM.EQ.0.) THEN EFFCOLD = 0.5*EFFCSTES + 0.5*EFFPCM ELSE EFFCOLD = (FRACOLD*EFFCSTES+FRACPCM*EFFPCM) 1 / (FRACOLD+FRACPCM) ENDIF C C STORETOT = AVERAGE ROUND-TRIP EFFICIENCY OF NON-UTES STORAGE C ACCOUNTING FOR CHARGING, STORAGE, AND DISCHARGING. C STORETOT = FRACPHS * EFFPHS + FRACOLD * EFFCSTES 1 + FRACPCM * EFFPCM + FRACHOT * EFFHSTES 1 + FRACCSP * EFFCSP + FRACBAT * EFFBAT WRITE(IOUT,178) (COSTSTORL(I),COSTSTORM(I), 1 COSTSTORH(I), I = 1, MXSTOR), 1 STODPKWHL, STODPKWHM, STODPKWHH, 1 COSTUTESL, COSTUTESM, COSTUTESH, 1 COSTHPL, COSTHPM, COSTHPH, 1 AVCAPLO(IHYDRO)*FELECHP*1E+09, 1 AVCAPMN(IHYDRO)*FELECHP*1E+09, 1 AVCAPHI(IHYDRO)*FELECHP*1E+09, 1 EFFPHS, FRACPHS, 1 EFFCSTES, FRACOLD, 1 EFFPCM, FRACPCM, 1 EFFHSTES, FRACHOT, 1 EFFCOLD, FRACOLD + FRACPCM, 1 EFFBAT, FRACBAT, 1 EFFCSP, FRACCSP, 1 STORETOT, 1 EFFUTES C 178 FORMAT('COST PUMPED HYDRO STOR($/KWH-EL) LO MN HI',3(0PF12.5),/ 1 'COST CW-SENS HEAT STOR($/KWH-EL) LO MN HI',3(0PF12.5),/ 1 'COST PCM-CSP STOR($/KWH-EL) LO MN HI',3(0PF12.5),/ 1 'COST MIR-CSP STOR($/KWH-EL) LO MN HI',3(0PF12.5),/ 1 'COST PCM-ICE STOR($/KWH-EL) LO MN HI',3(0PF12.5),/ 1 'COST HW-SENS HEAT STOR($/KWH-EL) LO MN HI',3(0PF12.5),/ 1 'COST L-I BATTERY STOR($/KWH-EL) LO MN HI',3(0PF12.5),/ 1 'COST ALL NON-UTES STOR($/KWH-EL) LO MN HI',3(0PF12.5),/ 1 'COST UTES STOR($/KWH-EL) LO MN HI',3(0PF12.5),/ 1 'COST HEATPUMPS FORSTOR($/KW-EL) LO MN HI',3(0PF12.5),/ 1 'COST ADDED HYDRO TURBS($/KW) LO MN HI',3(0PF12.5),/ 1 'EFFPHS FRACPHS ',2(0PF12.5),/ 1 'EFFCSTES FRACOLD ',2(0PF12.5),/ 1 'EFFPCM FRACPCM ',2(0PF12.5),/ 1 'EFFHSTES FRACHOT ',2(0PF12.5),/ 1 'EFFCOLD FRACOLD+FRACPCM ',2(0PF12.5),/ 1 'EFFBAT FRACBAT ',2(0PF12.5),/ 1 'EFFCSP FRACCSP ',2(0PF12.5),/ 1 'AVG NON-UTES IN/OUT/STOR EFFIC ',1(0PF12.5),/ 1 'AVG UTES IN/OUT/STOR EFFICIENCY ',1(0PF12.5),/) C C EFFCSP = ROUND-TRIP EFFICIENCY OF CSP PHASE-CHANGE MATERIAL STORAGE (FRACTION) C EFFPHS = ROUND-TRIP EFFICIENCY OF PUMPED HYDRO (FRACTION ~ 0.8) C EFFPCM = ROUND-TRIP EFFICIENCY OF PCM-ICE STORAGE (FRACTION) C EFFCSTES = ROUND-TRIP EFFICIENCY OF ELECTRIC WATER CHILLERS (WATER COOLED STES) C EFFHSTES = ROUND-TRIP EFFICIENCY OF ELECTRIC BOILER C EFFBAT = ROUND-TRIP EFFICIENCY OF L-I BATTERY STORAGE (FRACTION) C EFFUTES = ROUND-TRIP EFFICIENCY OF UTES STORAGE (FRACTION) C RTCSPEFF = SQRT(EFFCSP) C = FRACTION OF ENERGY IN CSP PHASE-CHANGE MATERIAL ADDED TO/REMOVED FROM C CSP THAT IS NOT LOST, DUE TO T&D LOSSES C APPLY RTCSPEFF SEPARATELY DURING CHARGING AND DISCHARGING. C RTPHSEFF = SQRT(EFFPHS). C = FRACTION OF ENERGY IN PUMPED-HYDRO STORAGE ADDED TO/REMOVED FROM C PHS THAT IS NOT LOST, DUE TO T&D LOSSES C APPLY SEPARATELY DURING CHARGING AND DISCHARGING. C RTHTESEF = SQRT(EFFHSTES). C = FRACTION OF ENERGY IN HW-STES ADDED TO/REMOVED FROM C HW-STES THAT IS NOT LOST, DUE TO T&D LOSSES C APPLY SEPARATELY DURING CHARGING AND DISCHARGING. C RTBATEFF = SQRT(EFFBAT) C = FRACTION OF ENERGY IN BATTERY STORAGE C THAT IS NOT LOST, DUE TO T&D LOSSES C APPLY RTCSPEFF SEPARATELY DURING CHARGING AND DISCHARGING. C RTCOLDEF = SQRT(EFFCOLD) C = FRACTION OF ENERGY IN CW-STES + PCM-ICE STORAGE C THAT IS NOT LOST, DUE TO T&D LOSSES C APPLY SEPARATELY DURING CHARGING AND DISCHARGING. C RTUGEFF = SQRT(EFFUTES) C = FRACTION OF ENERGY IN HEATED FLUID ADDED TO/REMOVED C FROM UNDERGROUND STORAGE THAT IS NOT LOST DUE TO T&D LOSSES C APPLY RTUGEFF SEPARATELY DURING CHARGING AND DISCHARGING. C RTUGEFF^2=EFFUTES = OVERALL EFFIC OF HEATING SOIL OR WATER WITH C HEATED FLUID THEN RETURNING HEAT TO FLUID IN OPPOSITE SEASON AND C USING THE HEATED FLUID TO HEAT AIR OR WATER. C EFFUTES IS EFFICIENCY AFTER EITHER FLUID HAS ALREADY BEEN HEATED C FROM ELECTRICITY OR SUN C RTCSPEFF = SQRT(EFFCSP) RTPHSEFF = SQRT(EFFPHS) RTHTESEF = SQRT(EFFHSTES) RTBATEFF = SQRT(EFFBAT) RTCOLDEF = SQRT(EFFCOLD) RTUGEFF = SQRT(EFFUTES) C C CAPCSPLO = LOW CAPITAL COST OF CSP WITH ACTUAL AMOUNT STORAGE ($TRIL/MW) C AVCAPLO = AVERAGE (2013 TO 2050) LOW CAP COST PER GENERATOR ($TRIL/MW) C AVCAPMN = AVERAGE (2013 TO 2050) MEAN CAP COST PER GENERATOR ($TRIL/MW) C AVCAPHI = AVERAGE (2013 TO 2050) HI CAP COST PER GENERATOR ($TRIL/MW) C RATIOSTOR = RATIO OF CSP MIRROR CAPACITY (TW) TO GENERATOR CAPACITY (TW) - 1 C DIVIDED BY THAT CORRESPONDING TO SYSTEM WITH COST AVCAP(ICSPSTOR) C (= 3.2) MINUS 1 C CSPCHARG = MAX CHARGE RATE (TW) OF CSP DIRECT ELECTRICITY + STORAGE C = CSPDISCH + CSPCHSTO C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C BASED ON SIZE OF MIRRORS (NOT SIZE OF GENERATOR) C CSPDISCH = MAX DISCHARGE RATE (TW) OF CSP EITHER FROM STORAGE OR DIRECTLY C = CSPCHARG - CSPCHSTO = CSP TURBINE SIZE C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C RATIOCSPDAT= DEFAULT RATIO OF CSP CHARGE RATE TO DISCHARGE RATE FOR C 'CSP WITH STORAGE' IN xlsx-spreadsheets COST CALCS. HERE, NEED C TO INTERPOLATE BETWEEN COST OF CSP WITH NO STORAGE AND THAT C WITH STORAGE USING RATIOSTOR TO OBTAIN COST WITH ACTUAL C CHARGE:DISCHARGE RATIO USED. C RATIOCSPDAT = 3.2 RATIOSTOR = (CSPCHARG / CSPDISCH - 1.) / (RATIOCSPDAT - 1.) C CAPCSPLO = AVCAPLO(ICSPNOST)+RATIOSTOR 1 *(AVCAPLO(ICSPSTOR)-AVCAPLO(ICSPNOST)) CAPCSPMN = AVCAPMN(ICSPNOST)+RATIOSTOR 1 *(AVCAPMN(ICSPSTOR)-AVCAPMN(ICSPNOST)) CAPCSPHI = AVCAPHI(ICSPNOST)+RATIOSTOR 1 *(AVCAPHI(ICSPSTOR)-AVCAPHI(ICSPNOST)) C C EGWTOTAL = (GW) INSTALLED NAMEPLATE CAPACITY OF EXISTING 2013 WWS C ELECTRIC POWER GENERATORS (DON'T INCLUDE C HEAT: TGWSHEAT + TGWGEOHT) C ADDHPDIS = ADDED HYDROPOWER INSTALLED DISCHARGE CAPACITY (MW) C DUE TO ADDITIONAL TURBINES/GENERATORS/TRANSFORMERS C GWPERMW = 0.001 GIGAWATTS (GW) PER MEGAWATT (MW) C AREALKM2R = LAND AREA (KM) (NOT INCLUDING INLAND WATER BODIES OR COASTAL C WATERS) OF GRID REGION C PDENINST = INSTALLED POWER DENSITY (KM2/MW) OF ENERGY DEVICES C FROM 143-COUNTRY SPREADSHEET 'Country and technology list' C CELLS K4..N15. FOR WIND AND WAVE, THESE NUMBERS ARE SPACING C DENSITIES. FOR EVERYTHING ELSE, THEY ARE FOOTPRINTS. NO C VALUES ARE GIVEN FOR ROOFTOP PV SINCE THEY DON'T INVOLVE C NEW LAND. C GWPERMW = 0.001 GIGAWATTS (GW) PER MEGAWATT (MW) C ANEWONWIN = LAND AREA (KM2) OF NEW ONSHORE WIND IN GRID REGION C ALLONWIN = LAND AREA (KM2) OF ALL ONSHORE WIND IN GRID REGION C ANEWOFWIN = WATER AREA (KM2) OF NEW OFFSHORE WIND IN GRID REGION C ALLOFWIN = WATER AREA (KM2) OF ALL OFFSHORE WIND IN GRID REGION C ANEWONWIN = (TGWONWIND-EGWONWIND)*PDENINST(IONWIND)/GWPERMW ALLONWIN = TGWONWIND *PDENINST(IONWIND)/GWPERMW C ANEWOFWIN = (TGWOFFWIND-EGWOFFWIND)*PDENINST(IOFFWIND)/GWPERMW ALLOFWIN = TGWOFFWIND *PDENINST(IOFFWIND)/GWPERMW C ANEWRESPV = (TGWRESPV-EGWRESPV)*PDENINST(IRESPV)/GWPERMW ALLRESPV = TGWRESPV *PDENINST(IRESPV)/GWPERMW C ANEWCOMPV = (TGWCOMPV-EGWCOMPV)*PDENINST(ICOMGVPV)/GWPERMW ALLCOMPV = TGWCOMPV *PDENINST(ICOMGVPV)/GWPERMW C ANEWUTILPV = (TGWUTILPV-EGWUTILPV)*PDENINST(IUTILPV)/GWPERMW ALLUTILPV = TGWUTILPV *PDENINST(IUTILPV)/GWPERMW C ANEWCSPST = (TGWCSP-EGWCSP)*PDENINST(ICSPSTOR)/GWPERMW ALLCSPST = TGWCSP *PDENINST(ICSPSTOR)/GWPERMW C ANEWGEOE = (TGWGEOEL-EGWGEOEL)*PDENINST(IGEOEL)/GWPERMW ALLGEOE = TGWGEOEL *PDENINST(IGEOEL)/GWPERMW C ANEWHYDRO = (TGWHYD-EGWHYD)*PDENINST(IHYDRO)/GWPERMW ALLHYDRO = TGWHYD *PDENINST(IHYDRO)/GWPERMW C ANEWWAVE = (TGWWAVE-EGWWAVE)*PDENINST(IWAVE)/GWPERMW ALLWAVE = TGWWAVE *PDENINST(IWAVE)/GWPERMW C ANEWTIDAL = (TGWTIDAL-EGWTIDAL)*PDENINST(ITIDAL)/GWPERMW ALLTIDAL = TGWTIDAL *PDENINST(ITIDAL)/GWPERMW C ANEWSOLH = (TGWSHEAT-EGWSHEAT)*PDENINST(ISOLTHM)/GWPERMW ALLSOLH = TGWSHEAT *PDENINST(ISOLTHM)/GWPERMW C ANEWGEOH = (TGWGEOHT-EGWGEOHT)*PDENINST(IGEOHT)/GWPERMW ALLGEOH = TGWGEOHT *PDENINST(IGEOHT)/GWPERMW C C ENEWFPNEWL = FOOTPRINT LAND (KM2) ALL NEW ELECTRIC GEN TECHS IN GRID REGION C ONSHORE WIND IS SPACING AREA SO IS NOT INCLUDED IN THIS C EALLFPNEWL = FOOTPRINT LAND (KM2) ALL NEW+EXIST ELEC GEN TECHS IN GRID REGION C ENEWFPNEWL = ANEWUTILPV + ANEWCSPST + ANEWGEOE + ANEWHYDRO EALLFPNEWL = ALLUTILPV + ALLCSPST + ALLGEOE + ALLHYDRO C C ANEWFPNEWL = FOOTPRINT LAND AREA (KM2) OF ALL NEW ELEC+HEAT TECHS IN GRID REG C ALLFPNEWL = FOOTPRINT LAND AREA (KM2) OF ALL NEW+EXIST ELEC+HEAT TECHS IN REG C AREA100 = CONVERTS KM2 LAND IN REGION TO PERCENT OF REGIONAL LAND AREA C ANEWFPNEWL = ENEWFPNEWL + ANEWSOLH + ANEWGEOH ALLFPNEWL = EALLFPNEWL + ALLSOLH + ALLGEOH AREA100 = 100. / AREALKM2R(IGRIDUSE) C WRITE(IOUT,173) EGWONWIND , TGWONWIND , 1./PDENINST(IONWIND), 1 ANEWONWIN, ANEWONWIN * AREA100, 1 ALLONWIN, ALLONWIN * AREA100, C 1 EGWOFFWIND, TGWOFFWIND, 1./PDENINST(IOFFWIND), 1 ANEWOFWIN, ANEWOFWIN * AREA100, 1 ALLOFWIN, ALLOFWIN * AREA100, C 1 EGWRESPV , TGWRESPV , 1./PDENINST(IRESPV), 1 ANEWRESPV, ANEWRESPV * AREA100, 1 ALLRESPV, ALLRESPV * AREA100, C 1 EGWCOMPV , TGWCOMPV , 1./PDENINST(ICOMGVPV), 1 ANEWCOMPV, ANEWCOMPV * AREA100, 1 ALLCOMPV, ALLCOMPV * AREA100, C 1 EGWUTILPV , TGWUTILPV , 1./PDENINST(IUTILPV), 1 ANEWUTILPV, ANEWUTILPV * AREA100, 1 ALLUTILPV, ALLUTILPV * AREA100, C 1 EGWCSP , TGWCSP , 1./PDENINST(ICSPSTOR), 1 ANEWCSPST, ANEWCSPST * AREA100, 1 ALLCSPST, ALLCSPST * AREA100, C 1 EGWGEOEL , TGWGEOEL , 1./PDENINST(IGEOEL), 1 ANEWGEOE, ANEWGEOE * AREA100, 1 ALLGEOE, ALLGEOE * AREA100, C 1 EGWHYD , TGWHYD , 1./PDENINST(IHYDRO), 1 ANEWHYDRO, ANEWHYDRO * AREA100, 1 ALLHYDRO, ALLHYDRO * AREA100, C 1 0. , ADDHPDIS*GWPERMW, 0., 0., 0., 0., 0., C 1 EGWWAVE , TGWWAVE , 1./PDENINST(IWAVE), 1 ANEWWAVE, ANEWWAVE * AREA100, 1 ALLWAVE, ALLWAVE * AREA100, C 1 EGWTIDAL , TGWTIDAL , 1./PDENINST(ITIDAL), 1 ANEWTIDAL, ANEWTIDAL * AREA100, 1 ALLTIDAL, ALLTIDAL * AREA100, C 1 EGWTOTAL , TGWTOTAL , 0., 1 ENEWFPNEWL, ENEWFPNEWL * AREA100, 1 EALLFPNEWL, EALLFPNEWL * AREA100, C 1 EGWSHEAT , TGWSHEAT , 1./PDENINST(ISOLTHM), 1 ANEWSOLH, ANEWSOLH * AREA100, 1 ALLSOLH, ALLSOLH * AREA100, C 1 EGWGEOHT , TGWGEOHT , 1./PDENINST(IGEOHT), 1 ANEWGEOH, ANEWGEOH * AREA100, 1 ALLGEOH, ALLGEOH * AREA100, C C THE TOTAL FOOTPRINT IS OF UTILITY PV, CSP, GEOTHERMAL, HYDRO. C ONSHORE WIND IS SPACING AREA. ROOFTOP PV DOESN'T AKE NEW LAND, REST C IS OFFSHORE C 1 EGWTOTAL+EGWSHEAT+EGWGEOHT, 1 TGWTOTAL+TGWSHEAT+TGWGEOHT, 0., 1 ANEWFPNEWL, ANEWFPNEWL * AREA100, 1 ALLFPNEWL, ALLFPNEWL * AREA100 C 173 FORMAT('GW NAMEPLATE CAPACITY 2020 2050 ', 1 'INSTAL-MW/KM2 LANDNEWTECH-KM2 %REGLAND LANDALLTECH-KM2 ', 1 '%REGLAND',/ 1 'ONSHORE WIND ',6(0PF14.5),0PF10.5,/ 1 'OFFSHORE WIND ',6(0PF14.5),0PF10.5,/ 1 'RESIDENTIAL PV ',6(0PF14.5),0PF10.5,/ 1 'COMMERCIAL/GOVT PV ',6(0PF14.5),0PF10.5,/ 1 'UTILITY-SCALE PV ',6(0PF14.5),0PF10.5,/ 1 'CSP-ORIG+ADDED FOR GRID ',6(0PF14.5),0PF10.5,/ 1 'GEOTHERMAL-ELEC ',6(0PF14.5),0PF10.5,/ 1 'HYDROELECTRIC ',6(0PF14.5),0PF10.5,/ 1 'ADDED HYDRO DISCH CAPAC ',6(0PF14.5),0PF10.5,/ 1 'WAVE ',6(0PF14.5),0PF10.5,/ 1 'TIDAL ',6(0PF14.5),0PF10.5,/ 1 'TOTAL ELECTRICITY ',6(0PF14.5),0PF10.5,/ 1 'SOLAR THERMAL HEAT ',6(0PF14.5),0PF10.5,/ 1 'GEOTHERMAL HEAT ',6(0PF14.5),0PF10.5,/ 1 'TOTAL ELEC+HEAT-FPRINT ',6(0PF14.5),0PF10.5/) C WRITE(IOUT,271) AREALKM2R(IGRIDUSE) 271 FORMAT('LAND AREA OF GRID REGION (KM2) ',0PF11.2/) C C ***************************************************************************** C PRINT PRESENT-DAY NAMEPLATE CAPACITY FOR EACH GENERATOR BY STATE OR COUNTRY C ALSO PRINT LAND REQUIREMENTS & JOB CREATION/LOSS C ***************************************************************************** C EGWINSTREG = GW-SUM OVER REG J, 2014 EXIST NAMEPL CAPAC FOR DEVICE K C EGWINSTALL = EXISTING INSTALLED GW OF EACH 1..MXCAP DEVICE C 1=ONSHORE WIND; 2=OFFSHORE WIND; 3=RESPV; 4=COM/GOV PV C 5=UTILPV; 6=CSP; 7=0; 8=GEO-EL; 9=HYD; 10=TIDAL; C 11=WAVE; 12=SOLAR THERMAL; 13= GEOHEAT C WRITE(IOUT,346) NAMEGRID(IGRIDUSE),NCOUNGRID(IGRIDUSE) WRITE(IOUT,344) (EGWINSTREG(IGRIDUSE,K),K=1,MXCAP), 1 EGWTOTAL+EGWSHEAT+EGWGEOHT C DO I = 1, NCOUNGRID(IGRIDUSE) ALLNP = 0. DO K = 1, MXCAP ALLNP = ALLNNP + EGWINSTALL(IC,K) ENDDO IC = NUMCOUNGR(IGRIDUSE,I) WRITE(IOUT,345) I, NAMCOUNGR(IGRIDUSE,I), IC, 1 (EGWINSTALL(IC,K),K=1,MXCAP), ALLNP ENDDO C C ***************************************************************************** C PRINT FINAL UPDATED NAMEPLATE CAPACITY FOR EACH GENERATOR BY STATE OR COUNTRY C ***************************************************************************** C TGWCSPORIG = EXISTING + NEW GW OF CSP STEAM TURBINES INSTALLED. UPDATED HERE C TO INCREASE RATE OF DISCHARGE OF HEAT FROM STORAGE AS ELECTRICITY C (DOES NOT INCLUDE TMWCSPADD, WHICH IS WHY IT IS MULT BY CSPTURBFAC) C TGWCSP = EXISTING + NEW GW OF CSP STEAM TURBINES INSTALLED. AFTER UPDATE C TGWINSTREG = GW-SUM OVER REG J, 2050 NEW+EXIST NAMEPL CAPAC FOR DEVICE K C TGWINSTALL = NEW+EXIST INSTALLED GW 1..MXCAP DEVICE BY COUNTRY IN 2050 C TGWTOTAL = TOTAL (GW) INSTALLED NAMEPLATE CAPACITY OF ALL NEW PLUS C EXISTING 2050 WWS ELECTRIC POWER GENERATORS (DON'T INCLUDE C HEAT: TGWSHEAT + TGWGEOHT) C ANEWFPNEWL = FOOTPRINT LAND AREA (KM2) OF ALL NEW ELEC+HEAT TECHS IN GRID REG C AREA100 = CONVERTS KM2 LAND IN REGION TO PERCENT OF REGIONAL LAND AREA C ANEWONWIN = LAND AREA (KM2) OF NEW ONSHORE WIND IN GRID REGION C WRITE(IOUT,144) NAMEGRID(IGRIDUSE),NCOUNGRID(IGRIDUSE) WRITE(IOUT,344) TGWONWIND,TGWOFFWIND,TGWRESPV,TGWCOMPV,TGWUTILPV, 1 TGWCSP,0.,TGWGEOEL,TGWHYD, 1 TGWTIDAL,TGWWAVE,TGWSHEAT,TGWGEOHT, 1 TGWTOTAL+TGWSHEAT+TGWGEOHT, 1 AREALKM2R(IGRIDUSE), 1 ANEWFPNEWL, ANEWONWIN, 1 ANEWFPNEWL*AREA100, ANEWONWIN *AREA100 C SUMCAPC = 0. DO I = 1, NCOUNGRID(IGRIDUSE) IC = NUMCOUNGR(IGRIDUSE,I) C ALLNP = 0. DO K = 1, MXCAP IF (K.EQ.IONWIND) THEN TGREG = TGWONWIND ELSEIF (K.EQ.IOFFWIND) THEN TGREG = TGWOFFWIND ELSEIF (K.EQ.IRESPV) THEN TGREG = TGWRESPV ELSEIF (K.EQ.ICOMGVPV) THEN TGREG = TGWCOMPV ELSEIF (K.EQ.IUTILPV) THEN TGREG = TGWUTILPV ELSEIF (K.EQ.ICSPSTOR) THEN TGREG = TGWCSP ELSEIF (K.EQ.ICSPNOST) THEN TGREG = 0. ELSEIF (K.EQ.IGEOEL) THEN TGREG = TGWGEOEL ELSEIF (K.EQ.IHYDRO) THEN TGREG = TGWHYD ELSEIF (K.EQ.ITIDAL) THEN TGREG = TGWTIDAL ELSEIF (K.EQ.IWAVE) THEN TGREG = TGWWAVE ELSEIF (K.EQ.ISOLTHM) THEN TGREG = TGWSHEAT ELSEIF (K.EQ.IGEOHT) THEN TGREG = TGWGEOHT ENDIF C C SCALE ORIGINAL NAMEPLATE CAPACITY IN COUNTRY BY RATIO OF FINAL C NAMEPLATE CAPACITY IN REGION TO INITIAL NAMEPLATE CAPACITY IN REGION C C TGREG = FINAL 2050 NAMEPLATE CAPAC(GW) EXIST+NEW GENERATORS IN REG C TGWINSTALL = STATE/COUNTRY INIT 2050 NAMEPLATE CAPAC(GW) EXIST+NEW GENERATORS C BEFORE FACONWIN, ETC. C TGWINSTREG = REGIONAL INIT 2050 NAMEPLATE CAPAC(GW) EXIST+NEW GENERATORS C BEFORE FACONWIN, ETC. C GWFINAL = FINAL 2050 NAMEPLATE CAPAC(GW) EXIST+NEW GENERATORS IN COUNTRY C TO MEET CONTINUOUS LOAD C GWNEW = NEW 2050 NAMEPLATE CAPAC(GW) OF NEW GENERATORS IN COUNTRY C TO MEET CONTINUOUS LOAD C ALLNP = GW-SUM COUNTRY IC, 2050 NEW+EXIST NAMEPL CAPAC ALL DEVICES C EGWINSTALL = EXIST INSTALLED MW 1..MXCAP DEVICE BY COUNTRY C GWFINAL(K) = TGWINSTALL(IC,K)*TGREG/TGWINSTREG(IGRIDUSE,K) GWNEW( K) = GWFINAL(K) - EGWINSTALL(IC,K) ALLNP = ALLNP + GWFINAL(K) C C ***************************************************************************** C CALCULATE CAPITAL COST NEW GENERATORS BY STATE/COUNTRY C ***************************************************************************** C GWNEW = NEW 2050 NAMEPLATE CAPAC(GW) OF NEW GENERATORS IN COUNTRY C TO MEET CONTINUOUS LOAD C GWPERMW = 0.001 GIGAWATTS (GW) PER MEGAWATT (MW) C CAPCOSC = CUMULATIVE CAP COST ($TRIL) OF GENERATORS IN STATE/COUNTRY C CAPCSPMN = MEAN CAPITAL COST OF CSP WITH ACTUAL AMOUNT STORAGE ($TRIL/MW) C AVCAPMN = AVERAGE (2020 TO 2050) MEAN CAP COST PER GENERATOR ($TRIL/MW) C IF (K.EQ.ICSPSTOR) THEN CAPCOSC(IC)= CAPCOSC(IC) + GWNEW(K) * CAPCSPMN/GWPERMW ELSE CAPCOSC(IC)= CAPCOSC(IC) + GWNEW(K) * AVCAPMN(K)/GWPERMW ENDIF C ENDDO C ENDDO K = 1, MXCAP C C SUMCAPC = SUM OF CAPITAL COST ($TRIL) OF GENERATORS OVER ALL STATES/ C COUNTRIES IN A REGION. SHOULD = TRILMN + TRILHMN C SUMCAPC = SUMCAPC + CAPCOSC(IC) C C FPRINTNEW = FOOTPRINT LAND (KM2) ALL NEW ELECTRIC+HEAT GEN TECHS IN COUNTRY C SPACENEW = SPACING AREA (KM2) OF NEW ONSHORE WIND TURBINES C PDENINST = INSTALLED POWER DENSITY (KM2/MW) OF ENERGY DEVICES C AREALKM2C = LAND AREA (KM) (NOT INCLUDING INLAND WATER BODIES OR COASTAL C WATERS) OF COUNTRY C AREA100 = CONVERTS KM2 LAND IN COUNTRY TO PERCENT OF COUNTRY LAND AREA C FPRINTNEW = (GWNEW(IUTILPV) * PDENINST(IUTILPV) 1 + GWNEW(ICSPSTOR) * PDENINST(ICSPSTOR) 1 + GWNEW(IGEOEL) * PDENINST(IGEOEL) 1 + GWNEW(IHYDRO) * PDENINST(IHYDRO) 1 + GWNEW(ISOLTHM) * PDENINST(ISOLTHM) 1 + GWNEW(IGEOHT) * PDENINST(IGEOHT)) / GWPERMW SPACENEW = GWNEW(IONWIND) * PDENINST(IONWIND) / GWPERMW AREA100 = 100. / AREALKM2C(IC) C WRITE(IOUT,345) I, NAMCOUNGR(IGRIDUSE,I), IC, 1 (GWFINAL(K),K=1,MXCAP), ALLNP, 1 AREALKM2C(IC),FPRINTNEW, SPACENEW, 1 FPRINTNEW*AREA100, SPACENEW*AREA100 ENDDO C ENDDO I = 1, NCOUNGRID WRITE(IOUT,*) C 144 FORMAT(/'REG ',A14,'#SUB ',I3,' 2050NP NEW+EX-GW-ONWND ', 1 'GW-OFWND GW-RESPV GW-COMPV GW-UTPV GW-CSPOR ', 1 'GW-CSPAD GW-GEOEL GW-HYD GW-TIDAL GW-WAVE ', 1 'GW-SOLTH GW-GEOHT GW-TOT LAND-KM2 NEWFP-KM2 ', 1 'NEWSP-KM2 %NEWFPRIN %NEWSPACING') 344 FORMAT(' REGIONAL SUM ', 19X,14(1X,0PF11.5), 1 3(1X,0PF11.0),2(1X,0PF11.5)) 345 FORMAT(' SUB-REGION ',I3,1X,A14,1X,I3,14(1X,0PF11.5), 1 3(1X,0PF11.0),2(1X,0PF11.5)) 346 FORMAT(/'REG ',A14,'#SUB ',I3,' 2020NP EXIST-GW-ONWND ', 1 'GW-OFWND GW-RESPV GW-COMPV GW-UTPV GW-CSPOR ', 1 'GW-CSPAD GW-GEOEL GW-HYD GW-TIDAL GW-WAVE ', 1 'GW-SOLTH GW-GEOHT GW-TOT') C C SUMNEWINST = SUM OF NEW INSTALLED 2050 ELEC POWER GENERATORS (GW) C SUMNEWHEAT = SUM OF NEW INSTALLED 2050 HEAT GENERATORS (GW) C SUMNEWINST = AGWONWIND + AGWOFFWIND + AGWRESPV + AGWCOMPV 1 + AGWUTILPV + AGWCSP + AGWGEOEL + AGWHYD 1 + AGWWAVE + AGWTIDAL C SUMNEWHEAT = AGWSHEAT + AGWGEOHT + SMAL30 C C OPMAINTL = LO ANNUAL OP & MAINT COST OF STORAGE AS FRAC CAP COST (0.01-0.02) C OPMAINTM = MN ANNUAL OP & MAINT COST OF STORAGE AS FRAC CAP COST (0.01-0.02) C OPMAINTH = HI ANNUAL OP & MAINT COST OF STORAGE AS FRAC CAP COST (0.01-0.02) C http://www.windmeasurementinternational.com/wind-turbines/ C om-turbines.php C OPMAINTL = 0.010 OPMAINTH = 0.020 OPMAINTM = 0.5 * (OPMAINTL + OPMAINTH) C C SDTRANSL = LO SHORT-DISTANCE TRANSMISSION COST (CENTS/KWH) C SDTRANSM = MEAN SHORT-DISTANCE TRANSMISSION COST (CENTS/KWH) C SDTRANSH = HI SHORT-DISTANCE TRANSMISSION COST (CENTS/KWH) C FROM 50-STATE WWS "COST OF DELIVERED ELECTRICITY" C SHORT-DIST TRANSMIS (1.15) & DISTRIBUTION (2.57) COSTS 3.72 CENTS/KWH C 'Tables for 50-state paper' Table 6a C Trans & Distribution costs' TAB COLUMNS B/C & T/U C C SDTRANSL = (1.0 + 1.2) / 2. C SDTRANSH = (1.0 + 1.4) / 2. C SDTRANSM = 0.5 * (SDTRANSL + SDTRANSH) C C DISTRIBL = LOW DISTRIBUTION COST (CENTS/KWH) C DISTRIBM = MEANDISTRIBUTION COST (CENTS/KWH) C DISTRIBH = HI DISTRIBUTION COST (CENTS/KWH) C FROM 50-STATE WWS "COST OF DELIVERED ELECTRICITY" C SHORT-DIST TRANSMIS (1.15) & DISTRIBUTION (2.57) COSTS 3.72 CENTS/KWH C 'Tables for 50-state paper' Table 6a C Trans & Distribution costs' TAB COLUMNS B/C & T/U C DISTRIBL = (2.5 + 2.1) / 2. DISTRIBH = (2.5 + 2.4) / 2. DISTRIBM = 0.5 * (DISTRIBL + DISTRIBH) C C ***************************************************************************** C FACTORS FOR NON-BATTERY STORAGE ANNUAL COSTS C ***************************************************************************** C STORLIFEL = LIFETIME (YEARS) OF STORAGE DEVICES THAT GIVES LO COST C STORLIFEM = LIFETIME (YEARS) OF STORAGE DEVICES THAT GIVES MN COST C STORLIFEH = LIFETIME (YEARS) OF STORAGE DEVICES THAT GIVES HI COST C STORLIFEL = 40. STORLIFEH = 25. STORLIFEM = 0.5 * (STORLIFEL + STORLIFEH) C C ANNFACSL = LO FACTOR TO MULTIPLY CAPITAL STORAGE COST BY TO GET ANNUAL COST C AT DISCOUNT RATE DISCOUNTL AND LIFETIME STORLIFEL C ANNFACSM = MEAN FACTOR TO MULTIPLY CAPITAL STORAGE COST BY TO GET ANNUAL COST C ANNFACSH = HI FACTOR TO MULTIPLY CAPITAL STORAGE COST BY TO GET ANNUAL COST C ANNTERML = (1. + DISCOUNTL)**STORLIFEL ANNTERMM = (1. + DISCOUNTM)**STORLIFEM ANNTERMH = (1. + DISCOUNTH)**STORLIFEH C ANNFACSL = DISCOUNTL * ANNTERML / (ANNTERML - 1.) ANNFACSM = DISCOUNTM * ANNTERMM / (ANNTERMM - 1.) ANNFACSH = DISCOUNTH * ANNTERMH / (ANNTERMH - 1.) C C ***************************************************************************** C FACTORS FOR NON-BATTERY STORAGE ANNUAL COSTS C ***************************************************************************** C STORLIFBL = 2050 LIFETIME (YEARS) OF LI-BATTERY DEVICES THAT GIVES LO COST C STORLIFBM = 2050 LIFETIME (YEARS) OF LI-BATTERY THAT GIVES MN COST C STORLIFBH = 2050LIFETIME (YEARS) OF LI-BATTERY THAT GIVES HI COST C STORLIFBL = 22. STORLIFBH = 12. STORLIFBM = 0.5 * (STORLIFBL + STORLIFBH) C C ANNFACBL = LO FACTOR TO MULTIPLY CAPITAL BATTERY COST BY TO GET ANNUAL COST C AT DISCOUNT RATE DISCOUNTL AND LIFETIME STORLIFBL C ANNFACBM = MEAN FACTOR TO MULTIPLY CAPITAL BATTERY COST BY TO GET ANNUAL COST C ANNFACBH = HI FACTOR TO MULTIPLY CAPITAL BATTERY COST BY TO GET ANNUAL COST C ANNTERML = (1. + DISCOUNTL)**STORLIFBL ANNTERMM = (1. + DISCOUNTM)**STORLIFBM ANNTERMH = (1. + DISCOUNTH)**STORLIFBH C ANNFACBL = DISCOUNTL * ANNTERML / (ANNTERML - 1.) ANNFACBM = DISCOUNTM * ANNTERMM / (ANNTERMM - 1.) ANNFACBH = DISCOUNTH * ANNTERMH / (ANNTERMH - 1.) C C ***************************************************************************** C FACTORS FOR ENERGY GENERATION ANNUAL COSTS C ***************************************************************************** C YEARLIFEL = LIFETIME (YEARS) OF WWS DEVICES THAT GIVES LO COST C YEARLIFEH = LIFETIME (YEARS) OF WWS DEVICES THAT GIVES HI COST C DISCOUNT = DISCOUNT RATE (FRACTION) C ANNFACL = LO FACTOR TO MULTIPLY CAPITAL STORAGE COST BY TO GET ANNUAL COST C AT DISCOUNT RATE DISCOUNTL AND LIFETIME STORLIFEL C ANNFACM = MEAN FACTOR TO MULTIPLY CAPITAL STORAGE COST BY TO GET ANNUAL COST C ANNFACH = HI FACTOR TO MULTIPLY CAPITAL STORAGE COST BY TO GET ANNUAL COST C DO I = 1, MXCAP ANNTERML = (1. + DISCOUNTL)**YEARLIFEL(I) ANNTERMM = (1. + DISCOUNTM)**YEARLIFEM(I) ANNTERMH = (1. + DISCOUNTH)**YEARLIFEH(I) C ANNFACL(I) = DISCOUNTL * ANNTERML / (ANNTERML - 1.) ANNFACM(I) = DISCOUNTM * ANNTERMM / (ANNTERMM - 1.) ANNFACH(I) = DISCOUNTH * ANNTERMH / (ANNTERMH - 1.) ENDDO C C PGWINSTAL = GW OF NEW+EXISTING INSTALLATIONS OF EACH WWS POWER TYPE C PGWINSTAL(IONWIND) = TGWONWIND PGWINSTAL(IOFFWIND) = TGWOFFWIND PGWINSTAL(IRESPV) = TGWRESPV PGWINSTAL(ICOMGVPV) = TGWCOMPV PGWINSTAL(IUTILPV) = TGWUTILPV PGWINSTAL(ICSPNOST) = 0. PGWINSTAL(ICSPSTOR) = TGWCSP PGWINSTAL(IGEOEL) = TGWGEOEL PGWINSTAL(IHYDRO) = TGWHYD PGWINSTAL(IWAVE) = TGWWAVE PGWINSTAL(ITIDAL) = TGWTIDAL PGWINSTAL(ISOLTHM) = TGWSHEAT PGWINSTAL(IGEOHT) = TGWGEOHT C C AGWINSTAL = GW OF NEW INSTALLATIONS OF EACH WWS POWER TYPE C AGWINSTAL(IONWIND) = AGWONWIND AGWINSTAL(IOFFWIND) = AGWOFFWIND AGWINSTAL(IRESPV) = AGWRESPV AGWINSTAL(ICOMGVPV) = AGWCOMPV AGWINSTAL(IUTILPV) = AGWUTILPV AGWINSTAL(ICSPNOST) = 0. AGWINSTAL(ICSPSTOR) = AGWCSP AGWINSTAL(IGEOEL) = AGWGEOEL AGWINSTAL(IHYDRO) = AGWHYD AGWINSTAL(IWAVE) = AGWWAVE AGWINSTAL(ITIDAL) = AGWTIDAL AGWINSTAL(ISOLTHM) = AGWSHEAT AGWINSTAL(IGEOHT) = AGWGEOHT C TRILLO = 0. TRILMN = 0. TRILHI = 0. C TRILHLO = 0. TRILHMN = 0. TRILHHI = 0. C OMPOWL = 0. OMPOWM = 0. OMPOWH = 0. C OMHEATL = 0. OMHEATM = 0. OMHEATH = 0. C ANCOSPOWL = 0. ANCOSPOWM = 0. ANCOSPOWH = 0. C ANCOSHTL = 0. ANCOSHTM = 0. ANCOSHTH = 0. C C AMWINSTAL = MW OF NEW INSTALLATIONS OF EACH WWS POWER TYPE C AGWINSTAL = GW OF NEW INSTALLATIONS OF EACH WWS POWER TYPE C PMWINSTAL = MW OF NEW+EXIST INSTALLATIONS OF EACH WWS POWER TYPE C PGWINSTAL = GW OF NEW+EXIST INSTALLATIONS OF EACH WWS POWER TYPE C GWPERMW = 0.001 GIGAWATTS (GW) PER MEGAWATT (MW) C DO I = 1, MXCAP AMWINSTALL = AGWINSTAL(I) / GWPERMW PMWINSTALL = PGWINSTAL(I) / GWPERMW C C ACAPCOSL = LO UP-FRONT TOTAL CAP COST ($TRIL) ALL NEW WWS DEVICES OF EACH TYPE C ACAPCOSM = MN UP-FRONT TOTAL CAP COST ($TRIL) ALL NEW WWS DEVICES OF EACH TYPE C ACAPCOSH = HI UP-FRONT TOTAL CAP COST ($TRIL) ALL NEW WWS DEVICES OF EACH TYPE C PCAPCOSL = LO UP-FRONT TOTAL CAP COST ($TRIL) NEW+EXIST WWS DEVICES OF EACH TYPE C PCAPCOSM = MN UP-FRONT TOTAL CAP COST ($TRIL) NEW+EXIT WWS DEVICES OF EACH TYPE C PCAPCOSH = HI UP-FRONT TOTAL CAP COST ($TRIL) NEW+EXIST WWS DEVICES OF EACH TYPE C CAPCSPLO = LOW CAPITAL COST OF CSP WITH ACTUAL AMOUNT STORAGE ($TRIL/MW) C CAPCSPHI = HIGH CAPITAL COST OF CSP WITH ACTUAL AMOUNT STORAGE ($TRIL/MW) C AVCAPLO = AVERAGE (2015 TO 2050) LOW CAP COST PER GENERATOR ($TRIL/MW) C AVCAPMN = AVERAGE (2015 TO 2050) MEAN CAP COST PER GENERATOR ($TRIL/MW) C AVCAPHI = AVERAGE (2015 TO 2050) HI CAP COST PER GENERATOR ($TRIL/MW) C IF (I.EQ.ICSPSTOR) THEN ACAPCOSL(I) = AMWINSTALL * CAPCSPLO ACAPCOSH(I) = AMWINSTALL * CAPCSPHI PCAPCOSL(I) = PMWINSTALL * CAPCSPLO PCAPCOSH(I) = PMWINSTALL * CAPCSPHI ELSE ACAPCOSL(I) = AMWINSTALL * AVCAPLO(I) ACAPCOSH(I) = AMWINSTALL * AVCAPHI(I) PCAPCOSL(I) = PMWINSTALL * AVCAPLO(I) PCAPCOSH(I) = PMWINSTALL * AVCAPHI(I) ENDIF C ACAPCOSM(I) = 0.5 * (ACAPCOSL(I) + ACAPCOSH(I)) PCAPCOSM(I) = 0.5 * (PCAPCOSL(I) + PCAPCOSH(I)) C C CALCULATE CAPITAL COST OF NEW GENERATORS ONLY. HOWEVER, CALCULATE LCOE C ASSUMING NEW+EXISTING GENERATORS SINCE ANNUAL COST WILL BE DIVIDED BY C TOTAL ANNUAL ENERGY PRODUCTION C C TRILLO = LOW UP FRONT CAPITAL COST ($TRILLION) OF ALL NEW WWS ELEC DEVICES C TRILMN = MEAN UP FRONT CAPITAL COST ($TRILLION) OF ALL NEW WWS ELEC DEVICES C TRILHI = HI UP FRONT CAPITAL COST ($TRILLION) OF ALL NEW WWS ELEC DEVICES C TRILHLO = LOW UP FRONT CAPITAL COST ($TRILLION) OF ALL NEW WWS HEAT DEVICES C TRILHMN = MEAN UP FRONT CAPITAL COST ($TRILLION) OF ALL NEW WWS HEAT DEVICES C TRILHHI = HI UP FRONT CAPITAL COST ($TRILLION) OF ALL NEW WWS HEAT DEVICES C IF (I.EQ.ISOLTHM.OR.I.EQ.IGEOHT) THEN TRILHLO = TRILHLO + ACAPCOSL( I) TRILHMN = TRILHMN + ACAPCOSM( I) TRILHHI = TRILHHI + ACAPCOSH( I) ELSE TRILLO = TRILLO + ACAPCOSL( I) TRILMN = TRILMN + ACAPCOSM( I) TRILHI = TRILHI + ACAPCOSH( I) ENDIF C C OMPOWL = SUMMED ANNUAL LO O&M COST ($TRIL) OVER NEW+EXIST ELEC GENERATORS C OMPOWM = SUMMED ANNUAL MEANN O&M COST ($TRIL) OVER NEW+EXISTELEC GENERATORS C OMPOWH = SUMMED ANNUAL HI O&M COST ($TRIL) OVER NEW+EXIT ELEC GENERATORS C OMHEATL = SUMMED ANNUAL LO O&M COST ($TRIL) OVER NEW+EXIST HEAT GENERATORS C OMHEATM = SUMMED ANNUAL MEANN O&M COST ($TRIL) OVER NEW+EXIT HEAT GENERATORS C OMHEATH = SUMMED ANNUAL HI O&M COST ($TRIL) OVER NEW+EXIT HEAT GENERATORS C AGWINSTAL = GW OF NEW INSTALLATIONS OF EACH WWS POWER TYPE C OANDMLO = LOW VARIABLE PLUS FIXED O&M COSTS ($/KW/YR) FOR WWS GENERATORS C OANDMMN = MEAN VARIABLE PLUS FIXED O&M COSTS ($/KW/YR) FOR WWS GENERATORS C OANDMHI = HI VARIABLE PLUS FIXED O&M COSTS ($/KW/YR) FOR WWS GENERATORS C AKWPGW = 1.0E+06 KILOWATTS (KW) PER GIGAWATT (GW) C TRILPDOL = 1.0E-12 TRILLION DOLLARS PER DOLLAR C IF (I.EQ.ISOLTHM.OR.I.EQ.IGEOHT) THEN OMHEATL = OMHEATL + PGWINSTAL(I) * OANDMLO(I) * AKWPGW*TRILPDOL OMHEATM = OMHEATM + PGWINSTAL(I) * OANDMMN(I) * AKWPGW*TRILPDOL OMHEATH = OMHEATH + PGWINSTAL(I) * OANDMHI(I) * AKWPGW*TRILPDOL ELSE OMPOWL = OMPOWL + PGWINSTAL(I) * OANDMLO(I) * AKWPGW*TRILPDOL OMPOWM = OMPOWM + PGWINSTAL(I) * OANDMMN(I) * AKWPGW*TRILPDOL OMPOWH = OMPOWH + PGWINSTAL(I) * OANDMHI(I) * AKWPGW*TRILPDOL ENDIF C C ANCOSPOWL = LO $TRIL ANNUALIZED CAPITAL/O&M/DECOMMIS COST NEW+EXIST WWS ELEC DEVICES C ANCOSPOWM = MN $TRIL ANNUALIZED CAPITAL/O&M/DECOMMIS COST NEW+EXIST WWS ELEC DEVICES C ANCOSPOWH = HI $TRIL ANNUALIZED CAPITAL/O&M/DECOMMIS COST NEW+EXIST WWS ELEC DEVICES C ANCOSHTL = LO $TRIL ANNUALIZED CAPITAL/O&M/DECOMMIS COST NEW+EXIST WWS HEAT DEVICES C ANCOSHTM = MN $TRIL ANNUALIZED CAPITAL/O&M/DECOMMIS COST NEW+EXIST WWS HEAT DEVICES C ANCOSHTH = HI $TRIL ANNUALIZED CAPITAL/O&M/DECOMMIS COST NEW+EXIST WWS HEAT DEVICES C DECOMLO = LOW DECOMISSIONING COST AS FRACTION OF OVERNIGHT CAPITAL COST C DECOMMN = MEAN DECOMISSIONING COST AS FRACTION OF OVERNIGHT CAPITAL COST C DECOMHI = HIGH DECOMISSIONING COST AS FRACTION OF OVERNIGHT CAPITAL COST C IF (I.EQ.ISOLTHM.OR.I.EQ.IGEOHT) THEN ANCOSHTL = ANCOSHTL + PCAPCOSL(I) * (1.+DECOMLO(I)) * ANNFACL(I) ANCOSHTM = ANCOSHTM + PCAPCOSM(I) * (1.+DECOMMN(I)) * ANNFACM(I) ANCOSHTH = ANCOSHTH + PCAPCOSH(I) * (1.+DECOMHI(I)) * ANNFACH(I) ELSE ANCOSPOWL = ANCOSPOWL + PCAPCOSL(I) * (1.+DECOMLO(I))*ANNFACL(I) ANCOSPOWM = ANCOSPOWM + PCAPCOSM(I) * (1.+DECOMMN(I))*ANNFACM(I) ANCOSPOWH = ANCOSPOWH + PCAPCOSH(I) * (1.+DECOMHI(I))*ANNFACH(I) ENDIF C ENDDO C ENDDO I = 1, MXCAP C ANCOSPOWL = ANCOSPOWL + OMPOWL ANCOSPOWM = ANCOSPOWM + OMPOWL ANCOSPOWH = ANCOSPOWH + OMPOWL C ANCOSHTL = ANCOSHTL + OMHEATL ANCOSHTM = ANCOSHTM + OMHEATL ANCOSHTH = ANCOSHTH + OMHEATL C C SUMNEWINST = SUM OF NEW INSTALLED 2050 ELEC POWER GENERATORS (GW) C SUMNEWHEAT = SUM OF NEW INSTALLED 2050 HEAT GENERATORS (GW) C AVLOCAPCST = AVG LO CAPITAL COST OF ALL NEW ELEC INSTALLATIONS 2050 ($MIL/MW) C AVMNCAPCST = AVG MEAN CAP COST OF ALL NEW ELEC INSTALLATIONS 2050 ($MIL/MW) C AVHICAPCST = AVG HI CAPITAL COST OF ALL NEW ELEC INSTALLATIONS 2050 ($MIL/MW) C THESE DO NOT INCLUDE DECOMMISSIONG C AVLOCAPHT = AVG LO CAPITAL COST OF ALL NEW HEAT INSTALLATIONS 2050 ($MIL/MW) C AVMNCAPHT = AVG MEAN CAP COST OF ALL NEW HEAT INSTALLATIONS 2050 ($MIL/MW) C AVHICAPHT = AVG HI CAPITAL COST OF ALL NEW HEAT INSTALLATIONS 2050 ($MIL/MW) C THESE DO NOT INCLUDE DECOMMISSIONG C TRILLO = LOW UP FRONT CAPITAL COST ($TRILLION) OF ALL NEW WWS DEVICES C TRILMN = MEAN UP FRONT CAPITAL COST ($TRILLION) OF ALL NEW WWS DEVICES C TRILHI = HI UP FRONT CAPITAL COST ($TRILLION) OF ALL NEW WWS DEVICES C AVLOCAPCST = TRILLO * GWPTW / SUMNEWINST AVMNCAPCST = TRILMN * GWPTW / SUMNEWINST AVHICAPCST = TRILHI * GWPTW / SUMNEWINST C AVLOCAPHT = TRILHLO * GWPTW / SUMNEWHEAT AVMNCAPHT = TRILHMN * GWPTW / SUMNEWHEAT AVHICAPHT = TRILHHI * GWPTW / SUMNEWHEAT C C TRILSTORL = LOW TOTAL UPFRONT LIFECYCLE COST CSP-PCM,PHS,LI-BAT STORAGE ($TRIL) C TRILSTORM = MED TOTAL UPFRONT LIFECYCLE COST CSP-PCM,PHS,LI-BAT STORAGE ($TRIL) C TRILSTORH = HI TOTAL UPFRONT LIFECYCLE COST CSP-PCM,PHS,LI-BAT STORAGE ($TRIL) C TRILBATL = LOW TOTAL UPFRONT LIFECYCLE COST LI-BAT STORAGE ($TRIL) C TRILBATM = MED TOTAL UPFRONT LIFECYCLE COST LI-BAT STORAGE ($TRIL) C TRILBATH = HI TOTAL UPFRONT LIFECYCLE COST LI-BAT STORAGE ($TRIL) C TRILHTSTL = LOW TOTAL UPFRONT LIFECYCLE COST HW-STES STORAGE ($TRIL) C TRILHTSTM = MED TOTAL UPFRONT LIFECYCLE COST HW-STES STORAGE ($TRIL) C TRILHTSTH = HI TOTAL UPFRONT LIFECYCLE COST HW-STES STORAGE ($TRIL) C TRILCLSTL = LOW TOTAL UPFRONT LIFECYCLE COST CW-STES, PCM-ICE STORAGE ($TRIL) C TRILCLSTM = MED TOTAL UPFRONT LIFECYCLE COST CW-STES, PCM-ICE STORAGE ($TRIL) C TRILCLSTH = HI TOTAL UPFRONT LIFECYCLE COST CW-STES, PCM-ICE STORAGE ($TRIL) C TRILHPL = LOW TOTAL UPFRONT LIFECYCLE COST HEAT PUMPS FOR HW/CW-STES+UTES C TRILHPM = MED TOTAL UPFRONT LIFECYCLE COST HEAT PUMPS FOR HW/CW-STES+UTES C TRILHPH = HI TOTAL UPFRONT LIFECYCLE COST HEAT PUMPS FOR HW/CW-STES+UTES C TSTORPHS = MAX CHARGE RATE PUMPED HYDRO STORAGE (TW) = 57.683 GW 2010 U.S. C TEXISTPHS = EXISTING PUMPED-HYDRO STORAGE (PHS) INSTALLED CAPACITY (TW) C STORCTWH = MAX STORAGE CAPACITY (TWH) OF CSP STORAGE C STORPTWH = MAX STORAGE CAPACITY (TWH) OF PHS STORAGE C STOROTWH = MAX STORAGE CAPACITY (TWH) OF CW-STES + PCM-ICE STORAGE C STORBTWH = MAX STORAGE CAPACITY (TWH) OF BATTERY STORAGE C STORHTWH = MAX STORAGE CAPACITY (TWH) OF HW-STES STORAGE C STORWTWH = MAX STORAGE CAPACITY (TWH) OF CW-STES STORAGE C STORITWH = MAX STORAGE CAPACITY (TWH) OF PCM-ICE STORAGE C COSTSTORL = LO LIFECYCLE COST OF STORAGE ($/KWH-EL) C COSTSTORM = MEAN LIFECYCLE COST OF STORAGE ($/KWH-EL) C COSTSTORH = HI LIFECYCLE COST OF STORAGE ($/KWH-EL) C ADDHPDIS = ADDED HYDROPOWER INSTALLED DISCHARGE CAPACITY (MW) C DUE TO ADDITIONAL TURBINES/GENERATORS/TRANSFORMERS C COST FROM IRENA (2012) RENEW ENERGY TECHS: COST ANAL FIG 4.7 C http://www.irena.org/documentdownloads/publications/ C re_technologies_cost_analysis-hydropower.pdf C FELECHP = FRACTION OF TOTAL CAPITAL COST OF HYDROPOWER THAT IS FOR C ELECTRICAL EQUIPMENT (TURBINES/GENERATORS/TRANSFORMERS C ~16% ($556/KW) 500 MW PLANT TOT COST $3,500 (FIG 4.5 IRENA 2012) C ($200-300/KW) 1000 MW PLANTS FIG. 4.7 C AVCAPLO = AVERAGE (2015 TO 2050) LOW CAP COST PER GENERATOR ($TRIL/MW) C AVCAPMN = AVERAGE (2015 TO 2050) MEAN CAP COST PER GENERATOR ($TRIL/MW) C AVCAPHI = AVERAGE (2015 TO 2050) HI CAP COST PER GENERATOR ($TRIL/MW) C AKWPTW = 1.0E+09 KILOWATTS (KW) PER TERAWATT (TW) OR KWH PER TWH C TRILPDOL = 1.0E-12 TRILLION DOLLARS PER DOLLAR C AKWTRIL = (KWH PER TWH) * (TRILLION DOLLARS PER DOLLAR) C AKWTRIL = AKWPTW * TRILPDOL C C STATIONARY BATTERY STORAGE C TRILBATL = STORBTWH * COSTSTORL(ILIB) * AKWTRIL TRILBATM = STORBTWH * COSTSTORM(ILIB) * AKWTRIL TRILBATH = STORBTWH * COSTSTORH(ILIB) * AKWTRIL C C ALL ELECTRICITY STORAGE (CSP-PCM, PHS, LI-BATTERY) C TRILSTORL = ((TSTORPHS-TEXISTPHS)*STORHPHS*COSTSTORL(IPHS) 1 + STORCTWH * COSTSTORL(IPCMCSP)) * AKWTRIL 1 + TRILBATL TRILSTORM = ((TSTORPHS-TEXISTPHS)*STORHPHS*COSTSTORM(IPHS) 1 + STORCTWH * COSTSTORM(IPCMCSP)) * AKWTRIL 1 + TRILBATM TRILSTORH = ((TSTORPHS-TEXISTPHS)*STORHPHS*COSTSTORH(IPHS) 1 + STORCTWH * COSTSTORH(IPCMCSP)) * AKWTRIL 1 + TRILBATH C C HW-STES STORAGE (HOT WATER STORAGE) C CPERFORM = COEF OF PERFORMANCE OF HEAT PUMPS (KW-THERMAL/KW-ELEC) C COSTSTORL = LO LIFECYCLE COST OF STORAGE ($/KWH-ELEC) (CONVERTED C EARLIER FROM $/KWH-TH) C COST SHOULD BE BASED ON KWH-ELEC SINCE ALL ENERGY=ELECTRICITY. C HEAT CONVERTED TO ELECTRICITY ASSUMING HEAT PUMPS WITH CPERFORM C TRILHTSTL = STORHTWH * COSTSTORL(IHWSTES) * AKWTRIL TRILHTSTM = STORHTWH * COSTSTORM(IHWSTES) * AKWTRIL TRILHTSTH = STORHTWH * COSTSTORH(IHWSTES) * AKWTRIL C C CW-STES (CHILLED-WATER) + PCM-ICE (ICE) STORAGE C TRILCLSTL = (STORWTWH * COSTSTORL(ICWSTES) 1 + STORITWH * COSTSTORL(IPCMICE)) * AKWTRIL TRILCLSTM = (STORWTWH * COSTSTORM(ICWSTES) 1 + STORITWH * COSTSTORM(IPCMICE)) * AKWTRIL TRILCLSTH = (STORWTWH * COSTSTORH(ICWSTES) 1 + STORITWH * COSTSTORH(IPCMICE)) * AKWTRIL C C TRILADHPL = LO UPFRONT LIFECYCLE COST ADDITION HYDROPOWER TURBINES ($ TRIL) C TRILADHPM = MED UPFRONT LIFECYCLE COST ADDITION HYDROPOWER TURBINES ($ TRIL) C TRILADHPH = HI UPFRONT LIFECYCLE COST ADDITION HYDROPOWER TURBINES ($ TRIL) C TRILADHPL = ADDHPDIS * FELECHP * AVCAPLO(IHYDRO) TRILADHPM = ADDHPDIS * FELECHP * AVCAPMN(IHYDRO) TRILADHPH = ADDHPDIS * FELECHP * AVCAPHI(IHYDRO) C C TRILUGSTL = LO UPFRONT LIFECYLCE COST UTES (UNDERGROUND HEAT STOR) ($ TRIL) C TRILUGSTM = MED UPFRONT LIFECYLCE COST UTES (UNDERGROUND HEAT STOR) ($ TRIL) C TRILUGSTH = HI UPFRONT LIFECYLCE COST UTES (UNDERGROUND HEAT STOR) ($ TRIL) C UTESTWH = MAX STORAGE CAPACITY (TWH) UNDERGROUND SEAS HEAT STORAGE IN SOIL C REALLY TWH OF ELECTRICITY STORAGE THAT GIVES NECESSARY C HEATING FROM HEAT PUMPS WITH COP=CPERFORM C COSTUTESL = LO LIFECYCLE COST OF UTES STORAGE ($/KWH-ELEC) C CONVERTED EARLIER FROM $/KWH-TH WITH CPERFORM C COSTUTESM = MEAN LIFECYCLE COST OF UTES STORAGE ($/KWH-ELEC) C COSTUTESH = HI LIFECYCLE COST OF UTES STORAGE ($/KWH-ELEC) C CPERFORM = COEFFICIENT OF PERFORMANCE OF HEAT PUMPS C (J-TH/J-ELEC = = KWH-TH/KWH-ELEC = KW-TH/KW-ELEC) C TRILUGSTL = UTESTWH * COSTUTESL * AKWTRIL TRILUGSTM = UTESTWH * COSTUTESM * AKWTRIL TRILUGSTH = UTESTWH * COSTUTESH * AKWTRIL C C TRILSHPL = LOW CAPITAL COST HEAT PUMPS FOR HW/CW-STES+UTES C TRILSHPM = MED CAPITAL COST HEAT PUMPS FOR HW/CW-STES+UTES C TRILSHPH = HI CAPITAL COST HEAT PUMPS FOR HW/CW-STES+UTES C AKWTRIL = (KWH PER TWH) * (TRILLION DOLLARS PER DOLLAR) C HOTCHARG = MAX CHARGE RATE (TW) OF HOT WATER (HW)-STES C REALLY MAX CHARGE RATE OF ELECTRICITY TO C PRODUCE THE HEAT SINCE HEAT LOAD CONVERTED TO ELECTRICAL LOAD C THAT WOULD PRODUCE THAT HEAT WITH HEAT PUMPS IN C countrystats.dat C UTESCHARG = MAX CHARGE RATE (TW) UNDERGROUND SEASONAL HEAT STORAGE C FROM EXCESS ELECTRIC POWER GENERATION C SINCE LOW-TEMP HEAT LOAD IN countrystats.dat ALREADY C CONVERTED TO EQUIVALENT ELECTRICAL LOAD ASSUMING C HEAT PUMPS WITH CPERFORM, UTESCCHARG IS REALLY THE CHARGE C RATE OF EQUIV ELECTRICITY TO GIVE HEATING FROM HEAT PUMPS C COSTHPL = LO COST($/KW-ELEC) LARGE HEAT PUMPS TO CHARGE HW/CW-STES+UTES STORAGE C COSTHPM = MEAN COST($/KW-ELEC) LARGE HEAT PUMPS TO CHARGE HW/CW-STES+UTES STORAGE C COSTHPH = HI COST($/KW-ELEC) LARGE HEAT PUMPS TO CHARGE HW/CW-STES+UTES STORAGE C AKWTRIL = (KWH PER TWH) * (TRILLION DOLLARS PER DOLLAR) C CHILDISCH = MAX DISCHARGE AND CHARGE RATE (TW) CHILLED-WATER (CW)-STES STORAGE C PCMDISCH = MAX DISCHARGE AND CHARGE RATE (TW) PCM-ICE STORAGE C HPSIZE = SIZE (TW-ELEC) OF HEAT PUMPS TO HEAT HW-STES+UTES C AND TO COOL CW-STES, ICE C HPSIZE = MAX(HOTCHARG+UTESCHARG,CHILDISCH+PCMDISCH) C TRILSHPL = HPSIZE * COSTHPL * AKWTRIL TRILSHPM = HPSIZE * COSTHPM * AKWTRIL TRILSHPH = HPSIZE * COSTHPH * AKWTRIL C C TRILTOTL = LOW UP-FRONT CAPITAL COST ($TRILLION) OF NEW WWS DEVICES + STORAGE C + HEAT PUMPS FOR HW/CW-STES+UTES STORAGE C EXCLUDES LONG-DISTANCE TRANSMISSION AND H2 COST, WHICH ARE C ADDED LATER. INCLUDES SHORT-DISTANCE TRANSMISSION C ALSO EXCLUDES DECOMMISSIONING, WHICH IS ADDED IN DECOMAD C TRILTOTM = MEAN UP-FRONT CAPITAL COST ($TRILLION) OF NEW WWS DEVICES + STORAGE C TRILTOTH = HI UP-FRONT CAPITAL COST ($TRILLION) OF NEW WWS DEVICES + STORAGE C TRILTOTL = TRILLO + TRILHLO + TRILSTORL + TRILADHPL + TRILUGSTL 1 + TRILSHPL + TRILHTSTL + TRILCLSTL TRILTOTM = TRILMN + TRILHMN + TRILSTORM + TRILADHPM + TRILUGSTM 1 + TRILSHPM + TRILHTSTM + TRILCLSTM TRILTOTH = TRILHI + TRILHHI + TRILSTORH + TRILADHPH + TRILUGSTH 1 + TRILSHPH + TRILHTSTH + TRILCLSTH C C ANCOSSTOL = LOW ANNUAL TOTAL (CAP+O&M) COST CSP-PCM,PHS,LI-BAT STOR ($TRIL/YR) C ANCOSSTOM = MED ANNUAL TOTAL (CAP+O&M) COST CSP-PCM,PHS,LI-BAT STOR ($TRIL/YR) C ANCOSSTOH = HI ANNUAL TOTAL (CAP+O&M) COST CSP-PCM,PHS,LI-BAT STOR ($TRIL/YR) C ANNFACSL = LO FACTOR TO MULTIPLY CAPITAL STORAGE COST BY TO GET ANNUAL COST C AT DISCOUNT RATE DISCOUNTL AND LIFETIME STORLIFEL C ANNFACSM = MEAN FACTOR TO MULTIPLY CAPITAL STORAGE COST BY TO GET ANNUAL COST C ANNFACSH = HI FACTOR TO MULTIPLY CAPITAL STORAGE COST BY TO GET ANNUAL COST C ANNFACBL = LO FACTOR TO MULTIPLY CAPITAL BATTERY COST BY TO GET ANNUAL COST C AT DISCOUNT RATE DISCOUNTL AND LIFETIME STORLIFBL C ANNFACBM = MEAN FACTOR TO MULTIPLY CAPITAL BATTERY COST BY TO GET ANNUAL COST C ANNFACBH = HI FACTOR TO MULTIPLY CAPITAL BATTERY COST BY TO GET ANNUAL COST C OPMAINTL = LO ANNUAL OP & MAINT COST OF STORAGE AS FRAC CAP COST C OPMAINTM = MN ANNUAL OP & MAINT COST OF STORAGE AS FRAC CAP COST C OPMAINTH = HI ANNUAL OP & MAINT COST OF STORAGE AS FRAC CAP COST C TRILBATL = LOW TOTAL UPFRONT LIFECYCLE COST LI-BAT STORAGE ($TRIL) C TRILBATM = MED TOTAL UPFRONT LIFECYCLE COST LI-BAT STORAGE ($TRIL) C TRILBATH = HI TOTAL UPFRONT LIFECYCLE COST LI-BAT STORAGE ($TRIL) C ANCOSSTOL = (TRILSTORL-TRILBATL)*(ANNFACSL+OPMAINTL) 1 + TRILBATL *(ANNFACBL+OPMAINTL) ANCOSSTOM = (TRILSTORM-TRILBATM)*(ANNFACSM+OPMAINTM) 1 + TRILBATM *(ANNFACBM+OPMAINTM) ANCOSSTOH = (TRILSTORH-TRILBATH)*(ANNFACSH+OPMAINTH) 1 + TRILBATH *(ANNFACBH+OPMAINTH) C C ANCHTSTOL = LOW ANNUAL TOTAL (CAP+O&M) COST HW-STES STORAGE ($TRIL/YR) C ANCHTSTOM = MED ANNUAL TOTAL (CAP+O&M) COST HW-STES STORAGE ($TRIL/YR) C ANCHTSTOH = HI ANNUAL TOTAL (CAP+O&M) COST HW-STES STORAGE ($TRIL/YR) C ANCHTSTOL = TRILHTSTL * (ANNFACSL + OPMAINTL) ANCHTSTOM = TRILHTSTM * (ANNFACSM + OPMAINTM) ANCHTSTOH = TRILHTSTH * (ANNFACSH + OPMAINTH) C C ANCCLSTOL = LOW ANNUAL TOTAL (CAP+O&M) COST CW-STES+PCM-ICE STORAGE ($TRIL/YR) C ANCCLSTOM = MED ANNUAL TOTAL (CAP+O&M) COST CW-STES+PCM-ICE STORAGE ($TRIL/YR) C ANCCLSTOH = HI ANNUAL TOTAL (CAP+O&M) COST CW-STES+PCM-ICE STORAGE ($TRIL/YR) C ANCCLSTOL = TRILCLSTL * (ANNFACSL + OPMAINTL) ANCCLSTOM = TRILCLSTM * (ANNFACSM + OPMAINTM) ANCCLSTOH = TRILCLSTH * (ANNFACSH + OPMAINTH) C C ANCOSHPTL = LOW ANNUAL TOTAL (CAP+O&M) COST OF ADDED HYDRO TURBINES($TRIL/YR) C ANCOSHPTM = MEAN ANNUAL TOTAL (CAP+O&M) COST OF ADDED HYDRO TURBINES($TRIL/YR) C ANCOSHPTH = HIGH ANNUAL TOTAL (CAP+O&M) COST OF ADDED HYDRO TURBINES($TRIL/YR) C ANCOSHPTL = TRILADHPL * (ANNFACSL + OPMAINTL) ANCOSHPTM = TRILADHPM * (ANNFACSM + OPMAINTM) ANCOSHPTH = TRILADHPH * (ANNFACSH + OPMAINTH) C C ANCOSUGSL = LO ANNUAL TOTAL (CAP+O&M) COST OF UTES STORAGE ($TRIL/YR) C ANCOSUGSM = MED ANNUAL TOTAL (CAP+O&M) COST OF UTES STORAGE ($TRIL/YR) C ANCOSUGSH = HI ANNUAL TOTAL (CAP+O&M) COST OF UTES STORAGE ($TRIL/YR) C ANCOSUGSL = TRILUGSTL * (ANNFACSL + OPMAINTL) ANCOSUGSM = TRILUGSTM * (ANNFACSM + OPMAINTM) ANCOSUGSH = TRILUGSTH * (ANNFACSH + OPMAINTH) C C ANCOSSHPL = LOW ANNUAL TOTAL (CAP+O&M) COST HEAT PUMPS FOR STORAGE ($TRIL/YR) C ANCOSSHPM = MED ANNUAL TOTAL (CAP+O&M) COST HEAT PUMPS FOR STORAGE ($TRIL/YR) C ANCOSSHPH = HI ANNUAL TOTAL (CAP+O&M) COST HEAT PUMPS FOR STORAGE ($TRIL/YR) C TRILSHPL = LOW CAPITAL COST HEAT PUMPS FOR HW/CW-STES+UTES C TRILSHPM = MED CAPITAL COST HEAT PUMPS FOR HW/CW-STES+UTES C TRILSHPH = HI CAPITAL COST HEAT PUMPS FOR HW/CW-STES+UTES C ANFACHPL = LO FACTOR TO MULTIPLY CAPITAL HEAT PUMP COST BY TO GET ANNUAL COST C AT DISCOUNT RATE DISCOUNTL AND LIFETIME HPLIFEL C ANFACHPM = MEAN FACTOR TO MULTIPLY CAPITAL HEAT PUMP COST BY TO GET ANNUAL COST C ANFACHPH = HI FACTOR TO MULTIPLY CAPITAL HEAT PUMP COST BY TO GET ANNUAL COST C ANCOSSHPL = TRILSHPL * (ANFACHPL + OPMAINTL) ANCOSSHPM = TRILSHPM * (ANFACHPM + OPMAINTM) ANCOSSHPH = TRILSHPH * (ANFACHPH + OPMAINTH) C C ANNCOSTL = LOW AN COST ($TRIL/YR) ELEC+HEAT+ALL NON-H2 STORAGE+EXTRA HYDRO TURBINES C + HEAT PUMPS TO FEED HW/CW-STES+UTES BUT NOT H2 OR SHORT T&D OR LONG-DIST C TRANSMISSION. FOR NEW+EXISTING C ANNCOSTM = MED AN COST ($TRIL/YR) ELEC+HEAT+ALL NON-H2 STORAGE+EXTRA HYDRO TURBINES C + HEAT PUMPS TO FEED HW/CW-STES+UTES BUT NOT H2 OR SHORT T&D OR LONG-DIST C TRANSMISSION. FOR NEW+EXISTING C ANNCOSTH = HI AN COST ($TRIL/YR) ELEC+HEAT+ALL NON-H2 STORAGE+EXTRA HYDRO TURBINES C + HEAT PUMPS TO FEED HW/CW-STES+UTES BUT NOT H2 OR SHORT T&D OR LONG-DIST C TRANSMISSION. FOR NEW+EXISTING C ANCOSPOWL = LO $TRIL ANNUALIZED CAPITAL/O&M/DECOMMIS COST NEW+EXIST WWS ELEC DEVICES C ANCOSPOWM = MN $TRIL ANNUALIZED CAPITAL/O&M/DECOMMIS COST NEW+EXIST WWS ELEC DEVICES C ANCOSPOWH = HI $TRIL ANNUALIZED CAPITAL/O&M/DECOMMIS COST NEW+EXIST WWS ELEC DEVICES C ANCOSHTL = LO $TRIL ANNUALIZED CAPITAL/O&M/DECOMMIS COST NEW+EXIST WWS HEAT DEVICES C ANCOSHTM = MN $TRIL ANNUALIZED CAPITAL/O&M/DECOMMIS COST NEW+EXIST WWS HEAT DEVICES C ANCOSHTH = HI $TRIL ANNUALIZED CAPITAL/O&M/DECOMMIS COST NEW+EXIST WWS HEAT DEVICES C ANNCOSTL = ANCOSPOWL + ANCOSHTL + ANCOSSTOL + ANCOSHPTL 1 + ANCOSUGSL + ANCOSSHPL + ANCHTSTOL + ANCCLSTOL ANNCOSTM = ANCOSPOWM + ANCOSHTM + ANCOSSTOM + ANCOSHPTM 1 + ANCOSUGSM + ANCOSSHPM + ANCHTSTOM + ANCCLSTOM ANNCOSTH = ANCOSPOWH + ANCOSHTH + ANCOSSTOH + ANCOSHPTH 1 + ANCOSUGSH + ANCOSSHPH + ANCHTSTOH + ANCCLSTOH C C OMSTORL = LOW O&M COST FOR STORAGE EACH YEAR ($TRIL/YEAR) C OMSTORM = MEAN O&M COST FOR STORAGE EACH YEAR ($TRIL/YEAR) C OMSTORH = HIGH O&M COST FOR STORAGE EACH YEAR ($TRIL/YEAR) C OMSTORL = OPMAINTL * (TRILSTORL + TRILHTSTL + TRILCLSTL 1 + TRILADHPL + TRILUGSTL + TRILSHPL) OMSTORM = OPMAINTM * (TRILSTORM + TRILHTSTM + TRILCLSTM 1 + TRILADHPM + TRILUGSTM + TRILSHPM) OMSTORH = OPMAINTH * (TRILSTORH + TRILHTSTH + TRILCLSTH 1 + TRILADHPH + TRILUGSTH + TRILSHPH) C C CSPCHSTO = MAX CHARGE RATE (TW) OF CSP STORAGE WHEN IT EXISTS. C = CSPCHARG - CSPDISCH C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C CSPCHARG = MAX CHARGE RATE (TW) OF CSP DIRECT ELECTRICITY + STORAGE C = CSPDISCH + CSPCHSTO C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C BASED ON SIZE OF MIRRORS (NOT SIZE OF GENERATOR) C CSPDISCH = MAX DISCHARGE RATE (TW) OF CSP EITHER FROM STORAGE OR DIRECTLY C = CSPCHARG - CSPCHSTO = CSP TURBINE SIZE C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C WRITE(IOUT,166) 1 (I, AVCAPLO(I)*1E6,AVCAPMN(I)*1E6,AVCAPHI(I)*1E6,I=1,MXCAP), 1 0, CAPCSPLO *1E6,CAPCSPMN *1E6,CAPCSPHI *1E6, 1 0, AVLOCAPCST, AVMNCAPCST, AVHICAPCST, 1 0, AVLOCAPHT, AVMNCAPHT, AVHICAPHT, 1 CSPCHSTO, CSPCHARG, CSPDISCH, CSPCHARG/CSPDISCH 166 FORMAT('CAP COST ($MIL/MW) LOW MEDIUM HIGH',/ 1 'ONSHORE WIND ',I2,3(0PF12.5),/ 1 'OFFSHORE WIND ',I2,3(0PF12.5),/ 1 'RES ROOF PV ',I2,3(0PF12.5),/ 1 'COMM/GOVT PV ',I2,3(0PF12.5),/ 1 'UTILITY PV ',I2,3(0PF12.5),/ 1 'CSP-WITH-STORAGE ',I2,3(0PF12.5),/ 1 'CSP-NO-STORAGE ',I2,3(0PF12.5),/ 1 'GEOTHERMAL ELEC ',I2,3(0PF12.5),/ 1 'HYDROELECTRIC ',I2,3(0PF12.5),/ 1 'TIDAL ',I2,3(0PF12.5),/ 1 'WAVE ',I2,3(0PF12.5),/ 1 'SOLAR THERMAL ',I2,3(0PF12.5),/ 1 'GEOTHERMAL HEAT ',I2,3(0PF12.5),/ 1 'CSP-ACTUAL-STOR ',I2,3(0PF12.5),/ 1 'AVG NEW ELEC CAPCOST ',I2,3(0PF12.5),/ 1 'AVG NEW HEAT CAPCOST ',I2,3(0PF12.5),// 1 'CSP STORAGE CHARGE RATE (TW) ',0PF12.5,/ 1 'CSP STORAGE+ELEC CHARGE RATE (TW) ',0PF12.5,/ 1 'CSP DISCHARGE RATE (TW) ',0PF12.5,/ 1 'RATIO CSPCHARG/CSPDISCH ',1(0PF12.5)/) C WRITE(IOUT,168) (I,OANDMLO(I),OANDMMN(I),OANDMHI(I),I=1,MXCAP) 168 FORMAT('O&M COST ($/KW/YR) LOW MEDIUM HIGH',/ 1 'ONSHORE WIND ',I2,3(0PF12.5),/ 1 'OFFSHORE WIND ',I2,3(0PF12.5),/ 1 'RES ROOF PV ',I2,3(0PF12.5),/ 1 'COMM/GOVT PV ',I2,3(0PF12.5),/ 1 'UTILITY PV ',I2,3(0PF12.5),/ 1 'CSP-WITH-STORAGE ',I2,3(0PF12.5),/ 1 'CSP-NO-STORAGE ',I2,3(0PF12.5),/ 1 'GEOTHERMAL ELEC ',I2,3(0PF12.5),/ 1 'HYDROELECTRIC ',I2,3(0PF12.5),/ 1 'TIDAL ',I2,3(0PF12.5),/ 1 'WAVE ',I2,3(0PF12.5),/ 1 'SOLAR THERMAL ',I2,3(0PF12.5),/ 1 'GEOTHERMAL HEAT ',I2,3(0PF12.5),/) C WRITE(IOUT,172) (I,YEARLIFEL(I),YEARLIFEM(I),YEARLIFEH(I), 1 I=1,MXCAP) 172 FORMAT('LIFETIME (YEARS) LOW MEDIUM HIGH',/ 1 'ONSHORE WIND ',I2,3(0PF12.5),/ 1 'OFFSHORE WIND ',I2,3(0PF12.5),/ 1 'RES ROOF PV ',I2,3(0PF12.5),/ 1 'COMM/GOVT PV ',I2,3(0PF12.5),/ 1 'UTILITY PV ',I2,3(0PF12.5),/ 1 'CSP-WITH-STORAGE ',I2,3(0PF12.5),/ 1 'CSP-NO-STORAGE ',I2,3(0PF12.5),/ 1 'GEOTHERMAL ELEC ',I2,3(0PF12.5),/ 1 'HYDROELECTRIC ',I2,3(0PF12.5),/ 1 'TIDAL ',I2,3(0PF12.5),/ 1 'WAVE ',I2,3(0PF12.5),/ 1 'SOLAR THERMAL ',I2,3(0PF12.5),/ 1 'GEOTHERMAL HEAT ',I2,3(0PF12.5),/) C WRITE(IOUT,174) TDLOSS*PCT, 1 (I,TDLOSLO(I)*PCT,TDLOSMN(I)*PCT,TDLOSHI(I)*PCT,I=1,MXCAP) 174 FORMAT('MEAN TRANSMIS & DISTRIBUTION LOSS (SHORT+LONG DIST) (%): ', 1 0PF12.5,//, 1 'T&D LOSS (%) LOW MEDIUM HIGH',/ 1 'ONSHORE WIND ',I2,3(0PF12.5),/ 1 'OFFSHORE WIND ',I2,3(0PF12.5),/ 1 'RES ROOF PV ',I2,3(0PF12.5),/ 1 'COMM/GOVT PV ',I2,3(0PF12.5),/ 1 'UTILITY PV ',I2,3(0PF12.5),/ 1 'CSP-WITH-STORAGE ',I2,3(0PF12.5),/ 1 'CSP-NO-STORAGE ',I2,3(0PF12.5),/ 1 'GEOTHERMAL ELEC ',I2,3(0PF12.5),/ 1 'HYDROELECTRIC ',I2,3(0PF12.5),/ 1 'TIDAL ',I2,3(0PF12.5),/ 1 'WAVE ',I2,3(0PF12.5),/ 1 'SOLAR THERMAL ',I2,3(0PF12.5),/ 1 'GEOTHERMAL HEAT ',I2,3(0PF12.5),/) C WRITE(IOUT,180) 1 TRILLO,TRILHLO,TRILSTORL,TRILHTSTL,TRILCLSTL,TRILADHPL, 1 TRILUGSTL,TRILSHPL,TRILTOTL,AVLOCAPCST,AVLOCAPHT, 1 TRILMN,TRILHMN,TRILSTORM,TRILHTSTM,TRILCLSTM,TRILADHPM, 1 TRILUGSTM,TRILSHPM,TRILTOTM,AVMNCAPCST,AVMNCAPHT, 1 TRILHI,TRILHHI,TRILSTORH,TRILHTSTH,TRILCLSTH,TRILADHPH, 1 TRILUGSTH,TRILSHPH,TRILTOTH,AVHICAPCST,AVHICAPHT 180 FORMAT('$TRILLION CAPITAL COST NEW DEVICES ',/ 1 ' ELEC-GENERATORS HEAT-GENS ELEC-STOR HEAT-STOR ', 1 ' COLD-STOR HPTURBS UG-STOR HEATPUMPS ', 1 'ALL-CAP AVGELEC($MIL/MW) AVHEAT',/ 1 'LOW',4X,11(0PF12.5),/, 1 'MED',4X,11(0PF12.5),/, 1 'HI ',4X,11(0PF12.5),/) C C ANCOSHPTL = LOW ANNUAL TOTAL (CAP+O&M) COST OF ADDED HYDRO TURBINES($TRIL/YR) C ANCOSHPTM = MEAN ANNUAL TOTAL (CAP+O&M) COST OF ADDED HYDRO TURBINES($TRIL/YR) C ANCOSHPTH = HIGH ANNUAL TOTAL (CAP+O&M) COST OF ADDED HYDRO TURBINES($TRIL/YR) C WRITE(IOUT,181) OMSTORL, OMSTORM, OMSTORH, 1 OMPOWL, OMPOWM, OMPOWH, 1 OMHEATL, OMHEATM, OMHEATH, 1 ANNCOSTL, ANNCOSTM, ANNCOSTH, 1 ANCOSPOWL,ANCOSPOWM, ANCOSPOWH, 1 ANCOSHTL, ANCOSHTM, ANCOSHTH, 1 ANCOSSTOL,ANCOSSTOM, ANCOSSTOH, 1 ANCHTSTOL,ANCHTSTOM, ANCHTSTOH, 1 ANCCLSTOL,ANCCLSTOM, ANCCLSTOH, 1 ANCOSHPTL,ANCOSHPTM, ANCOSHPTH, 1 ANCOSUGSL,ANCOSUGSM, ANCOSUGSH, 1 ANCOSSHPL,ANCOSSHPM, ANCOSSHPH 181 FORMAT('NEW WWS '/, 1 'OMSTORL OMSTORM OMSTORH ($TRIL) = ',3(0PF12.5)/, 1 'OMPOWL OMPOWM OMPOWH ($TRIL) = ',3(0PF12.5)/, 1 'OMHEATL OMHEATM OMHEATH ($TRIL) = ',3(0PF12.5)/, 1 'ANNCOSTL ANNCOSTM ANNCOSTH ($TRIL) = ',3(0PF12.5)/, 1 'ANCOSPOWL ANCOSPOWM ANCOSPOWH ($TRIL) = ',3(0PF12.5)/, 1 'ANCOSHTL ANCOSHTM ANCOSHTH ($TRIL) = ',3(0PF12.5)/, 1 'ANCOSSTOL ANCOSSTOM ANCOSSTOH ($TRIL) = ',3(0PF12.5)/, 1 'ANCHTSTOL ANCHTSTOM ANCHTSTOH ($TRIL) = ',3(0PF12.5)/, 1 'ANCCLSTOL ANCCLSTOM ANCCLSTOH ($TRIL) = ',3(0PF12.5)/, 1 'ANCOSHPTL ANCOSHPTM ANCOSHPTH ($TRIL) = ',3(0PF12.5)/, 1 'ANCOSUGSL ANCOSUGSM ANCOSUGSH ($TRIL) = ',3(0PF12.5)/, 1 'ANCOSSHPL ANCOSSHPM ANCOSSHPH ($TRIL) = ',3(0PF12.5)/) C WRITE(IOUT,252) FACONWIN, FACOFFWIN, FACROOFPV,FACRESPV,FACCOMPV, 1 FACUTILPV,CSPTURBFAC,CSPCHARFAC,FACSHT,INITYLOAD, 1 IFINYLOAD,IBEGYLOAD C 252 FORMAT('FACONWIN FACOFFWIN FACROOFPV = ',3(1X,0PF10.3)/, 1 'FACRESPV FACCOMPV FACUTILPV = ',3(1X,0PF10.3)/, 1 'CSPTURBFAC CSPCHARFAC FACSHT = ',3(1X,0PF10.3)/, 1 'INITYLOAD,IFINYLOAD, IBEGYLOAD = ',3(1X,I10)/) C C STORHOURS = AVG NUMBER OF HOURS OF STORAGE AMONG ALL NON-UTES, NON-H2 STORAGE C = STORTWH / DISCHTW C UTESDISCH = MAX DISCHARGE RATE (TW) UNDERGROUND SEASONAL HEAT STORAGE C SINCE HEATING IS PROVIDED BY HEAT PUMPS AND HEATING LOAD C WAS CONVERTED TO EQUIVALENT ELECTRICAL LOAD IN C countrystats.dat, THIS MAX DISCHARGE RATE IS OF C ELECTRICITY TO PROVIDE THE HEAT FROM HEAT PUMPS C UTESCHARG = MAX CHARGE RATE (TW) UNDERGROUND SEASONAL HEAT STORAGE C FROM EXCESS ELECTRIC POWER GENERATION C SINCE LOW-TEMP HEAT LOAD IN countrystats.dat ALREADY C CONVERTED TO EQUIVALENT ELECTRICAL LOAD ASSUMING C HEAT PUMPS WITH CPERFORM, UTESCCHARG IS REALLY THE CHARGE C RATE OF EQUIV ELECTRICITY TO GIVE HEATING FROM HEAT PUMPS C UTESTWH = TWH OF UNDERGROUND SEASONAL HEAT STORAGE IN SOIL OR WATER C REALLY TWH OF ELECTRICITY STORAGE THAT GIVES NECESSARY C UGFAC = FACTOR TO MULTIPLY UTESCHARG BY TO INCREASE OR DECREASE C CHARGE RATE OF UTES STORAGE WITH ELECTRIC HEAT PUMPS. C IDEALLY 0-1 BUT CAN GO ABOVE 1. HIGHER UGFAC-->MORE C EXPENSIVE COST OF HEAT PUMPS TO CHARGE STORAGE WITH C ELECTRICITY. IF UGFAC=0, THEN ONLY SOLAR COLLECTORS C (FACSHT) CAN SUPPLY UTES WITH HEAT . C HWFAC = FACTOR TO MULTIPLY HOTCHARGE BY TO INCREASE OR DECREASE C CHARGE RATE OF HW-STES STORAGE WITH ELECTRIC HEAT PUMPS. C IDEALLY 0-1 BUT CAN BE ABOVE 1. C HCHARCSP = MAX NUMBER HOURS THAT CSP CAN BE CHARGED FOR AT RATE CSPCHSTO C TO REACH FULL CAPACITY OF STORCTWH C STORHCSP = HOURS OF CSP STORAGE (HOURS TO DISCHARGE CSP STORAGE AT RATE C CSPDISCH WHEN STORAGE AT FULL CAPACITY) C H2ENERGY = KWH/KG = TWH/TG TO PRODUCE 1 KG H2 FROM ELECTROLYSIS AND COMPRESS IT C H2TANK = MAX STORAGE SIZE H2 TANKS (TG) C UFADJUST = FACTOR (<=1) TO ADJUST ELECTROLYZER AND COMPRESSOR USE C FACTOR BY TO ACCOUNT FOR USE FACTORS LESS THAN PROPOSED C COSTH2TK = COST H2 TANK ($/KG) = 500. C H2CYCLES = NUMBER OF CYCLES THROUGH TANK 50-100% CAPACITY = 100,000 C TANKCOST = COST OF H2 TANK ($ BILLION) C TGH2PYR = TG-H2/YR PRODUCED FROM ELECTROLYSIS, COMPRESSED AND EITHER USED C IMMEDIATELY OR STORED C WRITE(IOUT,253) HCHARCSP, CSPCHSTO, STORCTWH, 1 STORHCSP, CSPDISCH, STORCTWH, 1 STORHPHS, TSTORPHS, STORPTWH, 1 STORHCOLD, TSTORCOOL, STOROTWH, 1 STORHBAT, BATDISCH, STORBTWH, 1 STORHHWAT, HOTDISCH, STORHTWH, 1 HOTCHARG, CHARGTW, STORTWH, 1 STORHOURS, DISCHTW, STORTWH, 1 STORUGHRS, UTESDISCH, UTESTWH, 1 STORUGDYS, TWINUTES, UTESCHARG, 1 WARMMAX, UGFAC, MXHRDRM, 1 H2STORMX, HWFAC, HPSIZE, 1 DAYH2STOR, TWHH2TOT, 1 HTHRFAC, HYDTHRESH, HPTURBRAT, 1 FLDISELEC, H2ENERGY, TGH2PYR, H2TANK, 1 UFADJUST, 1 ELYZCOSL, ELYZCOSH, EUSEFACL, EUSEFACH, 1 ELYZLIFEL, ELYZLIFEH, COMPLIFEL, COMPLIFEH, 1 H2STLIFEL, H2STLIFEH, ELYZOM, COMPOM, 1 H2STOROM, COSCOMPL, COSCOMPH, COMPRATE, 1 COSTH2TKL, COSTH2TKH, TANKCOSTL, TANKCOSTH, 1 ANCOSELYZL, ANCOSWATL, ANCOSCOMPL, ANCOSH2STL, 1 ANCOSELYZH, ANCOSWATH, ANCOSCOMPH, ANCOSH2STH, 1 COSH2KGL, COSH2KGM, COSH2KGH C 253 FORMAT('HCHARCSP CSPCHSTO STORCTWH = ',3(1X,0PF12.5)/, 1 'STORHCSP CSPDISCH STORCTW = ',3(1X,0PF12.5)/, 1 'STORHPHS TSTORPHS STORPTWH = ',3(1X,0PF12.5)/, 1 'STORHCOLD TSTORCOOL STOROTWH = ',3(1X,0PF12.5)/, 1 'STORHBAT BATDISCH STORBTWH = ',3(1X,0PF12.5)/, 1 'STORHHWAT HOTDISCH STORHTWH = ',3(1X,0PF12.5)/, 1 'HOTCHARG CHARGTW STORTWH = ',3(1X,0PF12.5)/, 1 'STORHOURS DISCHTW STORTWH = ',3(1X,0PF12.5)/, 1 'STORUGHRS UTESDISCH UTESTWH = ',3(1X,0PF12.5)/, 1 'STORUGDYS TWINUTES UTESCHARG = ',3(1X,0PF12.5)/, 1 'WARMMAX-TW UGFAC MXHRDRM = ',2(1X,0PF12.5),1X,I12,/ 1 'H2STORMX-TWH HWFAC HPSIZE-TW = ',3(1X,0PF12.5),/ 1 'DAYH2STOR (DAYS OF H2 STORAGE = ',1(1X,0PF12.5),/ 1 'TWHH2TOT (TWH/YR ELEC FOR H2) = ',1(1X,0PF12.5),/ 1 'HTHRFAC (--) = ',1(1X,0PF12.5),/ 1 'HYDTHRESH (TWH) = ',1(1X,0PF12.5),/ 1 'HPTURBRAT (--) = ',1(1X,0PF12.5),/ 1 'FLDISELEC (--) = ',1(1X,0PF12.5),/ 1 'H2ENERGY(KWH/KGH2 ELEC+COMP) = ',1(1X,0PF12.5),/ 1 'TGH2PYR (TG-H2/YR) PRODUCED = ',1(1X,0PF12.5),/ 1 'H2TANK (TG-H2 TANK SIZE) = ',1(1X,0PF12.5),/ 1 'UFADJUST (--ADJUST TO USE FAC) = ',1(1X,0PF12.5),/ 1 'ELYZCOSL ($/KW LO ELECTLYZ) = ',1(1X,0PF12.5),/ 1 'ELYZCOSH ($/KW LO ELECTLYZ) = ',1(1X,0PF12.5),/ 1 'EUSEFACL (LO ELYZ USE FACT --) = ',1(1X,0PF12.5),/ 1 'EUSEFACH (HI ELYZ USE FACT --) = ',1(1X,0PF12.5),/ 1 'ELYZLIFEL (LO LIFE H2ELYZ-YR) = ',1(1X,0PF12.5),/ 1 'ELYZLIFEH (HI LIFE H2ELYZ-YR) = ',1(1X,0PF12.5),/ 1 'COMPLIFEL (LO LIFE H2COMP-YR) = ',1(1X,0PF12.5),/ 1 'COMPLIFEH (HI LIFE H2COMP-YR) = ',1(1X,0PF12.5),/ 1 'H2STLIFEL (LO LIFE H2STOR-YR) = ',1(1X,0PF12.5),/ 1 'H2STLIFEH (HI LIFE H2STOR-YR) = ',1(1X,0PF12.5),/ 1 'ELYZOM (H2ELYZ O&M - FRAC) = ',1(1X,0PF12.5),/ 1 'COMPOM (H2COMP O&M - FRAC) = ',1(1X,0PF12.5),/ 1 'H2STOROM (H2STOR O&M - FRAC) = ',1(1X,0PF12.5),/ 1 'COSCOMPL (LO H2COMPRESSOR $) = ',1(1X,0PF12.5),/ 1 'COSCOMPH (HI H2COMPRESSOR $) = ',1(1X,0PF12.5),/ 1 'COMPRATE (H2COMPRESSOR KG/HR) = ',1(1X,0PF12.5),/ 1 'COSTH2TKL (LO H2 TANK $/KG-H2) = ',1(1X,0PF12.5),/ 1 'COSTH2TKH (HI H2 TANK $/KG-H2) = ',1(1X,0PF12.5),/ 1 'TANKCOSTL (LO TANK $/KG-H2/YR) = ',1(1X,0PF12.5),/ 1 'TANKCOSTH (HI TANK $/KG-H2/YR) = ',1(1X,0PF12.5),/ 1 'ANCOSELYZL (LO ELYZ $/KG-H2) = ',1(1X,0PF12.5),/ 1 'ANCOSWATL (LO WATER $/KG-H2) = ',1(1X,0PF12.5),/ 1 'ANCOSCOMPL (LO COMP $/KG-H2) = ',1(1X,0PF12.5),/ 1 'ANCOSH2STL (LO STOR $/KG-H2) = ',1(1X,0PF12.5),/ 1 'ANCOSELYZH (HI ELYZ $/KG-H2) = ',1(1X,0PF12.5),/ 1 'ANCOSWATH (HI WATER $/KG-H2) = ',1(1X,0PF12.5),/ 1 'ANCOSCOMPH (HI COMP $/KG-H2) = ',1(1X,0PF12.5),/ 1 'ANCOSH2STH (HI STOR $/KG-H2) = ',1(1X,0PF12.5),/ 1 'COSH2KGL (LO TOT H2 $/KG-H2) = ',1(1X,0PF12.5),/ 1 'COSH2KGM (MED TOT H2 $/KG-H2) = ',1(1X,0PF12.5),/ 1 'COSH2KGH (HI TOT H2 $/KG-H2) = ',1(1X,0PF12.5),/) C C ***************************************************************************** C ESTIMATE DAILY HEATING AND COOLING LOADS FROM HEATING AND COOLING C DEGREE DATA AND ANNUAL HEATING AND COOLING LOADS C ***************************************************************************** C INITYEAR = INITIAL YEAR OF SIMULATION C KYEAR = 1..NYEARS CURRENT YEAR OF SIMULATION, STARTING WITH INITYEAR C MONCUM = CUMULATIVE NUMBER OF DAYS OF SIMULATION IN INCREMENTS C OF DAYS PER MONTH. WHEN CURRENT I=1,NDSIM DAY EXCEEDS C MONCUM, ADVANCE MONTH NUMBER (KMON) TO NEXT MONTH BUT C START KMON BACK TO 1 AT BEGINNING OF NEW YEAR C KMON = 1..12 CURRENT MONTH OF SIMULATION C KDAY = 1..NDAYYR(KYEAR)=365 OR 366 DAY OF YEAR C KDAY = 0 KMON = 1 KYEAR = 1 MONCUM = LDMONTH(KYEAR,1) TCOOLSUM = 0. TWARMSUM = 0. TDRMSUM = 0. TH2SUM = 0. TALLSUM = 0. C WRITE(IOUT,175) 175 FORMAT('GMTDAY MON ALLFLEX-TW TCOOLDAY-TW TWARMDAY-TW ', 1 'TLOADDRM-TW TLOADH2-TW') C C NDSIM = TOTAL NUMBER OF DAYS OF MODEL SIMULATION HERE C DO I = 1, NDSIM KDAY = KDAY + 1 C C AT END OF ANY YEAR, REPEAT YEAR C IF (I.GT.MONCUM) THEN KMON = KMON + 1 IF (KMON.EQ.13) THEN KDAY = 1 KMON = 1 KYEAR = KYEAR + 1 ENDIF MONCUM = MONCUM + LDMONTH(KYEAR,KMON) ENDIF C C FRDAYCOOL = FRAC OF YEARLY AIR COOLING + REFRIG THAT OCCURS ON CURRENT GMT DAY C DETERMINED FROM NUMBER OF DEGREE-COOLING DAYS ON DAY C FRDAYWARM = FRAC OF YEARLY AIR & WATER HEATING THAT OCCURS ON CURRENT GMT DAY C DETERMINED FROM NUMBER OF DEGREE-HEATING DAYS ON DAY C TSTORCOOL = AVG ANNUAL LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C TCOOLDAY = LOAD ON SPECIFIC DAY (TW) FOR COOLING (AC & REFRIG) C TSTORAWH = ANNUAL LOAD (TW) FOR AIR AND WATER HEATING SUBJECT TO STORAGE C TWARMDAY = LOAD ON SPECIFIC DAY OF YEAR (TW) FOR WARMING (AIR AND WATER) C NDAYYR = NUMBER OF DAYS PER YEAR OF SIMULATION (EITHER 365 OR 366) C IF (IFCONUS.EQ.1) THEN TCOOLDAY(I) = TSTORCOOL * NDAYYR(KYEAR) * FRDAYCOOL(KYEAR,KMON) TWARMDAY(I) = TSTORAWH * NDAYYR(KYEAR) * FRDAYWARM(KYEAR,KMON) ELSE TCOOLDAY(I) = TSTORCOOL * NDAYYR(KYEAR) * FRDAYCOOL(KYEAR,KDAY) TWARMDAY(I) = TSTORAWH * NDAYYR(KYEAR) * FRDAYWARM(KYEAR,KDAY) ENDIF C C DAYFLEX = FLEX LOAD (TW) FROM DEMAND-RESPONSE EACH GMT DAY OF YEAR C DOES NOT INCLUDE COOLING LOAD, HEATING LOAD OR LOAD FOR C H2 PRODUCTION. C H2FLEX = FLEX LOAD (TW) FOR H2 PROD/COMPRESS/STORAGE. H2 LOAD FOR C TRANSPORT/INDUSTRY IS ASSUMED CONSTANT DURING YEAR C TLOADDRM = ANNUAL LOAD (TW) SUBJECT TO DEMAND-RESPONSE MANAGEMENT C TLOADFLEX = TOTAL FLEXIBLE LOAD (TW) CONUS 2050 WITH WWS C INCLUDES LOADS SUBJECT TO STORAGE, DEMAND-RESPONSE, AND H2 PROD C DAYFLEX( I) = TLOADDRM H2FLEX( I) = TLOADH2 C C TCOOLSUM = SUM OF SPECIFIC DAY COOLING LOAD MULTIPLIED BY HRSPDAY (TWH/DAY) C TWARMSUM = SUM OF SPECIFIC DAY HEATING LOAD MULTIPLIED BY HRSPDAY (TWH/DAY) C TDRMSUM = SUM OF SPECIFIC DAY DRM LOAD MULTIPLIED BY HRSPDAY (TWH/DAY) C TH2SUM = SUM OF SPECIFIC DAY H2 LOAD MULTIPLIED BY HRSPDAY (TWH/DAY) C TALLSUM = SUM OF SPECIFIC DAY DRM+COOL+HEAT+LOAD MULT BY HRSPDAY (TWH/DAY) C HRSPDAY = NUMBER OF HOURS PER DAY (24) C TCOOLSUM = TCOOLSUM + TCOOLDAY(I) * HRSPDAY TWARMSUM = TWARMSUM + TWARMDAY(I) * HRSPDAY TDRMSUM = TDRMSUM + TLOADDRM * HRSPDAY TH2SUM = TH2SUM + H2FLEX( I) * HRSPDAY TALLSUM = TALLSUM + (TCOOLDAY(I) + TWARMDAY(I) 1 + DAYFLEX( I) + H2FLEX( I)) * HRSPDAY C WRITE(IOUT,176) I,KMON,TCOOLDAY(I) + TWARMDAY(I) 1 + DAYFLEX( I) + H2FLEX( I), 1 TCOOLDAY(I),TWARMDAY(I),DAYFLEX(I),H2FLEX(I) 176 FORMAT('X ',I5,1X,I2,5(1PE12.5)) ENDDO C ENDDO I = 1, NDSIM C C TAVCOOL = AVERAGE COOLING LOAD (TW) OVER SIMULATION C TAVWARM = AVERAGE HEATING LOAD (TW) OVER SIMULATION C NHRSIM = TOTAL NUMBER OF HOURS OF MODEL SIMULATION HERE C TAVCOOL = TCOOLSUM / NHRSIM TAVWARM = TWARMSUM / NHRSIM C WRITE(IOUT,177) TALLSUM/NHRSIM,TAVCOOL,TAVWARM,TDRMSUM/NHRSIM, 1 TH2SUM /NHRSIM WRITE(IOUT,177) TLOADFLEX, TSTORCOOL,TSTORAWH, TLOADDRM, TLOADH2 177 FORMAT('X AVG YR',5(1PE12.5)) WRITE(IOUT,*) C C ***************************************************************************** C READ AND PROCESS 2030 8760 HOURLY LOAD DATA FOR 94 COUNTRIES/GROUPS OF C COUNTRIES REPRESENTING WOLRD LOAD PLUS WORLD GRAND TOTAL FROM C loadreg.COUNTRY2030GW C ***************************************************************************** C DATA: http://neocarbonenergy.fi/internetofenergy/ PAPERS BY C. BREYER ET AL C ***************************************************************************** C READLOAD = 2030 LOAD (GW) FOR EACH 1..8760 HOUR FOR CURRENT COUNTRY FROM C loadreg.COUNTRY2030GW FILE C NLOADCOUN = NUMBER OF COUNTRIES READ FROM FILE loadreg.COUNTRY2030GW C IF (GRIDLOAD.EQ.'COUNTRY2030GW') THEN OPEN(KLOD, FILE = PATHLOAD//'loadreg.COUNTRY2030GW') C NLOADCOUN = 0 C READ(KLOD,*) READ(KLOD,*) READ(KLOD,*) 237 READ(KLOD,*,END=239) DUMMY, (READLOAD(I),I=1,8760) C NLOADCOUN = NLOADCOUN + 1 C IF (NLOADCOUN.GT.MXCOUNTRY) THEN WRITE(IOUT,*)'POWERWORLD: NLOADCOUN>MXCOUNTRY ', 1 NLOADCOUN,MXCOUNTRY STOP ENDIF C ***************************************************************************** C FILL 24 HOURS FOR FEB 29 (HOURS 1417..1440) SINCE DATA READ FOR NON-LEAP YEAR C ***************************************************************************** C NAMELOAD = NAME OF EACH 1..NLOADCOUN COUNTRIES C STORLOAD = 2030 LOAD (TW) FOR EACH 1..MXHPYEAR HOUR IN EACH 1..NLOADCOUN C COUNTRY FROM loadreg.COUNTRY2030GW FILE C AVGLOAD = AVERAGE ANNUAL LOAD (TW) BY COUNTRY OR REGION C IN loadreg.COUNTRY2030GW C NAMELOAD(NLOADCOUN) = DUMMY C AVGLOAD = 0. DO J = 1, 8760 AVGLOAD = AVGLOAD + READLOAD(J) * TWPERGW ENDDO AVGLOAD = AVGLOAD / 8760. WRITE(IOUT,246) NLOADCOUN, DUMMY, AVGLOAD 246 FORMAT('# LOADNAM LOAD-TW= ',I3,1X,A16,0PF10.6) C C THIS ENSURES THAT ON LEAP DAYS AND THE FOLLOWING DAY, THE LOAD IS SAME C DO J = 1, MXHPYEAR IF (J.LE.1416) THEN STORLOAD(NLOADCOUN,J) = READLOAD(J) * TWPERGW ELSE STORLOAD(NLOADCOUN,J) = READLOAD(J-24) * TWPERGW ENDIF ENDDO C C ***************************************************************************** C ASSIGN A LOAD PROFILE TO EACH COUNTRY FROM THE 2010-2014 OR 2013 RAW C HOURLY LOAD DATASETS. FOR THE FOLLOWING GRID REGIONS THAT ARE ON THEIR C OWN, ASSIGN LOAD PROFILES FROM A NEARBY COUNTRY: C C TAIWAN - ASSIGN FROM CHINA C CUBA - ASSIGN FROM EITHER MEXICO, CENTRAL AM OR VENEZUELA C HAITI-DOMINICAN REPUBLIC - ASSIGN FROM EITHER MEXICO, CENTRAL A OR VENEZUELA C JAMAICA - ASSIGN FROM EITHER MEXICO, CENTRAL AM OR VENEZUELA C C FOR COUNTRIES WITH NO DATA THAT ARE IN GRID REGIONS WITH DATA, ASSUME C LOAD PROFILE IS THE SAME AS THE SUMMED PROFILES OF ALL OTHER COUNTRIES C IN GRID REGION WITH DATA: C C TRINIDAD AND TOBAGO, DUTCH ANTILLES, URUGUAY IN THE SOUTH AMERICA REGION C HONG KONG IN THE CHINA REGION C C ***************************************************************************** C MAP EACH 1..NCOUNTRY COUNTRY TO EACH 1..NLOADCOUN LOAD FILE C ***************************************************************************** C ILOADCOUN = 1..NLOADCOUN COUNTRY OR REGION WITH LOAD DATA FROM C loadreg.COUNTRY2030GW FILE FOR EACH 1..NCOUNTRY COUNTRY C THIS ARRAY NEEDS TO BE FILLED EVEN IF OBTAINING LOAD DATA C FROM loadreg.XXX C NAMEORIG = NAME OF 1..NCOUNTRY AS READ FROM countrystats.dat C THIS NAME IS CHANGED BELOW TO MATCH THOSE FROM wwssupworld.dat C DUMMY = NAME OF COUNTRY FROM COUNTRY LOAD FILE C C DO IC = 1, NCOUNTRY COUNTRY = NAMEORIG(IC) IF (DUMMY.EQ.COUNTRY) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'ARGENTINA'.AND. 1 (COUNTRY.EQ.'ARGENTINA'.OR.COUNTRY.EQ.'URUGUAY')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Angola-Namibia'.AND. 1 (COUNTRY.EQ.'ANGOLA'.OR. 1 COUNTRY.EQ.'BOTSWANA'.OR.COUNTRY.EQ.'NAMIBIA')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Armenia-Azerba'.AND. 1 (COUNTRY.EQ.'ARMENIA'.OR. 1 COUNTRY.EQ.'AZERBAIJAN'.OR.COUNTRY.EQ.'GEORGIA')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Austria-Hungar'.AND. 1 (COUNTRY.EQ.'AUSTRIA'.OR.COUNTRY.EQ.'HUNGARY')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Bahrain+Qatar'.AND. 1 (COUNTRY.EQ.'BAHRAIN'.OR.COUNTRY.EQ.'QATAR')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Belgium-Nether'.AND. 1 (COUNTRY.EQ.'BELGIUM'.OR. 1 COUNTRY.EQ.'NETHERLANDS'.OR.COUNTRY.EQ.'LUXEMBOURG'))THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Bolivia-Paragu'.AND. 1 (COUNTRY.EQ.'BOLIVIA'.OR.COUNTRY.EQ.'PARAGUAY')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'BurkinaFaso-Be'.AND. 1 (COUNTRY.EQ.'BURKINA-FASO'.OR.COUNTRY.EQ.'BENIN' 1 .OR.COUNTRY.EQ.'TOGO'.OR.COUNTRY.EQ.'GHANA' 1 .OR.COUNTRY.EQ.'IVORY-COAST')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'MEXICO'.AND. 1 (COUNTRY.EQ.'JAMAICA'.OR.COUNTRY.EQ.'HAITI' 1 .OR.COUNTRY.EQ.'CUBA'.OR.COUNTRY.EQ.'DOMINICAN-REPU')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Central-Americ'.AND. 1 (COUNTRY.EQ.'BELIZE'.OR.COUNTRY.EQ.'COSTA-RICA' 1 .OR.COUNTRY.EQ.'EL-SALVADOR'.OR.COUNTRY.EQ.'GUATEMALA' 1 .OR.COUNTRY.EQ.'HONDURAS'.OR.COUNTRY.EQ.'NICARAGUA' 1 .OR.COUNTRY.EQ.'PANAMA')) THEN C 1 .OR.COUNTRY.EQ.'PANAMA' C 1 .OR.COUNTRY.EQ.'JAMAICA'.OR.COUNTRY.EQ.'HAITI' C 1 .OR.COUNTRY.EQ.'CUBA'.OR.COUNTRY.EQ.'DOMINICAN-REPU')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'CentralAfrican'.AND. 1 (COUNTRY.EQ.'CENT-AFRICAN-REP'.OR.COUNTRY.EQ.'CAMEROON' 1 .OR.COUNTRY.EQ.'CONGO'.OR.COUNTRY.EQ.'GABON' 1 .OR.COUNTRY.EQ.'EQUATORIAL-GUINE')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'CHINA'.AND. 1 (COUNTRY.EQ.'CHINA'.OR.COUNTRY.EQ.'HONG-KONG' 1 .OR.COUNTRY.EQ.'TAIWAN')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'CzechRep-Slova'.AND. 1 (COUNTRY.EQ.'CZECH-REPUBLIC'.OR.COUNTRY.EQ.'SLOVAKIA'))THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Estonia-Latvia'.AND. 1 (COUNTRY.EQ.'ESTONIA'.OR.COUNTRY.EQ.'LATVIA' 1 .OR.COUNTRY.EQ.'LITHUANIA')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Ireland-UK-Isl'.AND. 1 (COUNTRY.EQ.'IRELAND'.OR.COUNTRY.EQ.'UNITED-KINGDOM' 1 .OR.COUNTRY.EQ.'ISLE-OF-MAN'.OR.COUNTRY.EQ.'GUERNSEY' 1 .OR.COUNTRY.EQ.'JERSEY')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Italy-SanMarin'.AND. 1 (COUNTRY.EQ.'ITALY'.OR.COUNTRY.EQ.'SAN-MARINO' 1 .OR.COUNTRY.EQ.'VATICAN'.OR.COUNTRY.EQ.'MALTA')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Jordan+West-Ba'.AND. 1 (COUNTRY.EQ.'JORDAN'.OR.COUNTRY.EQ.'WEST-BANK' 1 .OR.COUNTRY.EQ.'GAZA')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Kenya-Uganda'.AND. 1 (COUNTRY.EQ.'KENYA'.OR.COUNTRY.EQ.'UGANDA')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Kyrgyzstan-Taj'.AND. 1 (COUNTRY.EQ.'KYRGYZ-REPUBLI'.OR.COUNTRY.EQ.'TAJIKISTAN')) 1 THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Malaysia-West-'.AND. 1 (COUNTRY.EQ.'SINGAPORE')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Malaysia-East-'.AND. 1 (COUNTRY.EQ.'MALAYSIA'.OR.COUNTRY.EQ.'BRUNEI-DARUSSA'))THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'MOROCCO'.AND. 1 (COUNTRY.EQ.'MOROCCO-(INC-W'.OR. 1 COUNTRY.EQ.'GRAN-CANARIA'.OR.COUNTRY.EQ.'LANZAROTE-FV'.OR. 1 COUNTRY.EQ.'TENERIFE' .OR.COUNTRY.EQ.'LA-PALMA'.OR. 1 COUNTRY.EQ.'LA-GOMERA' .OR.COUNTRY.EQ.'EL-HIERRO'.OR. 1 COUNTRY.EQ.'LANZ-FV-CSP')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Nepal+Bhutan'.AND. 1 (COUNTRY.EQ.'NEPAL'.OR.COUNTRY.EQ.'BHUTAN')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'New-Guinea-Pap'.AND. 1 (COUNTRY.EQ.'NEW-GUINEA')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Niger-Chad'.AND. 1 (COUNTRY.EQ.'NIGER'.OR.COUNTRY.EQ.'CHAD')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Portugal-Spain'.AND. 1 (COUNTRY.EQ.'PORTUGAL'.OR.COUNTRY.EQ.'SPAIN' 1 .OR.COUNTRY.EQ.'GIBRALTAR')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Romania-Bulgar'.AND. 1 (COUNTRY.EQ.'ROMANIA'.OR.COUNTRY.EQ.'BULGARIA' 1 .OR.COUNTRY.EQ.'GREECE')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Slovenia-Croat'.AND. 1 (COUNTRY.EQ.'SLOVENIA'.OR.COUNTRY.EQ.'CROATIA' 1 .OR.COUNTRY.EQ.'BOSNIA-HERZEGO'.OR.COUNTRY.EQ.'SERBIA' 1 .OR.COUNTRY.EQ.'MONTENEGRO'.OR.COUNTRY.EQ.'MACEDONIA' 1 .OR.COUNTRY.EQ.'ALBANIA'.OR.COUNTRY.EQ.'KOSOVO')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Somalia-Djibou'.AND. 1 (COUNTRY.EQ.'SOMALIA'.OR.COUNTRY.EQ.'DJIBOUTI')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'SouthAfrica-Le'.AND. 1 (COUNTRY.EQ.'SOUTH-AFRICA'.OR.COUNTRY.EQ.'LESOTHO' 1 .OR.COUNTRY.EQ.'SWAZILAND')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Sudan-Eritrea'.AND. 1 (COUNTRY.EQ.'SUDAN'.OR.COUNTRY.EQ.'ERITREA'.OR. 1 COUNTRY.EQ.'SOUTH-SUDAN')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Switzerland-Li'.AND. 1 (COUNTRY.EQ.'SWITZERLAND'.OR.COUNTRY.EQ.'LIECHTENSTEIN')) 1 THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Tanzania-Rwand'.AND. 1 (COUNTRY.EQ.'TANZANIA'.OR.COUNTRY.EQ.'RWANDA' 1 .OR.COUNTRY.EQ.'BURUNDI')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Turkey-Cyprus'.AND. 1 (COUNTRY.EQ.'TURKEY'.OR.COUNTRY.EQ.'CYPRUS')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Ukraine-Moldov'.AND. 1 (COUNTRY.EQ.'UKRAINE'.OR.COUNTRY.EQ.'MOLDOVA-REPUBL'))THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Venezuela-Guya'.AND. 1 (COUNTRY.EQ.'VENEZUELA'.OR.COUNTRY.EQ.'GUYANA' 1 .OR.COUNTRY.EQ.'FRENCH-GUIANA'.OR.COUNTRY.EQ.'SURINAME' 1 .OR.COUNTRY.EQ.'TRINIDAD-AND-T' 1 .OR.COUNTRY.EQ.'CURACAO')) THEN C 1 .OR.COUNTRY.EQ.'CURACAO' C 1 .OR.COUNTRY.EQ.'JAMAICA'.OR.COUNTRY.EQ.'HAITI' C 1 .OR.COUNTRY.EQ.'CUBA'.OR.COUNTRY.EQ.'DOMINICAN-REPU')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'WestSahara-Mau'.AND. 1 (COUNTRY.EQ.'WEST-SAHARA'.OR.COUNTRY.EQ.'MAURITANIA' 1 .OR.COUNTRY.EQ.'MALI'.OR.COUNTRY.EQ.'SENEGAL' 1 .OR.COUNTRY.EQ.'GAMBIA'.OR.COUNTRY.EQ.'GUINEA-BISSAU' 1 .OR.COUNTRY.EQ.'SIERRA-LEONE'.OR.COUNTRY.EQ.'LIBERIA')) THEN ILOADCOUN(IC) = NLOADCOUN ELSEIF (DUMMY.EQ.'Zambia-Zimbabw'.AND. 1 (COUNTRY.EQ.'ZAMBIA' .OR.COUNTRY.EQ.'ZIMBABWE' 1 .OR.COUNTRY.EQ.'MOZAMBIQUE'.OR.COUNTRY.EQ.'MALAWI' 1 .OR.COUNTRY.EQ.'MAURITIUS')) THEN ILOADCOUN(IC) = NLOADCOUN ENDIF ENDDO C ENDDO IC = 1, NCOUNTRY C GOTO 237 239 CLOSE(KLOD) C C ILOADCOUN = 1..NLOADCOUN COUNTRY OR REGION WITH LOAD DATA FROM C loadreg.COUNTRY2030GW FILE FOR EACH 1..NCOUNTRY COUNTRY C NAMELOAD = NAME OF EACH 1..NLOADCOUN COUNTRIES C NLOADCOUN = NUMBER OF COUNTRIES READ FROM FILE loadreg.COUNTRY2030GW C WRITE(IOUT,*) DO IC = 1, NCOUNTRY IF (ILOADCOUN(IC).EQ.0) THEN WRITE(IOUT,*)'POWERWORLD: ILOADCOUN=0' WRITE(IOUT,244) IC, NAMEORIG(IC), ILOADCOUN(IC),'NO VALUE' STOP ELSE WRITE(IOUT,244) IC, NAMEORIG(IC), ILOADCOUN(IC), 1 NAMELOAD(ILOADCOUN(IC)) ENDIF ENDDO C 244 FORMAT('# COUNTRY LOAD# LOADNAM= ',I3,1X,A16,I3,1X,A16) C C ***************************************************************************** C SUM LOAD DATA OVER ALL COUNTRIES IN GRID REGION FOR EACH HOUR AND FOR YEAR C ***************************************************************************** C ALOADHR = HOURLY LOAD (TW) IN EACH GRID REGION FOR EACH ILOAD HOUR IN EACH C IY=1, 11 YEAR, CORRESPONDING TO 2006 TO 2016, RESPECTIVELY. C ILOAD = 1.8784 HOURS OF YEAR, SO FOR NON-LEAP YEARS VALUES FOR C HOURS 1417..1440 = 0. C HOUR 1 DATA ARE FOR 0-1 GMT ON JANUARY 1 OF YEAR IY C YRLOAD = ANNUAL AVERAGE LOAD (TW) FOR EACH 1..MXYLOAD YEAR ((2006 TO 2016) C FOR ELECTRICITY-ONLY LOAD DATA READ IN C IYLOFLOAD = YEAR (2006 TO 2016) CORRESPONDING TO EACH J=1,MXYLOAD INDEX # C NAMORIGGR = ORIG NAME OF EACH 1..NCOUNGRID COUNTRY OF EACH 1..NUMGRIDS REGION C NUMCOUNGR = 1..NCOUNTRY COUNTRY NUMBER OF EACH 1..NCOUNGRID COUNTRY C OF EACH 1..NUMGRIDS REGION C ILOADCOUN = 1..NLOADCOUN COUNTRY OR REGION WITH LOAD DATA FROM C loadreg.COUNTRY2030GW FILE FOR EACH 1..NCOUNTRY COUNTRY C STORLOAD = 2030 LOAD (TW) FOR EACH 1..MXHPYEAR HOUR IN EACH 1..NLOADCOUN C WRITE(IOUT,251) 251 FORMAT(/'GRID # COUN# NAMCOUNTRY LOAD# NAMLOAD ') C DO I = 1, NCOUNGRID(IGRIDUSE) IC = NUMCOUNGR(IGRIDUSE,I) NLOADCOUN = ILOADCOUN(IC) WRITE(IOUT,247) NAMEGRID(IGRIDUSE), I, IC, NAMECOUN(IC), 1 NLOADCOUN, NAMELOAD(NLOADCOUN) ENDDO 247 FORMAT(A14,I3,I4,1X,A14,I4,1X,A14) C WRITE(IOUT,*) WRITE(IOUT,*) 'LOAD DATA FROM loadreg.COUNTRY2030GW' C DO IY = 1, MXYLOAD YRLOAD(IY) = 0. DO I = 1, MXHPYEAR DO J = 1, MXCOUNTRY IFUSED( J,I) = 0 ENDDO ENDDO C LOADYR = IYOFLOAD(IY) C C ALOADHR = 0 ONLY FOR FEB. 29 IN NON-LEAP YEARS C NUMHRS = 0. DO ILOAD = 1, MXHPYEAR IF (MOD(LOADYR,4).EQ.0.OR.ILOAD.LT.1417.OR.ILOAD.GT.1440) THEN NUMHRS = NUMHRS + 1 DO I = 1, NCOUNGRID(IGRIDUSE) IC = NUMCOUNGR(IGRIDUSE,I) NLOADCOUN = ILOADCOUN(IC) C C ***************************************************************************** C SUM 2030 LOADS AMONG ALL COUNTRIES IN GRID REGION. DON'T WEIGHT HOURLY LOADS C YET BY 2050 TO CURRENT ANNUAL LOAD RATIO. THIS IS DONE LATER. C ***************************************************************************** C IFUSED = 0 IF LOAD DATA HAS NOT YET BEEN ADDED TO ALOADHR FOR A GIVEN C LOAD REGION IN THE CURRENT YEAR C = 1 IF IT HAS. C MAKE SURE LOAD REGIONS THAT INCLUDE MULTIPLE COUNTRIES ARE ADDED C ONLY ONCE TO REGIONAL LOAD HERE, SINCE OTHERWISE, FOR EXAMPLE, LOADS C FOR THE SUM OF 3 COUNTRIES IN THE REGION CAN BE ADDED 3 TIMES, C RESULTING IN 3X MORE LOAD FROM THESE COUNTRIES FOR THE REGION THAN C IN REALITY. C STORLOAD = 2030 LOAD (TW) FOR EACH 1..MXHPYEAR HOUR IN EACH 1..NLOADCOUN C COUNTRY FROM loadreg.COUNTRY2030GW FILE C IF (IFUSED(NLOADCOUN,ILOAD).EQ.0) THEN ALOADHR(ILOAD,IY)=ALOADHR(ILOAD,IY)+STORLOAD(NLOADCOUN,ILOAD) YRLOAD( IY)=YRLOAD( IY)+STORLOAD(NLOADCOUN,ILOAD) IFUSED(NLOADCOUN,ILOAD) = 1 ENDIF ENDDO ENDIF ENDDO C ENDDO ILOAD=1, MXHPYEAR C YRLOAD(IY) = YRLOAD(IY) / NUMHRS WRITE(IOUT,248) IY,LOADYR,YRLOAD(IY),NUMHRS ENDDO C ENDDO IY = 1, MXYLOAD C 248 FORMAT('# YR AVLOAD-TW TSTEPS/YR= ',I2,1X,I4,0PF10.6,I9) C C ***************************************************************************** C READ HOURLY LOAD DATA 2016-2019 FOR 13 CONUS REGIONS AND ENTIRE CONUS C https://www.eia.gov/beta/electricity/gridmonitor/dashboard/custom/pending C ***************************************************************************** C LOADREG = 2016-19 LOAD (MWh/h=MW) FOR EACH 1..14 REGIONS IN THE CONTINENTAL C US AND CONUS AS A WHOLE C VALUES (MWh/h) ARE FOR THE PREVIOUS HOUR (THUS IF IHGMT=5, C VALUES ARE FOR BETWEEN HOURS 4 AND 5 C DAYGMT = GMT DAY SINCE BEGINNING OF 2016 = IHGMT / 24. C = 0 INDICATES DATA ARE FOR LAST HOUR OF 2015 IN GRENWICH C = 0.041666667 INDICATES DATA FOR FIRST HOUR 2016 IN GREENWICH C IHGMT = IHEST + 5 = HOUR IN GREENWICH CORRESPONDING TO IHEST C IHEST = EASTERN STANDARD TIME END-HOUR OF DATA SINCE BEGINNING OF 2016 C = 0 INDICATES DATA ARE FOR 11PM-12AM LAST DAY OF 2015 IN US EAST COAST C = -5 INDICATES DATA ARE FOR 6PM-7PM LAST DAY OF 2015 IN US EAST COAST C ELSEIF (GRIDLOAD.EQ.'CONUS2016-19') THEN C C REGIONS FOR WHICH LOAD DATA AVAILABLE (DIFFERENT FROM NERC REGIONS) C REGION REG NAME STATES IN REGION C 1. CAL California: California C 2. CAR Carolinas: North Carolina, South Carolina C 3. CENT Central: Kansas, Nebraska, North Dakota, Oklahoma, South Dakota, C 4. FLA Florida: Florida C 5. MIDA Mid-Atlantic: Delaware, Kentucky, Maryland, New Jersey, Ohio, C Pennsylvania, Virginia, Washington D.C., West Virginia C 6. MIDW Midwest: Arkansas, Illinois, Indiana, Iowa, Louisiana, Michigan, C Minnesota, Missouri, Wisconsin C 7. NE New England: Connecticut, Maine, Massachusetts, New C Hampshire, Rhode Island, Vermont C 8. NW Northwest: Colorado, Idaho, Montana, Nevada, Oregon, Utah, C Washington State, Wyoming C 9. NY New York: New York C 10.SE Southeast: Alabama, Georgia, Mississippi C 11.SW Southwest: Arizona, New Mexico C 12.TEN Tennessee: Tennessee C 13.TEX Texas: Texas C 14.CONUS ContinentalUS:48 CONUS STATES+DC C JCAL = 1 JCAR = 2 JCENT = 3 JFLA = 4 JMIDA = 5 JMIDW = 6 JNEAST = 7 JNWEST = 8 JNYORK = 9 JSEAST = 10 JSWEST = 11 JTEN = 12 JTEX = 13 JCONUS = 14 C OPEN(KLOD, FILE = PATHLOAD//'loadreg.CONUS2016-19') C DO I = 1, 10 READ(KLOD,*) ENDDO C C SKIP 1ST LINE OF DATA (IHGMT=0) SINCE WANT TO START 1ST HOUR 2016 GMT TIME C READ(KLOD,*) 240 READ(KLOD,*,END=241) DAYGMT,IHGMT,IHEST,(USALOAD(IHGMT,I),I=1,14) GOTO 240 C 241 CONTINUE C C ***************************************************************************** C ASSIGN LOAD PROFILE FOR GRID REGION. THIS WILL BE SCALED C BY ACTUAL 2050 WWS INFLEXIBLE LOAD LATER ON, SO C MAGNITUDE NOT IMPORTANT HERE, ONLY TIME-SERIES PROFILE C ***************************************************************************** C TOTLD = HOURLY LOAD (MWh/h=MW) IN GRID REGION FOR EACH LOAD HOUR C IN EACH IY=1, 4 YEAR, CORRESPONDING TO 2016 TO 2019, RESPECTIVELY. C ILOAD = 1.8784 HOURS OF YEAR, SO FOR NON-LEAP YEARS VALUES FOR C HOURS 1417..1440 = 0. C HOUR 1 DATA ARE FOR 0-1 GMT ON JANUARY 1 OF YEAR IY C IY2016 = 1 C IY2019 = 4 IG = 0 DO IY = IY2016, IY2019 YRLOAD(IY) = 0. LOADYR = IYOFLOAD(IY) C C ALOADHR = 0 ONLY FOR FEB. 29 IN NON-LEAP YEARS C IHGMT = IHEST + 5 = HOUR IN GREENWICH CORRESPONDING TO IHEST C IHEST = EASTERN STANDARD TIME END-HOUR OF DATA SINCE BEGINNING OF 2016 C = 0 INDICATES DATA ARE FOR 11PM-12AM LAST DAY OF 2015 IN US EAST COAST C = -5 INDICATES DATA ARE FOR 6PM-7PM LAST DAY OF 2015 IN US EAST COAST C NUMHRS = 0 DO ILOAD = 1, MXHPYEAR IF (MOD(LOADYR,4).EQ.0.OR.ILOAD.LT.1417.OR.ILOAD.GT.1440) THEN IG = IG + 1 NUMHRS = NUMHRS + 1 C C ***************************************************************************** C NORTH AMERICAN RELIABILITY CORPORATION (NERC) REGIONS C ***************************************************************************** C WECC = WESTERN ELECTRICITY COORDINATING COUNCIL C Arizona, California, Colorado, Idaho, Montana, Nevada, New Mexico, Oregon, C Utah, Washington State, Wyoming C MRO = MIDWEST RELIABILITY ORGANIZATION C Iowa, Kansas, Minnesota, Nebraska, North Dakota, Oklahoma, South Dakota, C Wisconsin C TRE = TEXAS RELIABILITY ENTITY C Texas C RFC = RELIABILITY FIRST CORPORATION C Delaware, Indiana, Maryland, Michigan, New Jersey, Ohio, Pennsylvania, C Washington D.C., West Virginia C SERC = SOUTHEASTERN ELECTRIC RELIABILITY COUNCIL C Alabama, Arkansas, Florida, Georgia, Illinois, Kentucky, Louisiana, Mississippi, C Missouri, North Carolina, South Carolina, Tennessee, Virginia C NPCC = NORTHEAST POWER COORDINATING COUNCIL C Connecticut, Maine, Massachusetts, New Hampshire, New York, Rhode Island, Vermont C ASCC = ALASKA SYSTEM COORDINATING COUNCIL C Alaska C HICC = HAWAIIAN ISLANDS COORDINATING COUNCIL C Hawaii C CALI = CALIFORNIA ALONE C FLA = FLORIDA ALONE C NEWY = NEW YORK STATE ALONE C USCON = 48 US STATES + DC C C PARTITION REGIONAL LOADS FROM LOAD REGIONS TO NERC REGIONS. FRACTIONS ARE THE NUMBER C OF STATES IN THE NERC REGION OVERLAPPLING THE LOAD REGION DIVIDED C BY THE NUMBER OF STATES IN THE LOAD REGION C THE TOTAL LOAD AMONG ALL NERC REGIONS EQUALS THE CONUS LOAD (JCONUS) C LOADNAME = NAME OF LOAD REGION(S) (USED FOR PRINTING ONLY) C IF (GRIDUSE.EQ.'WECC') THEN TOTLD=USALOAD(IG,JCAL)+USALOAD(IG,JNWEST)+USALOAD(IG,JSWEST) LOADNAME = 'CAL-NW-SW' ELSEIF (GRIDUSE.EQ.'MRO') THEN TOTLD=(3./9.)*USALOAD(IG,JMIDW)+USALOAD(IG,JCENT) LOADNAME = 'MIDW-CENT' ELSEIF (GRIDUSE.EQ.'TRE') THEN TOTLD=USALOAD(IG,JTEX) LOADNAME = 'TEX' ELSEIF (GRIDUSE.EQ.'RFC') THEN TOTLD=(2./9.)*USALOAD(IG,JMIDW)+(7./9.)*USALOAD(IG,JMIDA) LOADNAME = 'MIDW-MIDA' ELSEIF (GRIDUSE.EQ.'SERC') THEN TOTLD=USALOAD(IG,JCAR)+USALOAD(IG,JSEAST)+USALOAD(IG,JTEN) 1 +USALOAD(IG,JFLA) 1 +(4./9.)*USALOAD(IG,JMIDW)+(2./9.)*USALOAD(IG,JMIDA) LOADNAME = 'CARSETNFLMWMA' ELSEIF (GRIDUSE.EQ.'NPCC') THEN TOTLD=USALOAD(IG,JNEAST)+USALOAD(IG,JNYORK) LOADNAME = 'NE-NY' ELSEIF (GRIDUSE.EQ.'ASCC') THEN TOTLD=USALOAD(IG,JNWEST) LOADNAME = 'NW' ELSEIF (GRIDUSE.EQ.'HICC') THEN TOTLD=USALOAD(IG,JCAL) LOADNAME = 'CAL' ELSEIF (GRIDUSE.EQ.'CALI') THEN TOTLD=USALOAD(IG,JCAL) LOADNAME = 'CAL' ELSEIF (GRIDUSE.EQ.'FLA') THEN TOTLD=USALOAD(IG,JFLA) LOADNAME = 'FLA' ELSEIF (GRIDUSE.EQ.'NEWY') THEN TOTLD=USALOAD(IG,JNYORK) LOADNAME = 'NY' ELSEIF (GRIDUSE.EQ.'TXMRO') THEN TOTLD=(3./9.)*USALOAD(IG,JMIDW)+USALOAD(IG,JCENT) 1 + USALOAD(IG,JTEX) LOADNAME = 'TEX-MW-CENT' ELSEIF (GRIDUSE.EQ.'USCON') THEN TOTLD=USALOAD(IG,JCONUS) LOADNAME = 'CONUS' ENDIF C C TOTLD = HOURLY LOAD (MWh/h=MW) IN GRID REGION FOR EACH LOAD HOUR C ALOADHR = HOURLY LOAD (TWh/h=TW) IN GRID REGION FOR EACH LOAD HOUR C YRLOAD = ANNUAL AVERAGE LOAD (TW) FOR EACH 1..4 YEAR (2016 TO 2019) C FOR ELECTRICITY-ONLY LOAD DATA READ IN C TWPERMW = TW PER MW (=0.000001) C ALOADHR(ILOAD,IY) = TOTLD * TWPERMW YRLOAD( IY) = YRLOAD(IY) + ALOADHR(ILOAD,IY) ENDIF ENDDO C ENDDO ILOAD=1, MXHPYEAR C YRLOAD(IY) = YRLOAD(IY) / NUMHRS WRITE(IOUT,248) IY,LOADYR,YRLOAD(IY),NUMHRS ENDDO C ENDDO IY = 1, MXYLOAD C WRITE(IOUT,268) 268 FORMAT(/'GRID # STAT# NAMESTATE NAMLOAD ') C DO I = 1, NCOUNGRID(IGRIDUSE) IC = NUMCOUNGR(IGRIDUSE,I) WRITE(IOUT,269) NAMEGRID(IGRIDUSE), I, IC, NAMECOUN(IC), 1 LOADNAME ENDDO 269 FORMAT(A14,I3,I4,1X,A14,1X,A14) C WRITE(IOUT,*) WRITE(IOUT,*) 'LOAD DATA FROM loadreg.CONUS2016-19' C ENDIF C ENDIF GRIDLOAD.EQ.'COUNTRY2030GW' OR 'CONUS2016-19' C WRITE(IOUT,*) C C ***************************************************************************** C READ/PROCESS 2006-2016 HOURLY LOAD DATA FOR INDIVIDUAL COUNTRIES/REGIONS FROM C loadreg.XXX C ***************************************************************************** C DATA FROM ENTSO-E https://www.entsoe.eu/Pages/default.aspx C https://www.entsoe.eu/db-query/country-packages/production- C consumption-exchange-package C ***************************************************************************** C GRIDLOAD = NAME OF LOAD DATA COUNTRY OR REGION USED FOR GRIDUSE REGION. C GRIDLOAD = 'COUNTRY2030GW' -> DATA FROM loadreg.COUNTRY2030GW C GRIDLOAD = 'CONUS2016-19' -> DATA FROM loadreg.CONUS2016-19 C GRIDLOAD = 'XXX' (WHERE XXX IS ANY COUNTRY NAME) C GRIDLOAD = 'CONUS' --> DATA FROM loadreg.CONUS C GRIDLOAD = GRIDUSE -> DATA FROM loadreg.XXX C IF GRIDLOAD = 'XXX' THEN HOURLY LOAD WILL BE SCALED TO HOURLY C FROM COUNTRY'S DATA. IF GRIDLOAD='CONUS' THEN IT WILL BE SCALED C FROM CONUS DATA. C IF GRIDLOAD = GRIDUSE OR GRIDLOAD = 'COUNTRY2030GW' THEN C SUM LOADS FOR GRID REGION OVER ALL COUNTRIES IN REGION C FOR WHICH FILES AVAILABLE. FOR EXAMPLE, IF GRIDLOAD='EUROPE', C SUM OVER ALL COUNTRIES IN EUROPE FOR WHICH DATA ARE AVAILABLE. IF C DATA ARE NOT AVAILABLE FOR A COUNTRY IN THE REGION, THAT IS OKAY, C SINCE DATA FOR THE OTHER COUNTRIES ARE STILL SUMMED, AND FINAL C LOAD IS SCALED BY TAKING THE PRODUCT OF 2050 REGIONAL INFLEX LOAD C X (CURRENT HOURLY LOAD / TOTAL YEARLY LOAD OVER ALL HOURS FOR C DATA THAT ARE AVAILABLE) C loadreg.xxx = CONTAINS LOAD DATA FOR 1 OR MORE YEARS FOR ELECTRIC POWER C SECTOR AT 1 HOUR RESOLUTION FOR GRID REGION C xxx = EITHER 'GRIDUSE', WHICH CONSISTS OF LOAD ALREADY C SUMMED FOR A REGION, OR C xxx = 'CONUS' WHICH ARE THE 48 CONTIGUOUS U.S. STATES C AND CONTAINS 2006 AND 2007 LOAD DATA FOR ELECTRIC SECTOR C xxx = SPECIFIC COUNTRY THAT LOAD DATA ARE SCALED FROM. C NLOADFILE = NUMBER OF HOURLY LOAD DATA FILES TO READ & SUM OVER GRID REGION C = 0 FOR U.S. STATES (IFSTATES=1) & 143 COUNTRIES OUTSIDE EUROPE C NCOUNGRID = NUMBER OF COUNTRIES IN EACH 1..NUMGRIDS GRID REGION C C IF GRIDLOAD='COUNTRY2030GW' THEN LOAD TAKEN CARE OF IN loadreg.COUNTRY2030GW C IF GRIDLOAD='CONUS2016-19' THEN LOAD TAKEN CARE OF IN loadreg.CONUS2016-19 C IF (GRIDLOAD.EQ.'COUNTRY2030GW'.OR.GRIDLOAD.EQ.'CONUS2016-19')THEN NLOADFILE = 0 ELSEIF (GRIDLOAD.EQ.GRIDUSE) THEN NLOADFILE = NCOUNGRID(IGRIDUSE) ELSE NLOADFILE = 1 ENDIF C IF (NLOADFILE.GT.0) THEN DO I = 1, MXHPYEAR DO J = 1, MXYLOAD ALOADHR( I,J) = 0. ENDDO ENDDO ENDIF C C ***************************************************************************** C READING ONLY COUNTRY FILES FOR EUROPE OR CONUS HERE 2006-2016 C ***************************************************************************** C ALOADREG = HOURLY LOAD DATA (TW) FOR 365 OR 366 DAYS OF YEAR C ILOAD = COUNTS NUMBER OF HOURS OF LOAD DATA = 365x24=8760 OR 366x24=8784 C FRACYR = FRACTION OF YEAR CORRESPONDING TO DATA. EACH FRACTION C CORRESPONDS TO ONE HOUR CURRENTLY. C LOADYR = YEAR OF LOAD DATA FOR GLOBAL GRID REGIONS (IFCONUS=0) C NDYLOAD = NUMBER OF DAYS PER YEAR IN YEAR OF LOAD DATA (365 OR 366) (IFCONUS=0) C NAMORIGGR = ORIG NAME OF EACH 1..NCOUNGRID COUNTRY OF EACH 1..NUMGRIDS REGION C NUMCOUNGR = 1..NCOUNTRY COUNTRY NUMBER OF EACH 1..NCOUNGRID COUNTRY C OF EACH 1..NUMGRIDS REGION C NLOADFILE = NUMBER OF HOURLY LOAD DATA FILES TO READ & SUM OVER GRID REGION C = 0 FOR U.S. STATES (IFSTATES=1) & 143 COUNTRIES OUTSIDE EUROPE C DO 127 NC = 1, NLOADFILE C IF (GRIDLOAD.EQ.GRIDUSE) THEN OPEN(KLOD, FILE = PATHLOAD//'loadreg.'//NAMORIGGR(IGRIDUSE,NC)) ELSE OPEN(KLOD, FILE = PATHLOAD//'loadreg.'//GRIDLOAD) ENDIF C C ***************************************************************************** C COUNTRY DATA SUMMED OVER ALL COUNTRIES IN A REGION HERE C ***************************************************************************** C ILOAD = 1..8784 HOURS OF A YEAR, INCLUDING LEAP-DAY HOURS, REGARDLESS OF C WHETHER IT IS A LEAP YEAR OR NOT. NON-LEAP YEARS ARE ADJUSTED FOR C SUBSEQUENTLY. C ALOADHR = HOURLY LOAD (TW) IN EACH GRID REGION FOR EACH ILOAD HOUR IN EACH C IY=1, 11 YEAR, CORRESPONDING TO 2006 TO 2016, RESPECTIVELY. C ILOAD = 1.8784 HOURS OF YEAR, SO FOR NON-LEAP YEARS VALUES FOR C HOURS 1417..1440 = 0. C ILOADMW = HOURLY LOAD (MW) IN EACH COUNTRY BY IY=1, 11 YEAR (2006-2016) C FOR GIVEN HOUR C MXYLOAD = MAX NUMBER OF YEARS OF LOAD DATA (11 = 2006 TO 2016) IN FILES C TWPERMW = 0.000001 TERAWATTS (TW) PER MEGAWATT (MW) C MXHPYEAR = NUMBER OF HOURS PER YEAR FOR LEAP YEARS = 8784 C MXHPDAY = NUMBER OF HOURS PER DAY (24) C IF (GRIDLOAD.EQ.GRIDUSE.OR.IFHRLOAD.EQ.1) THEN C C IF FILE HAS NO DATA (E.G., FOR SOME COUNTRIES IN GRID REGION), GO TO NEXT C READ(KLOD,*,END=139) READ(KLOD,*) READ(KLOD,*) READ(KLOD,*) C C IFHRLOAD = 1: HI-RESOLUTION (30-SECOND) LOAD DATA C = 0: 1-HOUR RESOLUTION LOAD DATA C IF (IFHRLOAD.EQ.0) THEN DO ILOAD = 1, MXHPYEAR DO IY = 1, MXYLOAD ILOADMW(IY) = 0 ENDDO C READ(KLOD,*) DUMMY,KLOAD,(ILOADMW(IY),IY=1,MXYLOAD) C C SUM ALOADHR OVER ALL COUNTRIES IN GRID REGION FOR EACH HOUR & YEAR C DO IY = 1, MXYLOAD ALOADHR(ILOAD,IY) = ALOADHR(ILOAD,IY) + ILOADMW(IY) * TWPERMW ENDDO C IF (KLOAD.NE.ILOAD) THEN WRITE(IOUT,*) 'POWERWORLD: ILOAD.NE.KLOAD IN ', 1 NAMORIGGR(IGRIDUSE,NC),ILOAD, KLOAD, 1 DUMMY,(ILOADMW(IY),IY=1,MXYLOAD) STOP ENDIF C ENDDO C ENDDO ILOAD C C ***************************************************************************** C READ HIGH TIME RESOLUTION LOAD DATAA C ***************************************************************************** C TWPERMW = 0.000001 TERAWATTS (TW) PER MEGAWATT (MW) C MXTSPYR = MAX NUMBER OF 30-SECOND TIME STEPS PER YEAR C FOR LEAP YEARS, IT IS 1,054,080 = 8784 HRS/YRx120 30-S/HR C MXYHRLOAD = MAX NUMBER OF YEARS OF HI-RES LOAD DATA IN FILE C BLOADMW = LOAD (MW) READ IN EACH TIME STEP C HRESLOAD = 30-S LOAD (TW) IN EACH GRID REGION FOR EACH ILOAD INTERVAL C DURING EACH IY YEAR C ILOAD = 1..1054080 30-S INTERVAL OF YEAR. FOR NON-LEAP YEARS VALUES FOR C HOURS 1417..1440 = 0. C I1,..I5 = MONTH, DAY, HOUR, MINUTE, SECOND OF LOAD DATA C BTIME = GMT DAY OF YEAR AS A FRACTION (0 = 0 GMT JAN 1), ALWAYS C FROM 0.00 TO 366.00 REGARDLESS OF WHETHER A LEAP YEAR C TIMWWS = GMT HOURS PAST JAN. 1, 2050 (INITYEAR) AT 0 GMT FOR WWS SUPPLY DATA C ELSE C ELSEIF IFHRLOAD=1 C DO ILOAD = 1, MXTSPYR DO IY = 1, MXYHRLOAD BLOADMW(IY) = 0 ENDDO C READ(KLOD,*) I1,I2,I3,I4,I5,BTIME, 1 (BLOADMW(IY),IY=1,MXYHRLOAD) C C SUM HRLOAD OVER ALL COUNTRIES IN GRID REGION FOR EACH TIME INTERVAL & YEAR C DO IY = 1, MXYHRLOAD HRESLOAD(ILOAD,IY) = HRESLOAD(ILOAD,IY)+BLOADMW(IY)*TWPERMW ENDDO C ENDDO C ENDDO ILOAD C ENDIF C ENDIF IFHRLOAD=0 OR 1 C C ***************************************************************************** C 2006 AND 2007 HOURLY CONUS DATA C ***************************************************************************** C IY2006 = 1..MXYLOAD YEAR CORRESPONDING TO 2006 (1..MXYLOAD = 2006 TO 2016) C IY2007 = 1..MXYLOAD YEAR CORRESPONDING TO 2007 (1..MXYLOAD = 2006 TO 2016) C ATIME = LOAD DATA GMT DAY OF YEAR (0 = 0 GMT JANUARY 1) ALWAYS FROM C 0.00 TO 366.00 REGARDLESS OF WHETHER A LEAP YEAR C ALOAD06 = 2006 HOURLY LOAD DATA (TW) FOR 365 DAYS OF YEAR C HOUR 1 DATA ARE FOR 0-1 GMT ON JANUARY 1, 2006 C ALOAD07 = 2007 HOURLY LOAD DATA (TW) FOR 365 DAYS OF YEAR C HOUR 1 DATA ARE FOR 0-1 GMT ON JANUARY 1, 2007 C ALOADHR = HOURLY LOAD (TW) IN EACH GRID REGION FOR EACH ILOAD HOUR IN EACH C IY=1, 11 YEAR, CORRESPONDING TO 2006 TO 2016, RESPECTIVELY. C ILOAD = 1.8784 HOURS OF YEAR, SO FOR NON-LEAP YEARS VALUES FOR C HOURS 1417..1440 = 0. C HOUR 1 DATA ARE FOR 0-1 GMT ON JANUARY 1 OF YEAR IY C ELSEIF (GRIDLOAD.EQ.'CONUS') THEN C DO I = 1, 8 READ(KLOD,*) ENDDO C ILOAD = 0 125 READ(KLOD,*,END=139) ATIMEX, ALOAD06X, ALOAD07X C ILOAD = ILOAD + 1 C C SKIP 24 HOURS FOR FEB 29 (HOURS 1417..1440) SINCE 2006 & 2007 NON-LEAP YEARS C IF (ILOAD.EQ.1417) THEN ILOAD = 1441 ENDIF C C ATIMEX = LOAD DATA GMT DAY OF YEAR (0 = 0 GMT JANUARY 1) ALWAYS FROM C 0.00 TO 366.00 REGARDLESS OF WHETHER A LEAP YEAR C IF (ILOAD.GE.1417) THEN ATIMEX = ATIMEX + 1.0 ENDIF C IF (ILOAD.GT.MXLOAD) THEN WRITE(IOUT,*)'POWERWORLD: ILOAD>MXLOAD ',ILOAD,MXLOAD STOP ENDIF C ALOADHR(ILOAD,IY2006) = ALOAD06X ALOADHR(ILOAD,IY2007) = ALOAD07X GOTO 125 C C ***************************************************************************** C INDIVIDUAL COUNTRY OR ALREADY-SUMMED REGIONAL DATA FOR ONE YEAR C E.G. loadreg.ALL-AFRICA C ***************************************************************************** C ELSE C ELSEIF GRIDLOAD.NE.GRIDUSE.AND.GRIDLOAD.NE.'CONUS' C DO I = 1, 6 READ(KLOD,*) ENDDO READ(KLOD,*) LOADYR READ(KLOD,*) C C MXYLOAD = MAX NUMBER OF YEARS OF LOAD DATA (11 = 2006 TO 2016) IN FILES C LOADYR = ACTUAL YEAR OF LOAD DATA (2006 TO 2016) C IYLOAD = 1..MXYLOAD YEAR OF LOAD DATA (MXYLOAD = 11: 2006 TO 2016) C IYLOAD = LOADYR - IYBEFORE C IF (IYLOAD.LE.0.OR.IYLOAD.GT.MXYLOAD) THEN WRITE(IOUT,*)'POWERWORLD: IYLOAD OUT BOUNDS ',IYLOAD,MXYLOAD STOP ENDIF C IF (MOD(LOADYR,4).EQ.0) THEN NDYLOAD = 366 ELSE NDYLOAD = 365 ENDIF C ILOAD = 0 C 126 READ(KLOD,*,END=139) FRACYR, ALOADREGX ILOAD = ILOAD + 1 C C FOR NON-LEAP YEARS, SKIP 24 HOURS FOR FEB 29 (HOURS 1417..1440) C IF (NDYLOAD.EQ.365.AND.ILOAD.EQ.1417) THEN ILOAD = 1441 ENDIF C IF (ILOAD.GT.MXLOAD) THEN WRITE(IOUT,*)'POWERWORLD: ILOAD>MXLOAD ',ILOAD,MXLOAD STOP ENDIF C ALOADHR(ILOAD,IYLOAD) = ALOADREGX GOTO 126 ENDIF C ENDIF NLOADFLE > 1 C 139 CLOSE(KLOD) C 127 CONTINUE C CONTINUE NC = 1, NLOADFILE C C ***************************************************************************** C SUM LOAD DATA OVER YEAR FOR GRID REGION THEN FIND ANNUAL AVERAGE LOAD EACH YEAR C ***************************************************************************** C ALOADHR = HOURLY LOAD (TW) IN EACH GRID REGION FOR EACH ILOAD HOUR IN EACH C IY=1, 11 YEAR, CORRESPONDING TO 2006 TO 2016, RESPECTIVELY. C ILOAD = 1.8784 HOURS OF YEAR, SO FOR NON-LEAP YEARS VALUES FOR C HOURS 1417..1440 = 0. C HOUR 1 DATA ARE FOR 0-1 GMT ON JANUARY 1 OF YEAR IY C YRLOAD = ANNUAL AVERAGE LOAD (TW) FOR EACH 1..MXYLOAD YEAR ((2006 TO 2016) C IYLOFLOAD = YEAR (2006 TO 2016) CORRESPONDING TO EACH J=1,MXYLOAD INDEX # C IF (NLOADFILE.GT.0) THEN WRITE(IOUT,*) 'LOAD DATA FROM loadreg.XXX FILES' C C IFHRLOAD = 1: HI-RESOLUTION (30-SECOND) LOAD DATA C = 0: 1-HOUR RESOLUTION LOAD DATA C IF (IFHRLOAD.EQ.0) THEN C DO IY = 1, MXYLOAD YRLOAD(IY) = 0. NUMHRS = 0. LOADYR = IYOFLOAD(IY) C C ALOADHR = 0 ONLY FOR FEB. 29 IN NON-LEAP YEARS C DO ILOAD = 1, MXHPYEAR IF (MOD(LOADYR,4).EQ.0.OR.ILOAD.LT.1417.OR.ILOAD.GT.1440) THEN YRLOAD(IY) = YRLOAD(IY) + ALOADHR(ILOAD,IY) NUMHRS = NUMHRS + 1 C C ***************************************************************************** C FOR NON-LEAP YEAR LOAD DATA WITH NO LOAD VALUES FEB 29 (HOURS 1417..1440, C SET LOAD VALUES FOR FEB 29 FROM SAME HOUR OF PREVIOUS DAY IN CASE NEED C NO USE NON-LEAP YEAR LOAD DATA FOR LEAP YEAR SIMULATION.A C ***************************************************************************** C ELSE ALOADHR(ILOAD,IY) = ALOADHR(ILOAD-MXHPDAY,IY) ENDIF ENDDO C YRLOAD(IY) = YRLOAD(IY) / NUMHRS WRITE(IOUT,248) IY,LOADYR,YRLOAD(IY),NUMHRS ENDDO C ENDDO IY = 1, MXYLOAD C C ***************************************************************************** C FIND AVERAGE LOAD WITH HIGH-RESOLUTION LOAD DATA C ***************************************************************************** C ELSE C ELSEIF IFHRLOAD=1 C C NTSPERHR = 120 = NUMBER OF 30-SECOND TIMES STEPS PER HR C HRESLOAD = 30-S LOAD (TW) IN EACH GRID REGION FOR EACH ILOAD INTERVAL C DURING EACH IY YEAR C ILOAD = 1..1054080 30-S INTERVAL OF YEAR. FOR NON-LEAP YEARS VALUES FOR C HOURS 1417..1440 = 0. C YLOADHR = ANN AVG LOAD (TW) FOR EACH 1..MXYHRLOAD YEAR, HIGH-RES LOAD C DO IY = 1, MXYHRLOAD YLOADHR(IY) = 0. NUMSTEP = 0 LOADYR = IYOFHRLD(IY) C DO ILOAD = 1, MXTSPYR C IF (MOD(LOADYR,4).EQ.0.OR.ILOAD.LE.1416*NTSPERHR.OR. 1 ILOAD.GT.1440*NTSPERHR) THEN YLOADHR(IY) = YLOADHR(IY) + HRESLOAD(ILOAD,IY) NUMSTEP = NUMSTEP + 1 C C ***************************************************************************** C FOR NON-LEAP YEAR LOAD DATA WITH NO LOAD VALUES FEB 29 C (30-S INTERVALS 1416*120+1..1440*120, C SET LOAD VALUES FOR FEB 29 FROM SAME TIME STEP OF PREVIOUS DAY IN CASE NEED C NO USE NON-LEAP YEAR LOAD DATA FOR LEAP YEAR SIMULATION.A C ***************************************************************************** C ELSE HRESLOAD(ILOAD,IY) = HRESLOAD(ILOAD-MXHPDAY*NTSPERHR,IY) ENDIF ENDDO C YLOADHR(IY) = YLOADHR(IY) / NUMSTEP WRITE(IOUT,248) IY,LOADYR,YLOADHR(IY),NUMSTEP ENDDO C ENDDO IY = 1, MXYHRLOAD C ENDIF C ENDIF IFHRLOAD = 0 OR 1 WRITE(IOUT,*) C ENDIF C ENDIF NLOADFILE>0 C C ***************************************************************************** C SCALE HOURLY LOAD FOR GRID REGION BY RATIO OF 2050 INFLEXIBLE LOAD TO TOTAL C ANNUAL LOAD FROM DATA FILE C ***************************************************************************** C BLOAD = CURRENT HOUR NON-COLD, NOT HOT INFLEX LOAD (TW) ACROSS ALL SECTORS C DLOAD = 2050 30-SECOND INFLEXIBLE LOAD DATA (TW) FOR GRID REGION FROM LOAD DATA C EXTRAPOLATED TO 2050 C TLOADINFX = EXTIMATED INFLEXIBLE LOAD IN 2050 WITH WWS (TW) C INITYLOAD = INITIAL YEAR (2006-2016 CURRENTLY) OF LOAD DATA USED. C IF ONLY 1 YEAR OF LOAD DATA --> INITYLOAD=IFINYLOAD=IBEGYLOAD C = 2006 AND IFCONUS=1 OR GRIDLOAD='CONUS' C = 2008 FOR GRIDLOAD='AFRICA" SINCE THAT IS YEAR DATA FOR C IFINYLOAD = FINAL YEAR (2006-2016 CURRENTLY) OF LOAD DATA USED C IF ONLY 1 YEAR OF LOAD DATA --> INITYLOAD=IFINYLOAD=IBEGYLOAD C = 2007 AND IFCONUS=1 OR GRIDLOAD='CONUS' C = 2008 FOR GRIDLOAD='AFRICA" SINCE THAT IS YEAR DATA FOR C IBEGYLOAD = YEAR BETWEEN AND INCLUSIVE OF INITYLOAD AND IFINYLOAD C THAT LOAD DATA STARTS. SO, FOR EXAMPLE, IF C IF ONLY 1 YEAR OF LOAD DATA --> INITYLOAD=IFINYLOAD=IBEGYLOAD C SUPPOSE INITYLOAD = 2006 AND IFINYLOAD=2007 AND NYEARS=6 C AND IBEGYLOAD = 2007, THEN LOAD DATA USED IN THE FOLLOWING ORDER: C 2007 2006 2007 2006 2007 2006 . C SUPPOSE INITYLOAD = 2013 AND IFINYLOAD=2015 AND NYEARS=6 C AND IBEGYLOAD=2013 THEN ORDER IS: 2013 2014 2015 2013 2014 C MXHPDAY = NUMBER OF HOURS PER DAY C NHYEAR = NUMBER OF HOURS PER YEAR OF SIMULATION (EITHER 8760 OR 8784) C NHYCUM = CUMULATIVE NUMBER OF HOURS OF SIMULATION PRIOR TO JAN 1 0 GMT C OF CURRENT I=1,NYEARS YEAR C ILOAD = COUNTS NUMBER OF HOURS OF LOAD DATA = 365x24=8760 OR 366x24=8784 C ALOADHR = HOURLY LOAD (TW) IN EACH GRID REGION FOR EACH ILOAD HOUR IN EACH C IY=1, 11 YEAR, CORRESPONDING TO 2006 TO 2016, RESPECTIVELY. C ILOAD = 1.8784 HOURS OF YEAR, SO FOR NON-LEAP YEARS VALUES FOR C HOURS 1417..1440 = 0. C HOUR 1 DATA ARE FOR 0-1 GMT ON JANUARY 1 OF YEAR IY C YRLOAD = ANNUAL AVERAGE LOAD (TW) FOR EACH 1..MXYLOAD YEAR ((2006 TO 2016) C MXYLOAD = MAX NUMBER OF YEARS OF LOAD DATA (11 = 2006 TO 2016) IN FILES C LOADYR = ACTUAL YEAR OF LOAD DATA (2006 TO 2016) C IYLOAD = 1..MXYLOAD YEAR OF LOAD DATA (MXYLOAD = 11: 2006 TO 2016) C FOR CURRENT I=1, NYEARS YEAR OF SIMULATION C MXHPYEAR = NUMBER OF HOURS PER YEAR FOR LEAP YEARS = 8784 C AHRSIM = CURRENT GMT HOUR OF SIM CORRESPONDING TO LOAD DATA VALUE C (0.5 = 0-1 GMT JAN 1) C TIMLOAD = GMT HOUR OF SIMULATION (0.5 = 0-1 GMT JANUARY 1) CORRESPONDING TO C TIME OF LOAD DATA. VARIES FROM 1..NHRSIM C NHRSIM = TOTAL NUMBER OF HOURS OF MODEL SIMULATION HERE C LOADYR = IBEGYLOAD - 1 AHRSIM = -0.5 J = 0 SUMINFHL = 0. SUMINFCL = 0. C WRITE(IOUT,128) 128 FORMAT('YR LOADYR HRSIM HRYR MXLD-TW TIMX-HR MNLD-TW TIMIN ', 1 'RAMPMX-TW/H TIMRMP LDRATIO TNONHC-TW YRLOAD-TW') C DO I = 1, NYEARS LOADYR = LOADYR + 1 C IF (LOADYR.GT.IFINYLOAD) THEN LOADYR = INITYLOAD ENDIF C IYLOAD = LOADYR - IYBEFORE C KHOUR = 0 DO M = 1, MXHPYEAR C C SKIP LEAP DAY FOR NON LEAP YEARS C HOURS 1417-1440 OF A YEAR CORRESPOND TO FEBRUARY 29 (LEAP DAY)` C C KDAY = 1..NDAYYR DAY OF YEAR (1..365 NONLEAP YEARS, 1..366 LEAP YEARS) C KHOUR = 1..8760 HOURS OF YEAR FOR NON-LEAP YEARS; 1..8784 FOR LEAP YEARS C MXHPDAY = NUMBER OF HOURS PER DAY (24) C MXHPYEAR = NUMBER OF HOURS PER YEAR FOR LEAP YEARS = 8784 C IF (NHYEAR(I).EQ.MXHPYEAR.OR.M.LT.1417.OR.M.GT.1440) THEN J = J + 1 KHOUR = KHOUR + 1 KDAY = 1 + (KHOUR-1)/MXHPDAY AHRSIM = AHRSIM + 1. C C BLOAD = 2050 HOURLY NON-COLD, NOT HOT INFLEX LOAD (TW) ACROSS ALL SECTORS C EXTRAPOLATED FROM CURRENT TO 2050 C DLOAD = 2050 30-SECOND INFLEXIBLE, NON-COLD, NON-HOT LOAD DATA (TW) ACROSS C ALL ENERGY SECTORS FOR GRID REGION FROM LOAD DATA C TNONHC = ANNUAL AVG TOTAL INFLEXIBLE LOAD (TW) THAT IS NOT HOT OR COLD LOAD C HOTHOUR = CURRENT HOUR TOTAL INFLEXIBLE HOT LOAD (TW) ACROSS ALL SECTORS C COLDHOUR = CURRENT HOUR TOTAL INFLEXIBLE COLD LOAD (TW) ACROSS ALL SECTORS C ELECHOT = ANNUAL AVG ELEC LOAD (TW) TO SATISFY INFLEX HOT LOAD W/HEAT PUMPS C ELECCOLD = ANNUAL AVG ELEC LOAD (TW) TO SATISFY INFLEX COLD LOAD W/HEAT PUMPS C FRDAYWARM = FRAC OF YEARLY AIR & WATER HEATING THAT OCCURS ON CURRENT GMT DAY C DETERMINED FROM NUMBER OF DEGREE-HEATING DAYS ON DAY C FRDAYCOOL = FRAC OF YEARLY AIR COOLING + REFRIG THAT OCCURS ON CURRENT GMT DAY C DETERMINED FROM NUMBER OF DEGREE-COOLING DAYS ON DAY C NTSPERHR = 120 = NUMBER OF 30-SECOND TIMES STEPS PER HR C YLOADHR = ANN AVG LOAD (TW) FOR EACH 1..MXYHRLOAD YEAR, HIGH-RES LOAD C IF (IFHRLOAD.EQ.0) THEN BLOAD(J) = TNONHC * ALOADHR(M,IYLOAD) / YRLOAD(IYLOAD) ELSE LJ = (J - 1) * NTSPERHR MJ = (M - 1) * NTSPERHR DO LH = 1, NTSPERHR LJ = LJ + 1 MJ = MJ + 1 DLOAD(LJ) = TNONHC*HRESLOAD(MJ,IYLOAD)/YLOADHR(IYLOAD) ENDDO ENDIF C IF (IFGATHEAT.NE.1) THEN HOTHOUR( J) = ELECHOT * NDAYYR(I) * FRDAYWARM(I,KDAY) COLDHOUR(J) = ELECCOLD * NDAYYR(I) * FRDAYCOOL(I,KDAY) SUMINFHL = SUMINFHL + HOTHOUR( J) SUMINFCL = SUMINFCL + COLDHOUR(J) ENDIF C ENDIF C ENDIF NHYEAR(I).EQ.MXHPYEAR... C ENDDO C ENDDO M = 1, MXYPYEAR C ENDDO C ENDDO I = 1, NYEARS C C AVINFHL = AVERAGE INFLEXIBLE HEAT LOAD (TW) OVER SIMULATION C AVINFCL = AVERAGE INFLEXIBLE COLD LOAD (TW) OVER SIMULATION C THESE VALUES ARE OVERRIDDEN IF IFGATHEAT=1 C IF (IFGATHEAT.NE.1) THEN AVINFHL = SUMINFHL / J AVINFCL = SUMINFCL / J ENDIF C C ***************************************************************************** C READ TIME-DEPENDENT WIND, SOLAR SUPPLY DATA FROM GATOR-GCMOM C ***************************************************************************** C CURLTWTB = CURRENT POWER GENERATION BY ONSHORE WIND TURBINES (TW) OVER C COUNTRY BEFORE T&D LOSSES BUT ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY EACH TURBINE. C CUROTWTB = CURRENT POWER GENERATION BY OFFSHORE WIND TURBINES (TW) OVER C COUNTRY BEFORE T&D LOSSES BUT ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY EACH TURBINE. C CURTWPVR = CURRENT ELEC GENERATED BY RES/COM/GOV ROOFTOP PV (TW) C (BEFORE T&D LOSSES) SUMMED OVER COUNTRY C CURTWPVU = CURRENT ELEC GENERATED BY UTILITY PV (TW) C (BEFORE T&D LOSSES) SUMMED OVER COUNTRY C CURTWCSP = CURRENT ELEC GENERATED BY SOLAR CSP (TW) (BEFORE T&D LOSSES) C SUMMED OVER COUNTRY C CURTWSTH = CURRENT HEAT GENERATED BY SOLAR COLLECTORS (TW) (BEFORE T&D LOSSES) C SUMMED OVER COUNTRY C CURTWHOT = CURRENT HEAT DEMAND (TW) FOR BUILDINGS IN COUNTRY C CURTWCLD = CURRENT COLD DEMAND (TW) FOR BUILDINGS IN COUNTRY C CUMLTWTB = CUMULATIVE POWER GEN BY ONSHORE WIND TURBINES (TW) OVER COUNTRY C CUMOTWTB = CUMULATIVE POWER GEN BY OFFHORE WIND TURBINES (TW) OVER COUNTRY C CUMTWRAV = CUM AVG ELEC GENERATED BY ROOFTOP PV (TW) (BEFORE T&D LOSSES) C SUMMED OVER COUNTRY C CUMTWUAV = CUM AVG ELEC GENERATED BY UTILITY PV (TW) (BEFORE T&D LOSSES) C SUMMED OVER COUNTRY C CUMTWCAV = CUM AVG ELEC GENERATED BY CSP (TW) (BEFORE T&D LOSSES) C SUMMED OVER COUNTRY C CUMTWSAV = CUM AVG HEAT ENERATED BY SOLAR COLLECTORS (TW) (BEFORE T&D LOSSES) C SUMMED OVER COUNTRY C CUMTWHOT = CURRENT HEAT DEMAND (TJ=TWxS) FOR BUILDINGS IN COUNTRY C CUMTWCLD = CURRENT COLD DEMAND (TJ=TWxS) FOR BUILDINGS IN COUNTRY C C ********************************************************************* C SET TIME INCREMENT FOR GATOR-GCMOM WIND, SOLAR SUPPLY C ********************************************************************* C C IWWS = NUMBER OF TIME STEPS OF THE LOADMATCH SIMULATION C TIMWWS = GMT HOURS PAST JAN. 1, 2050 (INITYEAR) AT 0 GMT FOR WWS SUPPLY DATA C PERHRS = TIME INCREMENT (HOURS) FOR EACH WWS SUPPLY TIME INTERVAL C IFONE = 1: THEN THIS IS FIRST TIME>0 READ IN C TIMLOAD = GMT HOUR OF SIMULATION (0.5 = 0-1 GMT JANUARY 1) CORRESPONDING TO C TIME OF LOAD DATA. VARIES FROM 0.5..NHRSIM-0.5 C C SUMONWIND = CURRENT TW ONSHORE WIND, SUMMED OVER ALL COUNTRIES IN GRID REGION C AS DETERMINED FROM GATOR-GCMOM SIMULATIONS AT TIME J=1..IWWS C BEFORE T&D LOSSES BUT ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY EACH TURBINE. C WHEN IFCONUS=1, IT IS THE CONUS-AGGREGATE VALUE. C SUMOFWIND = CURRENT TW OFFSHORE WIND, SUMMED OVER ALL COUNTRIES IN GRID REGION C BEFORE T&D LOSSES BUT ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY EACH TURBINE. C SUMROOFPV = CURRENT TW ROOF PV WIND, SUMMED OVER ALL COUNTRIES IN GRID REGION C (BEFORE T&D LOSSES) C SUMUTILPV = CURRENT TW UTILITY PV, SUMMED OVER ALL COUNTRIES IN GRID REGION C (BEFORE T&D LOSSES) FROM GATOR-GCMOM C SUMCSP = CURRENT TW CSP, SUMMED OVER ALL COUNTRIES IN GRID REGION C (BEFORE T&D LOSSES) FROM GATOR-GCMOM C SUMSTHERM = CURRENT TW SOLAR THERMAL, SUMMED OVER ALL COUNTRIES IN GRID REGION C (BEFORE T&D LOSSES) FROM GATOR-GCMOM C CURONSH = CURRENT ONSHORE WIND POWER GENERATION (TW) AGGREGATED OVER C DOMAIN AFTER T&D LOSSES AND ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY EACH TURBINE. C CUROFFSH = CURRENT OFFSHORE WIND POWER GENERATION (TW) AGGREGATED OVER C DOMAIN AFTER T&D LOSSES AND ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY EACH TURBINE. C CUROOFPV = CURRENT SOLAR POWER (TW) EXTRACTED FROM ROOF PV AFTER T&D LOSSES C CURUTPV = CURRENT SOLAR POWER (TW) EXTRACTED FROM UTILITY PV AFTER T&D LOSSES C CURCSP = CURRENT SOLAR POWER (TW) EXTRACTED FROM CSP AFTER T&D LOSSES C AFTER CSP BEYOND CUR CSP DISCHARGE RATE (EXTRACSP) PUT IN STORAGE C CURSOLHT = CURRENT SOLAR EXTRACTED FROM ROOF AND UTILITY HEAT C COLLECTORS (E.G., WATER OR GLYCOL SOLUTIONS) C OVER U.S. (TW) AFTER DISTRIBUTION LOSSES AND LOSSES FROM SOLAR C COLLECTOR ARE ACCOUNTED FOR (THUS, THIS IS ENERGY IN HOT FLUID) C THE HEAT IS CONVERTED HERE TO ELECTRICAL ENERGY ASSUMING A C COEFFICIENT OF PERFORMANCE CPERFORM BECAUSE THE RAW DEMAND C DATA IN countrystats.dat ASSUMES HEATING IS PROVIDED BY C HEAT PUMPS. THUS, FOR EXAMPLE, IF SOLAR THERMAL PROVIDES X C UNITS OF HEAT, IT PROVIDES / CPERFORM UNITS OF C ELECTRICITY TO RUN HEAT PUMPS TO GENERATE THAT HEAT C CPERFORM = COEFFICIENT OF PERFORMANCE OF HEAT PUMPS C = RATIO OF JOULES OF HEAT MOVED OR PRODUCED PER JOULE OF ELECTRICITY C = 1 FOR ELECTRIC RESISTANCE HEATING C = 3.2-4.5 FOR AIR SOURCE HEAT PUMPS C = 4.2-5.2 FOR GROUND SOURCE HEAT PUMPS C FACSHT = FACTOR TO MULTIPLY DELIVERED SOLAR PV+CSP BY TO ESIMATE SOLAR C HEAT FROM ROOF OR UTILITY HEAT COLLECTORS (E.G., WATER, GLYCOL) C TDEFFMN = 1-TDLOSMN=TRANSMIS+DISTRIB EFFIC AS FRACTION OF POWER TRANSMITTED C EFFSOLCOL = EFFICIENCY OF SOLAR COLLECTOR FOR HOT WATER/GLYCOL C = ENERGY IN HOT FLUID DIVIDED BY INCIDENT SOLAR RADIATION C = 0.34 FROM TABLE 2 OF SIBBITT ET AL ENERGY PROCEDIA 30, 856, 2012 C RATIOCSP = RATIO OF TW OF CSP COLLECED IN MIRRORS FOR DIRECT ELECTRICITY C USE OR STORAGE TO THAT USED TO DERIVE OUTPUT IN KWWS (WHICH IS C BASED ONLY ON DISCHARGE RATE) C = CSPCHARG / TWCSPGAT C EXTRACSP = CSP SOLAR (TW) THAT CAN'T BE USED IMMEDIATELY BUT THAT CAN C GO STRAIGHT TO CSP STORAGE C CSPCOLL = TW CSP IN KWWS ADJUSTED FOR NUMBER OF CSP MIRRORS HERE C CSPDISCH = MAX DISCHARGE RATE (TW) OF CSP EITHER FROM STORAGE OR DIRECTLY C = CSPCHARG - CSPCHSTO = CSP TURBINE SIZE C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C RATONSHW = RATIO OF INSTALLED TW ONSHORE WIND ACTUALLY NEEDED TO C THAT USED IN GATOR-GCMOM TO DERIVE OUTPUT IN KWWS C RATOFFSHW = RATIO OF INSTALLED TW OFFSHORE WIND ACTUALLY NEEDED TO C THAT USED IN GATOR-GCMOM TO DERIVE OUTPUT IN KWWS C FACROOFPV = WEIGHTED AVG VALUE OF FACRESPV AND FACCOMPV C USED TO MULTIPLY DELIVERED TOTAL ROOFTOP PV FROM C GATOR-GCMOM BY C DO J = 1, IWWS IYY = IYRWWS(J) IF (TIMWWS(J).GT.0.AND.TIMWWS(J).LT.TIMLOAD(NHRSIM)) THEN C CURONSH( J) = SUMONWIND(J)*TDEFFMN(IONWIND) *FACONWIN *RATONSHW CUROFFSH(J) = SUMOFWIND(J)*TDEFFMN(IOFFWIND)*FACOFFWIN*RATOFFSHW CUROOFPV(J) = SUMROOFPV(J)*TDEFFMN(IRESPV) *FACROOFPV*RATROOFPV CURUTPV( J) = SUMUTILPV(J)*TDEFFMN(IUTILPV) *FACUTILPV*RATUTILPV CURSOLHT(J) = SUMSTHERM(J)*TDEFFMN(ISOLTHM) *FACSHT *RATSHEAT 1 / CPERFORM CSPCOLL = SUMCSP( J)*TDEFFMN(ICSPSTOR) *RATIOCSP C IF (CSPCOLL.GT.CSPDISCH) THEN EXTRACSP(J) = CSPCOLL - CSPDISCH CURCSP( J) = CSPDISCH ELSE CURCSP( J) = CSPCOLL ENDIF C C CSHTMAX = MAX VALUE OF CURSOLHT (TW) DURING SIMULATION C CSHTMAX = MAX(CURSOLHT(J),CSHTMAX) C C AVWINPOW = INITIALLY TWH-WIND OFFSHORE WIND OVER ENTIRE KWWS DATASET C AVWINPOW(IYY) = AVWINPOW(IYY) + CUROFFSH(J) * PERHRS(J) C ENDIF C ENDIF TIMWWS>0 ENDDO C ENDDO J = 1, IWWS C WRITE(IOUT,151) CSHTMAX,TWINUTES,CSHTMAX/(TWINUTES+SMAL30),FACSHT 151 FORMAT(/'CSHTMAX, TWINUTES, CSHTMAX/TWINUTES = ',3(0PF12.4),/ 1 'FACSHT= ',0PF12.4,' CAN BE ADJUSTED TO CSHTMAX/TWINUTES',/ 1 'TO ENSURE TWINUTES (MAX CHARGE RATE UTES) = CSHTMAX',/) C C AVWINPOW = ANNUAL AVG OFFSHORE WIND POWER (TW) EACH YEAR C MAKE SURE NOT = 0 SINCE WAVE POWER CALCULATED FROM THIS. C HRSINYR = HOURS OF DATA DURING EACHYEAR IYY C DO I = 1, NYEARS AVWINPOW(I) = SMAL30 + AVWINPOW(I) / HRSINYR(I) ENDDO C C ********************************************************************* C PRINT CAPACITY FACTOR BY COUNTRY FOR EACH ENERGY DEVICE AS DETERMINED C FROM GATOR-GCMOM SIMULATIONS WITH INSTALLED CAPACITIES TGWINSTGAT C ********************************************************************* C TGWINSTGAT = NEW+EXIST INSTALLED GW 1..MXCAP DEVICE BY COUNTRY GATOR-GCMOM SIMS C FOR CSP, NEED TO ADD TMWCSPAGAT HERE. C NAMECOUN = NAME OF EACH 1..NCOUNTRY COUNTRY C CF1..6 = CAPACITY FACTOR OF ENERGY DEVICE AVERAGED OVER SIMULATION C AND FOR EACH COUNTRY. C ENCOUNTRY = CUMULATIVE ENERGY PRODUCTION (TWH) OVER SIMULATION FROM C ENERGY DEVICE OVER DOMAIN BEFORE T&D LOSSES BUT ACCOUNTING C FOR EXTRACTION OF POWER FROM WIND BY TURBINES C GWPTW = 1000. GIGAWATTS (GW) PER TERAWATT (TW) C SUMEN = SUM OF CUM EN PROD ENCOUNTRY (TWH) EACH DEVICE OVER ALL COUNTRIES C SUMNP = SUM NAMEPLATE CAPAC TGWINSTGAT (GW) EACH DEVICE OVER ALL COUNTRIES C ISERBMON = IDENTIFIES 1..NCOUNTRY COUNTRY 'SERBIA AND MON' C IMONT = IDENTIFIES 1..NCOUNTRY COUNTRY 'MONTENEGRO ' C IF (IFREWRITE.EQ.2.AND.IFCONUS.EQ.0) THEN WRITE(KOUT,154) ADDHOURS / 24. C C SUM VALUES FOR SERBIA AND MONTENEGRO INTO SERBIA + MONTENEGRO C IF (IMONT.GT.0.AND.ISERBMON.GT.0) THEN DO J = 1, MXCAP ENCOUNTRY( ISERBMON,J) = ENCOUNTRY(ISERBMON,J) 1 + ENCOUNTRY(IMONT, J) TGWINSTGAT(ISERBMON,J) = TGWINSTGAT(ISERBMON,J) 1 + TGWINSTGAT(IMONT, J) ENCOUNTRY( IMONT, J) = 0. TGWINSTGAT(IMONT, J) = 0. ENDDO ENDIF C C PRINT OUT CAPACITY FACTORS AND NAMEPLATE CAPCITIES GW) FROM GATOR-GCMOM C DO IC = 1, NCOUNTRY DO J = 1, MXCAP SUMEN(J) = SUMEN(J) + ENCOUNTRY( IC,J) SUMNP(J) = SUMNP(J) + TGWINSTGAT(IC,J) ENDDO C TGWINROOFPV = TGWINSTGAT(IC,IRESPV) + TGWINSTGAT(IC,ICOMGVPV) CF1 = ENCOUNTRY(IC,IONWIND) * GWPTW / 1 (ADDHOURS * (TGWINSTGAT(IC,IONWIND) + SMAL30)) CF2 = ENCOUNTRY(IC,IOFFWIND) * GWPTW / 1 (ADDHOURS * (TGWINSTGAT(IC,IOFFWIND) + SMAL30)) CF3 = ENCOUNTRY(IC,IRESPV) * GWPTW / 1 (ADDHOURS * (TGWINROOFPV + SMAL30)) CF4 = ENCOUNTRY(IC,IUTILPV) * GWPTW / 1 (ADDHOURS * (TGWINSTGAT(IC,IUTILPV) + SMAL30)) CF5 = ENCOUNTRY(IC,ICSPSTOR) * GWPTW / 1 (ADDHOURS * (TGWINSTGAT(IC,ICSPSTOR) + SMAL30)) CF6 = ENCOUNTRY(IC,ISOLTHM) * GWPTW / 1 (ADDHOURS * (TGWINSTGAT(IC,ISOLTHM) + SMAL30)) WRITE(KOUT,155) NAMECOUN(IC), 1 TGWINSTGAT(IC,IONWIND), CF1,TGWINSTGAT(IC,IOFFWIND),CF2, 1 TGWINROOFPV, CF3,TGWINSTGAT(IC,IUTILPV), CF4, 1 TGWINSTGAT(IC,ICSPSTOR),CF5,TGWINSTGAT(IC,ISOLTHM), CF6 ENDDO C TGWINROOFPV = SUMNP(IRESPV) + SUMNP(ICOMGVPV) CF1 = SUMEN(IONWIND) * GWPTW / (ADDHOURS * SUMNP(IONWIND)) CF2 = SUMEN(IOFFWIND) * GWPTW / (ADDHOURS * SUMNP(IOFFWIND)) CF3 = SUMEN(IRESPV) * GWPTW / (ADDHOURS * TGWINROOFPV) CF4 = SUMEN(IUTILPV) * GWPTW / (ADDHOURS * SUMNP(IUTILPV)) CF5 = SUMEN(ICSPSTOR) * GWPTW / (ADDHOURS * SUMNP(ICSPSTOR)) CF6 = SUMEN(ISOLTHM) * GWPTW / (ADDHOURS * SUMNP(ISOLTHM)) C WRITE(KOUT,155) 'ALL-COUNTRIES ', 1 SUMNP(IONWIND), CF1, SUMNP(IOFFWIND), CF2, 1 TGWINROOFPV, CF3, SUMNP(IUTILPV), CF4, 1 SUMNP(ICSPSTOR), CF5, SUMNP(ISOLTHM), CF6 C 154 FORMAT('DAYS OVER WHICH CAPACITY FACTOR CF CALCULATED ',0PF9.3,/ 1 'COUNTRY ', 1 'GW-ONWIND CF GW-OFFWND CF GW-ROOFPV CF ', 1 'GW-UTILPV CF GW-CSPSTO CF GW-SOLTHM CF') 155 FORMAT(A14,1X,6(1X,0PF9.3,1X,0PF5.3)) C STOP ENDIF C ENDIF IFREWRITE=2 AND IFCONUS=0 C C ********************************************************************* C DISTRIBUTE WAVE POWER PROPORTIONALLY TO WIND POWER C ********************************************************************* C CURWAVP = 2050 CONUS WAVE POWER (TW) EACH 1..IWWS TIME STEP AFTER T&D LOSSES C DISTRIBUTED PROPORTIONALLY TO WIND SUPPLY PROFILE C CURWAVP(J) * PERHRS(J) / ADDHOURS = CURWAV C CURWAV = 2050 CONUS WAVE DELIVERED POWER AFTER T&D LOSSES(TW) C AVWINPOW = ANNUAL AVG OFFSHORE WIND POWER (TW) EACH YEAR C CUROFFSH = CURRENT OFFSHORE WIND POWER GENERATION (TW) AGGREGATED OVER C DOMAIN AFTER T&D LOSSES AND ACCOUNTING FOR EXTRACTION C OF POWER FROM WIND BY EACH TURBINE. C CURCLOAD = CURRENT BUILDING COLD LOAD (TW) FOR REGION AFTER SCALING C ANNUAL AVG COLD LOAD BY CURRENT TO AVG LOAD IN GATOR-GCMOM C THESE ARE LOADS SUBJECT TO DISTRICT HEATING COLD STORAGE C CURHLOAD = CURRENT BUILDING HEAT LOAD (TW) SUBJECT TO STORAGE FOR REGION C AFTER SCALING ANNUAL AVG HEAT LOAD BY CURRENT TO AVG LOAD C TSTORAWH = ANNUAL LOAD (TW) FOR AIR AND WATER HEATING SUBJECT TO STORAGE C INCLUDES DISTRICT HEATING STORAGE+DOMESTIC WATER TANK STORAGE C AVHEATLD = ANNUAL AVG BUILDING HEAT LOAD (TW) OVER ENTIRE KWWS DATASET C AVCOLDLD = ANNUAL AVG BUILDING COLD LOAD (TW) OVER ENTIRE KWWS DATASET C TSTORCOOL = AVG ANNUAL LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C ELECCOLD = ANNUAL AVG ELEC LOAD (TW) TO SATISFY INFLEX COLD LOAD W/HEAT PUMPS C ELECHOT = ANNUAL AVG ELEC LOAD (TW) TO SATISFY INFLEX HOT LOAD W/HEAT PUMPS C CINFXCLD = CURRENT ELEC LOAD (TW) TO SATISFY INFLEX COLD LOAD W/HEAT PUMPS C CINFXHLD = CURRENT ELEC LOAD (TW) TO SATISFY INFLEX HOT LOAD W/HEAT PUMPS C CURFLOAD = TLOADDRM, BUT WITH COLDFLEX AND HOTFLEX CONVERTED FROM C ANNUAL AVERAGE NUMBERS TO TIME-DEPENDENT NUMBERS WITH SAME C ANNUAL AVERAGE TOTA CONVERTED FROM C CURCFLEX = CURRECT LOAD (TW) SUBJECT TO DRM THAT IS BUILDING COLD LOAD C CURHFLEX = CURRECT LOAD (TW) SUBJECT TO DRM THAT IS BUILDING HEAT LOAD C COLDFLEX = PORTION OF COLD LOAD (TW) NOT MET BY STORAGE THAT CAN C BE MET BY DEMAND RESPONSE. C HOTFLEX = PORTION OF WARM LOAD (TW) NOT MET BY STORAGE THAT CAN C BE MET BY DEMAND RESPONSE. C TLOADDRM = TOTAL LOAD (TW) SUBJECT TO DEMAND-RESPONSE MANAG LESS H2 C FSTPCOOL = FRAC OF ANNUAL AVG COLD LOAD OCCURRING IN GIVEN TIME STEP C FSTPWARM = FRAC OF ANNUAL AVG WARM LOAD OCCURRING IN GIVEN TIME STEP C SUMCWAV = 0. SUMCHL = 0. SUMCCL = 0. SUMFLL = 0. SUMINFHL = 0. SUMINFCL = 0. DO J = 1, IWWS IYY = IYRWWS(J) IF (TIMWWS(J).GT.0.AND.TIMWWS(J).LT.TIMLOAD(NHRSIM)) THEN CURWAVP( J) = CURWAV * CUROFFSH(J) / AVWINPOW(IYY) SUMCWAV = SUMCWAV + CURWAVP( J) * PERHRS(J) C IF (IFGATHEAT.EQ.1) THEN CURHLOAD(J) = TSTORAWH * FSTPWARM(J) CURCLOAD(J) = TSTORCOOL * FSTPCOOL(J) CURHFLEX(J) = HOTFLEX * FSTPWARM(J) CURCFLEX(J) = COLDFLEX * FSTPCOOL(J) CURFLOAD(J) = TLOADDRM + CURCFLEX(J) - COLDFLEX 1 + CURHFLEX(J) - HOTFLEX CINFXHLD(J) = ELECHOT * FSTPWARM(J) CINFXCLD(J) = ELECCOLD * FSTPCOOL(J) C SUMCHL = SUMCHL + CURHLOAD(J) * PERHRS(J) SUMCCL = SUMCCL + CURCLOAD(J) * PERHRS(J) SUMFLL = SUMFLL + CURFLOAD(J) * PERHRS(J) SUMINFHL = SUMINFHL + CINFXHLD(J) * PERHRS(J) SUMINFCL = SUMINFCL + CINFXCLD(J) * PERHRS(J) ENDIF C C CURGEOP = 2050 CONUS GEOTHERM (TW) EACH 1..IWWS TIME STEP AFTER T&D LOSSES C CURGEOEL = 2050 CONUS GEOTHERMAL DELIV ELEC POWER AFTER T&D LOSSES (TW) C CURTIDP = 2050 CONUS TIDAL (TW) EACH 1..IWWS TIME STEP AFTER T&D LOSSES C CURTID = 2050 CONUS TIDAL DELIVERED POWER AFTER T&D LOSSES (TW) C CURGEOH = 2050 CONUS GEOTHERM HEAT EACH 1..IWWS TIME STEP AFTER T&D LOSS (TW) C THE HEAT IS CONVERTED TO ELECTRICAL ENERGY ASSUMING A C COEFFICIENT OF PERFORMANCE CPERFORM BECAUSE THE RAW DEMAND C DATA IN countrystats.dat ASSUMES HEATING IS PROVIDED BY C HEAT PUMPS. THUS, FOR EXAMPLE, IF GEOTHERMAL PROVIDES X C UNITS OF HEAT, IT PROVIDES X / CPERFORM UNITS OF C ELECTRICITY TO RUN HEAT PUMPS TO GENERATE THAT HEAT C CURGEOHT = 2050 CONUS GEOTHERMAL HEAT DELIVERED AFTER T&D LOSSES (TW) C CPERFORM = COEFFICIENT OF PERFORMANCE OF HEAT PUMPS C = RATIO OF JOULES OF HEAT MOVED OR PRODUCED PER JOULE OF ELECTRICITY C CURGEOP(J) = CURGEOEL CURTIDP(J) = CURTID CURGEOH(J) = CURGEOHT / CPERFORM ENDIF C ENDIF TIMWWS > 0 ENDDO C ENDDO J = 1, IWWS C WRITE(IOUT,152) IGRIDUSE, IGEUROPE 152 FORMAT('IGRIDUSE IGEUROPE = ',I3,I3) C C ADDHOURS = HOURS OF DATA OVER ENTIRE KWWS DATASET C WRITE(IOUT,153) SUMCWAV/ADDHOURS, CURWAV, ADDHOURS C C TAVCOOL = AVERAGE COOLING LOAD SUBJECT TO STORAGE (TW) OVER SIMULATION C TAVWARM = AVERAGE HEATING LOAD SUBJECT TO STORAGE (TW) OVER SIMULATION C TAVFLEX = AVERAGE HOT+COLD FLEX LOAD SUBJECT TO DEM-RESPONSE (TW) OVER SIM C AVINFHL = AVERAGE INFLEXIBLE HEAT LOAD (TW) OVER SIMULATION C AVINFCL = AVERAGE INFLEXIBLE COLD LOAD (TW) OVER SIMULATION C IF (IFGATHEAT.EQ.1) THEN TAVWARM = SUMCHL / ADDHOURS TAVCOOL = SUMCCL / ADDHOURS TAVFLEX = SUMFLL / ADDHOURS AVINFHL = SUMINFHL / ADDHOURS AVINFCL = SUMINFCL / ADDHOURS C WRITE(IOUT,156) TAVWARM, TSTORAWH, ADDHOURS WRITE(IOUT,157) TAVCOOL, TSTORCOOL, ADDHOURS WRITE(IOUT,281) TAVFLEX, TLOADDRM, ADDHOURS WRITE(IOUT,279) AVINFHL, ELECHOT, ADDHOURS WRITE(IOUT,280) AVINFCL, ELECCOLD, ADDHOURS ENDIF C 153 FORMAT('ANN-AVG WAVEPOW CURWAV (TW) HRSOFDATA',3(0PF14.6)) 156 FORMAT('ANN-AVG HEATSTOR TSTORAWH (TW) HRSOFDATA',3(0PF14.6)) 157 FORMAT('ANN-AVG COLDSTOR TSTORCOOL(TW) HRSOFDATA',3(0PF14.6)) 281 FORMAT('ANN-AVG HOTCDDRM TLOADDRM (TW) HRSOFDATA',3(0PF14.6)) 279 FORMAT('ANN-AVG INFXHEAT ELECHOT (TW) HRSOFDATA',3(0PF14.6)) 280 FORMAT('ANN-AVG INFXCOLD ELECCOLD (TW) HRSOFDATA',3(0PF14.6)/) C C ********************************************************************* C SUM STATISTICS FOR HISTOGRAM OF HOURLY LOAD AND SUPPLY C ********************************************************************* C TIMWWS = GMT HOURS PAST JAN. 1, 2050 (INITYEAR) AT 0 GMT FOR WWS SUPPLY DATA C TIMLOAD = GMT HOUR OF SIMULATION (0.5 = 0-1 GMT JANUARY 1) CORRESPONDING TO C TIME OF LOAD DATA. VARIES FROM 0.5..NHRSIM-0.5 C BLOAD = 2050 HOURLY NON-COLD, NOT HOT INFLEX LOAD (TW) ACROSS ALL SECTORS C FOR GRID REGION. EXTRAPOLATED FROM CURRENT TO 2050 C CLOAD = VALUES OF BLOAD (TW) + INFLEX HOT+COLD LOAD FOR EACH TIMWWS TIME INCREMENT C = 2050 HOURLY INFLEXIBLE LOAD (TW) C PERHRS = TIME INCREMENT (HOURS) FOR EACH WWS SUPPLY TIME INTERVAL C IYRWWS = YEAR 1..MXYEAR CORRESPONDING TO EACH J=1..IWWS TIMESTEP C C COPY LOAD DATA (TW) TO EACH TIME THAT WWS DATA AVAILABLE. POWER IS C INSTANTANEOUS SO NO NEED TO CHANGE UNITS. C ILAST = 1 DO 220 J = 1, IWWS IYY = IYRWWS(J) C C ********************************************************************* C INITIALIZE LOAD WITH INFLEXIBLE LOAD WHEN HIRES LOAD DATA C ********************************************************************* C MXTSHRALL = MAX NUMBER 30-SEC TIME STEPS IN ALL YEARS OF SIMULATION C NTSSIM = TOTAL NUMBER OF HIGH-RES (30-S) TIMES STEPS OF SIMULATION C TLOADHR = GMT HOUR OF SIM (-0.000833 = -15 TO +15 SEC JANUARY 1) CORRESPONDING TO C TIME OF HIGH-RESOLUTION LOAD DATA. VARIES FROM -0.000833...NHRSIM-0.0091667 C 0.0091667=1.1*FHOURHR C DLOAD = 2050 30-SECOND INFLEXIBLE, NON-COLD, NON-HOT LOAD DATA (TW) ACROSS C ALL ENERGY SECTORS FOR GRID REGION FROM LOAD DATA C IF (IFHRLOAD.EQ.1) THEN DO I = ILAST, MXTSHRALL-1 IF (TIMWWS(J).GE.TLOADHR(I).AND.TIMWWS(J).LT.TLOADHR(I+1).AND. 1 TIMWWS(J).LT.TLOADHR(NTSSIM)) THEN CLOAD(J) = DLOAD(I) ILAST = I GOTO 218 ENDIF ENDDO 218 CONTINUE ENDIF C C ********************************************************************* C INITIALIZE LOAD WITH INFLEXIBLE LOAD WHEN HOURLY LOAD DATA C AND COMPLETE LOAD IN ALL CASES WITH HOURLY HEAT/COLD LOADS C ********************************************************************* C DO 216 I = 1, MXLOADYR - 1 IF (TIMWWS(J).GE.TIMLOAD(I).AND.TIMWWS(J).LT.TIMLOAD(I+1).AND. 1 TIMWWS(J).LT.TIMLOAD(NHRSIM)) THEN C C ELECCOLD = ANNUAL AVG ELEC LOAD (TW) TO SATISFY INFLEX COLD LOAD W/HEAT PUMPS C ELECHOT = ANNUAL AVG ELEC LOAD (TW) TO SATISFY INFLEX HOT LOAD W/HEAT PUMPS C CINFXCLD = CURRENT ELEC LOAD (TW) TO SATISFY INFLEX COLD LOAD W/HEAT PUMPS C CINFXHLD = CURRENT ELEC LOAD (TW) TO SATISFY INFLEX HOT LOAD W/HEAT PUMPS C IF (IFHRLOAD.EQ.0) THEN CLOAD(J) = BLOAD(I) ENDIF C IF (IFGATHEAT.EQ.1) THEN CLOAD(J) = CLOAD(J) + CINFXHLD(J) + CINFXCLD(J) ELSE CLOAD(J) = CLOAD(J) + HOTHOUR(I) + COLDHOUR(I) ENDIF C C AMAXLOAD = MAXIMUM LOAD (TW) ANY TIME BETWEEN 1..NYEARS C AMINLOAD = MINIMUM LOAD (TW) ANY TIME BETWEEN 1..NYEARS C TIMAXLOAD = HOUR OF SIMULATION OF MAXIMUM LOAD AMAXLOAD C TIMINLOAD = HOUR OF SIMULATION OF MINIMUM LOAD AMINLOAD C RAMPMAX = MAX LOAD RAMP RATE (TW/HR) (UP ONLY) BETWEEN TWO CONSEC TIMES C TIMAXRAMP = HOUR OF SIMULATION OF END OF GREATEST RAMP RAMPMAX C RAMPRATE = CURRENT LOAD RAMP RATE (TW/HR) (UP OR DOWN) BETWEEN TWO CONSEC TIMES C IF (CLOAD(J).GT.AMAXLOAD(IYY)) THEN AMAXLOAD( IYY) = CLOAD( J) TIMAXLOAD(IYY) = TIMWWS(J) ENDIF C IF (CLOAD(J).LT.AMINLOAD(IYY)) THEN AMINLOAD( IYY) = CLOAD( J) TIMINLOAD(IYY) = TIMWWS(J) ENDIF C IF (J.GT.1) THEN RAMPRATE = (CLOAD( J) - CLOAD( J-1)) / 1 (TIMWWS(J) - TIMWWS(J-1)) IF (RAMPRATE.GT.RAMPMAX(IYY)) THEN RAMPMAX( IYY) = RAMPRATE TIMAXRAMP(IYY) = TIMWWS(J) ENDIF ENDIF C C DEMAND = 2050 CURRENT INFLEXIBLE ENERGY DEMAND OVER TIME INTERVAL PERHRS (TWH) C CLOAD = VALUES OF BLOAD (TW) FOR EACH TIMWWS TIME INCREMENT C = 2050 HOURLY INFLEXIBLE LOAD (TW) C SUPPLY = CURRENT WIND AND SOLAR ENERGY SUPPLY OVER TIME INTERVAL PERHRS (TWH) C AFTER T&D LOSSES ACCOUNTED FOR C SUPPHT = CURRENT HEAT (TWH) FROM SOLAR HOT WATER OR GLYCOL SOLUTION COLLECTORS C OR GEOTHERMAL HEAT OVER TIME INTERVAL PERHRS - AFTER DISTRIBUTION LOSSES C ACCOUNTED FOR AND AFTER COLLECTOR EFFICIENCY ACCOUNTED FOR. C THE HEAT IS CONVERTED TO ELECTRICAL ENERGY ASSUMING A C COEFFICIENT OF PERFORMANCE CPERFORM BECAUSE THE RAW DEMAND C DATA IN countrystats.dat ASSUMES HEATING IS PROVIDED BY C HEAT PUMPS. THUS, FOR EXAMPLE, IF GEOTHERMAL PROVIDES X C UNITS OF HEAT, THE ELECTRICITY REQUIRED IS X / CPERFORM UNITS C CURCSP = CURRENT SOLAR POWER (TW) EXTRACTED FROM CSP AFTER T&D LOSSES C AFTER CSP BEYOND CUR CSP DISCHARGE RATE (EXTRACSP) PUT IN STORAGE C CURSOLHT = CURRENT SOLAR EXTRACTED FROM ROOF AND UTILITY HEAT C COLLECTORS (E.G., WATER OR GLYCOL SOLUTIONS) C OVER U.S. (TW) AFTER DISTRIBUTION LOSSES AND LOSSES FROM SOLAR C COLLECTOR ARE ACCOUNTED FOR (THUS, THIS IS ENERGY IN HOT FLUID) C THE HEAT IS CONVERTED TO ELECTRICAL ENERGY ASSUMING A C COEFFICIENT OF PERFORMANCE CPERFORM BECAUSE THE RAW DEMAND C DATA IN countrystats.dat ASSUMES HEATING IS PROVIDED BY C HEAT PUMPS. THUS, FOR EXAMPLE, IF SOLAR THERMAL PROVIDES X C UNITS OF HEAT, IT PROVIDES X / CPERFORM UNITS OF C ELECTRICITY TO RUN HEAT PUMPS TO GENERATE THAT HEAT C TWHONWIN = CUMULATIVE TWH ONSHORE WIND PRODUCED DURING SIM (AFTER T&D LOSSES) C TWHOFFWIN= CUMULATIVE TWH OFFSHORE WIND PRODUCED DURING SIM (AFTER T&D LOSSES) C TWHROOFPV= CUMULATIVE TWH ROOF PV PRODUCED DURING SIM (AFTER T&D LOSSES) C TWHUTILPV= CUMULATIVE TWH UTILITY PV PRODUCED DURING SIM (AFTER T&D LOSSES) C TWHCSP = CUMULATIVE TWH UTILITY CSP PRODUCED DURING SIM (AFTER T&D LOSSES) C TWHSTCSP = CUMULATIVE TWH OF CSP THAT GOES STRAIGHT TO STORAGE (AFTER T&D LOSS) C TWHHYD = CUMULATIVE TWH HYDRO PRODUCED DURING SIMULATION (AFTER T&D LOSSES) C TWHWAV = CUMULATIVE TWH WAVE PRODUCED DURING SIMULATION (AFTER T&D LOSSES) C TWHGEOEL = CUMULATIVE TWH GEOTHERMAL ELEC PROD DURING SIM (AFTER T&D LOSSES) C TWHTID = CUMULATIVE TWH TIDAL PRODUCED DURING SIMULATION (AFTER T&D LOSSES) C TWHTHEAT = CUMULATIVE TWH SOLAR THERMAL HEAT PROD DURING SIM (AFTER T&D LOSSES) C TWHGEOHT = CUMULATIVE TWH GEOTHERMAL HEAT PROD DURING SIM (AFTER T&D LOSSES) C TWHHYD = CUMULATIVE TWH HYDRO PRODUCED DURING SIMULATION (AFTER T&D LOSSES) C HRSSIM = NUMBER OF HOURS OF SIMULATION (HOURS) C CURGEOP = 2050 CONUS GEOTHERM ELEC (TW) EACH 1..IWWS TIME STEP AFTER T&D LOSSES C CURGEOH = 2050 CONUS GEOTHERM HEAT (TW) EACH 1..IWWS TIME STEP AFTER T&D LOSSES C THE HEAT WAS CONVERTED EARLIER TO ELECTRICAL ENERGY ASSUMING A C COEFFICIENT OF PERFORMANCE CPERFORM BECAUSE THE RAW DEMAND C DATA IN countrystats.dat ASSUMES HEATING IS PROVIDED BY C HEAT PUMPS. THUS, FOR EXAMPLE, IF GEOTHERMAL PROVIDES X C UNITS OF HEAT, IT PROVIDES X / CPERFORM UNITS OF C ELECTRICITY TO RUN HEAT PUMPS TO GENERATE THAT HEAT C CURTIDP = 2050 CONUS TIDAL (TW) EACH 1..IWWS TIME STEP AFTER T&D LOSSES C EXTRACSP = CSP SOLAR (TW) THAT CAN'T BE USED IMMEDIATELY BUT THAT CAN C GO STRAIGHT TO CSP STORAGE C CURHYD = 2050 HYDROELECTRIC DELIVERED POWER AFTER T&D LOSSES (TW) C FHYDBASE = FRACTION OF INSTANTANEOUS HYDRO OUTPUT CURHYD THAT IS BASELOAD C THE REST IS USED FOR PEAKING C BASEHYD = 2050 HYDROPOWER DELIVERED AS BASELOAD POWER (TW) C PEAKHYD = 2050 HYDROPOWER DELIVERED USED FOR PEAKING POWER (TW) C DEMAND(J) = CLOAD(J) * PERHRS(J) C SUPPLY(J) = (CURONSH( J) + CUROFFSH(J) 1 + CUROOFPV(J) + CURUTPV( J) + CURCSP(J) 1 + CURWAVP( J) + CURGEOP(J) 1 + CURTIDP( J) + BASEHYD) * PERHRS(J) SUPPHT(J) = (CURSOLHT(J) + CURGEOH(J)) * PERHRS(J) TWHONWIN = TWHONWIN + CURONSH( J) * PERHRS(J) TWHOFFWIN = TWHOFFWIN + CUROFFSH(J) * PERHRS(J) TWHROOFPV = TWHROOFPV + CUROOFPV(J) * PERHRS(J) TWHUTILPV = TWHUTILPV + CURUTPV( J) * PERHRS(J) TWHCSP = TWHCSP + CURCSP( J) * PERHRS(J) TWHSTCSP = TWHSTCSP + EXTRACSP(J) * PERHRS(J) TWHWAV = TWHWAV + CURWAVP( J) * PERHRS(J) TWHGEOEL = TWHGEOEL + CURGEOP( J) * PERHRS(J) TWHTID = TWHTID + CURTIDP( J) * PERHRS(J) TWHTHEAT = TWHTHEAT + CURSOLHT(J) * PERHRS(J) TWHGEOHT = TWHGEOHT + CURGEOH( J) * PERHRS(J) TWHHYD = TWHHYD + BASEHYD * PERHRS(J) HRSSIM = HRSSIM + PERHRS(J) C C TIMWWS = GMT HOURS PAST JAN. 1, 2050 (INITYEAR) AT 0 GMT FOR WWS SUPPLY DATA C GMTDAY = GMT DAYS PAST JAN. 1 AT 0 GMT C IGMTD = 1..NDSIM GMT DAY OF SIM, ACCOUNTING FOR LEAP YEARS. C (1 = JAN 1 OF FIRST YEAR; 2 = JAN 2, ETC.) C GMTHR = 0..23 GMT HOUR OF DAY, FOR ANY DAY OF THE YEAR C IGMTH = 1..24 GMT HOUR OF DAY, FOR ANY DAY OF THE YEAR C = 1 IS FOR TIME BETWEEN 0 AND 1 GMT C JGMTH = 1...NHRSIM GMT HOUR OF SIMULATION. 1 IS FOR TIME BETWEEN C 0 AND 1 GMT ON JAN 1 OF FIRST HEAR C GMTDAY = TIMWWS(J) / 24. IGMTD = INT(GMTDAY) + 1 GMTHR = MOD(TIMWWS(J),24.) IGMTH = INT(GMTHR) + 1 JGMTH = INT(TIMWWS(J)) + 1 C IF (IGMTD.GT.NDSIM.OR.JGMTH.GT.NHRSIM) THEN WRITE(IOUT,*)'POWERWORLD: IGMTD>NDSIM OR JGMTH>NHRSIM ', 1 IGMTD,NDSIM,JGMTH,NHRSIM, 1 TIMWWS(J),TIMLOAD(NHRSIM),J STOP ENDIF C C NTIMSTEPS = NUMBER OF J=1..IWWS TIME STEPS DURING GMT HOUR C NTIMSTEPS(JGMTH) = NTIMSTEPS(JGMTH) + 1 C C ENONWIN = CUR ENERGY (TWH) GEN BY ONSHORE WIND DUR PERIOD PERHRS AFTER T&D LOSS C ENOFFWIN= CUR ENERGY (TWH) GEN BY OFFSHORE WIND DUR PERIOD PERHRS AFTER T&D LOSS C ENROOFPV= CUR ENERGY (TWH) GEN BY ROOF PV DURING PERIOD PERHRS AFTER T&D LOSS C ENUTILV = CUR ENERGY (TWH) GEN BY UTIL PV DURING PERIOD PERHRS AFTER T&D LOSS C ENCSP = CUR ENERGY (TWH) GEN BY CSP ENERGY DURING PERIOD PERHRS AFTER T&D LOSS C ENSTCSP = EXCESS ENERGY (TWH) GEN BY CSP GOING DIRECT TO STORAGE AFTER T&D LOSS C ENWAV = CUR ENERGY (TWH) GEN BY WAVE DURING PERIOD PERHRS AFTER T&D LOSS C ENGEO = CUR ENERGY (TWH) GEN BY GEOTHERMAL DUR PERIOD PERHRS AFTER T&D LOSS C ENTID = CUR ENERGY (TWH) GEN BY TIDAL DURING PERIOD PERHRS AFTER T&D LOSS C ENHYD = CUR ENERGY (TWH) GEN BY HYDROPOWER DUR PERIOD PERHRS AFTER T&D LOSS C ENSHT = CUR ENERGY (TWH) GEN BY SOLAR-THERMAL DUR PERIOD PERHRS AFTER T&D LOSS C ENGHT = CUR ENERGY (TWH) GEN BY GEOTH HEAT DUR PERIOD PERHRS AFTER T&D LOSS C TDRATMN = TDLOSMN / TDEFFMN. MULT ENERGY (TWH) DELIVERED AFTER T&D LOSSES C BY TDRATMN TO OBTAIN T&D ENERGY LOSS (TWH) C HRCNT = NUMBER OF HOURS OF SIMULATION FOR EACH GMT HOUR 1..24 C HRINFLX = INFLEXIBLE ELEC LOAD EACH DAY OF SIM (TWH) FOR EACH 1..24 GMT HOUR C INCLUDES INLEXIBLE LOADS UNSATISFIED BY HEAT+COLD STORAGE THAT MUST C BE MET IMMEDIATELY BY ELECTRICITY. C ORIGLD = INFLEX+FLEXIBLE (FLEXLOAD+COLDTWH+WARMTWH+FLEXH2LD) LOAD C EACH HOUR OF SIM (TWH) FOR EACH 1..24 GMT C HOURS BEFORE SHIFTING TIME OF LOAD DUE TO DEMAND RESPONSE C HRONWIN = CUM ONSHORE WIND PROD OVER YEAR (TWH) FOR EACH 1..24 GMT HOUR C AFTER T&D LOSSES C HROFFWD = CUM OFFSHORE WIND PROD OVER YEAR (TWH) FOR EACH 1..24 GMT HOUR C AFTER T&D LOSSES C HRROOF = CUM ROOF PV PRODUCTION OVER YEAR (TWH) FOR EACH 1..24 GMT HOUR C AFTER T&D LOSSES C HRUTPV = CUM UTIL PV PRODUCTION OVER YEAR (TWH) FOR EACH 1..24 GMT HOUR C AFTER T&D LOSSES C HRCSP = CUM CSP PRODUCTION OVER YEAR (TWH) FOR EACH 1..24 GMT HOUR C AFTER T&D LOSSES C HRWAVE = CUM WAVE POW PROD EACH 1..24 GMT HR OF YEAR (TWH) AFTER T&D LOSSES C AFTER T&D LOSSES C HRGEOT = CUM GEOT POW PROD EACH 1..24 GMT HR OF YEAR (TWH) AFTER T&D LOSSES C AFTER T&D LOSSES C HRTIDE = CUM TIDE POW PROD EACH 1..24 GMT HR OF YEAR (TWH) AFTER T&D LOSSES C AFTER T&D LOSSES C HRHYDR = CUM HYDRO PROD EACH 1..24 GMT HR OF YEAR (TWH) AFTER T&D LOSSES C DIVIDE BY TDEFFMN(IHYDRO) AT END OT ACCOUNT FOR T&D LOSSES C HRSHT = CUM SOLAR-HEAT PRODUCTION OVER YEAR (TWH) FOR EACH 1..24 GMT HOUR C AFTER T&D LOSSES C HRGHT = CUM GEOTHERMAL HEAT PROD OVER YEAR (TWH) FOR EACH 1..24 GMT HOUR C AFTER T&D LOSSES C HRSUPP = CUM WIND+SOLAR+HYDRO+GEO+TIDAL+WAVE OVER YEAR (TWH) C FOR EACH 1..24 GMT HR C THIS IS SUPPLY AFTER T&D LOSSES ARE TAKEN OUT C HRTDLS = CUM WWS-ELECTRICITY TRANS&DIST LOSS OVER YEAR (TWH) C + SOLAR THERMAL DISTRIBUTION LOSS OVER YEAR (TWH) C FOR EACH 1..24 GMT HR. C TWHSUPPLY = TOTAL TWH OF ENERGY SUPPLIED BY WWS ELEC+HEAT DURING SIMULATION C AFTER T&D LOSSES ACCOUNTED FOR. THIS INCLUDES CURTAILED WIND/SOL C EXTRACSP = CSP SOLAR (TW) THAT CAN'T BE USED IMMEDIATELY BUT THAT CAN C GO STRAIGHT TO CSP STORAGE C ENONWIN = CURONSH( J) * PERHRS(J) ENOFFWIN = CUROFFSH(J) * PERHRS(J) ENROOFPV = CUROOFPV(J) * PERHRS(J) ENUTILPV = CURUTPV( J) * PERHRS(J) ENCSP = CURCSP( J) * PERHRS(J) ENSTCSP = EXTRACSP(J) * PERHRS(J) ENWAV = CURWAVP( J) * PERHRS(J) ENGEO = CURGEOP( J) * PERHRS(J) ENTID = CURTIDP( J) * PERHRS(J) ENHYD = BASEHYD * PERHRS(J) ENSHT = CURSOLHT(J) * PERHRS(J) ENGHT = CURGEOH( J) * PERHRS(J) C HRCNT( IGMTH,IGMTD) = HRCNT( IGMTH,IGMTD) + PERHRS(J) HRINFLX(IGMTH,IGMTD) = HRINFLX(IGMTH,IGMTD) + DEMAND(J) ORIGLD( IGMTH,IGMTD) = ORIGLD( IGMTH,IGMTD) + DEMAND(J) HRONWIN(IGMTH,IGMTD) = HRONWIN(IGMTH,IGMTD) + ENONWIN HROFFWD(IGMTH,IGMTD) = HROFFWD(IGMTH,IGMTD) + ENOFFWIN HRROOF( IGMTH,IGMTD) = HRROOF( IGMTH,IGMTD) + ENROOFPV HRUTPV( IGMTH,IGMTD) = HRUTPV( IGMTH,IGMTD) + ENUTILPV HRCSP( IGMTH,IGMTD) = HRCSP( IGMTH,IGMTD) + ENCSP + ENSTCSP HRWAVE( IGMTH,IGMTD) = HRWAVE( IGMTH,IGMTD) + ENWAV HRGEOT( IGMTH,IGMTD) = HRGEOT( IGMTH,IGMTD) + ENGEO HRTIDE( IGMTH,IGMTD) = HRTIDE( IGMTH,IGMTD) + ENTID HRHYDR( IGMTH,IGMTD) = HRHYDR( IGMTH,IGMTD) + ENHYD HRSHT( IGMTH,IGMTD) = HRSHT( IGMTH,IGMTD) + ENSHT HRGHT( IGMTH,IGMTD) = HRGHT( IGMTH,IGMTD) + ENGHT HRSUPP( IGMTH,IGMTD) = HRSUPP( IGMTH,IGMTD) 1 + SUPPLY(J) + SUPPHT(J) + ENSTCSP TWHSUPPLY = TWHSUPPLY 1 + SUPPLY(J) + SUPPHT(J) + ENSTCSP C HRTDLS(IGMTH,IGMTD) = HRTDLS(IGMTH,IGMTD) 1 + TDRATMN(IONWIND) * ENONWIN 1 + TDRATMN(IOFFWIND) * ENOFFWIN 1 + TDRATMN(IRESPV) * ENROOFPV 1 + TDRATMN(IUTILPV) * ENUTILPV 1 + TDRATMN(ICSPSTOR) * (ENCSP + ENSTCSP) 1 + TDRATMN(IWAVE) * ENWAV 1 + TDRATMN(IGEOEL) * ENGEO 1 + TDRATMN(ITIDAL) * ENTID 1 + TDRATMN(IHYDRO) * ENHYD 1 + TDRATMN(ISOLTHM) * ENSHT 1 + TDRATMN(IGEOHT) * ENGHT GOTO 220 ENDIF 216 CONTINUE C CONTINUE I = 1, MXLOADYR - 1 220 CONTINUE C CONTINUE J = 1, IWWS C C ***************************************************************************** C PRINT MAX, MIN LOADS AND RAMP RATES EACH YEAR C ***************************************************************************** C AMAXLOAD = MAXIMUM LOAD (TW) ANY TIME BETWEEN 1..NYEARS C AMINLOAD = MINIMUM LOAD (TW) ANY TIME BETWEEN 1..NYEARS C TIMAXLOAD = HOUR OF SIMULATION OF MAXIMUM LOAD AMAXLOAD C TIMINLOAD = HOUR OF SIMULATION OF MINIMUM LOAD AMINLOAD C RAMPMAX = MAX LOAD RAMP RATE (TW/HR) (UP OR DOWN) BETWEEN TWO CONSEC TIMES C TIMAXRAMP = HOUR OF SIMULATION OF END OF GREATEST RAMP RAMPMAX C YRLOAD = ANNUAL AVERAGE LOAD (TW) FOR EACH 1..MXYLOAD YEAR ((2006 TO 2016) C FOR ELECTRICITY-ONLY LOAD DATA READ IN C LOADYR = ACTUAL YEAR OF LOAD DATA (2006 TO 2016) C IYLOAD = 1..MXYLOAD YEAR OF LOAD DATA (MXYLOAD = 11: 2006 TO 2016) C FOR CURRENT I=1, NYEARS YEAR OF SIMULATION C TNONHC = ANNUAL AVG TOTAL INFLEXIBLE LOAD (TW) THAT IS NOT HOT OR COLD LOAD C WRITE(IOUT,329) LOADYR = IBEGYLOAD - 1 DO I = 1, NYEARS LOADYR = LOADYR + 1 IYLOAD = LOADYR - IYBEFORE WRITE(IOUT,129) I, LOADYR, AMAXLOAD(I), TIMAXLOAD(I), 1 AMINLOAD(I), TIMINLOAD(I), 1 RAMPMAX( I), TIMAXRAMP(I), 1 TNONHC/YRLOAD(IYLOAD),TNONHC,YRLOAD(IYLOAD) 129 FORMAT(I2,I5,3(0PF8.4,0PF8.1),0PF8.4,2(0PF9.5)) 329 FORMAT('# YEAR MAXLOAD(TW) TMAX(HR) MIN TMIN RAMPMX(TW/H)' 1 ,'TRAMP TNONHC/YRLD TNONHC YRLOAD') ENDDO C ENDDO I = 1, NYEARS C C ********************************************************************* C DETERMINE IF LOAD CAN BE MATCHED C ********************************************************************* C TIMWWS = GMT HOURS PAST JAN. 1, 2050 (INITYEAR) AT 0 GMT FOR WWS SUPPLY DATA C TIMLOAD = GMT HOUR OF SIMULATION (0.5 = 0-1 GMT JANUARY 1) CORRESPONDING TO C TIME OF LOAD DATA. VARIES FROM 0.5..NHRSIM-0.5 C BLOAD = 2050 HOURLY INFLEXIBLE LOAD DATA (TW) FOR GRID REGION FROM LOAD DATA C EXTRAPOLATED TO 2050 C CLOAD = VALUES OF BLOAD (TW) FOR EACH TIMWWS TIME INCREMENT C C COPY LOAD DATA (TW) TO EACH TIME THAT WWS DATA AVAILABLE. POWER IS C INSTANTANEOUS SO NO NEED TO CHANGE UNITS. C POWMXOUT = 0. POWMXIN = 0. IGMTDLAST = 0 REMAINDEM = 0. TLOADALL = 0. TLOADFLX = 0. SUPPMAX = 0. JGMTHLAST = 0 REDFLEX = 0. C C IGMTD = 1..NDSIM GMT DAY OF SIM, ASSUMING 365-DAY YEARS AND NO LEAP YEARS C (1 = JAN 1 OF FIRST YEAR; 2 = JAN 2, ETC.) C GMTHR = 0..23 GMT HOUR OF DAY, FOR ANY DAY OF THE YEAR C IGMTH = 1..24 GMT HOUR OF DAY, FOR ANY DAY OF THE YEAR C = 1 IS FOR TIME BETWEEN 0 AND 1 GMT C IGMTY = 1...NYEARS YEAR OF SIMULATION. IGMTD=1 OR 365-->IGMTY=1; C IGMTD=366 OR 730-->IGMTY=2 C JGMTH = 1...NHRSIM GMT HOUR OF SIMULATION. 1 IS FOR TIME BETWEEN C 0 AND 1 GMT ON JAN 1 OF FIRST HEAR C NHRSIM = TOTAL NUMBER OF HOURS OF MODEL SIMULATION HERE C WRITE(IOUT,208) 208 FORMAT(/'IGMTD DEMANDNEW DEMINFLEX REMAINDEM ', 1 'SUPPLY SUPPHT WARMTWH COLDTWH FLEXLOAD FLEXH2LD ', 1 'FLEXLOAD+FLEXH2LD+WARMTWH+COLDTWH ', 1 'STORCCUR STORPCUR STORBCUR STOROCUR STORHCUR UGSTORCUR ', 1 'HYDROTWH H2CURSTOR CUMSHED ', 1 'HYDISCHTW*PERHRS UTESDISCH*PERHRS/RTUGEFF ') C DO 250 J = 1, IWWS IF (TIMWWS(J).GT.0.AND.TIMWWS(J).LT.TIMLOAD(NHRSIM)) THEN C GMTDAY = TIMWWS(J) / 24. IGMTD = INT(GMTDAY) + 1 GMTHR = MOD(TIMWWS(J),24.) IGMTH = INT(GMTHR) + 1 IGMTY = INT(IGMTD/365) + 1 JGMTH = INT(TIMWWS(J)) + 1 C IF (IGMTD.GT.NDSIM.OR.JGMTH.GT.NHRSIM) THEN WRITE(IOUT,*)'POWERWORLD2: IGMTD>NDSIM OR JGMTH>NHRSIM ', 1 IGMTD,NDSIM,JGMTH,NHRSIM STOP ENDIF C C ********************************************************************* C ADD EXTRA CSP SOLAR COLLECTED FROM MIRRORS BEYOND GENERATOR CAPACITY C STRAIGHT TO CSP STORAGE C ********************************************************************* C STORCCUR = CURRENT ENERGY AVAILABLE IN CSP STORAGE (TWH) C STORCTWH = MAX NUMBER OF TWH OF CSP STORAGE C EXTRACSP = CSP SOLAR (TW) THAT CAN'T BE USED IMMEDIATELY BUT THAT CAN C GO STRAIGHT TO CSP STORAGE C RTCSPEFF = SQRT(EFFCSP) C = FRACTION OF ENERGY ADDED TO OR REMOVED FROM PHASE-CHANGE MATERIAL C IN CSP THAT IS NOT LOST DUE TO T&D LOSSES C APPLY RTCSPEFF SEPARATELY DURING CHARGING AND DISCHARGING. C HCSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) CSP STORAGE C EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST COMING C IN AND OUT OF STORAGE C HCSTLS = CUM ENERGY LOSS COMING OUT OF CSP STORAGE OVER YEAR (TWH) C FOR EACH 1..24 GMT HR C HCSTLI = CUM ENERGY LOSS GOING INTO CSP STORAGE ONLY OVER YEAR (TWH) C FOR EACH 1..24 GMT HR C = SAME AS HCSTLS, EXCEPT INCLUDES ONLY LOSSES OF ENERGY INTO C STORAGE (THOSE THAT ARE NOT INCLUDED IN STORAGE). C HRSHED = CUM WIND+SOLAR SHED/CURTAIL (TWH) WHEN EXCESS SUPPLY & STORAGE FILLED C EXCESS = EXTRACSP(J) * PERHRS(J) STORADD = MIN(EXCESS * RTCSPEFF, STORCTWH-STORCCUR) STORCCUR = STORCCUR + STORADD EFFLOS = STORADD / RTCSPEFF - STORADD HCSTOR(IGMTH,IGMTD) = HCSTOR(IGMTH,IGMTD) + STORADD HCSTLI(IGMTH,IGMTD) = HCSTLI(IGMTH,IGMTD) + EFFLOS EXCESS = EXCESS - STORADD - EFFLOS HRSHED(IGMTH,IGMTD) = HRSHED(IGMTH,IGMTD)+MAX(EXCESS,0.) C C ********************************************************************* C ADD NEW SUPPLY HYDRO (TWH) EACH TIME STEP - LIMITED IN ANNUAL AVERAGE C BY CURRENT ANNUAL ENERGY SUPPLY (TWH). USE SOME OF HYDRO FOR BASELOAD C AND REST FOR PEAKING. C ********************************************************************* C HYDROTWH = TWH OF AVAILABLE HYDRO POWER FOR PEAKING DURING YEAR C INITIALIZE AS IF RESERVOIR HOLDS CUR ANNUAL ENERGY C (CURHYD*MXHPYEAR/TDEFFMN IN TWH). EACH TIME STEP, RIVERS ADD C PEAKHYD*PERHRS/TDEFFMN TWH. RESERVOIR ALSO ADDS C BASEHYD*PERHRS/TDEFFMN TWH EACH TIME STEP, BUT THIS IS NOT C STORED IN HYDROTWH. HYDRO IS SUBTRACTED FROM HYDROTWH DURING YEAR C UP TO HYDROTWH AVAILABLE OR ACCUMULATED UP TO HYDTHRESH TWH C HYDROTWH INCLUDES ENERGY NEEDED FOR T&D LOSSES C CURHYD = 2050 U.S. HYDROELECTRIC DELIVERED POWER (TW) C BASEHYD = 2050 HYDROPOWER DELIVERED AS BASELOAD POWER (TW) C PEAKHYD = 2050 HYDROPOWER DELIVERED USED FOR PEAKING POWER (TW) C PERHRS = TIME INCREMENT (HOURS) FOR EACH WWS SUPPLY TIME INTERVAL C HYDROTWH = HYDROTWH + PEAKHYD * PERHRS(J) / TDEFFMN(IHYDRO) C C REDFLEX = REMAINHR(LASTDAYHR) / NTIMSTEPS(JGMTH) C = REDUCTION (TWH) IN FLEXIBLE LOAD IN CURRENT HOUR THAT C WAS NOT MET WITHIN LAST MXHRDRM HOURS. CONVERT THAT FLEXIBLE C LOAD TO INFLEXIBLE LOAD. DIVIDE REMAINHR FROM MXHRDRM HOURS C PREVIOUSLY BY NTIMSTEPS FOR CURRENT HOUR SINCE NTIMSTEPS C IS THE NUMBER OF STEPS IN CURRENT HOUR THAT REDUCTION C MUST OCCUR IN C REMAINHR = REMAINING FLEXIBLE LOAD (TWH) THAT MUST BE MET IN A GIVEN DAY, C FOR EACH GMT HOUR OF THE SIMULATION. THE SUM OF REAINHR C OVER ALL HOURS EQUAL REMAINDEM AT ANY POINT. C LASTDAYHR = GMT HOUR CORRESPONDING TO 24 HOURS BEFORE CURRENT HOUR C MXHRDRM = MAX NUMBER OF HOURS FORWARD THAT LOAD CAN BE SHIFTED BY C DEMAND-RESPONSE MANAGEMENT C NTIMSTEPS = NUMBER OF J=1..IWWS TIME STEPS DURING GMT HOUR C IF (JGMTH.NE.JGMTHLAST) THEN JGMTHLAST = JGMTH IF (JGMTH.GT.MXHRDRM) THEN LASTDAYHR = JGMTH - MXHRDRM REDFLEX = REMAINHR(LASTDAYHR) / NTIMSTEPS(JGMTH) ELSE REDFLEX = 0. ENDIF ENDIF C C ********************************************************************* C SPECIFY LOADS THAT CAN BE SHIFTED WITH DEMAND-RESPONSE OR SUPPLIED WITH C STORAGE. C ********************************************************************* C IFGATHEAT = 1: READ IN AND USE BUILDING HEATING AND COOLING ENERGY NEEDED EACH C TIME STEP FOR EACH COUNTRY IN wwssupworld.dat (wwssupply.xxx) C THIS IS USED TO SHAPE TIME-DEPENDENT HEATING/COOLING PROFILES C --> THIS AVOIDS USING DATA FROM heatcooldd.dat TO DO THIS C = 2: READ IN BUT DO NOT USE BUILDING HEATING AND COOLING ENERGY C INSTEAD USE HEATING-DEGREE AND COOLING-DEGREE DAY DATA C FROM heatcooldd.dat C = 0: DO NOT READ IN OR USE HEATING OR COOLING ENERGY C THIS IS USED ONLY WHEN PREVIOUS FORMAT W/O HEAT IS USED C COLDTWH = TWH OF COLD CURRENTLY NEEDED FROM STORAGE (CW-STES + PCM-ICE) OR C FROM CURRENT COLD PRODUCTION C WARMTWH = TWH OF HEAT CURRENTLY NEEDED FROM STORAGE (STORHCUR OR UGSTORCUR) C OR FROM CURRENT HEAT PRODUCTION C IT IS REALLY THE ELECTRICAL ENERGY NEEDED FOR A HEAT PUMP WITH A C COEFF OF PERFORMANCE CPERFORM NEEDED TO SUPPLY A LARGER C AMOUNT OF HEAT THAN WARMTWH C TCOOLDAY = LOAD ON SPECIFIC DAY (TW) FOR COOLING (AC & REFRIG) C TWARMDAY = LOAD ON SPECIFIC DAY OF YEAR (TW) FOR HEATING AIR AND WATER C PERHRS = TIME INCREMENT (HOURS) FOR EACH WWS SUPPLY TIME INTERVAL C CURHLOAD = CURRENT BUILDING HEAT LOAD (TW) FOR REGION AFTER SCALING C ANNUAL AVG HEAT LOAD BY CURRENT TO AVG LOAD IN GATOR-GCMOM C CURCLOAD = CURRENT BUILDING COLD LOAD (TW) FOR REGION AFTER SCALING C ANNUAL AVG COLD LOAD BY CURRENT TO AVG LOAD IN GATOR-GCMOM C CURFLOAD = TLOADDRM, BUT WITH COLDFLEX AND HOTFLEX CONVERTED FROM C ANNUAL AVERAGE NUMBERS TO TIME-DEPENDENT NUMBERS WITH SAME C ANNUAL AVERAGE TOTA CONVERTED FROM C FLEXLOAD = 2050 FLEXIBLE LOAD (TWH) ADDED EACH TIME INCREMENT C TO BE POWERED BY ELECTRICITY SUBJECT TO DEMAND RESPONSE. C THIS GETS SHIFTED DURING THE DAY C THIS DOES NOT INCLUDE SOLAR-HEAT SUPPLIED BY HW-STES OR UTES C OR COLD SUPPLIED BY CW-STES OR PCM-ICE C FLEXH2LD = 2050 FLEXIBLE LOAD (TWH) DUE TO H2 PROD/COMPRESS/STOR ADDED C EACH TIME INCREMENT. THE H2 IS EITHER DRAWN FROM ACCUMULATED H2 C STORAGE FROM ANY PREVIOUS TIME OR PRODUCED FROM CURRENT ELECTRICITY C DAYFLEX = FLEX LOAD (TW) FROM DEMAND-RESPONSE EACH GMT DAY OF YEAR C DOES NOT INCLUDE COOLING LOAD, HEATING LOAD OR LOAD FOR C H2 PRODUCTION. C H2FLEX = FLEX LOAD (TW) FOR H2 PROD/COMPRESS/STORAGE. H2 LOAD FOR C TRANSPORT/INDUSTRY IS ASSUMED CONSTANT DURING YEAR C H2INFLEX = INFLEXIBLE H2 LOAD (TWH), WHICH IS INSTANTANEOUS LOAD REQUIRED C FOR H2 NOT AVAILABLE FROM STORAGE. STARTS AT ZERO, INCREASES C DURING TIME STEP ONLY WHEN H2 FROM STORAGE NOT AVAILABLE. C HCINFLEX = INFLEXIBLE HEAT AND COLD LOAD (TWH). HEAT AND COLD LOAD C NOT SATISFIED BY HEAT OR COLD STORAGE MUST BE SATISFIED BY C ELECTRICAL STORAGE. OF THE REMAINING HEAT/COLD LOAD, FRACTIONS C FHEATFLX, FCOLDFLX`ARE SUBJECT TO DEMAND RESPONSE AND REST MUST C BE SATISFIED IMMEDIATELY. C IF (IFGATHEAT.EQ.1) THEN WARMTWH = CURHLOAD(J) * PERHRS(J) COLDTWH = CURCLOAD(J) * PERHRS(J) FLEXLOAD = CURFLOAD(J) * PERHRS(J) ELSE WARMTWH = TWARMDAY(IGMTD) * PERHRS(J) COLDTWH = TCOOLDAY(IGMTD) * PERHRS(J) FLEXLOAD = DAYFLEX( IGMTD) * PERHRS(J) ENDIF C FLEXH2LD = H2FLEX( IGMTD) * PERHRS(J) H2INFLEX = 0. HCINFLEX = 0. C C ORIGLD = INFLEX+FLEXIBLE (FLEXLOAD+COLDTWH+WARMTWH+FLEXH2LD) LOAD C EACH HOUR OF SIM (TWH) FOR EACH 1..24 GMT C HOURS BEFORE SHIFTING TIME OF LOAD DUE TO DEMAND RESPONSE C COLDHR = TWH COLD LOAD NEEDED FROM STORAGE (CW-STES + PCM-ICE) OR C CURRENT PRODUCTION, EACH HOUR OF SIMULATION C = COLDTWH + CINFXCLD*PERHRS C WARMHR = TWH WARM LOAD NEEDED FROM STORAGE (STORHCUR OR UGSTORCUR) C OR STORED ELECTRICITY OR CUR ELECTRICITY OR HEAT EACH C HOUR OF SIM. = WARMTWH + CINFXHLD*PERHRS C IT IS REALLY THE ELECTRICAL ENERGY NEEDED FOR A HEAT PUMP WITH A C COEFF OF PERFORMANCE CPERFORM NEEDED TO SUPPLY WARMTH C HOTHOUR = CURRENT HOUR TOTAL INFLEXIBLE HOT LOAD (TW) ACROSS ALL SECTORS C COLDHOUR = CURRENT HOUR TOTAL INFLEXIBLE COLD LOAD (TW) ACROSS ALL SECTORS C CURCFLEX = CURRECT LOAD (TW) SUBJECT TO DRM THAT IS BUILDING COLD LOAD C CURHFLEX = CURRECT LOAD (TW) SUBJECT TO DRM THAT IS BUILDING HEAT LOAD C COLDFLEX = PORTION OF COLD LOAD (TW) NOT MET BY STORAGE THAT CAN C BE MET BY DEMAND RESPONSE. C HOTFLEX = PORTION OF WARM LOAD (TW) NOT MET BY STORAGE THAT CAN C BE MET BY DEMAND RESPONSE. C ORIGLD(IGMTH,IGMTD) = ORIGLD(IGMTH,IGMTD) 1 + FLEXLOAD + COLDTWH + WARMTWH + FLEXH2LD C IF (IFGATHEAT.EQ.1) THEN COLDHR(IGMTH,IGMTD) = COLDHR(IGMTH,IGMTD) + COLDTWH 1 + (CINFXCLD(J) + CURCFLEX(J)) * PERHRS(J) WARMHR(IGMTH,IGMTD) = WARMHR(IGMTH,IGMTD) + WARMTWH 1 + (CINFXHLD(J) + CURHFLEX(J)) * PERHRS(J) ELSE COLDHR(IGMTH,IGMTD) = COLDHR(IGMTH,IGMTD) + COLDTWH 1 + (COLDHOUR(JGMTH) + COLDFLEX) * PERHRS(J) WARMHR(IGMTH,IGMTD) = WARMHR(IGMTH,IGMTD) + WARMTWH 1 + (HOTHOUR(JGMTH) + HOTFLEX) * PERHRS(J) ENDIF C C ********************************************************************* C SATISFY CURRENT H2 LOAD FROM STORED H2 IF AVAILABLE C ********************************************************************* C H2CURSTOR = CUR STORED H2 (TWH-ELECTRICITY USED TO PRODUCE/COMPRESS/STORE H2) C H2STOR = CUM NET TWH ENERGY ADDED TO PRODUCING/COMPRESSING/STORING (+) C SUBTRAC FROM USING (-) H2 EACH 1..24 GMT HR. INCL EN FOR LEAKED H2 C H2LOAD = CUM FLEX H2 LOAD COMING FROM H2 STORAGE OVER YEAR (TWH) C FOR EACH 1..24 GMT HOUR C TWHSTORH2 = TWH OF H2 LOAD MET BY H2 PREVIOUSLY IN STORAGE C TWHELECH2 = TWH OF H2 LOAD MET BY H2 PRODUCED FROM CURRENT ELECTRICITY C H2NEEDED = H2 NEEDED (TWH) FROM CURRENT ELECTRIC POWER SUPPLY. ADD H2 C NEEDED TO INFLEXIBLE LOAD C FLEXLOAD = 2050 FLEXIBLE LOAD (TWH) ADDED EACH TIME INCREMENT C TO BE POWERED BY ELECTRICITY SUBJECT TO DEMAND RESPONSE. C THIS GETS SHIFTED DURING THE DAY C THIS DOES NOT INCLUDE SOLAR-HEAT SUPPLIED BY HW-STES OR UTES C OR COLD SUPPLIED BY CW-STES OR PCM-ICE C FLEXH2LD = 2050 FLEXIBLE LOAD (TWH) DUE TO H2 PROD/COMPRESS/STOR ADDED C EACH TIME INCREMENT. THE H2 IS EITHER DRAWN FROM ACCUMULATED H2 C STORAGE FROM ANY PREVIOUS TIME OR PRODUCED FROM CURRENT ELECTRICITY C TLOADFLX = 2050 TOTAL FLEXIBLE LOAD + LOAD SUBJECT TO HEAT AND COLD STORAGE C PLUS H2 LOAD (TWH) OVER SIMULATION C H2INFLEX = INFLEXIBLE H2 LOAD (TWH), WHICH IS INSTANTANEOUS LOAD REQUIRED C FOR H2 NOT AVAILABLE FROM STORAGE. STARTS AT ZERO, INCREASES C DURING TIME STEP ONLY WHEN H2 FROM STORAGE NOT AVAILABLE. C C MORE H2 IN STORAGE THAN CURRENT LOAD C IF (H2CURSTOR.GE.FLEXH2LD) THEN H2CURSTOR = H2CURSTOR - FLEXH2LD H2LOAD( IGMTH,IGMTD) = H2LOAD( IGMTH,IGMTD) + FLEXH2LD H2STOR( IGMTH,IGMTD) = H2STOR( IGMTH,IGMTD) - FLEXH2LD TWHSTORH2 = TWHSTORH2 + FLEXH2LD TLOADFLX = TLOADFLX + FLEXH2LD C C NOT ENOUGH H2 IN STORAGE --> ADD H2 LOAD TO FLEXLOAD C ELSE C H2NEEDED = FLEXH2LD - H2CURSTOR H2LOAD( IGMTH,IGMTD) = H2LOAD( IGMTH,IGMTD) + H2CURSTOR H2STOR( IGMTH,IGMTD) = H2STOR( IGMTH,IGMTD) - H2CURSTOR TWHSTORH2 = TWHSTORH2 + H2CURSTOR TLOADFLX = TLOADFLX + H2CURSTOR H2INFLEX = H2INFLEX + H2NEEDED H2CURSTOR = 0. ENDIF C C ********************************************************************* C ADD EXCESS SOLAR-HOT-FLUID HEAT PRODUCED ABOVE HOT AIR/WATER DEMAND C TO BOILERS/WATER HEATERS (HW-STES) AND UNDERGROUND UTES HEAT STORAGE C ********************************************************************* C EXCESSSUP = EXCESS (+) HEAT SUPPLY OVER DEMAND (TWH) C = SUPPHT(J) - WARMTWH C WHEN EXCESSSUP <0, DEMAND EXCEEDS SUPPLY AND C -EXCESSSUP = EXCESS DEMAND C WARMTWH = TWH OF HEAT CURRENTLY NEEDED FROM STORAGE (STORHCUR OR UGSTORCUR) C OR FROM CURRENT HEAT PRODUCTION C IT IS REALLY THE ELECTRICAL ENERGY NEEDED FOR A HEAT PUMP WITH A C COEFF OF PERFORMANCE CPERFORM NEEDED TO SUPPLY A LARGER C AMOUNT OF HEAT THAN WARMTWH C SUPPHT = CURRENT HEAT (TWH) FROM SOLAR HOT WATER OR GLYCOL SOLUTION COLLECTORS C OR GEOTHERMAL HEAT OVER TIME INTERVAL PERHRS - AFTER DISTRIBUTION LOSSES C ACCOUNTED FOR AND AFTER COLLECTOR EFFICIENCY ACCOUNTED FOR. C THE HEAT IS CONVERTED TO ELECTRICAL ENERGY ASSUMING A C COEFFICIENT OF PERFORMANCE CPERFORM BECAUSE THE RAW DEMAND C DATA IN countrystats.dat ASSUMES HEATING IS PROVIDED BY C HEAT PUMPS. THUS, FOR EXAMPLE, IF GEOTHERMAL PROVIDES X C UNITS OF HEAT, THE ELECTRICITY REQUIRED IS X / CPERFORM UNITS C SUPPHT CAN BE USED DIRECTLY WITH NO MORE EFFICIENCY LOSSES C OR SENT TO STORAGE (WITH ADDITIONAL EFFICIENCY LOSSES) C EXCESSSUP = SUPPHT(J) - WARMTWH C C NECESSARY TO MULTIPLY MAX CHARGE RATE BY RTUGEFF HERE SINCE C MULTIPLYING ONLY EXCESSSUP ALLOWS MORE HEAT INTO STORAGE THAN CAN C BE PRODUCED. C IF (EXCESSSUP.GT.0.) THEN C C ********************************************************************* C ADD EXCESS HEAT TO BOILERS / HOT WATER TANKS (HW-STES) C ********************************************************************* C HWADD = TWH ADDED TO HW-STES STORAGE C HWLOSS = TWH LOST DURING CHARGING OF HW-STES STORAGE C HOTCHARG = MAX CHARGE RATE (TW) OF HOT WATER (HW)-STES C REALLY MAX CHARGE RATE OF ELECTRICITY TO C PRODUCE THE HEAT SINCE HEAT LOAD CONVERTED TO ELECTRICAL LOAD C THAT WOULD PRODUCE THAT HEAT WITH HEAT PUMPS IN C countrystats.dat C RTHTESEF = SQRT(EFFHSTES). C = FRACTION OF ENERGY IN HW-STES ADDED TO/REMOVED FROM C HW-STES THAT IS NOT LOST, DUE TO T&D LOSSES C APPLY SEPARATELY DURING CHARGING AND DISCHARGING. C STORHTWH = MAX STORAGE CAPACITY (TWH) OF HW-STES STORAGE C STORHCUR = CURRENT ENERGY (TWH) AVAILABLE IN HW-STES STORAGE C HTSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) HW-STES STORAGE C EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST COMING C IN AND OUT OF HW-STES STORAGE C HTSTLI = CUM ENERGY LOSS COMING INTO HW-STES STORAGE ONLY OVER YEAR (TWH) C FOR EACH 1..24 GMT HR C HWADD = MIN(EXCESSSUP * RTHTESEF, 1 HOTCHARG * PERHRS(J) * RTHTESEF, 1 STORHTWH - STORHCUR) STORHCUR = STORHCUR + HWADD HWLOSS = HWADD / RTHTESEF - HWADD HTSTOR( IGMTH,IGMTD) = HTSTOR(IGMTH,IGMTD) + HWADD HTSTLI( IGMTH,IGMTD) = HTSTLI(IGMTH,IGMTD) + HWLOSS EXCESSSUP = MAX(EXCESSSUP - HWADD - HWLOSS,0.) C C ********************************************************************* C ADD REMAINING EXCESS HEAT TO UNDERGROUND SOIL OR WATER (UTES) C ********************************************************************* C UGADD = TWH ADDED TO UTES STORAGE C UGLOSS = TWH LOST DURING CHARGING OF UTES STORAGE C TWINUTES = MAX CHARGE RATE (TW) OF UTES STORAGE FROM SOLAR THERMAL COLLECTORS C RTUGEFF = SQRT(EFFUTES) C = FRACTION OF ENERGY IN HEATED FLUID ADDED TO/REMOVED C FROM UNDERGROUND STORAGE THAT IS NOT LOST DUE TO T&D LOSSES C APPLY RTUGEFF SEPARATELY DURING CHARGING AND DISCHARGING. C RTUGEFF^2=EFFUTES = OVERALL EFFIC OF HEATING SOIL WITH HEATED C FLUID THEN RETURNING HEAT TO FLUID IN OPPOSITE SEASON AND C USING THE HEATED FLUID TO HEAT AIR OR WATER. C EFFUTES IS EFFICIENCY AFTER EITHER FLUID HAS ALREADY BEEN HEATED C FROM ELECTRICITY OR SUN C UTESTWH = MAX STORAGE CAPACITY (TWH) UNDERGROUND SEAS HEAT STORAGE IN SOIL OR WATER C REALLY TWH OF ELECTRICITY STORAGE THAT GIVES NECESSARY C HEATING FROM HEAT PUMPS WITH COP=CPERFORM C UGSTORCUR = CURRENT ENERGY IN UNDERGROUND SOIL OR WATER STORAGE (TWH) C REALLY CURRENT TWH OF ELECTRICITY STORED IN UTES THAT GIVES NECESSARY C HEATING FROM HEAT PUMPS WITH COP=CPERFORM C UGSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) UNDERGROUND STORAGE C EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST COMING C IN AND OUT OF UNDERGROUND STORAGE C REALLY TWH OF ELECTRICITY STORAGE ADDED THAT GIVES NECESSARY C HEATING FROM HEAT PUMPS WITH COP=CPERFORM C UGSTLI = CUM ENERGY LOSS COMING INTO UTES STORAGE ONLY OVER YEAR (TWH) C FOR EACH 1..24 GMT HR C = SAME AS UGSTLS, EXCEPT INCLUDES ONLY LOSSES OF ENERGY INTO C STORAGE (THOSE THAT ARE NOT INCLUDED IN STORAGE). C UGADD = MIN(EXCESSSUP * RTUGEFF, 1 TWINUTES * PERHRS(J) * RTUGEFF, 1 UTESTWH - UGSTORCUR) UGSTORCUR = UGSTORCUR + UGADD UGLOSS = UGADD / RTUGEFF - UGADD UGSTOR( IGMTH,IGMTD) = UGSTOR(IGMTH,IGMTD) + UGADD UGSTLI( IGMTH,IGMTD) = UGSTLI(IGMTH,IGMTD) + UGLOSS EXCESSSUP = MAX(EXCESSSUP-UGADD-UGLOSS,0.) C C SHED ANY HEAT THAT CAN'T FIT INTO STORAGE C sumug=sumug+excesssup HRSHED(IGMTH,IGMTD) = HRSHED(IGMTH,IGMTD) + EXCESSSUP C C FLEXHEAT = FLEXIBLE HEAT LOAD (TWH) ACTUALLY SUPPLIED DURING CURRENT STEP C BY CURRENT SOLAR+GEOTHERMAL HEAT OR HW-STES + UTES STORAGE C IT IS REALLY THE ELECTRICAL ENERGY NEEDED FOR A HEAT PUMP WITH A C COEFF OF PERFORMANCE CPERFORM NEEDED TO SUPPLY A LARGER C AMOUNT OF HEAT THAN FLEXHEAT C WARMTWH = TWH OF HEAT CURRENTLY NEEDED FROM STORAGE (STORHCUR OR UGSTORCUR) C OR FROM CURRENT HEAT PRODUCTION C IT IS REALLY THE ELECTRICAL ENERGY NEEDED FOR A HEAT PUMP WITH A C COEFF OF PERFORMANCE CPERFORM NEEDED TO SUPPLY A LARGER C AMOUNT OF HEAT THAN WARMTWH C FLEXHEAT = WARMTWH C C ********************************************************************* C WHEN HOT AIR/WATER DEMAND EXCEEDS SOLAR-HOT-FLUID SUPPLY, DRAW FROM C UNDERGROUND UTES HEAT STORAGE C IF UTES DEPLETED, ADD REMAINING LOAD TO FLEXIBLE LOAD OBTAINED FROM C OTHER STORAGE. C ********************************************************************* C EXCESSSUP = EXCESS (+) HEAT SUPPLY OVER DEMAND (TWH) C = SUPPHT(J) - WARMTWH C WHEN EXCESSSUP <0, DEMAND EXCEES SUPPLY AND C -EXCESSSUP = EXCESS DEMAND C ELSE C ELSEIF EXCESSSUP <=0 C C ********************************************************************* C DISCHARGE FROM HW-STES STORAGE C ********************************************************************* C EXCESDEM = EXCESS TWH DEMAND FOR HEAT OVER SUPPLY FROM SOLAR COLLECTORS, C GEOTHERMAL HEAT C RTHTESEF = SQRT(EFFHSTES). C = FRACTION OF ENERGY IN HW-STES ADDED TO/REMOVED FROM C HW-STES THAT IS NOT LOST, DUE TO T&D LOSSES C APPLY SEPARATELY DURING CHARGING AND DISCHARGING. C HTSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) HW-STES STORAGE C EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST COMING C IN AND OUT OF HW-STES STORAGE C HTSTLS = CUM ENERGY LOSSES FROM HW-STES STORAGE OVER YEAR C YEAR (TWH) FOR EACH 1..24 GMT HR C HOTDISCH = MAX DISCHARGE AND CHARGE RATE (TW) OF HOT WATER (HW)-STES C REALLY MAX DISCHARGE AND CHARGE RATE OF ELECTRICITY TO C PRODUCE THE HEAT SINCE HEAT LOAD CONVERTED TO ELECTRICAL LOAD C THAT WOULD PRODUCE THAT HEAT WITH HEAT PUMPS IN C countrystats.dat C STORSUB = TWH SUBTRACTED FROM STORAGE AFTER EFFIC LOSS ACCOUNTED FOR C = LOAD OBTAINED FROM STORAGE WITHOUT COUNTING LOSSES C = EXCESDEM LIMITED BY RATE OF UTES DISCHARGE C REMSTOR = CUR TOTAL ENERGY (TWH) REMOVED FROM STORAGE. THIS IS ENERGY C USED PLUS ENERGY LOST DUE TO EFFICIENCY LOSS COMING OUT OF STORAGE C FCOLDFLX = FRACTION OF COLD LOAD THAT IS FLEXIBLE (SUBJECT TO DEMAND RESPONSE) C IF IT CAN'T BE SUPPLIED IN CURRENT TIME STEP BY COLD STORAGE C REMAIN LOAD INFLEXIBLE & MUST BE SUPPLIED IMMEDIATELY BY ELECTRICITY C EXCESDEM = -EXCESSSUP REMSTOR = MIN(EXCESDEM / RTHTESEF, 1 HOTDISCH * PERHRS(J) / RTHTESEF, 1 STORHCUR) STORHCUR = MAX(STORHCUR - REMSTOR,0.) STORSUB = REMSTOR * RTHTESEF EXCESDEM = EXCESDEM - STORSUB C HTSTOR(IGMTH,IGMTD) = HTSTOR(IGMTH,IGMTD) - STORSUB HTSTLS(IGMTH,IGMTD) = HTSTLS(IGMTH,IGMTD) + REMSTOR - STORSUB C C ********************************************************************* C DISCHARGE FROM UTES STORAGE C ********************************************************************* C UGSTLS = CUM ENERGY LOSS GOING OUT OF UNDERGROUND STORAGE OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C UTESDISCH = MAX DISCHARGE RATE (TW) UNDERGROUND SEASONAL HEAT STORAGE C SINCE HEATING IS PROVIDED BY HEAT PUMPS AND HEATING LOAD C WAS CONVERTED TO EQUIVALENT ELECTRICAL LOAD IN C countrystats.dat, THIS MAX DISCHARGE RATE IS OF C ELECTRICITY TO PROVIDE THE HEAT FROM HEAT PUMPS C REMSTOR = MIN(EXCESDEM/RTUGEFF, 1 UTESDISCH * PERHRS(J) / RTUGEFF, 1 UGSTORCUR) UGSTORCUR = MAX(UGSTORCUR - REMSTOR,0.) STORSUB = REMSTOR * RTUGEFF EXCESDEM = EXCESDEM - STORSUB C UGSTOR(IGMTH,IGMTD) = UGSTOR(IGMTH,IGMTD) - STORSUB UGSTLS(IGMTH,IGMTD) = UGSTLS(IGMTH,IGMTD) + REMSTOR - STORSUB C C ********************************************************************* C ADD ANY PORTION OF LOAD NOT MET HERE BY STORAGE TO FLEXIBLE ELECTRIC LOAD C SUBJECT TO DEMAND RESPONSE (FLEXLOAD) OR INFLEXIBLE ELECTRIC LOAD C THAT MUST BE SATISFIED IMMEDIATELY (HCINFLEX) C ********************************************************************* C FLEXLOAD = 2050 FLEXIBLE LOAD (TWH) ADDED EACH TIME INCREMENT C TO BE POWERED BY ELECTRICITY SUBJECT TO DEMAND RESPONSE. C THIS GETS SHIFTED DURING THE DAY C THIS DOES NOT INCLUDE SOLAR-HEAT SUPPLIED BY HW-STES OR UTES C OR COLD SUPPLIED BY CW-STES OR PCM-ICE C HCINFLEX = INFLEXIBLE HEAT AND COLD LOAD (TWH). HEAT AND COLD LOAD C NOT SATISFIED BY HEAT OR COLD STORAGE MUST BE SATISFIED BY C ELECTRICAL STORAGE. OF THE REMAINING HEAT/COLD LOAD, FRACTIONS C FHEATFLX, FCOLDFLX`ARE SUBJECT TO DEMAND RESPONSE AND REST MUST C BE SATISFIED IMMEDIATELY. C FHEATFLX = FRACTION OF HEAT LOAD THAT IS FLEXIBLE (SUBJECT TO DEMAND RESPONSE) C IF IT CAN'T BE SUPPLIED IN CURRENT TIME STEP BY HEAT STORAGE C REMAIN LOAD INFLEXIBLE & MUST BE SUPPLIED IMMEDIATELY BY ELECTRICITY C TWHEHEAT = TOTAL HEAT LOAD (TWH) MET BY ELECTRICITY (EITHER IMMEDIATELY OR C DELAYED BY DEMAND RESPONSE) OVER SIMULATION C FLEXLOAD = FLEXLOAD + EXCESDEM * FHEATFLX HCINFLEX = HCINFLEX + EXCESDEM * (1. - FHEATFLX) TWHEHEAT = TWHEHEAT + EXCESDEM C C ********************************************************************* C SUBTRACT PORTION OF LOAD NOT MET HERE BY STORAGE FROM WARMTWH TO GIVE C FLEXHEAT, WHICH IS THE PORTION OF FLEXIBLE LOAD MET BY HEATING STORAGE C ********************************************************************* C FLEXHEAT = FLEXIBLE HEAT LOAD (TWH) ACTUALLY SUPPLIED DURING CURRENT STEP C BY CURRENT SOLAR+GEOTHERMAL HEAT OR HW-STES + UTES STORAGE C FLEXHEAT = WARMTWH - EXCESDEM C ENDIF C ENDIF EXCESSSUP>0 C C ********************************************************************* C SUPPLY DEMAND FOR COOLING (AIR CONDITIONING AND REFRIGERATION) FIRST FROM C COLD STORAGE (CW-STES + PCM-ICE STORAGE). IF NOT ENOUGH STORAGE, C THEN SATISFY REST WITH CUR ELECTRICITY OR ELEC SUBJECT TO DEMAND RESPONSEE C ********************************************************************* C STORTEM = DEMAND FOR AIR COOLING AND REFRIGERATION (TWH) C STARTS = COLDTWH THEN DECREASES AS COLD DRAWN FROM STORAGE C COLDTWH = TWH OF COLD CURRENTLY NEEDED FROM STORAGE (CW-STES + PCM-ICE) OR C FROM CURRENT HEAT PRODUCTION C STOROCUR = CURRENT ENERGY AVAILABLE IN CW-STES + PCM-ICE STORAGE (TWH) C RTCOLDEF = SQRT(EFFCOLD) C = FRACTION OF ENERGY IN CW-STES + PCM-ICE STORAGE C THAT IS NOT LOST DUE TO T&D LOSSES C APPLY RTCSPEFF SEPARATELY DURING CHARGING AND DISCHARGING. C TSTORCOOL = AVG ANNUAL LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C TREMOSTOR = NET EN (TWH) (NOT LOSSES) REM FROM CW-STES + PCM-ICE DURING SIM C HOSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) CW-STES+PCM-ICE C STORAGE EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST C COMING IN AND OUT OF STORAGE C HOSTLS = CUM ENERGY LOSS COMING OUT OF CW-STES+PCM-ICE STORAGE ONLY OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C STORTEM = COLDTWH STORSUB = MIN(STORTEM,STOROCUR*RTCOLDEF,TSTORCOOL*PERHRS(J)) STORTEM = STORTEM - STORSUB REMSTOR = STORSUB / RTCOLDEF TREMOSTOR = TREMOSTOR + STORSUB STOROCUR = STOROCUR - REMSTOR HOSTOR(IGMTH,IGMTD) = HOSTOR(IGMTH,IGMTD) - STORSUB HOSTLS(IGMTH,IGMTD) = HOSTLS(IGMTH,IGMTD) + REMSTOR - STORSUB C C ********************************************************************* C ADD ANY PORTION OF LOAD NOT MET HERE BY STORAGE TO FLEXIBLE ELECTRIC LOAD C SUBJECT TO DEMAND RESPONSE (FLEXLOAD) OR INFLEXIBLE ELECTRIC LOAD C THAT MUST BE SATISFIED IMMEDIATELY (HCINFLEX) C ********************************************************************* C FLEXLOAD = 2050 FLEXIBLE LOAD (TWH) ADDED EACH TIME INCREMENT C TO BE POWERED BY ELECTRICITY SUBJECT TO DEMAND RESPONSE. C THIS GETS SHIFTED DURING THE DAY C THIS DOES NOT INCLUDE SOLAR-HEAT SUPPLIED BY HW-STES OR UTES C OR COLD SUPPLIED BY CW-STES OR PCM-ICE C HCINFLEX = INFLEXIBLE HEAT AND COLD LOAD (TWH). HEAT AND COLD LOAD C NOT SATISFIED BY HEAT OR COLD STORAGE MUST BE SATISFIED BY C ELECTRICAL STORAGE. OF THE REMAINING HEAT/COLD LOAD, FRACTIONS C FHEATFLX, FCOLDFLX`ARE SUBJECT TO DEMAND RESPONSE AND REST MUST C BE SATISFIED IMMEDIATELY. C FCOLDFLX = FRACTION OF COLD LOAD THAT IS FLEXIBLE (SUBJECT TO DEMAND RESPONSE) C IF IT CAN'T BE SUPPLIED IN CURRENT TIME STEP BY COLD STORAGE C REMAIN LOAD INFLEXIBLE & MUST BE SUPPLIED IMMEDIATELY BY ELECTRICITY C TWHECOLD = TOTAL COLD LOAD (TWH) MET BY ELECTRICITY (EITHER IMMEDIATELY OR C DELAYED BY DEMAND RESPONSE) OVER SIMULATION C FLEXCOLD = FLEXIBLE COLD LOAD (TWH) ACTUALLY SUPPLIED DURING CURRENT STEP C BY CW-STES + PCM-ICE STORAGE C FLEXLOAD = FLEXLOAD + STORTEM * FCOLDFLX HCINFLEX = HCINFLEX + STORTEM * (1. - FCOLDFLX) TWHECOLD = TWHECOLD + STORTEM FLEXCOLD = STORSUB C C ********************************************************************* C SUM SOME VARIABLES FOR PRINTING C ********************************************************************* C HRFLXLD = CUM FLEXIBLE LOAD EACH DAY OF YEAR (TWH) FOR EACH 1..24 GMT HOUR C AFTER DEMAND-RESPONSE MANAGEMENT ACCOUNTED FOR. C INLCLUDES FLEXIBLE LOAD SUPPLIED BY COLD STORAGE, HEAT STORAGE, C SOLAR+GEOTHERMAL HEAT, AND ALL ELECTRICITY C TWHSHEAT = TOTAL LOAD (TWH) MET BY HEAT STORAGE (HW-STES+UTES) DURING SIM C = SUM OF FLEXHEAT OVER SIMULATION C REMAINING HEAT LOAD IS MET BY ELECTRICITY C TWHSCOLD = TOTAL LOAD (TWH) MET BY COLD STORAGE (CW-STES+PCM-ICE) DURING SIM C = SUM OF FLEXCOLD OVER SIMULATION C REMAINING COLD LOAD IS MET BY ELECTRICITY C TLOADALL = 2050 TOTAL INFLEXIBLE + FLEXIBLE ELEC LOAD + LOAD SUBJECT TO HEAT C AND COLD STORAGE, BUT EXCLUDING H2 LOAD (TWH) OVER SIMULATION C TLOADFLX = 2050 TOTAL FLEXIBLE ELEC LOAD, INCLUDING HEAT & COLD SATISFIED BY C ELECTRICITY (FLEXIBLE & INFLEXIBLE), HEAT AND COLD SATISFIED BY C STORAGE AND H2 LOAD (TWH) OVER SIMULATION C HCINFLEX = INFLEXIBLE HEAT AND COLD LOAD (TWH). HEAT AND COLD LOAD C NOT SATISFIED BY HEAT OR COLD STORAGE MUST BE SATISFIED BY C ELECTRICAL STORAGE. OF THE REMAINING HEAT/COLD LOAD, FRACTIONS C FHEATFLX, FCOLDFLX`ARE SUBJECT TO DEMAND RESPONSE AND REST MUST C BE SATISFIED IMMEDIATELY. C FLEXHEAT = FLEXIBLE HEAT LOAD (TWH) ACTUALLY SUPPLIED DURING CURRENT STEP C BY CURRENT SOLAR+GEOTHERMAL HEAT OR HW-STES + UTES STORAGE C FLEXCOLD = FLEXIBLE COLD LOAD (TWH) ACTUALLY SUPPLIED DURING CURRENT STEP C BY CW-STES + PCM-ICE STORAGE C FLEXLOAD = 2050 FLEXIBLE LOAD (TWH) ADDED EACH TIME INCREMENT C TO BE POWERED BY ELECTRICITY SUBJECT TO DEMAND RESPONSE. C THIS GETS SHIFTED DURING THE DAY C THIS DOES NOT INCLUDE SOLAR-HEAT SUPPLIED BY HW-STES OR UTES C OR COLD SUPPLIED BY CW-STES OR PCM-ICE C HRFLXLD(IGMTH,IGMTD) = HRFLXLD(IGMTH,IGMTD) + FLEXHEAT+FLEXCOLD TWHSHEAT = TWHSHEAT + FLEXHEAT TWHSCOLD = TWHSCOLD + FLEXCOLD TLOADALL = TLOADALL + DEMAND(J) + FLEXLOAD+HCINFLEX 1 + FLEXHEAT+FLEXCOLD TLOADFLX = TLOADFLX + FLEXLOAD+HCINFLEX 1 + FLEXHEAT+FLEXCOLD C C ********************************************************************* C PUT LOAD SUBJECT TO DEMAND RESPONSE (DAYFLEX) C + HEAT LOAD NOT MET BY STORAGE SUBJECT TO DEMAND RESPONSE C + COLD LOAD NOT MET BY STORAGE SUBJECT TO DEMAND RESPONSE C ********************************************************************* C REMAINDEM = REMAINING FLEXIBLE LOAD (TWH) THAT MUST BE MET IN A GIVEN DAY. C REMAINHR = REMAINING FLEXIBLE LOAD (TWH) THAT MUST BE MET IN A GIVEN DAY, C FOR EACH GMT HOUR OF THE SIMULATION. THE SUM OF REAINHR C OVER ALL HOURS EQUAL REMAINDEM AT ANY POINT. C REMAINDEM = REMAINDEM + FLEXLOAD REMAINHR( JGMTH) = REMAINHR(JGMTH) + FLEXLOAD C C ********************************************************************* C CONVERT FLEXIBLE LOADS THAT HAVE NOT BEEN SATISFIED FROM CURRENT SUPPLY C OR STORAGE TO INFLEXIBLE LOADS AND ENSURE THEY ARE MET IMMEDIATELY. C ********************************************************************* C DEMANDNEW = TOTAL INFLEXIBLE+FLEXIBLE LOAD (TWH) FOR CURRENT TIME INCREMENT C DEMAND = CURRENT ENERGY INFEXIBLE DEMAND OVER TIME INTERVAL PERHRS (TWH) C SUPPMAX = MAX TW OF WIND+SOLAR POWER SUPPLIED ANY TIME DURING YEAR C REMAINDEM = REMAINING FLEXIBLE LOAD (TWH) THAT MUST BE MET IN A GIVEN DAY. C REMAINHR = REMAINING FLEXIBLE LOAD (TWH) THAT MUST BE MET IN A GIVEN DAY, C FOR EACH GMT HOUR OF THE SIMULATION. THE SUM OF REAINHR C OVER ALL HOURS EQUAL REMAINDEM AT ANY POINT. C NTIMSTEPS = NUMBER OF J=1..IWWS TIME STEPS DURING GMT HOUR C DIVIDE REMAINHR BY NTIMSTEPS(IGMTH) SINCE OTHERWISE C IF THERE ARE FEWER TIME STEPS CURRENT HOUR THAN 24 C HOURS PREVIOUSLY, NOT ALL FLEX LOAD FROM 24 HOURS AGO REMOVED. C DEMINFLEX = INFLEXIBLE DEMAND (TWH) PLUS FLEXILE DEMAND THAT HAS NOT YET C BEEN MET IN LAST DAY C ADDINFLEX = TWH OF FLEXIBLE DEMAND FROM 24 HOURS PREVIOUS THAT MUST C BE SATISFIED CURRENT TIME STEP THUS BECOMES INFLEXIBLE. C LASTDAYHR = GMT HOUR CORRESPONDING TO 24 HOURS BEFORE CURRENT TIME C REDFLEX = REMAINHR(LASTDAYHR) / NTIMSTEPS(JGMTH) C = REDUCTION (TWH) IN FLEXIBLE LOAD IN CURRENT HOUR THAT C WAS NOT MET WITHIN LAST 24 HOURS. CONVERT THAT FLEXIBLE C LOAD TO INFLEXIBLE LOAD. DIVIDE REMAINHR FROM 24 HOURS C PREVIOUSLY BY NTIMSTEPS FOR CURRENT HOUR SINCE NTIMSTEPS C IS THE NUMBER OF STEPS IN CURRENT HOUR THAT REDUCTION C MUST OCCUR IN C MXHRDRM = MAX NUMBER OF HOURS FORWARD THAT LOAD CAN BE SHIFTED BY C DEMAND-RESPONSE MANAGEMENT C HRFLXLD = CUM FLEXIBLE LOAD EACH DAY OF YEAR (TWH) FOR EACH 1..24 GMT HOUR C AFTER DEMAND-RESPONSE MANAGEMENT ACCOUNTED FOR. C INLCLUDES FLEXIBLE LOAD SUPPLIED BY COLD STORAGE, HEAT STORAGE, C SOLAR+GEOTHERMAL HEAT, AND ALL ELECTRICITY C C CASES WHERE NOT USING DEMAND-RESPONSE - ALL POWER SATISFIED IMMEDIATELY C IF (MXHRDRM.EQ.0) THEN ADDINFLEX = REMAINHR(JGMTH) DEMINFLEX = DEMAND(J) + ADDINFLEX REMAINDEM = 0. REMAINHR(JGMTH) = 0. HRFLXLD(IGMTH,IGMTD) = HRFLXLD(IGMTH,IGMTD) + ADDINFLEX C C HOUR OF SIMULATION BEYOND FIRST MXHRDRM HOURS C ELSEIF (JGMTH.GT.MXHRDRM) THEN LASTDAYHR = JGMTH - MXHRDRM ADDINFLEX = MIN(REDFLEX,REMAINHR(LASTDAYHR)) DEMINFLEX = DEMAND(J) + ADDINFLEX REMAINDEM = REMAINDEM - ADDINFLEX REMAINHR(LASTDAYHR) = REMAINHR(LASTDAYHR) - ADDINFLEX HRFLXLD(IGMTH,IGMTD) = HRFLXLD(IGMTH,IGMTD) + ADDINFLEX C C FIRST MXHRDRM HOURS C ELSE DEMINFLEX = DEMAND(J) ENDIF C C ********************************************************************* C ADD INFLEXIBLE HEAT & COLD LOAD NOT AVAILABLE FROM STORAGE TO C INFLEXIBLE ELECTRICAL LOAD C ********************************************************************* C DEMINFLEX = INFLEXIBLE DEMAND (TWH) PLUS FLEXILE DEMAND THAT HAS NOT YET C BEEN MET IN LAST DAY C HRINFLX = INFLEXIBLE ELEC LOAD EACH DAY OF SIM (TWH) FOR EACH 1..24 GMT HOUR C INCLUDES INLEXIBLE LOADS UNSATISFIED BY HEAT+COLD STORAGE THAT MUST C BE MET IMMEDIATELY BY ELECTRICITY. C HCINFLEX = INFLEXIBLE HEAT AND COLD LOAD (TWH). HEAT AND COLD LOAD C NOT SATISFIED BY HEAT OR COLD STORAGE MUST BE SATISFIED BY C ELECTRICAL STORAGE. OF THE REMAINING HEAT/COLD LOAD, FRACTIONS C FHEATFLX, FCOLDFLX`ARE SUBJECT TO DEMAND RESPONSE AND REST MUST C BE SATISFIED IMMEDIATELY. C DEMINFLEX = DEMINFLEX + HCINFLEX HRINFLX(IGMTH,IGMTD) = HRINFLX(IGMTH,IGMTD) + HCINFLEX C C ********************************************************************* C ADD H2 LOAD NOT AVAILABLE FROM STORAGE TO INFLEXIBLE ELECTRICAL LOAD C ********************************************************************* C H2INFLEX = INFLEXIBLE H2 LOAD (TW), WHICH IS INSTANTANEOUS LOAD REQUIRED C FOR H2 NOT AVAILABLE FROM STORAGE. STARTS AT ZERO, INCREASES C DURING TIME STEP ONLY WHEN H2 FROM STORAGE NOT AVAILABLE. C TWHELECH2 = TWH OF H2 LOAD MET BY H2 PRODUCED FROM CURRENT ELECTRICITY C DEMINFLEX = INFLEXIBLE DEMAND (TWH) C DEMANDNEW = TOTAL INFLEXIBLE+FLEXIBLE LOAD (TWH) FOR CURRENT TIME INCREMENT C DEMINFLEX = DEMINFLEX + H2INFLEX H2LOAD( IGMTH,IGMTD) = H2LOAD( IGMTH,IGMTD) + H2INFLEX TWHELECH2 = TWHELECH2 + H2INFLEX C C DEMANDNEW = TOTAL INFLEXIBLE+FLEXIBLE LOAD (TWH) FOR CURRENT TIME INCREMENT C REMAINDEM = REMAINING FLEXIBLE LOAD (TWH) THAT MUST BE MET C DEMANDNEW = DEMINFLEX + REMAINDEM SUPPMAX = MAX(SUPPLY(J)/PERHRS(J),SUPPMAX) ADDDEM = 0. C C ********************************************************************* C PRINT OUT A FEW VARIABLES C ********************************************************************* C DEMANDNEW = TOTAL INFLEXIBLE+FLEXIBLE LOAD (TWH) FOR CURRENT TIME INCREMENT C DEMINFLEX = INFLEXIBLE DEMAND (TWH) C REMAINDEM = REMAINING FLEXIBLE LOAD (TWH) THAT MUST BE MET C DEMAND = CURRENT ENERGY INFEXIBLE DEMAND OVER TIME INTERVAL PERHRS (TWH) C SUPPLY = CURRENT WIND AND SOLAR ENERGY SUPPLY OVER TIME INTERVAL PERHRS (TWH) C AFTER T&D LOSSES ACCOUNTED FOR C STORCCUR = CURRENT ENERGY AVAILABLE IN CSP STORAGE (TWH) C STOROCUR = CURRENT ENERGY AVAILABLE IN CW-STES+PCM-ICE STORAGE (TWH) C STORBCUR = CURRENT ENERGY AVAILABLE IN BATTERY STORAGE (TWH) C IF (IGMTD.NE.IGMTDLAST) THEN IGMTDLAST = IGMTD WRITE(IOUT,210) IGMTD, DEMANDNEW, DEMINFLEX, REMAINDEM, 1 SUPPLY(J), SUPPHT(J), WARMTWH, COLDTWH, 1 FLEXLOAD, FLEXH2LD, 1 FLEXLOAD+FLEXH2LD+WARMTWH+COLDTWH, 1 STORCCUR, STORPCUR, STORBCUR, STOROCUR, 1 STORHCUR, UGSTORCUR, 1 HYDROTWH, H2CURSTOR, CUMSHED, 1 HYDISCHTW*PERHRS(J), 1 UTESDISCH*PERHRS(J)/RTUGEFF 210 FORMAT('XGMTD ',I5,18(1X,0PF10.5),3(1X,0PF11.5)) ENDIF C C ********************************************************************* C HIGHER INFLEXIBLE DEMAND THAN SUPPLY, THEN DRAW FROM STORAGE C IF DRAW TOO MUCH, THEN STOP PROGRAM C IN THIS CASE, REMAINING FLEXIBLE LOAD (REMAINDEM) IS CARRIED FORWARD C TO NEXT TIME STEP C ********************************************************************* C DEMAND = CURRENT ENERGY INFLEXIBLE DEMAND OVER TIME INTERVAL PERHRS (TWH) C DEMINFLEX = INFLEXIBLE DEMAND PLUS FLEXIBLE DEMAND THAT HAS NOT YET C BEEN MET IN LAST DAY C IF (DEMINFLEX.GT.SUPPLY(J)) THEN C C ********************************************************************* C SATISFY EXCESS INFLEXIBLE+FLEXIBLE LOAD WITH CSP, PHS, HYDRO C THEN BATTERIES. SATISFY INFLEXIBLE LOAD FIRST. C ********************************************************************* C DEMANDNEW = TOTAL INFLEXIBLE+FLEXIBLE LOAD (TWH) FOR CURRENT TIME INCREMENT C STORTEM = EXCESS INFLEXIBLE+FLEXIBLE DEMAND OVER SUPPLY (TWH) C EXCESIN = INFLEXIBLE CURRENT DEMAND (TWH) IN EXCESS OF CURRENT SUPPLY C STORTEM = DEMANDNEW - SUPPLY(J) EXCESIN = DEMINFLEX - SUPPLY(J) C C ********************************************************************* C SATISFY INFLEXIBLE LOAD FIRST FROM CSP STORAGE C ********************************************************************* C REMSTOR = CUR TOTAL ENERGY (TWH) REMOVED FROM STORAGE. THIS IS ENERGY C USED PLUS ENERGY LOST DUE TO EFFICIENCY LOSS COMING OUT OF STORAGE C STORSUB = TWH SUBTRACTED FROM STORAGE AFTER EFFIC LOSS ACCOUNTED FOR C STORCCUR = CURRENT ENERGY AVAILABLE IN CSP STORAGE (TWH) C TREMCSTOR = NET EN (TWH) (NOT LOSSES) REM FROM CSP STORAGE DURING SIM C CSPDISCH = MAX DISCHARGE RATE (TW) OF CSP EITHER FROM STORAGE OR DIRECTLY C = CSPCHARG - CSPCHSTO = CSP TURBINE SIZE C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C CSPDIFF = DIFFERENCE (TW) BETWEEN MAX CSP DISCHARGE RATE AND CSP C PRODUCED DURING CURRENT TIME STEP ALREADY DISCHARGED DIRECTLY C (NOT THRU STORAGE) DURING CURRENT TIME STEP. C CURCSP = CURRENT SOLAR POWER (TW) EXTRACTED FROM CSP AFTER T&D LOSSES C AFTER CSP BEYOND CUR CSP DISCHARGE RATE (EXTRACSP) PUT IN STORAGE C RTCSPEFF = SQRT(EFFCSP) C = FRACTION OF ENERGY ADDED TO OR REMOVED FROM PHASE-CHANGE MATERIAL C IN CSP THAT IS NOT LOST DUE TO T&D LOSSES C APPLY RTCSPEFF SEPARATELY DURING CHARGING AND DISCHARGING. C HCSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) CSP STORAGE C EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST COMING C IN AND OUT OF STORAGE C HCSTLS = CUM ENERGY LOSS COMING OUT OF CSP STORAGE OVER YEAR (TWH) C FOR EACH 1..24 GMT HR C STORTEM = EXCESS INFLEXIBLE+FLEXIBLE DEMAND OVER SUPPLY (TWH) C CSPDIFF = MAX(CSPDISCH - CURCSP(J),0.) STORSUB = MIN(STORTEM,STORCCUR*RTCSPEFF,CSPDIFF*PERHRS(J)) STORTEM = STORTEM - STORSUB REMSTOR = STORSUB / RTCSPEFF TREMCSTOR = TREMCSTOR + STORSUB C C ********************************************************************* C IF CSP STORAGE EXCEEDS INFLEXIBLE LOAD BEYOND SUPPLY THAT C WILL BE MET WITH CURRENT WWS PRODUCTION (EXCESIN), THEN REDUCE C REMAINDEM, WHICH TRACKS FLEXIBLE LOAD STILL NEEDED, AND ADD THE C DIFFERENCE TO ADDDEM, WHICH WILL BE ADDED TO HRFLXLD AND TWHDEMAND LATER C ********************************************************************* C REMFLEX = FLEXIBLE DEMAND (TWH) THAT CAN BE SATISFIED HERE BY CSP STORAGE C REMAINDEM = REMAINING FLEXIBLE LOAD (TWH) THAT MUST BE MET IN A GIVEN DAY. C EXCESIN = INFLEXIBLE CURRENT DEMAND (TWH) IN EXCESS OF CURRENT SUPPLY C ADDDEM = FLEXIBLE DEMAND (TWH) THAT IS SATISFIED BY EITHER CURRENT SUPPLY C IN EXCESS OF INFLEXIBLE DEMAND OR BY STORAGE DURING A TIME STEP. C THIS WILL BE ADDED TO HRFLXLD AND TWHDEMAND LATER C POWMXOUT = MAX POWER (TW) TAKEN OUT OF ELEC STORAGE (INCLUDING LOSSES) C POWMXIN = MAX POWER (TW) ADDED TO ELEC STORAGE (AFTER LOSSES SUBTRACTED) C IF (STORSUB.GT.EXCESIN) THEN REMFLEX = STORSUB - EXCESIN REMAINDEM = REMAINDEM - REMFLEX ADDDEM = ADDDEM + REMFLEX ENDIF C EXCESIN = MAX(EXCESIN - STORSUB,0.) C C REDUCE AVAILABLE CSP STORAGE C STORCCUR = STORCCUR - REMSTOR HCSTOR(IGMTH,IGMTD) = HCSTOR(IGMTH,IGMTD) - STORSUB HCSTLS(IGMTH,IGMTD) = HCSTLS(IGMTH,IGMTD) + REMSTOR - STORSUB POWMXOUT = MAX(POWMXOUT,STORSUB/PERHRS(J)) C C ********************************************************************* C ANY REMAINING INFLEXIBLE LOAD FROM BATTERIES C ********************************************************************* C BATDISCH = MAX DISCHARGE AND CHARGE RATE (TW) OF BATTERIES C TREMBSTOR = NET EN (TWH) (NOT LOSSES) REM FROM BATTERY STORAGE DURING SIM C RTBATEFF = SQRT(EFFBAT) C = FRACTION OF ENERGY IN BATTERY STORAGE C THAT IS NOT LOST DUE TO T&D LOSSES C APPLY RTCSPEFF SEPARATELY DURING CHARGING AND DISCHARGING. C HBSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) BATTERY C STORAGE EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST C COMING IN AND OUT OF STORAGE C HBSTLS = CUM ENERGY LOSS COMING OUT OF BATTERY STORAGE ONLY OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C STORTEM = EXCESS INFLEXIBLE+FLEXIBLE DEMAND OVER SUPPLY (TWH) C STORBCUR = CURRENT ENERGY AVAILABLE IN BATTERY STORAGE (TWH) C IF (STORTEM.GT.0.) THEN STORSUB = MIN(STORTEM,STORBCUR*RTBATEFF,BATDISCH*PERHRS(J)) STORTEM = STORTEM - STORSUB REMSTOR = STORSUB / RTBATEFF TREMBSTOR = TREMBSTOR + STORSUB C C REMFLEX = FLEXIBLE DEMAND (TWH) THAT CAN BE SATISFIED HERE BY BATTERY STORAGE C EXCESIN = INFLEXIBLE CURRENT DEMAND (TWH) IN EXCESS OF CURRENT SUPPLY C IF (STORSUB.GT.EXCESIN) THEN REMFLEX = STORSUB - EXCESIN REMAINDEM = REMAINDEM - REMFLEX ADDDEM = ADDDEM + REMFLEX ENDIF C EXCESIN = MAX(EXCESIN - STORSUB,0.) C C REDUCE AVAILABLE BATTERY STORAGE C STORBCUR = STORBCUR - REMSTOR HBSTOR(IGMTH,IGMTD) = HBSTOR(IGMTH,IGMTD) - STORSUB HBSTLS(IGMTH,IGMTD) = HBSTLS(IGMTH,IGMTD) + REMSTOR - STORSUB POWMXOUT = MAX(POWMXOUT,STORSUB/PERHRS(J)) ENDIF C C ********************************************************************* C PROVIDE REMAINING FLEXIBLE+INFLEXIBLE LOAD FROM PUMPED-HYDRO STORAGE (PHS) C ********************************************************************* C STORTEM = EXCESS INFLEXIBLE+FLEXIBLE DEMAND OVER SUPPLY (TWH) C STORPTWH = MAX STORAGE CAPACITY (TWH) OF PHS STORAGE C TSTORPHS = MAX DISCHARGE AND CHARGE RATE (TW) OF PHS C TREMPSTOR = NET EN (TWH) (NOT LOSSES) REMOVED FROM PHS STORAGE DURING SIM C STORPCUR = CURRENT ENERGY AVAILABLE IN PHS STORAGE (TWH) C PHSTLS = CUM ENERGY LOSS COMING OUT OF PHS STORAGE ONLY OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C PHSTLS = CUM ENERGY LOSS COMING OUT OF PHS STORAGE ONLY OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C IF (STORTEM.GT.0.) THEN STORSUB = MIN(STORTEM,STORPCUR*RTPHSEFF,TSTORPHS*PERHRS(J)) STORTEM = STORTEM - STORSUB REMSTOR = STORSUB / RTPHSEFF TREMPSTOR = TREMPSTOR + STORSUB C C REMFLEX = FLEXIBLE DEMAND (TWH) THAT CAN BE SATISFIED BY PHS STORAGE C EXCESIN = INFLEXIBLE CURRENT DEMAND (TWH) IN EXCESS OF CURRENT SUPPLY C ADDDEM = FLEXIBLE DEMAND (TWH) THAT IS SATISFIED BY EITHER CURRENT SUPPLY C IN EXCESS OF INFLEXIBLE DEMAND OR BY STORAGE DURING A TIME STEP. C THIS WILL BE ADDED TO HRFLXLD AND TWHDEMAND LATER C IF (STORSUB.GT.EXCESIN) THEN REMFLEX = STORSUB - EXCESIN REMAINDEM = REMAINDEM - REMFLEX ADDDEM = ADDDEM + REMFLEX ENDIF C EXCESIN = MAX(EXCESIN - STORSUB,0.) C C REDUCE AVAILABLE PHS STORAGE C STORPCUR = STORPCUR - REMSTOR PHSTOR(IGMTH,IGMTD) = PHSTOR(IGMTH,IGMTD) - STORSUB PHSTLS(IGMTH,IGMTD) = PHSTLS(IGMTH,IGMTD) + REMSTOR - STORSUB POWMXOUT = MAX(POWMXOUT,STORSUB/PERHRS(J)) C ENDIF C ENDIF STORETEM>0 C C ********************************************************************* C SATISFY INFLEXIBLE LOAD NEXT FROM HYDRO C ********************************************************************* C THIS CALCULATION ASSUMES HYDROPOWER ENERGY IS CONSERVED (LIMITED C BY TOTAL ENERGY AVAILABLE, HYDROTWH), AND THE DISCHARGE RATE IS LIMITED C TO HYDISCHTW C ********************************************************************* C HYDROTWH = TWH OF AVAILABLE HYDRO POWER FOR PEAKING DURING YEAR C INITIALIZE AS IF RESERVOIR HOLDS CUR ANNUAL ENERGY C (CURHYD*MXHPYEAR/TDEFFMN IN TWH). EACH TIME STEP, RIVERS ADD C PEAKHYD*PERHRS/TDEFFMN TWH. RESERVOIR ALSO ADDS C BASEHYD*PERHRS/TDEFFMN TWH EACH TIME STEP, BUT THIS IS NOT C STORED IN HYDROTWH. HYDRO IS SUBTRACTED FROM HYDROTWH DURING YEAR C UP TO HYDROTWH AVAILABLE OR ACCUMULATED UP TO HYDTHRESH TWH C HYDROTWH INCLUDES ENERGY NEEDED FOR T&D LOSSES C HYDISCHTW = MAX DISCHARGE RATE OF HYDROELECTRIC POWER (TW) C STORTEM = EXCESS INFLEXIBLE+FLEXIBLE DEMAND OVER SUPPLY (TWH) C HYDTHRESH = LEVEL OF HYDRO (TWH) ABOVE WHICH IT NEEDS TO BE USED C HRSUPP = CUM WIND+SOLAR+HYDRO+GEO+TIDAL+WAVE OVER YEAR (TWH) C FOR EACH 1..24 GMT HR C THIS IS SUPPLY AFTER T&D LOSSES ARE TAKEN OUT C HRHYDR = CUM HYDRO PROD EACH 1..24 GMT HR OF YEAR (TWH) AFTER T&D LOSSES C DIVIDE BY TDEFFMN(IHYDRO) AT END OT ACCOUNT FOR T&D LOSSES C HRTDLS = CUM WWS-ELECTRICITY TRANS&DIST LOSS OVER YEAR (TWH) C + SOLAR THERMAL DISTRIBUTION LOSS OVER YEAR (TWH) C FOR EACH 1..24 GMT HR. C TWHHYD = CUMULATIVE TWH HYDRO PRODUCED DURING SIMULATION (AFTER T&D LOSSES) C TWHSUPPLY = TOTAL TWH OF ENERGY SUPPLIED BY WWS ELEC+HEAT DURING SIMULATION C AFTER T&D LOSSES ACCOUNTED FOR. THIS INCLUDES CURTAILED WIND/SOL C STORTEM = EXCESS INFLEXIBLE+FLEXIBLE DEMAND OVER SUPPLY (TWH) C TDEFFMN = 1-TDLOSMN = TRANSMIS+DISTRIB EFFIC AS FRACTION OF POWER TRANSMITTED C IF (STORTEM.GT.0.) THEN STORSUB = MIN(STORTEM,HYDROTWH*TDEFFMN(IHYDRO), 1 HYDISCHTW*PERHRS(J)) STORTEM = STORTEM - STORSUB HYDROTWH = HYDROTWH - STORSUB / TDEFFMN(IHYDRO) C C REMFLEX = FLEXIBLE DEMAND (TWH) THAT CAN BE SATISFIED HERE BY HYDRO STORAGE C EXCESIN = INFLEXIBLE CURRENT DEMAND (TWH) IN EXCESS OF CURRENT SUPPLY C IF (STORSUB.GT.EXCESIN) THEN REMFLEX = STORSUB - EXCESIN REMAINDEM = REMAINDEM - REMFLEX ADDDEM = ADDDEM + REMFLEX ENDIF C EXCESIN = MAX(EXCESIN - STORSUB,0.) C C TDRATMN = TDLOSMN / TDEFFMN. MULT ENERGY (TWH) DELIVERED AFTER T&D LOSSES C BY TDRATMN TO OBTAIN T&D ENERGY LOSS (TWH) C HRSUPP(IGMTH,IGMTD) = HRSUPP(IGMTH,IGMTD) + STORSUB HRHYDR(IGMTH,IGMTD) = HRHYDR(IGMTH,IGMTD) + STORSUB HRTDLS(IGMTH,IGMTD) = HRTDLS(IGMTH,IGMTD) + STORSUB 1 * TDRATMN(IHYDRO) TWHHYD = TWHHYD + STORSUB TWHSUPPLY = TWHSUPPLY + STORSUB POWMXOUT = MAX(POWMXOUT,STORSUB/PERHRS(J)) ENDIF C C ********************************************************************* C CHECK IF TOO MUCH ENERGY IS DRAWN FROM STORAGE OR NOT ENOUGH AVAILABLE C ********************************************************************* C STORTEM = EXCESS INFLEXIBLE+FLEXIBLE DEMAND OVER SUPPLY (TWH) C EXCESIN = INFLEXIBLE CURRENT DEMAND (TWH) IN EXCESS OF CURRENT SUPPLY C IF (EXCESIN.GT.1.0E-12) THEN WRITE(IOUT,208) WRITE(IOUT,285) TIMWWS(J)/HRSPDAY, STORTEM,EXCESIN,STORSUB, 1 SUPPLY(J), SUPPHT(J), WARMTWH, COLDTWH,FLEXLOAD,FLEXH2LD, 1 DEMANDNEW, DEMINFLEX, DEMAND(J), REMAINDEM, 1 STORCCUR, STORPCUR, STORBCUR, STOROCUR, STORHCUR, 1 UGSTORCUR, HYDROTWH, H2CURSTOR, REMSTOR,CSPDIFF*PERHRS(J), 1 TSTORPHS*PERHRS(J),HYDISCHTW*PERHRS(J),BATDISCH*PERHRS(J), 1 PERHRS(J) 285 FORMAT(/'POWERWORLD3: REMAINING INFLEX LOAD (EXCESIN)>0',/ 1 'TIME(DAYS) ',0PF14.8,/ 1 'STORTEM(TWH) ',0PF14.8,/ 1 'EXCESIN(TWH) ',0PF14.8,/ 1 'STORSUB(TWH) ',0PF14.8,/ 1 'SUPPLY(TWH) ',0PF14.8,/ 1 'SUPPHT(TWH) ',0PF14.8,/ 1 'WARMTWH(TWH) ',0PF14.8,/ 1 'COLDTWH(TWH) ',0PF14.8,/ 1 'FLEXLOAD(TWH) ',0PF14.8,/ 1 'FLEXH2LD(TWH) ',0PF14.8,/ 1 'DEMANDNEW(TWH) ',0PF14.8,/ 1 'DEMINFLEX(TWH) ',0PF14.8,/ 1 'DEMAND(TWH) ',0PF14.8,/ 1 'REMAINDEM(TWH) ',0PF14.8,/ 1 'STORCCUR(TWH) ',0PF14.8,/ 1 'STORPCUR(TWH) ',0PF14.8,/ 1 'STORBCUR(TWH) ',0PF14.8,/ 1 'STOROCUR(TWH) ',0PF14.8,/ 1 'STORHCUR(TWH) ',0PF14.8,/ 1 'UGSTORCUR(TWH) ',0PF14.8,/ 1 'HYDROTWH(TWH) ',0PF14.8,/ 1 'H2CURSTOR(TWH) ',0PF14.8,/ 1 'REMSTOR(TWH) ',0PF14.8,/ 1 'CSPDIFF *PERHRS(TWH) ',0PF14.8,/ 1 'TSTORPHS *PERHRS(TWH) ',0PF14.8,/ 1 'HYDISCHTW*PERHRS(TWH) ',0PF14.8,/ 1 'BATDISCH *PERHRS(TWH) ',0PF14.8,/ 1 'PERHRS(HRS) ',0PF14.8,/) STOP ENDIF C C ********************************************************************* C HIGHER FLEXIBLE+INFLEXIBLE DEMAND THAN SUPPLY, SUPPLY FLEXIBLE LOAD UP C TO LIMIT WITH CURRENT SUPPLY THEN SUPPLY AS MUCH OF REMAINING FLEXIBLE LOAD C FROM STORAGE, THEN PUSH REMAINING FLEXIBLE LOAD BEYOND SUPPLY + STORAGE C TO NEXT HOUR C ********************************************************************* C ADDDEM = FLEXIBLE DEMAND (TWH) THAT IS SATISFIED BY EITHER CURRENT SUPPLY C IN EXCESS OF INFLEXIBLE DEMAND OR BY STORAGE DURING A TIME STEP. C THIS WILL BE ADDED TO HRFLXLD AND TWHDEMAND LATER C ELSEIF (DEMANDNEW.GT.SUPPLY(J)) THEN C C REDUCE FLEXIBLE DEMAND TO EXTENT IT WAS SUPPLIED FROM CURRENT SUPPLY C ADDDEM = MIN(SUPPLY(J) - DEMINFLEX,REMAINDEM) REMAINDEM = REMAINDEM - ADDDEM C C ********************************************************************* C SUPPLY AS MUCH OF REMAINING FLEXIBLE LOAD FROM STORAGE AS POSSIBLE C ********************************************************************* C IF (REMAINDEM.GT.0.) THEN C C ********************************************************************* C FLEXIBLE + INFLEXIBLE LOAD FIRST FROM CSP STORAGE C ********************************************************************* C STORSUB = TWH SUBTRACTED FROM STORAGE AFTER EFFIC LOSS ACCOUNTED FOR C STORCCUR = CURRENT ENERGY AVAILABLE IN CSP STORAGE (TWH) C REMSTOR = CUR TOTAL ENERGY (TWH) REMOVED FROM STORAGE. THIS IS ENERGY C USED PLUS ENERGY LOST DUE TO EFFICIENCY LOSS COMING OUT OF STORAGE C TREMCSTOR = NET EN (TWH) (NOT LOSSES) REM FROM CSP STORAGE DURING SIM C CSPDIFF = DIFFERENCE (TW) BETWEEN MAX CSP DISCHARGE RATE AND CSP C PRODUCED DURING CURRENT TIME STEP ALREADY DISCHARGED DIRECTLY C (NOT THRU STORAGE) DURING CURRENT TIME STEP. C CSPDISCH = MAX DISCHARGE RATE (TW) OF CSP EITHER FROM STORAGE OR DIRECTLY C = CSPCHARG - CSPCHSTO = CSP TURBINE SIZE C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C CURCSP = CURRENT SOLAR POWER (TW) EXTRACTED FROM CSP AFTER T&D LOSSES C AFTER CSP BEYOND CUR CSP DISCHARGE RATE (EXTRACSP) PUT IN STORAGE C ADDDEM = FLEXIBLE DEMAND (TWH) THAT IS SATISFIED BY EITHER CURRENT SUPPLY C IN EXCESS OF INFLEXIBLE DEMAND OR BY STORAGE DURING A TIME STEP. C THIS WILL BE ADDED TO HRFLXLD AND TWHDEMAND LATER C HCSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) CSP STORAGE C EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST COMING C IN AND OUT OF STORAGE C HCSTLS = CUM ENERGY LOSS COMING OUT OF CSP STORAGE OVER YEAR (TWH) C FOR EACH 1..24 GMT HR C RTCSPEFF = SQRT(EFFCSP) C = FRACTION OF ENERGY ADDED TO OR REMOVED FROM PHASE-CHANGE MATERIAL C IN CSP THAT IS NOT LOST DUE TO T&D LOSSES C APPLY RTCSPEFF SEPARATELY DURING CHARGING AND DISCHARGING. C CSPDIFF = MAX(CSPDISCH - CURCSP(J),0.) STORSUB = MIN(REMAINDEM,STORCCUR*RTCSPEFF,CSPDIFF*PERHRS(J)) REMAINDEM = REMAINDEM - STORSUB ADDDEM = ADDDEM + STORSUB REMSTOR = STORSUB / RTCSPEFF TREMCSTOR = TREMCSTOR + STORSUB C C REDUCE AVAILABLE STORAGE C STORCCUR = STORCCUR - REMSTOR HCSTOR(IGMTH,IGMTD) = HCSTOR(IGMTH,IGMTD) - STORSUB HCSTLS(IGMTH,IGMTD) = HCSTLS(IGMTH,IGMTD) + REMSTOR - STORSUB POWMXOUT = MAX(POWMXOUT,STORSUB/PERHRS(J)) C C ********************************************************************* C ANY REMAINING FLEX+INFLEXIBLE ELECTRICAL LOAD FROM BATTERIES C ********************************************************************* C BATDISCH = MAX DISCHARGE AND CHARGE RATE (TW) OF BATTERIES C STORBCUR = CURRENT ENERGY AVAILABLE IN BATTERY STORAGE (TWH) C TREMBSTOR = NET EN (TWH) (NOT LOSSES) REM FROM BATTERY STORAGE DURING SIM C RTBATEFF = SQRT(EFFBAT) C = FRACTION OF ENERGY IN BATTERY STORAGE C THAT IS NOT LOST DUE TO T&D LOSSES C APPLY RTCSPEFF SEPARATELY DURING CHARGING AND DISCHARGING. C HBSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) BATTERY C STORAGE EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST C COMING IN AND OUT OF STORAGE C HBSTLS = CUM ENERGY LOSS COMING OUT OF BATTERY STORAGE ONLY OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C IF (REMAINDEM.GT.0.) THEN STORSUB = MIN(REMAINDEM,STORBCUR*RTBATEFF,BATDISCH*PERHRS(J)) REMAINDEM = REMAINDEM - STORSUB ADDDEM = ADDDEM + STORSUB REMSTOR = STORSUB / RTBATEFF TREMBSTOR = TREMBSTOR + STORSUB C C REDUCE AVAILABLE STORAGE C STORBCUR = STORBCUR - REMSTOR HBSTOR(IGMTH,IGMTD) = HBSTOR(IGMTH,IGMTD) - STORSUB HBSTLS(IGMTH,IGMTD) = HBSTLS(IGMTH,IGMTD) + REMSTOR - STORSUB POWMXOUT = MAX(POWMXOUT,STORSUB/PERHRS(J)) ENDIF C C ********************************************************************* C PROVIDE REMAINING FLEXIBLE+INFLEXIBLE LOAD FROM PUMPED-HYDRO STORAGE (PHS) C ********************************************************************* C STORPTWH = MAX STORAGE CAPACITY (TWH) OF PHS STORAGE C TSTORPHS = MAX DISCHARGE AND CHARGE RATE (TW) OF PHS C STORPCUR = CURRENT ENERGY AVAILABLE IN PHS STORAGE (TWH) C PHSTLS = CUM ENERGY LOSS COMING OUT OF PHS STORAGE ONLY OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C PHSTLS = CUM ENERGY LOSS COMING OUT OF PHS STORAGE ONLY OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C IF (REMAINDEM.GT.0.) THEN STORSUB = MIN(REMAINDEM,STORPCUR*RTPHSEFF,TSTORPHS*PERHRS(J)) REMAINDEM = REMAINDEM - STORSUB ADDDEM = ADDDEM + STORSUB REMSTOR = STORSUB / RTPHSEFF TREMPSTOR = TREMPSTOR + STORSUB C C REDUCE AVAILABLE STORAGE C STORPCUR = STORPCUR - REMSTOR PHSTOR(IGMTH,IGMTD) = PHSTOR(IGMTH,IGMTD) - STORSUB PHSTLS(IGMTH,IGMTD) = PHSTLS(IGMTH,IGMTD) + REMSTOR - STORSUB POWMXOUT = MAX(POWMXOUT,STORSUB/PERHRS(J)) ENDIF C C ********************************************************************* C REMAINING FLEX+INFLEXIBLE ELECTRICAL LOAD FROM CONVENTIONAL HYDRO C WHEN IT IS ABOVE THRESHHOLD C ********************************************************************* C THIS CALCULATION ASSUMES HYDROPOWER ENERGY IS CONSERVED (LIMITED C BY TOTAL ENERGY AVAILABLE, HYDROTWH), AND THE DISCHARGE RATE IS LIMITED C TO HYDISCHTW C ********************************************************************* C ADDDEM = FLEXIBLE DEMAND (TWH) THAT IS SATISFIED BY EITHER CURRENT SUPPLY C IN EXCESS OF INFLEXIBLE DEMAND OR BY STORAGE DURING A TIME STEP. C THIS WILL BE ADDED TO HRFLXLD AND TWHDEMAND LATER C HRTDLS = CUM WWS-ELECTRICITY TRANS&DIST LOSS OVER YEAR (TWH) C + SOLAR THERMAL DISTRIBUTION LOSS OVER YEAR (TWH) C FOR EACH 1..24 GMT HR. C HRHYDR = CUM HYDRO PROD EACH 1..24 GMT HR OF YEAR (TWH) AFTER T&D LOSSES C DIVIDE BY TDEFFMN(IHYDRO) AT END OT ACCOUNT FOR T&D LOSSES C IF (REMAINDEM.GT.0.AND.HYDROTWH.GT.HYDTHRESH) THEN STORSUB = MIN(REMAINDEM,HYDROTWH*TDEFFMN(IHYDRO), 1 HYDISCHTW*PERHRS(J)) REMAINDEM = REMAINDEM - STORSUB HYDROTWH = HYDROTWH - STORSUB / TDEFFMN(IHYDRO) ADDDEM = ADDDEM + STORSUB C HRSUPP(IGMTH,IGMTD) = HRSUPP(IGMTH,IGMTD) + STORSUB HRHYDR(IGMTH,IGMTD) = HRHYDR(IGMTH,IGMTD) + STORSUB HRTDLS(IGMTH,IGMTD) = HRTDLS(IGMTH,IGMTD) + STORSUB 1 * TDRATMN(IHYDRO) TWHHYD = TWHHYD + STORSUB TWHSUPPLY = TWHSUPPLY + STORSUB POWMXOUT = MAX(POWMXOUT,STORSUB/PERHRS(J)) ENDIF C ENDIF REMAINDEM.GT.0.AND.HYDROTWH>HYDTHRESH C ENDIF C ENDIF REMAINDEM>0 C C ********************************************************************* C HIGHER SUPPLY THAN INFLEXIBLE DEMAND, THEN USE FLEXIBLE LOAD AND C ADD REMAINDER TO STORAGE C ********************************************************************* C ADDDEM = FLEXIBLE DEMAND (TWH) THAT IS SATISFIED BY EITHER CURRENT SUPPLY C IN EXCESS OF INFLEXIBLE DEMAND OR BY STORAGE DURING A TIME STEP. C THIS WILL BE ADDED TO HRFLXLD AND TWHDEMAND LATER C ELSEIF (SUPPLY(J).GT.DEMANDNEW) THEN ADDDEM = REMAINDEM REMAINDEM = 0. C C IF SUPPLY > FLEXIBLE + INFLEXIBLE DEMAND --> ADD DIFF TO NON-UTES STORAGE C C ********************************************************************* C ADD EXCESS SUPPLY FIRST TO CSP STORAGE C ONLY CURRENT CSP PRODUCTION (CURCSP) PUT INTO CSP STORAGE C ********************************************************************* C STORADD = NET ENERGY (TWH) ADDED TO STORAGE DURING INTERVAL PERHRS C (NET ENERGY IS ENERGY AFTER EFFICIENCY LOSS ACCOUNTED FOR) C EFFLOS = ENERGY LOST (TWH) DURING TRANSFER OF ENERGY TO STORAGE C CSPCHARG = MAX CHARGE RATE (TW) OF CSP DIRECT ELECTRICITY + STORAGE C = CSPDISCH + CSPCHSTO C IF NO STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C BASED ON SIZE OF MIRRORS (NOT SIZE OF GENERATOR) C CURCSP = CURRENT SOLAR POWER (TW) EXTRACTED FROM CSP AFTER T&D LOSSES C AFTER CSP BEYOND CUR CSP DISCHARGE RATE (EXTRACSP) PUT IN STORAGE C CSPCHSTO = MAX CHARGE RATE (TW) OF CSP STORAGE ONLY (NOT STORAGE + C DIRECT ELECTRICITY FROM TURBINES) WHEN STORAGE EXISTS. C = CSPCHARG - CSPDISCH C IF NO CSP STORAGE -> CSPCHARG = CSPDISCH AND CSPCHSTO = 0 C STORCTWH = MAX NUMBER OF TWH OF CSP STORAGE C RTCSPEFF = SQRT(EFFCSP) C = FRACTION OF ENERGY ADDED TO OR REMOVED FROM PHASE-CHANGE MATERIAL C IN CSP THAT IS NOT LOST DUE TO T&D LOSSES C APPLY RTCSPEFF SEPARATELY DURING CHARGING AND DISCHARGING. C HCSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) CSP STORAGE C EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST COMING C IN AND OUT OF STORAGE C HCSTLS = CUM ENERGY LOSS COMING OUT OF CSP STORAGE OVER YEAR (TWH) C FOR EACH 1..24 GMT HR C HCSTLI = CUM ENERGY LOSS GOING INTO CSP STORAGE ONLY OVER YEAR (TWH) C FOR EACH 1..24 GMT HR C = SAME AS HCSTLS, EXCEPT INCLUDES ONLY LOSSES OF ENERGY INTO C STORAGE (THOSE THAT ARE NOT INCLUDED IN STORAGE). C EXCESS = EXCESS ELECTRICITY SUPPLY (TWH) OVER INFLEX+FLEX DEMAND (TWH) C DEMANDNEW= TOTAL INFLEXIBLE+FLEXIBLE LOAD (TWH) FOR CURRENT TIME INCREMENT C EXCESS = SUPPLY(J) - DEMANDNEW C C INCLUDING CURCSP IN THIS STATEMENT ENSURES ONLY CSP ENERGY ADDED TO STORAGE C STORADD = MIN(EXCESS * RTCSPEFF, 1 CURCSP(J) * PERHRS(J) * RTCSPEFF, 1 CSPCHSTO * PERHRS(J) * RTCSPEFF, 1 STORCTWH - STORCCUR) STORCCUR = STORCCUR + STORADD EFFLOS = STORADD / RTCSPEFF - STORADD HCSTOR(IGMTH,IGMTD) = HCSTOR(IGMTH,IGMTD) + STORADD HCSTLI(IGMTH,IGMTD) = HCSTLI(IGMTH,IGMTD) + EFFLOS EXCESS = MAX(EXCESS-STORADD-EFFLOS,0.) POWMXIN = MAX(POWMXIN,STORADD/PERHRS(J)) C C ********************************************************************* C ADD EXCESS SUPPLY NEXT TO BATTERY STORAGE C ********************************************************************* C BATDISCH = MAX DISCHARGE AND CHARGE RATE (TW) OF BATTERIES C STORBTWH = MAX STORAGE CAPACITY (TWH) OF BATTERY STORAGE C STORBCUR = CURRENT ENERGY AVAILABLE IN BATTERY STORAGE (TWH) C RTBATEFF = SQRT(EFFBAT) C = FRACTION OF ENERGY IN BATTERY STORAGE C THAT IS NOT LOST DUE TO T&D LOSSES C APPLY RTCSPEFF SEPARATELY DURING CHARGING AND DISCHARGING. C HBSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) BATTERY C STORAGE EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST C COMING IN AND OUT OF STORAGE C HBSTLS = CUM ENERGY LOSS COMING OUT OF BATTERY STORAGE ONLY OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C HBSTLI = CUM ENERGY LOSS GOING INTO BATTERY STORAGE ONLY OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C = SAME AS HCSTLS, EXCEPT INCLUDES ONLY LOSSES OF ENERGY INTO C STORAGE (THOSE THAT ARE NOT INCLUDED IN STORAGE). C STORADD = MIN(EXCESS * RTBATEFF, 1 BATDISCH * PERHRS(J) * RTBATEFF, 1 STORBTWH - STORBCUR) STORBCUR = STORBCUR + STORADD EFFLOS = STORADD / RTBATEFF - STORADD HBSTOR(IGMTH,IGMTD) = HBSTOR(IGMTH,IGMTD) + STORADD HBSTLI(IGMTH,IGMTD) = HBSTLI(IGMTH,IGMTD) + EFFLOS EXCESS = MAX(EXCESS-STORADD-EFFLOS,0.) POWMXIN = MAX(POWMXIN,STORADD/PERHRS(J)) C C ********************************************************************* C ADD EXCESS SUPPLY NEXT TO PHS STORAGE C ********************************************************************* C STORPTWH = MAX STORAGE CAPACITY (TWH) OF PHS STORAGE C TSTORPHS = MAX DISCHARGE AND CHARGE RATE (TW) OF PHS C STORPCUR = CURRENT ENERGY AVAILABLE IN PHS STORAGE (TWH) C PHSTLS = CUM ENERGY LOSS COMING OUT OF PHS STORAGE ONLY OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C PHSTLI = CUM ENERGY LOSS GOING INTO PHS STORAGE ONLY OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C STORADD = MIN(EXCESS * RTPHSEFF, 1 TSTORPHS * PERHRS(J) * RTPHSEFF, 1 STORPTWH - STORPCUR) STORPCUR = STORPCUR + STORADD EFFLOS = STORADD / RTPHSEFF - STORADD PHSTOR(IGMTH,IGMTD) = PHSTOR(IGMTH,IGMTD) + STORADD PHSTLI(IGMTH,IGMTD) = PHSTLI(IGMTH,IGMTD) + EFFLOS EXCESS = MAX(EXCESS-STORADD-EFFLOS,0.) POWMXIN = MAX(POWMXIN,STORADD/PERHRS(J)) C C ********************************************************************* C ADD EXCESS SUPPLY NEXT TO CW-STES + PCM-ICE STORAGE C ********************************************************************* C TSTORCOOL = AVG ANNUAL LOAD (TW) FOR COOLING (AC & REFRIG) SUBJECT TO STORAGE C = MAX DISCHARGE AND CHARGE RATE (TW) FOR CW-STES + PCM-ICE STORAGE C STOROTWH = MAX STORAGE CAPACITY (TWH) OF CW-STES + PCM-ICE STORAGE C STOROCUR = CURRENT ENERGY AVAILABLE IN CW-STES + PCM-ICE STORAGE (TWH) C RTCOLDEF = SQRT(EFFCOLD) C = FRACTION OF ENERGY IN CW-STES + PCM-ICE STORAGE C THAT IS NOT LOST DUE TO T&D LOSSES C APPLY RTCSPEFF SEPARATELY DURING CHARGING AND DISCHARGING. C HOSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) CW-STES + PCM-ICE C STORAGE EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST C COMING IN AND OUT OF STORAGE C HOSTLS = CUM ENERGY LOSS COMING OUT OF CW-STES+PCM-ICE STORAGE ONLY OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C HOSTLI = CUM ENERGY LOSS GOING INTO CW-STES + PCM-ICE STORAGE ONLY OVER C YEAR (TWH) FOR EACH 1..24 GMT HR C = SAME AS HCSTLS, EXCEPT INCLUDES ONLY LOSSES OF ENERGY INTO C STORAGE (THOSE THAT ARE NOT INCLUDED IN STORAGE). C STORADD = MIN(EXCESS * RTCOLDEF, 1 TSTORCOOL * PERHRS(J) * RTCOLDEF, 1 STOROTWH - STOROCUR) STOROCUR = STOROCUR + STORADD EFFLOS = STORADD / RTCOLDEF - STORADD HOSTOR(IGMTH,IGMTD) = HOSTOR(IGMTH,IGMTD) + STORADD HOSTLI(IGMTH,IGMTD) = HOSTLI(IGMTH,IGMTD) + EFFLOS EXCESS = MAX(EXCESS-STORADD-EFFLOS,0.) C C ********************************************************************* C IF STILL EXCESS ELECTRICITY AVAILABLE, ADD TO HW-STES STORAGE THEN C UNDERGROUND HEAT STORAGE IN SOIL OR WATER (UTES) THEN USE TO PRODUCE H2 THEN SHED C ********************************************************************* C UTESDISCH = MAX DISCHARGE RATE (TW) UNDERGROUND SEASONAL HEAT STORAGE C SINCE HEATING IS PROVIDED BY HEAT PUMPS AND HEATING LOAD C WAS CONVERTED TO EQUIVALENT ELECTRICAL LOAD IN C countrystats.dat, THIS MAX DISCHARGE RATE IS OF C ELECTRICITY TO PROVIDE THE HEAT FROM HEAT PUMPS C UTESCHARG = MAX CHARGE RATE (TW) UNDERGROUND SEASONAL HEAT STORAGE C FROM EXCESS ELECTRIC POWER GENERATION C SINCE LOW-TEMP HEAT LOAD IN countrystats.dat ALREADY C CONVERTED TO EQUIVALENT ELECTRICAL LOAD ASSUMING C HEAT PUMPS WITH CPERFORM, UTESCCHARG IS REALLY THE CHARGE C RATE OF EQUIV ELECTRICITY TO GIVE HEATING FROM HEAT PUMPS C UTESTWH = TWH OF UNDERGROUND SEASONAL HEAT STORAGE IN SOIL OR WATER C REALLY TWH OF ELECTRICITY STORAGE THAT GIVES NECESSARY C HEATING FROM HEAT PUMPS WITH COP=CPERFORM C STORUGHRS = HOURS OF UNDERGROUND SEASONAL HEAT STORAGE IN SOIL OR WATER (UTES) (HRS) C UGSTORCUR = CURRENT ENERGY IN UNDERGROUND SOIL OR WATER STORAGE (TWH) C REALLY CURRENT TWH OF ELECTRICITY STORED IN UTES THAT GIVES NECESSARY C HEATING FROM HEAT PUMPS WITH COP=CPERFORM C UGSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) UTES STORAGE C EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST COMING C IN AND OUT OF UTES STORAGE C REALLY TWH OF ELECTRICITY STORAGE ADDED THAT GIVES NECESSARY C HEATING FROM HEAT PUMPS WITH COP=CPERFORM C UGSTLS = CUM ENERGY LOSS GOING OUT OF UTES STORAGE OVER YEAR (TWH) C FOR EACH 1..24 GMT HR C UGSTLI = CUM ENERGY LOSS COMING INTO UTES STORAGE ONLY OVER YEAR (TWH) C FOR EACH 1..24 GMT HR C = SAME AS UGSTLS, EXCEPT INCLUDES ONLY LOSSES OF ENERGY INTO C STORAGE (THOSE THAT ARE NOT INCLUDED IN STORAGE). C EXCESS = EXCESS ENERGY (TWH) AVAILABLE TO BE USED FOR H2 OR C ADDED TO UNDERGROUND STORAGE C RTUGEFF = SQRT(EFFUTES) C = FRACTION OF ENERGY IN HEATED FLUID ADDED TO/REMOVED C FROM UNDERGROUND STORAGE THAT IS NOT LOST DUE TO T&D LOSSES C APPLY RTUGEFF SEPARATELY DURING CHARGING AND DISCHARGING. C RTUGEFF^2=EFFUTES = OVERALL EFFIC OF HEATING SOIL OR WATER WITH HEATED C FLUID THEN RETURNING HEAT TO FLUID IN OPPOSITE SEASON AND C USING THE HEATED FLUID TO HEAT AIR OR WATER. C EFFUTES IS EFFICIENCY AFTER EITHER FLUID HAS ALREADY BEEN HEATED C FROM ELECTRICITY OR SUN C ENSHED = TWH OF ENERGY SHED WHEN TOO MUCH ELECTRICITY GENERATION C PUT INTO H2 PRODUCTION/COMPRESSION/STORAGE C H2CURSTOR = CUR STORED H2 (TWH-ELECTRICITY USED TO PRODUCE/COMPRESS/STORE H2) C H2STOR = CUM NET TWH ENERGY ADDED TO PRODUCING/COMPRESSING/STORING (+) C SUBTRAC FROM USING (-) H2 EACH 1..24 GMT HR. INCL EN FOR LEAKED H2 C H2STORMX = MAXIMUM STORAGE (TWH) AVAILABLE FOR H2 AT GIVEN TIME C = TOTAL TWH OF H2 USED DURING YEAR (THIS IS WHAT H2 STORAGE COST IS C BASED ON. THIS CAN EASILY BE CHANGED). C C ********************************************************************* C STORE EXCESS ELECTRICITY NEXT IN HOT WATER TANKS/BOILERS (HW-STES) C ********************************************************************* C HWADD = TWH ADDED TO HW-STES STORAGE C HWLOSS = TWH LOST DURING CHARGING OF HW-STES STORAGE C HOTCHARG = MAX CHARGE RATE (TW) OF HOT WATER (HW)-STES C REALLY MAX CHARGE RATE OF ELECTRICITY TO C PRODUCE THE HEAT SINCE HEAT LOAD CONVERTED TO ELECTRICAL LOAD C THAT WOULD PRODUCE THAT HEAT WITH HEAT PUMPS IN C countrystats.dat C RTHTESEF = SQRT(EFFHSTES). C = FRACTION OF ENERGY IN HW-STES ADDED TO/REMOVED FROM C HW-STES THAT IS NOT LOST, DUE TO T&D LOSSES C APPLY SEPARATELY DURING CHARGING AND DISCHARGING. C STORHTWH = MAX STORAGE CAPACITY (TWH) OF HW-STES STORAGE C STORHCUR = CURRENT ENERGY (TWH) AVAILABLE IN HW-STES STORAGE C HTSTOR = CUM NET TWH ENERGY ADDED TO (+) SUBT FROM (-) HW-STES STORAGE C EACH 1..24 GMT HR. THIS DOES NOT INCLUDE ENERGY LOST COMING C IN AND OUT OF HW-STES STORAGE C HTSTLI = CUM ENERGY LOSS COMING INTO HW-STES STORAGE ONLY OVER YEAR (TWH) C FOR EACH 1..24 GMT HR C HWADD = MIN(EXCESS * RTHTESEF, 1 HOTCHARG * PERHRS(J) * RTHTESEF, 1 STORHTWH - STORHCUR) STORHCUR = STORHCUR + HWADD HWLOSS = HWADD / RTHTESEF - HWADD HTSTOR(IGMTH,IGMTD) = HTSTOR(IGMTH,IGMTD) + HWADD HTSTLI(IGMTH,IGMTD) = HTSTLI(IGMTH,IGMTD) + HWLOSS EXCESS = MAX(EXCESS - HWADD - HWLOSS,0.) C C ********************************************************************* C STORE EXCESS ELECTRICITY NEXT IN UNDERGROUND (UTES) HEAT STORAGE C EITHER IN BOREHOLES, WATER PITS, OR AQUIFERS C ********************************************************************* C UGADD = MIN(EXCESS * RTUGEFF, 1 UTESCHARG * PERHRS(J) * RTUGEFF, 1 UTESTWH - UGSTORCUR) UGSTORCUR = UGSTORCUR + UGADD UGLOSS = UGADD / RTUGEFF - UGADD UGSTOR(IGMTH,IGMTD) = UGSTOR(IGMTH,IGMTD) + UGADD UGSTLI(IGMTH,IGMTD) = UGSTLI(IGMTH,IGMTD) + UGLOSS EXCESS = MAX(EXCESS - UGADD - UGLOSS,0.) C C ********************************************************************* C USE EXCESS ELECTRICITY NEXT TO PRODUCE/COMPRESS/STORE H2 C ********************************************************************* C H2LDPEAKI = PEAK INSTANT LOAD (TW) FOR H2 ELECTROLYSIS+COMPRESSION OVER SIM C H2LDPEAKH = PEAK HOURLY LOAD (TW) FOR H2 ELECTROLYSIS+COMPRESSION OVER SIM C H2CURSTOR = CUR STORED H2 (TWH-ELECTRICITY USED TO PRODUCE/COMPRESS/STORE H2) C H2CURMAX = MAX TWH-ELEC USED TO PRODUCE/COMPRESS/STORE H2 DURING SIM C ADDH2 = MIN(EXCESS,MAX(H2STORMX-H2CURSTOR,0.)) H2CURSTOR = H2CURSTOR + ADDH2 H2STOR( IGMTH,IGMTD) = H2STOR( IGMTH,IGMTD) + ADDH2 ENSHED = MAX(EXCESS - ADDH2,0.) H2CURMAX = MAX(H2CURSTOR,H2CURMAX) H2LDPEAKI = MAX(H2LDPEAKI,ADDH2/PERHRS(J)) H2LDPEAKH = MAX(H2LDPEAKH,H2STOR(IGMTH,IGMTD)) C C ********************************************************************* C SHED REMAINING EXCESS ELECTRICITY C ********************************************************************* C CUMSHED = CUM WIND+SOLAR SHED/CURTAILED (TWH) OVER SIMULATION C HRSHED = WIND+SOLAR SHED (TWH) EACH HOUR WHEN EXCESS SUPPLY & STORAGE FILLED C sumensh=sumensh+enshed HRSHED(IGMTH,IGMTD) = HRSHED(IGMTH,IGMTD) + ENSHED CUMSHED = CUMSHED + ENSHED ELSE WRITE(IOUT,*)'POWERWORLD4',TIMWWS(J),SUPPLY(J), 1 DEMAND(J),DEMANDNEW STOP ENDIF C ENDIF DEMINFLEX>SUPPLY C C TWHDEMAND = TWH OF ELECTRIC POWER INFLEX+FLEXIBLE LOAD DURING SIMULATION. C THIS DOES NOT INCLUDE HEATING, COOLING BUT INCLUDES TWHELECH2 C HRFLXLD = CUM FLEXIBLE LOAD EACH DAY OF YEAR (TWH) FOR EACH 1..24 GMT HOUR C AFTER DEMAND-RESPONSE MANAGEMENT ACCOUNTED FOR. C INLCLUDES FLEXIBLE LOAD SUPPLIED BY COLD STORAGE, HEAT STORAGE, C SOLAR+GEOTHERMAL HEAT, AND ALL ELECTRICITY C ADDDEM = FLEXIBLE ELEC DEMAND (TWH) SATISFIED BY EITHER CURRENT SUPPLY C IN EXCESS OF INFLEXIBLE DEMAND OR BY STORAGE DURING A TIME STEP. C HRFLXLD(IGMTH,IGMTD) = HRFLXLD(IGMTH,IGMTD) + ADDDEM TWHDEMAND = TWHDEMAND + DEMINFLEX + ADDDEM C C ********************************************************************* C REDUCE FLEXIBLE LOADS FROM PREVIOUS 1..MXHRDRM HOURS FROM OLDEST C TO NEWEST. REMAINDEM HAS ALREADY BEEN REDUCED, SO REMAINHR C MUST BE REDUCED BY THE EXACT SAME AMOUNT C ********************************************************************* C REMAINHR = REMAINING FLEXIBLE LOAD (TWH) THAT MUST BE MET IN A GIVEN DAY, C FOR EACH GMT HOUR OF THE SIMULATION. THE SUM OF REAINHR C OVER ALL HOURS EQUAL REMAINDEM AT ANY POINT. C ADDDEM = DEMAND (TWH) FROM FLEXIBLE LOADS (TRANSPORT/INDUSTRY) ADDED C TO CURRENT DEMAND AND SATISFIED FROM STORAGE DURING CUR TIME STEP C REMFLEX = TWH OF LOAD FROM PREVIOUS 1..MXHRDRM HOUR SATISFIED FROM C CURRENT TIME STEP SUPPLY C SUM OF REMFLEX OVER ALL 1..MXHRDRM HOURS = ADDDEM C REDREMAIN = ADDDEM, REDUCED BY REMFLEX EACH 1..MXHRDRM HOUR BACKWARDS. C IN THE END, IT SHOULD EQUAL 0. C MXHRDRM = MAX NUMBER OF HOURS FORWARD THAT LOAD CAN BE SHIFTED BY C DEMAND-RESPONSE MANAGEMENT C IF (ADDDEM.GT.0.) THEN MXHRBACK = MIN0(MXHRDRM,JGMTH-1) REDREMAIN = ADDDEM DO I = MXHRBACK, 0, -1 JGMTPREV = JGMTH - I REMFLEX = MIN(REDREMAIN,REMAINHR(JGMTPREV)) REMAINHR(JGMTPREV) = REMAINHR(JGMTPREV) - REMFLEX REDREMAIN = REDREMAIN - REMFLEX ENDDO C ENDIF C ENDIF C ENDIF TIMWWS