Skip to content

Latest commit

History

191 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This repository allows you to run CLEANRWastewater to optimize regional investment portfolios for WWTPs in Lower South San Fransisco Bay

The steps below will show you how to: (1) set-up your environment (2) reproduce the manuscript results using the python analysis script (3) reproduce the manuscript figures using the jupyter notebooks

  1. Setting up your environment:

    1. Use the .yml file to activate your environment by running the following code in your terminal: conda env create -f environment.yml
    2. Activate your environment: conda activate sfbaycap
  2. Running python analysis scripts: The main directory contains four python scripts that will allow you to reproduce the results produced from this work.

    1. Non_Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to non-staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Non-Staged" that contains all csv file results for Non-coordinated (NS-NC), partially coordinated (NS-PC), and fully coordinated (NS-FC) infrastructure planning cases.
    2. Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Staged" that contains all csv file results for Non-coordinated (S-NC), partially coordinated (S-PC), and fully coordinated (S-FC) infrastructure planning cases.
    3. Unit_cost_PC_analysis.py: This script will run CapExpModel.py for S-PC (staged, partially coordinated) and computes the unit cost of treatment for all combination of WWTPs for a specified month (defined as unit_cost_dt). This will create a folder in the Results directory titled "Unit_cost_by_WWTP" that contains separate csv file for each timestep assesed.
    4. Sensitivity_analysis_discharge.py: This script will run CapExpModel.py for specified discharge scenarios defined by a mult that places a multiplier on the BACWA 30-year projection. For example, a mult=1.2 will optimize the infrastructure for a projected discharge 120% greater than the BACWA projection. The results of this sensitivity analysis will be saved as csv files in the Results directory in a folder titled "Sensitivity_all_coordination_S". For non-staged sensitivity results, set the parameter for "staged_infrastructure" to false and save the results in the folder "Sensitivity_all_coordination_NS".
    5. Sensitivity_analysis_TR.py: This script will run CapExpModel.py for specified trading ratios. The base case assumes a trading ratio of 1:1 (i.e. WWTPs can buy 1 lb of nutrient credit to meet 1 lb of permit limits). Analysis allows running portfolio optimizations for all cases assuming any Trading Ratio (currently set from 1:1 to 3:1).
    6. Power_law_capex.py: This script allows running CapExpModel.py assuming a power law for capital costs. This allows users to specify parameters for each capital cost upgrades that fit general exponential functions. The function calls the pyomo model directly and adjusts solver setting to solve this non-linear costing equation.
    7. Exponential_projection_analysis.py: This script runs CapExpModel.py assuming an exponential growth for initial load and flow into each facility.
    8. Sensitivity_analysis_PlantNumb.py: This script runs CapExpModel.py for various number of facility numbers. The base case assumes optimizing infrastructure planning for three plants, but this script adds new facilities to the input file (by creating a copy of the other three plants consecutively). The script runs a sensitivity from 3 to 10 facilities in total.
    9. Sensitivity_analysis_Years.py: This script runs CapExpModel.py for various number of planning horizons. The base case assumes 30 year infrastructure plans, but this script allows users to run the optimization from 30 to 60 years in 1 year increments.
  3. Running jupyter notebooks: The directory "Jupyter_Scripts_for_Figures" contains all jupyter notebooks used to produce figures for this manuscript. The notebooks will import data from the Results directory (see previous step) and produce the required figures. All figures will be saved in the 'Figures' or 'Figures/SI' directory.

For questions, suggestions, or issues, please contact Sinan Abi Farraj (sinanaf@stanford.edu).

About

An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - we3lab/Cap_Expansion_Model_SFBay: An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area. · GitHub
Skip to content

Latest commit

History

191 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This repository allows you to run CLEANRWastewater to optimize regional investment portfolios for WWTPs in Lower South San Fransisco Bay

