{"id":21241141,"url":"https://github.com/ccsi-toolset/fixed_bed_adsorption","last_synced_at":"2025-10-30T09:08:33.774Z","repository":{"id":38297127,"uuid":"463728087","full_name":"CCSI-Toolset/fixed_bed_adsorption","owner":"CCSI-Toolset","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-17T21:11:22.000Z","size":200028,"stargazers_count":5,"open_issues_count":1,"forks_count":5,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-07-11T01:01:57.957Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CCSI-Toolset.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-26T02:00:02.000Z","updated_at":"2025-03-14T09:21:27.000Z","dependencies_parsed_at":"2023-12-19T05:57:13.268Z","dependency_job_id":"17e89488-b769-4818-ac80-e3189a7614d6","html_url":"https://github.com/CCSI-Toolset/fixed_bed_adsorption","commit_stats":{"total_commits":4,"total_committers":2,"mean_commits":2.0,"dds":0.25,"last_synced_commit":"267cdab0023fe13449e2f890fbed61849833b368"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CCSI-Toolset/fixed_bed_adsorption","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CCSI-Toolset%2Ffixed_bed_adsorption","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CCSI-Toolset%2Ffixed_bed_adsorption/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CCSI-Toolset%2Ffixed_bed_adsorption/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CCSI-Toolset%2Ffixed_bed_adsorption/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CCSI-Toolset","download_url":"https://codeload.github.com/CCSI-Toolset/fixed_bed_adsorption/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CCSI-Toolset%2Ffixed_bed_adsorption/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281778820,"owners_count":26559984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-30T02:00:06.501Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-21T00:54:48.801Z","updated_at":"2025-10-30T09:08:33.769Z","avatar_url":"https://github.com/CCSI-Toolset.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MBDoE and MO analysis for co-current and counter-current RPB \n\nAuthors: Jialu Wang, Ryan Hughes, Debangsu Bhattacharrya, Alexander Dowling \n\n## Installation instructions \n\nThe following instructions assume you have anaconda installed. We suggest create an environment with the following commands to run code: \n\n### Step 1: create a new environment \n- create new environment, called for e.g. `rotary`, with `conda`\n\n`conda create --name rotary python==3.8`\n\n`conda activate rotary`\n   \n### Step 2: install `IDAES-PSE`\n- this step is necessary for running `homotopy` solve for the model \n\n`pip install idaes-pse` \n\n`idaes get-extensions`\n   \n### Step 3: install `Pyomo` from specified branches\n- install from the following branch for a modified version of `Pyomo`:\n\n`pip install git+https://github.com/jialuw96/pyomo.git@RPB_MBDOE`\n\n\n### Step 4: install `jupyter notebook`\n- this is needed only for the draw_figure.ipynb notebook\n\n  `conda install jupyter notebook`\n\n### Software versions we use for the results \n\n`Python`: 3.8\n\n`IDAES-PSE`: 2.2.0\n\n`Pyomo`: 6.7.0 dev 0\n\n## Code content \n\n### Co-current flow model \n\n- `RPB_model_cocurrent.py`: Co-current flow RPB model provided by Ryan, modified for running `k_aug`\n\n- `Cocurrent_flow_MBDoE.ipynb`: Apply `Pyomo.DoE` to the RPB model with `compute_FIM` and `run_grid_search`. `stochastic_program` is also tried but not debugged\n\n### Counter-current flow model (Results are represented in Jialu's thesis chapter 4)\n\n- `RPB_model_countercurrent_kaug.py`: Conter-current flow RPB model provided by Ryan, modified for running `k_aug`\n\n- `Countercurrent_MBDoE.ipynb`: MBDoE analysis applying `Pyomo.DoE` and `k_aug` to the RPB model with `compute_FIM` and `run_grid_search`. `stochastic_program` is also tried but not debugged\n\n- `Counterflow_MO_data_process.ipynb`: Process the sensitivity data for MO analysis\n\n- `Counterflow_Jacobian_process.ipynb`: Reformulate the data structure for MO analysis\n\n- `countercurrent_MO.py`: Measurement optimization analysis to the RPB model\n\n- `counterflow_finite_difference_analysis.ipynb`: MBDoE analysis to the RPB model with finite difference method, not using `Pyomo.DoE`\n\n- `draw_figure.ipynb`: Generates all results figures in the manuscript\n\n## Results content \n\n### Cocurrent flow model\n\n- `Cocurrent_results/MO_results`: folder, contains the MO results at different budgets. For e.g., Sep17_2000_a means budget=2000, optimized with A-optimality \n\n- `Cocurrent_results/MBDoE_results`: folder, contains the process models ran with different variables. For e.g., Nov25_368_388 means ads.T = 368K, des.T=388K \n\n- `Countercurrent_results/MO_MILP_solution`: folder, contains the MO results at different budgets. For e.g., updated_2000 means budget=2000, optimized with A-optimality \n\n- `Countercurrent_results/MBDoE_results/MBDOE_sens`: folder, contained the process models ran with different variables. For e.g., .Tgin_des_391/Tgin_ads_368 means ads.T = 368K, des.T=391K\n\n\n## Run Models\n\nModel code and how to run them are provided by Ryan Hughes in `Ryan-Hughes-8/fixed_bed_adsorption` repository: \n\nCo-current flow model: https://github.com/Ryan-Hughes-8/fixed_bed_adsorption\n\nCounter-current flow model:  https://github.com/Ryan-Hughes-8/fixed_bed_adsorption/tree/counter-current-configuration\n\n## Run measurement optimization results \n\nThe rerun instructions are for counter-current flow model, which is the model we use for the paper / thesis results. \n\n### Step 1: Achieve sensitivity information (Jacobian) and error variance matrix\n\n- Run `Counterflow_MO_data_process.ipynb` to generate all the sensitivity data\n\n### Step 2: Process the data for MO analysis\n\n- Run `Counterflow_Jacobian_process.ipynb` to organize the sensitivity data to .csv files that MO code use\n\n### Step 3: Run MO analysis \n\n- In `Countercurrent_MO.py`, find the toggles in line 17 - 27\n- Choose mixed-integer option by `mip_option`\n- Choose objective by `objective`\n- Choose budget set. It is default to be the budget ranges we use for the paper, from 2000 to 10000\n\n## Run MBDoE analysis\n\n### Run MBDoE with `k_aug` \n\n- `Countercurrent_MBDoE.ipynb`: MBDoE analysis applying `Pyomo.DoE` and `k_aug` to the RPB model with `compute_FIM` and `run_grid_search`\n\n### Run MBDoE with finite difference \n\n- `Counterflow-finite-difference-analysis.ipynb`: MBDoE analysis applying finite difference method to the RPB model. It runs the grid search, and generates the thesis results.\n\n\n## Reproduce figures \n\n- `draw_figures.ipynb`: include the functions and the path of results to reproduce Fig. 4.2, 4.3, 4.4, 4.5 in the Chapter 4 of Jialu's thesis. \n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccsi-toolset%2Ffixed_bed_adsorption","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccsi-toolset%2Ffixed_bed_adsorption","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccsi-toolset%2Ffixed_bed_adsorption/lists"}