fconcrete.StructuralConcrete.Analysis module

class fconcrete.StructuralConcrete.Analysis.Analysis[source]

Bases: object

Methods

getBestSolution(concrete_beam_function[, …]) Returns a report with all materials and cost.
static getBestSolution(concrete_beam_function, max_steps_without_decrease=inf, avoid_estimate=False, show_progress=True, sort_by_multiplication=False, **kwargs)[source]

Returns a report with all materials and cost.

Call signatures:

fc.Analysis.getBestSolution(concrete_beam_function, … max_steps_without_decrease = float(“inf”), … avoid_estimate=False, … show_progress=True, … sort_by_multiplication=False, … **kwargs)
>>> def concrete_beam_function(width, height, length):
...        slab_area = 5*5
...        kn_per_m2 = 5
...        distributed_load = -slab_area*kn_per_m2/500
...        pp = fc.Load.UniformDistributedLoad(-width*height*25/1000000, x_begin=0, x_end=length)
...        n1 = fc.Node.SimpleSupport(x=0, length=20)
...        n2 = fc.Node.SimpleSupport(x=400, length=20)
...        f1 = fc.Load.UniformDistributedLoad(-0.01, x_begin=0, x_end=1)
...        beam = fc.ConcreteBeam(
...            loads = [f1, pp],
...            nodes = [n1, n2],
...            section = fc.Rectangle(width, height),
...            division = 200
...        )
...        return beam
>>> full_report, solution_report, best_solution = fc.Analysis.getBestSolution(concrete_beam_function,
...                                     max_steps_without_decrease=15,
...                                     sort_by_multiplication=True,
...                                     avoid_estimate=True,
...                                     show_progress=False,
...                                     width=[15],
...                                     height=(30, 34, 2),
...                                     length=[150])
>>> # Table is sorted by cost ascending, so the first one is the most economic solution.
>>> # Alternative way to look to the best solution
>> print(best_solution)
{'width': 15.0, 'height': 30.0, 'length': 150.0, 'cost': 126.2650347902965, 'error': '', 'Concrete': 63.59, 'Longitudinal bar': 35.31, 'Transversal bar': 27.36}
Parameters:
concrete_beam_function

Define the function that is going to create the beam given the parameters.

max_steps_without_decrease : python:int, optional

If the cost has not decrescead after max_steps_without_decrease steps, the loop breaks. Only use it in case your parameter combination has a logical order. Default inf.

show_progress : bool, optional

Estimate time using the last combination. If a exception is found, 80s per loop is set and a message about the not precision is shown. Also show progress bar in percentage. Default True.

sort_by_multiplication : bool, optional

Sort combinations by the multiplication os all parameter. Useful to use with max_steps_without_decrease when the is a logical order. Default False.

kwargs

Possible arguments for the concrete_beam_function. If a set of 3 elements is given, np.arange(*kwarg_value) will be called. The kwargs must have the same name that the concrete_beam_function expects as arguments. The combination is made with np.meshgrid.