The steps below will show you how to: (1) set-up your environment (2) reproduce the manuscript results using the python analysis script (3) reproduce the manuscript figures using the jupyter notebooks

  1. Setting up your environment:

    1. Use the .yml file to activate your environment by running the following code in your terminal: conda env create -f environment.yml
    2. Activate your environment: conda activate sfbaycap
  2. Running python analysis scripts: The main directory contains four python scripts that will allow you to reproduce the results produced from this work.

    1. Non_Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to non-staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Non-Staged" that contains all csv file results for Non-coordinated (NS-NC), partially coordinated (NS-PC), and fully coordinated (NS-FC) infrastructure planning cases.
    2. Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Staged" that contains all csv file results for Non-coordinated (S-NC), partially coordinated (S-PC), and fully coordinated (S-FC) infrastructure planning cases.
    3. Unit_cost_PC_analysis.py: This script will run CapExpModel.py for S-PC (staged, partially coordinated) and computes the unit cost of treatment for all combination of WWTPs for a specified month (defined as unit_cost_dt). This will create a folder in the Results directory titled "Unit_cost_by_WWTP" that contains separate csv file for each timestep assesed.
    4. Sensitivity_analysis_discharge.py: This script will run CapExpModel.py for specified discharge scenarios defined by a mult that places a multiplier on the BACWA 30-year projection. For example, a mult=1.2 will optimize the infrastructure for a projected discharge 120% greater than the BACWA projection. The results of this sensitivity analysis will be saved as csv files in the Results directory in a folder titled "Sensitivity_all_coordination_S". For non-staged sensitivity results, set the parameter for "staged_infrastructure" to false and save the results in the folder "Sensitivity_all_coordination_NS".
    5. Sensitivity_analysis_TR.py: This script will run CapExpModel.py for specified trading ratios. The base case assumes a trading ratio of 1:1 (i.e. WWTPs can buy 1 lb of nutrient credit to meet 1 lb of permit limits). Analysis allows running portfolio optimizations for all cases assuming any Trading Ratio (currently set from 1:1 to 3:1).
    6. Power_law_capex.py: This script allows running CapExpModel.py assuming a power law for capital costs. This allows users to specify parameters for each capital cost upgrades that fit general exponential functions. The function calls the pyomo model directly and adjusts solver setting to solve this non-linear costing equation.
    7. Exponential_projection_analysis.py: This script runs CapExpModel.py assuming an exponential growth for initial load and flow into each facility.
    8. Sensitivity_analysis_PlantNumb.py: This script runs CapExpModel.py for various number of facility numbers. The base case assumes optimizing infrastructure planning for three plants, but this script adds new facilities to the input file (by creating a copy of the other three plants consecutively). The script runs a sensitivity from 3 to 10 facilities in total.
    9. Sensitivity_analysis_Years.py: This script runs CapExpModel.py for various number of planning horizons. The base case assumes 30 year infrastructure plans, but this script allows users to run the optimization from 30 to 60 years in 1 year increments.
  3. Running jupyter notebooks: The directory "Jupyter_Scripts_for_Figures" contains all jupyter notebooks used to produce figures for this manuscript. The notebooks will import data from the Results directory (see previous step) and produce the required figures. All figures will be saved in the 'Figures' or 'Figures/SI' directory.

For questions, suggestions, or issues, please contact Sinan Abi Farraj (sinanaf@stanford.edu).

About

An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - we3lab/Cap_Expansion_Model_SFBay: An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area. · GitHub
Skip to content

Latest commit

History

191 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This repository allows you to run CLEANRWastewater to optimize regional investment portfolios for WWTPs in Lower South San Fransisco Bay

