Beaver is a tool that allows parametric structural analysis and design of timber structures according to the European code “Eurocode5 - Design of Timber Structures”. Beaver was conceived at the Polytechnic School of the University of São Paulo - Brazil, and developed by
BeaverCore is the core library of Beaver project. It is a .NET Standard 2.0 library which contains all logic to define timber beams and connections and analyse them by automatically generating load combinations and design checks. The choice for .NET Standard is to make Beaver logic accessible to any application and platform in .NET
BeaverCore is enhanced by BeaverGrasshopper, a Grasshopper plug-in which uses BeaverCore logic to provide a Grasshopper plugin to generate and visualize design checks with options to import from Karamba3d plug-in.
The active development branch is develop
, the stable version is master
and the release branch is release
. Please create all your PRs to develop
.
Although being tested thoroughly Beaver probably contains errors – therefore no guarantee can be given that Beaver computes correct results. Use of Beaver is entirely at your own risk.
To make a simple analysis with BeaverCore, you can analyse a single TimberFramePoint
providing the frame material, cross section, caracteristic displacements and internal forces. You can always reference the corresponding Eurocode sections of the analysis by navigating through the code. Better documentation is in the to-do list.
public void TestULSDesign()
{
//Set permanent load displacement
Displacement dispP = new Displacement(0.8, "P");
//Set acidental load displacement
Displacement dispQA = new Displacement(0.5, "QA");
//Set displacement list
List<Displacement> disps = new List<Displacement>() { dispQA, dispP };
//Set permanent load internal forces
Force forceP = new Force(50, 5, 4, 2.2, 6.8, 1.8, "P"); //N,Vy,Vz,Mt,My,Mz
//Set acidental load internal forces
Force forceQA = new Force(28, 3, 2, 0.2, 1.5, 0.4, "QA"); //N,Vy,Vz,Mt,My,Mz
Set internal force list
List<Force> forces = new List<Force>() { forceP, forceQA };
//Set material and cross-section
Material mat = new Material("Glulam c","Softwood", 24*1e6, 17*1e6,
0.5, 21.5, 2.5, 3.5, 11000,
9100, 300, 650, 540,365,0); // kN/cm^2, EN 338:2016
CroSec crosec = new CroSec_Rect(15, 15,mat);
Point3D point = new Point3D();
// Define a timber frame point with the corresponding displacements, forces and parameters.
// The constructor deals with generating load combinations
TimberFramePoint element = new TimberFramePoint(point,forces, disps, crosec, 1, 205, 205, 205, 0.7);
//Retrieve the ULS results for all load combinations and checks
TimberFrameULSResult result = element.ULSUtilization();
//Retrieve the SLS results for all displacements combinations and checks
TimberFrameSLSResult result = element.SLSUtilization();
/// extract results
List<double[]> UtilsY = result.UtilsY;
for (int i=0; i < UtilsY.Count; i++)
{
// Utils0 values for all load combinations
Console.WriteLine(UtilsY[i][0]);
}
}
You can also physically define an entire TimberFrame
object which contains a sequence of the discretized analysed TimberFramePoints of the given frame.
You can contribute to Beaver by either contributing to it's Functionality, CI/CD, Documentation and Bugfixing.
CI/CD, Documentation and Bugfixing are the prioritites for now since they are currently just the basics (or not even that).
We are adding issues to the repo with the tags Easy
, Medium
and Hard
so you can chose one with your wish of complexity to create a PR for it.
Feel free to add new issues and also contributing with your ideas in a correspoding PR.
- Model
- Actions (Forces/Displacement) Model
- Combinations Model
- Section Model
- Connections Model
- GlobalModel containing sections, connections and corresponding connectivities
- Integration with section and connection forces
- Addition of new structural design codes (and it does not have to be necessarily timber!)
- CI
- Unit tests in BeaverTests
- Github actions for automatic tests run in each PR
- CD
- Github actions for deployment of a NuGet package on in every
release
branch commit. - Github actions to enable automatic versioning of NuGet releases.
- Github actions for deployment of a NuGet package on in every
- .NET documentation in every Beaver class, struct, enum, method and more you can imagine
- A really nice Wiki detailing the functionality of the API. While the code documentation describes the methods and reference them to the considered design check, this wiki should describe the design checks and then reference to the corresponding methods and objects that handle them.
- BeaverEducation project: This is a future project in our mind to use our documentation and API to create a timber structural design course, by direct use of the API for who's also learning how to code and the use of BeaverGrasshopper plugin for who's learning computational design with Grasshopper.
- We will put bugfixing issues and please be free to choose one to tackle. It can be a good way to get used to the code base :)
Distributed under the MIT License. See LICENSE.txt
for more information.