structuralcircle
Sustainable design from used structural elements. A project about building design from used elements in Grasshopper and Rhino.
Science Score: 49.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 1 DOI reference(s) in README -
✓Academic publication links
Links to: iop.org, zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.2%) to scientific vocabulary
Repository
Sustainable design from used structural elements. A project about building design from used elements in Grasshopper and Rhino.
Basic Info
- Host: GitHub
- Owner: marcinluczkowski
- License: mit
- Language: Python
- Default Branch: main
- Size: 563 MB
Statistics
- Stars: 20
- Watchers: 2
- Forks: 5
- Open Issues: 5
- Releases: 2
Metadata Files
README.md
structuralCircle
Sustainable design from used structural elements. A project about building design from used elements in Grasshopper and Rhino.
The repository contains data, tests and solutions related to the research project at Norwegian University of Science and Technology (NTNU).
The structuralCircle project is about aiding the design process with reclaimed building components. In particular, the algorithm is matching available products to the design intent, aiming at environmental impact minimization.
The solution is written in Python and for the ease of use wrapped into a Grasshopper nodes available for Rhino users.
The implementation includes greedy algorithms, bipartite graphs, and mixed integer linear programming.
Test data contains simulated sets of building elements. The aim of test cases is to compare score - reduction of embodied emissions, and speed of the calculation.
The algorithms are also explained in this Colab notebook: https://colab.research.google.com/drive/1BRBxFhya6xCnV-flAPq-Ro8zkxuSnnhC?usp=sharing
How to run
First, run the console and install the required packages from the list using:
pip install -r requirements.txt
Then, import the relevant packages and define the input data:
```
import relevant packages
import pandas as pd import sys sys.path.append('./Matching') import helpermethods as hm from matching import runmatching import LCA as lca
Create two datasets with two elements in each - demand D and supply S:
demand = pd.DataFrame(columns = ['Length', 'Area', 'Inertiamoment', 'Height', 'Gwpfactor']) demand.loc['D1'] = {'Length': 4.00, 'Area': 0.06, 'Inertiamoment':0.00030, 'Height': 0.30, 'Gwpfactor':lca.TIMBERGWP} demand.loc['D2'] = {'Length': 5.00, 'Area': 0.04, 'Inertiamoment':0.00010, 'Height': 0.20, 'Gwpfactor':lca.TIMBERGWP} supply = pd.DataFrame(columns = ['Length', 'Area', 'Inertiamoment', 'Height', 'Gwpfactor']) supply.loc['S1'] = {'Length': 5.50, 'Area': 0.045, 'Inertiamoment':0.00010, 'Height': 0.20, 'Gwpfactor':lca.TIMBERREUSEGWP} supply.loc['S2'] = {'Length': 4.50, 'Area': 0.065, 'Inertiamoment':0.00035, 'Height': 0.35, 'Gwpfactor':lca.TIMBERREUSEGWP}
create constraint dictionary
constraintdict = {'Area' : '>=', 'Inertiamoment' : '>=', 'Length' : '>='}
create optimization formula
scorefunctionstring = "@lca.calculatelca(length=Length, area=Area, gwpfactor=Gwpfactor, includetransportation=False)" ```
Finally, run the matching with desired methods and display the resultant pairs of elements: ```
run the matching
resultsimple = runmatching(demand, supply, scorefunctionstring=scorefunctionstring, constraints = constraintdict, addnew = True, scimilp=False, milp=False, greedysingle=True, bipartite=True)
display results - matching table
print(hm.extractpairsdf(result_simple))
display results - the score
print(hm.extractresultsdf(result_simple)) ```
Read more
You can read our journal paper called 'Matching algorithms to assist in designing with reclaimed building elements' here: https://iopscience.iop.org/article/10.1088/2634-4505/acf341
Owner
- Login: marcinluczkowski
- Kind: user
- Repositories: 2
- Profile: https://github.com/marcinluczkowski
GitHub Events
Total
- Watch event: 2
Last Year
- Watch event: 2
Dependencies
- Grasshopper 7.13.21348.13001
- Microsoft.Extensions.DependencyModel 6.0.0
- Serilog 2.12.0
- Serilog.Extensions.Logging 3.1.0
- Serilog.Sinks.File 5.0.0
- Grasshopper 7.13.21348.13001
- Microsoft.Bcl.AsyncInterfaces 6.0.0
- Microsoft.Extensions.DependencyInjection.Abstractions 2.0.0
- Microsoft.Extensions.DependencyModel 6.0.0
- Microsoft.Extensions.Logging 2.0.0
- Microsoft.Extensions.Logging.Abstractions 2.0.0
- Microsoft.Extensions.Options 2.0.0
- Microsoft.Extensions.Primitives 2.0.0
- RhinoCommon 7.13.21348.13001
- Serilog 2.12.0
- Serilog.Extensions.Logging 3.1.0
- Serilog.Sinks.File 5.0.0
- System.Buffers 4.5.1
- System.Memory 4.5.4
- System.Numerics.Vectors 4.5.0
- System.Runtime.CompilerServices.Unsafe 6.0.0
- System.Runtime.InteropServices.RuntimeInformation 4.3.0
- System.Text.Encodings.Web 6.0.0
- System.Text.Json 6.0.0
- System.Threading.Tasks.Extensions 4.5.4
- System.ValueTuple 4.5.0