The steps below will show you how to: (1) set-up your environment (2) reproduce the manuscript results using the python analysis script (3) reproduce the manuscript figures using the jupyter notebooks

  1. Setting up your environment:

    1. Use the .yml file to activate your environment by running the following code in your terminal: conda env create -f environment.yml
    2. Activate your environment: conda activate sfbaycap
  2. Running python analysis scripts: The main directory contains four python scripts that will allow you to reproduce the results produced from this work.

    1. Non_Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to non-staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Non-Staged" that contains all csv file results for Non-coordinated (NS-NC), partially coordinated (NS-PC), and fully coordinated (NS-FC) infrastructure planning cases.
    2. Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Staged" that contains all csv file results for Non-coordinated (S-NC), partially coordinated (S-PC), and fully coordinated (S-FC) infrastructure planning cases.
    3. Unit_cost_PC_analysis.py: This script will run CapExpModel.py for S-PC (staged, partially coordinated) and computes the unit cost of treatment for all combination of WWTPs for a specified month (defined as unit_cost_dt). This will create a folder in the Results directory titled "Unit_cost_by_WWTP" that contains separate csv file for each timestep assesed.
    4. Sensitivity_analysis_discharge.py: This script will run CapExpModel.py for specified discharge scenarios defined by a mult that places a multiplier on the BACWA 30-year projection. For example, a mult=1.2 will optimize the infrastructure for a projected discharge 120% greater than the BACWA projection. The results of this sensitivity analysis will be saved as csv files in the Results directory in a folder titled "Sensitivity_all_coordination_S". For non-staged sensitivity results, set the parameter for "staged_infrastructure" to false and save the results in the folder "Sensitivity_all_coordination_NS".
    5. Sensitivity_analysis_TR.py: This script will run CapExpModel.py for specified trading ratios. The base case assumes a trading ratio of 1:1 (i.e. WWTPs can buy 1 lb of nutrient credit to meet 1 lb of permit limits). Analysis allows running portfolio optimizations for all cases assuming any Trading Ratio (currently set from 1:1 to 3:1).
    6. Power_law_capex.py: This script allows running CapExpModel.py assuming a power law for capital costs. This allows users to specify parameters for each capital cost upgrades that fit general exponential functions. The function calls the pyomo model directly and adjusts solver setting to solve this non-linear costing equation.
    7. Exponential_projection_analysis.py: This script runs CapExpModel.py assuming an exponential growth for initial load and flow into each facility.
    8. Sensitivity_analysis_PlantNumb.py: This script runs CapExpModel.py for various number of facility numbers. The base case assumes optimizing infrastructure planning for three plants, but this script adds new facilities to the input file (by creating a copy of the other three plants consecutively). The script runs a sensitivity from 3 to 10 facilities in total.
    9. Sensitivity_analysis_Years.py: This script runs CapExpModel.py for various number of planning horizons. The base case assumes 30 year infrastructure plans, but this script allows users to run the optimization from 30 to 60 years in 1 year increments.
  3. Running jupyter notebooks: The directory "Jupyter_Scripts_for_Figures" contains all jupyter notebooks used to produce figures for this manuscript. The notebooks will import data from the Results directory (see previous step) and produce the required figures. All figures will be saved in the 'Figures' or 'Figures/SI' directory.

For questions, suggestions, or issues, please contact Sinan Abi Farraj (sinanaf@stanford.edu).

About

An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - we3lab/Cap_Expansion_Model_SFBay: An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area. · GitHub
Skip to content

Latest commit

History

191 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This repository allows you to run CLEANRWastewater to optimize regional investment portfolios for WWTPs in Lower South San Fransisco Bay

