@@ -414,8 +414,11 @@ <h2> Contents </h2>
414414 </ div >
415415 < nav aria-label ="Page ">
416416 < ul class ="visible nav section-nav flex-column ">
417- < li class ="toc-h2 nav-item toc-entry "> < a class ="reference internal nav-link " href ="#residential-repowering-scenario "> Residential Repowering Scenario</ a > < ul class ="nav section-nav flex-column ">
418- < li class ="toc-h3 nav-item toc-entry "> < a class ="reference internal nav-link " href ="#nd-life-case "> 2nd Life case</ a > </ li >
417+ < li class ="toc-h2 nav-item toc-entry "> < a class ="reference internal nav-link " href ="#create-residential-repowering-scenario "> 1. Create Residential Repowering Scenario</ a > < ul class ="nav section-nav flex-column ">
418+ < li class ="toc-h3 nav-item toc-entry "> < a class ="reference internal nav-link " href ="#download-resource-data "> Download resource data</ a > </ li >
419+ </ ul >
420+ </ li >
421+ < li class ="toc-h2 nav-item toc-entry "> < a class ="reference internal nav-link " href ="#setting-financials-for-a-2nd-life-user "> 2. Setting Financials for a 2nd life User</ a > < ul class ="nav section-nav flex-column ">
419422< li class ="toc-h3 nav-item toc-entry "> < a class ="reference internal nav-link " href ="#new-build-case "> New Build Case</ a > </ li >
420423</ ul >
421424</ li >
@@ -477,8 +480,8 @@ <h1>PBL 3 - 2nd Life Resi<a class="headerlink" href="#pbl-3-2nd-life-resi" title
477480</ div >
478481</ div >
479482</ div >
480- < section id ="residential-repowering-scenario ">
481- < h2 > Residential Repowering Scenario< a class ="headerlink " href ="#residential-repowering-scenario " title ="Link to this heading "> #</ a > </ h2 >
483+ < section id ="create- residential-repowering-scenario ">
484+ < h2 > 1. Create Residential Repowering Scenario< a class ="headerlink " href ="#create- residential-repowering-scenario " title ="Link to this heading "> #</ a > </ h2 >
482485< div class ="cell docutils container ">
483486< div class ="cell_input docutils container ">
484487< div class ="highlight-ipython3 notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="c1 "> #Step 1. Set up original system</ span >
@@ -551,94 +554,21 @@ <h2>Residential Repowering Scenario<a class="headerlink" href="#residential-repo
551554</ div >
552555</ div >
553556</ div >
557+ < section id ="download-resource-data ">
558+ < h3 > Download resource data< a class ="headerlink " href ="#download-resource-data " title ="Link to this heading "> #</ a > </ h3 >
554559< div class ="cell docutils container ">
555560< div class ="cell_input docutils container ">
556- < div class ="highlight-ipython3 notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="c1 "> #Step 2. Download resource data</ span >
557- < span class ="c1 "> #Read in weather data from SAM, or use NSRDB downloads in SAM format, or use dictionary of solar data</ span >
558- < span class ="c1 "> #A. You already have a file</ span >
561+ < div class ="highlight-ipython3 notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="c1 "> #Read in weather data from SAM, or use NSRDB downloads in SAM format, or use dictionary of solar data</ span >
559562< span class ="n "> weather_file</ span > < span class ="o "> =</ span > < span class ="s2 "> "data/CO_weather_data.csv"</ span >
560563< span class ="n "> pv_model</ span > < span class ="o "> .</ span > < span class ="n "> SolarResource</ span > < span class ="o "> .</ span > < span class ="n "> solar_resource_file</ span > < span class ="o "> =</ span > < span class ="n "> weather_file</ span >
561-
562- < span class ="c1 "> #B. solar_resource_data</ span >
563- < span class ="c1 "> # weather_data = PySAM.ResourceTools.SAM_CSV_to_solar_data(weather_file)</ span >
564- < span class ="c1 "> # solar_resource_data = {</ span >
565- < span class ="c1 "> # 'tz': tz, # timezone</ span >
566- < span class ="c1 "> # 'elev': elev, # elevation</ span >
567- < span class ="c1 "> # 'lat': lat, # latitude</ span >
568- < span class ="c1 "> # 'lon': lon, # longitude</ span >
569- < span class ="c1 "> # 'year': tuple(weather_data[0]), # year</ span >
570- < span class ="c1 "> # 'month': tuple(weather_data[1]), # month</ span >
571- < span class ="c1 "> # 'day': tuple(weather_data[2]), # day</ span >
572- < span class ="c1 "> # 'hour': tuple(weather_data[3]), # hour</ span >
573- < span class ="c1 "> # 'minute': tuple(weather_data[4]), # minute</ span >
574- < span class ="c1 "> # 'dn': tuple(weather_data[5]), # direct normal irradiance</ span >
575- < span class ="c1 "> # 'df': tuple(weather_data[6]), # diffuse irradiance</ span >
576- < span class ="c1 "> # 'gh': tuple(weather_data[7]), # global horizontal irradiance</ span >
577- < span class ="c1 "> # 'wspd': tuple(weather_data[8]), # windspeed</ span >
578- < span class ="c1 "> # 'tdry': tuple(weather_data[9]) # dry bulb temperature</ span >
579- < span class ="c1 "> # }</ span >
580- < span class ="c1 "> # pv_model.unassign("solar_resource_file")</ span >
581- < span class ="c1 "> # pv_model.SolarResource.solar_resource_data = solar_resource_data</ span >
582-
583- < span class ="c1 "> #C. Download from NSRDB</ span >
584- < span class ="c1 "> # </ span >
585- < span class ="c1 "> # --- Initialize Solar Resource Fetcher with minimum parameters ---</ span >
586- < span class ="c1 "> # See function documentation for full parameter list</ span >
587-
588- < span class ="c1 "> #import geocoder</ span >
589-
590- < span class ="c1 "> # replace with key and email address from https://developer.nrel.gov/signup/</ span >
591- < span class ="n "> sam_api_key</ span > < span class ="o "> =</ span > < span class ="n "> os</ span > < span class ="o "> .</ span > < span class ="n "> environ</ span > < span class ="o "> .</ span > < span class ="n "> get</ span > < span class ="p "> (</ span > < span class ="s1 "> 'NREL_API_KEY'</ span > < span class ="p "> )</ span >
592- < span class ="n "> sam_email</ span > < span class ="o "> =</ span > < span class ="n "> os</ span > < span class ="o "> .</ span > < span class ="n "> environ</ span > < span class ="o "> .</ span > < span class ="n "> get</ span > < span class ="p "> (</ span > < span class ="s1 "> 'NREL_API_EMAIL'</ span > < span class ="p "> )</ span >
593- < span class ="c1 "> # sam_api_key = nrel_developer_key</ span >
594- < span class ="c1 "> # sam_email = sam@email.com</ span >
595- < span class ="n "> geocode_api_key</ span > < span class ="o "> =</ span > < span class ="s1 "> ''</ span > < span class ="c1 "> # optional, may be required for geocoder</ span >
596-
597- < span class ="c1 "> # --- Location Coordinates ---</ span >
598-
599- < span class ="c1 "> # Set geocode to True to use geocoding service API</ span >
600- < span class ="n "> geocode</ span > < span class ="o "> =</ span > < span class ="kc "> False</ span >
601- < span class ="k "> if</ span > < span class ="n "> geocode</ span > < span class ="p "> :</ span >
602- < span class ="c1 "> # See https://geocoder.readthedocs.io/ for different geocoding services</ span >
603- < span class ="n "> g</ span > < span class ="o "> =</ span > < span class ="n "> geocoder</ span > < span class ="o "> .</ span > < span class ="n "> bing</ span > < span class ="p "> (</ span > < span class ="s1 "> 'golden, co'</ span > < span class ="p "> ,</ span > < span class ="n "> key</ span > < span class ="o "> =</ span > < span class ="n "> geocode_api_key</ span > < span class ="p "> )</ span >
604- < span class ="n "> lon</ span > < span class ="o "> =</ span > < span class ="n "> g</ span > < span class ="o "> .</ span > < span class ="n "> latlng</ span > < span class ="p "> [</ span > < span class ="mi "> 1</ span > < span class ="p "> ]</ span >
605- < span class ="n "> lat</ span > < span class ="o "> =</ span > < span class ="n "> g</ span > < span class ="o "> .</ span > < span class ="n "> latlng</ span > < span class ="p "> [</ span > < span class ="mi "> 0</ span > < span class ="p "> ]</ span >
606- < span class ="k "> else</ span > < span class ="p "> :</ span >
607- < span class ="n "> lon</ span > < span class ="o "> =</ span > < span class ="o "> -</ span > < span class ="mf "> 105.22</ span >
608- < span class ="n "> lat</ span > < span class ="o "> =</ span > < span class ="mf "> 39.75</ span >
609- < span class ="n "> nsrdbfetcher</ span > < span class ="o "> =</ span > < span class ="n "> tools</ span > < span class ="o "> .</ span > < span class ="n "> FetchResourceFiles</ span > < span class ="p "> (</ span >
610- < span class ="n "> tech</ span > < span class ="o "> =</ span > < span class ="s1 "> 'solar'</ span > < span class ="p "> ,</ span >
611- < span class ="n "> nrel_api_key</ span > < span class ="o "> =</ span > < span class ="n "> sam_api_key</ span > < span class ="p "> ,</ span >
612- < span class ="n "> nrel_api_email</ span > < span class ="o "> =</ span > < span class ="n "> sam_email</ span > < span class ="p "> )</ span >
613-
614- < span class ="c1 "> # --- List of (lon, lat) tuples or Shapely points ---</ span >
615- < span class ="n "> lon_lats</ span > < span class ="o "> =</ span > < span class ="p "> [(</ span > < span class ="n "> lon</ span > < span class ="p "> ,</ span > < span class ="n "> lat</ span > < span class ="p "> )]</ span >
616- < span class ="n "> nsrdbfetcher</ span > < span class ="o "> .</ span > < span class ="n "> fetch</ span > < span class ="p "> (</ span > < span class ="n "> lon_lats</ span > < span class ="p "> )</ span >
617-
618- < span class ="c1 "> # --- Get resource data file path ---</ span >
619- < span class ="n "> nsrdb_path_dict</ span > < span class ="o "> =</ span > < span class ="n "> nsrdbfetcher</ span > < span class ="o "> .</ span > < span class ="n "> resource_file_paths_dict</ span >
620- < span class ="n "> nsrdb_fp</ span > < span class ="o "> =</ span > < span class ="n "> nsrdb_path_dict</ span > < span class ="p "> [</ span > < span class ="n "> lon_lats</ span > < span class ="p "> [</ span > < span class ="mi "> 0</ span > < span class ="p "> ]]</ span >
621- < span class ="c1 "> #pv_model.SolarResource.solar_resource_file = nsrdb_fp</ span >
622- </ pre > </ div >
623- </ div >
624- </ div >
625- < div class ="cell_output docutils container ">
626- < div class ="output stream highlight-myst-ansi notranslate "> < div class ="highlight "> < pre > < span > </ span > Starting data download for solar using 1 thread workers.
627- Getting list of available NSRDB files for 39.75, -105.22.
628- </ pre > </ div >
629- </ div >
630- < div class ="output stream highlight-myst-ansi notranslate "> < div class ="highlight "> < pre > < span > </ span > Error for 39.75, -105.22: {
631- "error": {
632- "code": "API_KEY_INVALID",
633- "message": "An invalid api_key was supplied. Get one at https://developer.nrel.gov/signup/"
634- }
635- }
636564</ pre > </ div >
637565</ div >
638566</ div >
639567</ div >
640- < section id ="nd-life-case ">
641- < h3 > 2nd Life case< a class ="headerlink " href ="#nd-life-case " title ="Link to this heading "> #</ a > </ h3 >
568+ </ section >
569+ </ section >
570+ < section id ="setting-financials-for-a-2nd-life-user ">
571+ < h2 > 2. Setting Financials for a 2nd life User< a class ="headerlink " href ="#setting-financials-for-a-2nd-life-user " title ="Link to this heading "> #</ a > </ h2 >
642572< div class ="cell docutils container ">
643573< div class ="cell_input docutils container ">
644574< div class ="highlight-ipython3 notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="c1 "> #second life - Unknown number of remaining years of life</ span >
@@ -693,22 +623,7 @@ <h3>2nd Life case<a class="headerlink" href="#nd-life-case" title="Link to this
693623</ pre > </ div >
694624</ div >
695625</ div >
696- < div class ="cell_output docutils container ">
697- < div class ="output traceback highlight-ipythontb notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="gt "> ---------------------------------------------------------------------------</ span >
698- < span class ="ne "> KeyboardInterrupt</ span > < span class ="g g-Whitespace "> </ span > Traceback (most recent call last)
699- < span class ="n "> Cell</ span > < span class ="n "> In</ span > < span class ="p "> [</ span > < span class ="mi "> 5</ span > < span class ="p "> ],</ span > < span class ="n "> line</ span > < span class ="mi "> 36</ span >
700- < span class ="g g-Whitespace "> </ span > < span class ="mi "> 32</ span > < span class ="n "> secondlife_df</ span > < span class ="o "> .</ span > < span class ="n "> iloc</ span > < span class ="p "> [</ span > < span class ="n "> i</ span > < span class ="p "> ,</ span > < span class ="mi "> 1</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> lifetime</ span >
701- < span class ="g g-Whitespace "> </ span > < span class ="mi "> 35</ span > < span class ="n "> secondlife</ span > < span class ="o "> .</ span > < span class ="n "> execute</ span > < span class ="p "> ()</ span >
702- < span class ="ne "> ---> </ span > < span class ="mi "> 36</ span > < span class ="n "> grid_model</ span > < span class ="o "> .</ span > < span class ="n "> execute</ span > < span class ="p "> ()</ span >
703- < span class ="g g-Whitespace "> </ span > < span class ="mi "> 37</ span > < span class ="n "> ur_model</ span > < span class ="o "> .</ span > < span class ="n "> execute</ span > < span class ="p "> ()</ span >
704- < span class ="g g-Whitespace "> </ span > < span class ="mi "> 38</ span > < span class ="n "> secondlife_financial</ span > < span class ="o "> .</ span > < span class ="n "> FinancialParameters</ span > < span class ="o "> .</ span > < span class ="n "> analysis_period</ span > < span class ="o "> =</ span > < span class ="n "> lifetime</ span >
705-
706- < span class ="ne "> KeyboardInterrupt</ span > :
707- </ pre > </ div >
708- </ div >
709626</ div >
710- </ div >
711- </ section >
712627< section id ="new-build-case ">
713628< h3 > New Build Case< a class ="headerlink " href ="#new-build-case " title ="Link to this heading "> #</ a > </ h3 >
714629< div class ="cell docutils container ">
@@ -865,8 +780,11 @@ <h3>New Build Case<a class="headerlink" href="#new-build-case" title="Link to th
865780 </ div >
866781 < nav class ="bd-toc-nav page-toc ">
867782 < ul class ="visible nav section-nav flex-column ">
868- < li class ="toc-h2 nav-item toc-entry "> < a class ="reference internal nav-link " href ="#residential-repowering-scenario "> Residential Repowering Scenario</ a > < ul class ="nav section-nav flex-column ">
869- < li class ="toc-h3 nav-item toc-entry "> < a class ="reference internal nav-link " href ="#nd-life-case "> 2nd Life case</ a > </ li >
783+ < li class ="toc-h2 nav-item toc-entry "> < a class ="reference internal nav-link " href ="#create-residential-repowering-scenario "> 1. Create Residential Repowering Scenario</ a > < ul class ="nav section-nav flex-column ">
784+ < li class ="toc-h3 nav-item toc-entry "> < a class ="reference internal nav-link " href ="#download-resource-data "> Download resource data</ a > </ li >
785+ </ ul >
786+ </ li >
787+ < li class ="toc-h2 nav-item toc-entry "> < a class ="reference internal nav-link " href ="#setting-financials-for-a-2nd-life-user "> 2. Setting Financials for a 2nd life User</ a > < ul class ="nav section-nav flex-column ">
870788< li class ="toc-h3 nav-item toc-entry "> < a class ="reference internal nav-link " href ="#new-build-case "> New Build Case</ a > </ li >
871789</ ul >
872790</ li >
0 commit comments