structuralcircle

Sustainable design from used structural elements. A project about building design from used elements in Grasshopper and Rhino.

https://github.com/marcinluczkowski/structuralcircle

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
Last synced: 10 months ago · JSON representation

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
Created about 4 years ago · Last pushed about 2 years ago
Metadata Files
Readme License Citation

README.md

DOI

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

GitHub Events

Total
  • Watch event: 2
Last Year
  • Watch event: 2

Dependencies

GrasshopperSolution/C#_Python_Component/FirstPythonComponent/FirstPythonComponent.csproj nuget
  • 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
GrasshopperSolution/C#_Python_Component/FirstPythonComponent/obj/project.assets.json nuget
  • 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
requirements.txt pypi