The steps below will show you how to: (1) set-up your environment (2) reproduce the manuscript results using the python analysis script (3) reproduce the manuscript figures using the jupyter notebooks

  1. Setting up your environment:

    1. Use the .yml file to activate your environment by running the following code in your terminal: conda env create -f environment.yml
    2. Activate your environment: conda activate sfbaycap
  2. Running python analysis scripts: The main directory contains four python scripts that will allow you to reproduce the results produced from this work.

    1. Non_Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to non-staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Non-Staged" that contains all csv file results for Non-coordinated (NS-NC), partially coordinated (NS-PC), and fully coordinated (NS-FC) infrastructure planning cases.
    2. Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Staged" that contains all csv file results for Non-coordinated (S-NC), partially coordinated (S-PC), and fully coordinated (S-FC) infrastructure planning cases.
    3. Unit_cost_PC_analysis.py: This script will run CapExpModel.py for S-PC (staged, partially coordinated) and computes the unit cost of treatment for all combination of WWTPs for a specified month (defined as unit_cost_dt). This will create a folder in the Results directory titled "Unit_cost_by_WWTP" that contains separate csv file for each timestep assesed.
    4. Sensitivity_analysis_discharge.py: This script will run CapExpModel.py for specified discharge scenarios defined by a mult that places a multiplier on the BACWA 30-year projection. For example, a mult=1.2 will optimize the infrastructure for a projected discharge 120% greater than the BACWA projection. The results of this sensitivity analysis will be saved as csv files in the Results directory in a folder titled "Sensitivity_all_coordination_S". For non-staged sensitivity results, set the parameter for "staged_infrastructure" to false and save the results in the folder "Sensitivity_all_coordination_NS".
    5. Sensitivity_analysis_TR.py: This script will run CapExpModel.py for specified trading ratios. The base case assumes a trading ratio of 1:1 (i.e. WWTPs can buy 1 lb of nutrient credit to meet 1 lb of permit limits). Analysis allows running portfolio optimizations for all cases assuming any Trading Ratio (currently set from 1:1 to 3:1).
    6. Power_law_capex.py: This script allows running CapExpModel.py assuming a power law for capital costs. This allows users to specify parameters for each capital cost upgrades that fit general exponential functions. The function calls the pyomo model directly and adjusts solver setting to solve this non-linear costing equation.
    7. Exponential_projection_analysis.py: This script runs CapExpModel.py assuming an exponential growth for initial load and flow into each facility.
    8. Sensitivity_analysis_PlantNumb.py: This script runs CapExpModel.py for various number of facility numbers. The base case assumes optimizing infrastructure planning for three plants, but this script adds new facilities to the input file (by creating a copy of the other three plants consecutively). The script runs a sensitivity from 3 to 10 facilities in total.
    9. Sensitivity_analysis_Years.py: This script runs CapExpModel.py for various number of planning horizons. The base case assumes 30 year infrastructure plans, but this script allows users to run the optimization from 30 to 60 years in 1 year increments.
  3. Running jupyter notebooks: The directory "Jupyter_Scripts_for_Figures" contains all jupyter notebooks used to produce figures for this manuscript. The notebooks will import data from the Results directory (see previous step) and produce the required figures. All figures will be saved in the 'Figures' or 'Figures/SI' directory.

For questions, suggestions, or issues, please contact Sinan Abi Farraj (sinanaf@stanford.edu).

About

An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - we3lab/Cap_Expansion_Model_SFBay: An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area. · GitHub
Skip to content

Latest commit

History

191 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This repository allows you to run CLEANRWastewater to optimize regional investment portfolios for WWTPs in Lower South San Fransisco Bay

The steps below will show you how to: (1) set-up your environment (2) reproduce the manuscript results using the python analysis script (3) reproduce the manuscript figures using the jupyter notebooks

  1. Setting up your environment:

    1. Use the .yml file to activate your environment by running the following code in your terminal: conda env create -f environment.yml
    2. Activate your environment: conda activate sfbaycap
  2. Running python analysis scripts: The main directory contains four python scripts that will allow you to reproduce the results produced from this work.

    1. Non_Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to non-staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Non-Staged" that contains all csv file results for Non-coordinated (NS-NC), partially coordinated (NS-PC), and fully coordinated (NS-FC) infrastructure planning cases.
    2. Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Staged" that contains all csv file results for Non-coordinated (S-NC), partially coordinated (S-PC), and fully coordinated (S-FC) infrastructure planning cases.
    3. Unit_cost_PC_analysis.py: This script will run CapExpModel.py for S-PC (staged, partially coordinated) and computes the unit cost of treatment for all combination of WWTPs for a specified month (defined as unit_cost_dt). This will create a folder in the Results directory titled "Unit_cost_by_WWTP" that contains separate csv file for each timestep assesed.
    4. Sensitivity_analysis_discharge.py: This script will run CapExpModel.py for specified discharge scenarios defined by a mult that places a multiplier on the BACWA 30-year projection. For example, a mult=1.2 will optimize the infrastructure for a projected discharge 120% greater than the BACWA projection. The results of this sensitivity analysis will be saved as csv files in the Results directory in a folder titled "Sensitivity_all_coordination_S". For non-staged sensitivity results, set the parameter for "staged_infrastructure" to false and save the results in the folder "Sensitivity_all_coordination_NS".
    5. Sensitivity_analysis_TR.py: This script will run CapExpModel.py for specified trading ratios. The base case assumes a trading ratio of 1:1 (i.e. WWTPs can buy 1 lb of nutrient credit to meet 1 lb of permit limits). Analysis allows running portfolio optimizations for all cases assuming any Trading Ratio (currently set from 1:1 to 3:1).
    6. Power_law_capex.py: This script allows running CapExpModel.py assuming a power law for capital costs. This allows users to specify parameters for each capital cost upgrades that fit general exponential functions. The function calls the pyomo model directly and adjusts solver setting to solve this non-linear costing equation.
    7. Exponential_projection_analysis.py: This script runs CapExpModel.py assuming an exponential growth for initial load and flow into each facility.
    8. Sensitivity_analysis_PlantNumb.py: This script runs CapExpModel.py for various number of facility numbers. The base case assumes optimizing infrastructure planning for three plants, but this script adds new facilities to the input file (by creating a copy of the other three plants consecutively). The script runs a sensitivity from 3 to 10 facilities in total.
    9. Sensitivity_analysis_Years.py: This script runs CapExpModel.py for various number of planning horizons. The base case assumes 30 year infrastructure plans, but this script allows users to run the optimization from 30 to 60 years in 1 year increments.
  3. Running jupyter notebooks: The directory "Jupyter_Scripts_for_Figures" contains all jupyter notebooks used to produce figures for this manuscript. The notebooks will import data from the Results directory (see previous step) and produce the required figures. All figures will be saved in the 'Figures' or 'Figures/SI' directory.

For questions, suggestions, or issues, please contact Sinan Abi Farraj (sinanaf@stanford.edu).

About

An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - we3lab/Cap_Expansion_Model_SFBay: An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area. · GitHub
Skip to content

Latest commit

History

191 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This repository allows you to run CLEANRWastewater to optimize regional investment portfolios for WWTPs in Lower South San Fransisco Bay

The steps below will show you how to: (1) set-up your environment (2) reproduce the manuscript results using the python analysis script (3) reproduce the manuscript figures using the jupyter notebooks

  1. Setting up your environment:

    1. Use the .yml file to activate your environment by running the following code in your terminal: conda env create -f environment.yml
    2. Activate your environment: conda activate sfbaycap
  2. Running python analysis scripts: The main directory contains four python scripts that will allow you to reproduce the results produced from this work.

    1. Non_Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to non-staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Non-Staged" that contains all csv file results for Non-coordinated (NS-NC), partially coordinated (NS-PC), and fully coordinated (NS-FC) infrastructure planning cases.
    2. Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Staged" that contains all csv file results for Non-coordinated (S-NC), partially coordinated (S-PC), and fully coordinated (S-FC) infrastructure planning cases.
    3. Unit_cost_PC_analysis.py: This script will run CapExpModel.py for S-PC (staged, partially coordinated) and computes the unit cost of treatment for all combination of WWTPs for a specified month (defined as unit_cost_dt). This will create a folder in the Results directory titled "Unit_cost_by_WWTP" that contains separate csv file for each timestep assesed.
    4. Sensitivity_analysis_discharge.py: This script will run CapExpModel.py for specified discharge scenarios defined by a mult that places a multiplier on the BACWA 30-year projection. For example, a mult=1.2 will optimize the infrastructure for a projected discharge 120% greater than the BACWA projection. The results of this sensitivity analysis will be saved as csv files in the Results directory in a folder titled "Sensitivity_all_coordination_S". For non-staged sensitivity results, set the parameter for "staged_infrastructure" to false and save the results in the folder "Sensitivity_all_coordination_NS".
    5. Sensitivity_analysis_TR.py: This script will run CapExpModel.py for specified trading ratios. The base case assumes a trading ratio of 1:1 (i.e. WWTPs can buy 1 lb of nutrient credit to meet 1 lb of permit limits). Analysis allows running portfolio optimizations for all cases assuming any Trading Ratio (currently set from 1:1 to 3:1).
    6. Power_law_capex.py: This script allows running CapExpModel.py assuming a power law for capital costs. This allows users to specify parameters for each capital cost upgrades that fit general exponential functions. The function calls the pyomo model directly and adjusts solver setting to solve this non-linear costing equation.
    7. Exponential_projection_analysis.py: This script runs CapExpModel.py assuming an exponential growth for initial load and flow into each facility.
    8. Sensitivity_analysis_PlantNumb.py: This script runs CapExpModel.py for various number of facility numbers. The base case assumes optimizing infrastructure planning for three plants, but this script adds new facilities to the input file (by creating a copy of the other three plants consecutively). The script runs a sensitivity from 3 to 10 facilities in total.
    9. Sensitivity_analysis_Years.py: This script runs CapExpModel.py for various number of planning horizons. The base case assumes 30 year infrastructure plans, but this script allows users to run the optimization from 30 to 60 years in 1 year increments.
  3. Running jupyter notebooks: The directory "Jupyter_Scripts_for_Figures" contains all jupyter notebooks used to produce figures for this manuscript. The notebooks will import data from the Results directory (see previous step) and produce the required figures. All figures will be saved in the 'Figures' or 'Figures/SI' directory.

For questions, suggestions, or issues, please contact Sinan Abi Farraj (sinanaf@stanford.edu).

About

An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - we3lab/Cap_Expansion_Model_SFBay: An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area. · GitHub
Skip to content

Latest commit

History

191 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This repository allows you to run CLEANRWastewater to optimize regional investment portfolios for WWTPs in Lower South San Fransisco Bay

The steps below will show you how to: (1) set-up your environment (2) reproduce the manuscript results using the python analysis script (3) reproduce the manuscript figures using the jupyter notebooks

  1. Setting up your environment:

    1. Use the .yml file to activate your environment by running the following code in your terminal: conda env create -f environment.yml
    2. Activate your environment: conda activate sfbaycap
  2. Running python analysis scripts: The main directory contains four python scripts that will allow you to reproduce the results produced from this work.

    1. Non_Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to non-staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Non-Staged" that contains all csv file results for Non-coordinated (NS-NC), partially coordinated (NS-PC), and fully coordinated (NS-FC) infrastructure planning cases.
    2. Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Staged" that contains all csv file results for Non-coordinated (S-NC), partially coordinated (S-PC), and fully coordinated (S-FC) infrastructure planning cases.
    3. Unit_cost_PC_analysis.py: This script will run CapExpModel.py for S-PC (staged, partially coordinated) and computes the unit cost of treatment for all combination of WWTPs for a specified month (defined as unit_cost_dt). This will create a folder in the Results directory titled "Unit_cost_by_WWTP" that contains separate csv file for each timestep assesed.
    4. Sensitivity_analysis_discharge.py: This script will run CapExpModel.py for specified discharge scenarios defined by a mult that places a multiplier on the BACWA 30-year projection. For example, a mult=1.2 will optimize the infrastructure for a projected discharge 120% greater than the BACWA projection. The results of this sensitivity analysis will be saved as csv files in the Results directory in a folder titled "Sensitivity_all_coordination_S". For non-staged sensitivity results, set the parameter for "staged_infrastructure" to false and save the results in the folder "Sensitivity_all_coordination_NS".
    5. Sensitivity_analysis_TR.py: This script will run CapExpModel.py for specified trading ratios. The base case assumes a trading ratio of 1:1 (i.e. WWTPs can buy 1 lb of nutrient credit to meet 1 lb of permit limits). Analysis allows running portfolio optimizations for all cases assuming any Trading Ratio (currently set from 1:1 to 3:1).
    6. Power_law_capex.py: This script allows running CapExpModel.py assuming a power law for capital costs. This allows users to specify parameters for each capital cost upgrades that fit general exponential functions. The function calls the pyomo model directly and adjusts solver setting to solve this non-linear costing equation.
    7. Exponential_projection_analysis.py: This script runs CapExpModel.py assuming an exponential growth for initial load and flow into each facility.
    8. Sensitivity_analysis_PlantNumb.py: This script runs CapExpModel.py for various number of facility numbers. The base case assumes optimizing infrastructure planning for three plants, but this script adds new facilities to the input file (by creating a copy of the other three plants consecutively). The script runs a sensitivity from 3 to 10 facilities in total.
    9. Sensitivity_analysis_Years.py: This script runs CapExpModel.py for various number of planning horizons. The base case assumes 30 year infrastructure plans, but this script allows users to run the optimization from 30 to 60 years in 1 year increments.
  3. Running jupyter notebooks: The directory "Jupyter_Scripts_for_Figures" contains all jupyter notebooks used to produce figures for this manuscript. The notebooks will import data from the Results directory (see previous step) and produce the required figures. All figures will be saved in the 'Figures' or 'Figures/SI' directory.

For questions, suggestions, or issues, please contact Sinan Abi Farraj (sinanaf@stanford.edu).

About

An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - we3lab/Cap_Expansion_Model_SFBay: An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area. · GitHub
Skip to content

Latest commit

History

191 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

This repository allows you to run CLEANRWastewater to optimize regional investment portfolios for WWTPs in Lower South San Fransisco Bay

The steps below will show you how to: (1) set-up your environment (2) reproduce the manuscript results using the python analysis script (3) reproduce the manuscript figures using the jupyter notebooks

  1. Setting up your environment:

    1. Use the .yml file to activate your environment by running the following code in your terminal: conda env create -f environment.yml
    2. Activate your environment: conda activate sfbaycap
  2. Running python analysis scripts: The main directory contains four python scripts that will allow you to reproduce the results produced from this work.

    1. Non_Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to non-staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Non-Staged" that contains all csv file results for Non-coordinated (NS-NC), partially coordinated (NS-PC), and fully coordinated (NS-FC) infrastructure planning cases.
    2. Staged_script.py: This script will run the capacity expansion optimization model (CapExpModel.py) using parameters that constrain the model to staged infrastructure planning (see manuscript for equations). This will create a folder in the Results directory titled "Staged" that contains all csv file results for Non-coordinated (S-NC), partially coordinated (S-PC), and fully coordinated (S-FC) infrastructure planning cases.
    3. Unit_cost_PC_analysis.py: This script will run CapExpModel.py for S-PC (staged, partially coordinated) and computes the unit cost of treatment for all combination of WWTPs for a specified month (defined as unit_cost_dt). This will create a folder in the Results directory titled "Unit_cost_by_WWTP" that contains separate csv file for each timestep assesed.
    4. Sensitivity_analysis_discharge.py: This script will run CapExpModel.py for specified discharge scenarios defined by a mult that places a multiplier on the BACWA 30-year projection. For example, a mult=1.2 will optimize the infrastructure for a projected discharge 120% greater than the BACWA projection. The results of this sensitivity analysis will be saved as csv files in the Results directory in a folder titled "Sensitivity_all_coordination_S". For non-staged sensitivity results, set the parameter for "staged_infrastructure" to false and save the results in the folder "Sensitivity_all_coordination_NS".
    5. Sensitivity_analysis_TR.py: This script will run CapExpModel.py for specified trading ratios. The base case assumes a trading ratio of 1:1 (i.e. WWTPs can buy 1 lb of nutrient credit to meet 1 lb of permit limits). Analysis allows running portfolio optimizations for all cases assuming any Trading Ratio (currently set from 1:1 to 3:1).
    6. Power_law_capex.py: This script allows running CapExpModel.py assuming a power law for capital costs. This allows users to specify parameters for each capital cost upgrades that fit general exponential functions. The function calls the pyomo model directly and adjusts solver setting to solve this non-linear costing equation.
    7. Exponential_projection_analysis.py: This script runs CapExpModel.py assuming an exponential growth for initial load and flow into each facility.
    8. Sensitivity_analysis_PlantNumb.py: This script runs CapExpModel.py for various number of facility numbers. The base case assumes optimizing infrastructure planning for three plants, but this script adds new facilities to the input file (by creating a copy of the other three plants consecutively). The script runs a sensitivity from 3 to 10 facilities in total.
    9. Sensitivity_analysis_Years.py: This script runs CapExpModel.py for various number of planning horizons. The base case assumes 30 year infrastructure plans, but this script allows users to run the optimization from 30 to 60 years in 1 year increments.
  3. Running jupyter notebooks: The directory "Jupyter_Scripts_for_Figures" contains all jupyter notebooks used to produce figures for this manuscript. The notebooks will import data from the Results directory (see previous step) and produce the required figures. All figures will be saved in the 'Figures' or 'Figures/SI' directory.

For questions, suggestions, or issues, please contact Sinan Abi Farraj (sinanaf@stanford.edu).

About

An equation oriented modeling approach for staged and regionally coordinating WWTP nutrient management infrastructure investments with an example in the SF bay area.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages