Reference¶
Core¶
Core of BMS. All content of this file is imported by bms, and is therefore in bms
This file defines the base of BMS.
-
class
bms.core.Block(inputs, outputs, max_input_order, max_output_order)[source]¶ Bases:
objectAbstract class of block: this class should not be instanciate directly
-
class
bms.core.DynamicSystem(te, ns, blocks=[])[source]¶ Bases:
objectDefines a dynamic system that can simulate itself
Parameters: - te – time of simulation’s end
- ns – number of steps
- blocks – (optional) list of blocks defining the model
-
Save(name_file)[source]¶ name_file: name of the file without extension. The extension .bms is added by function
-
VariablesValues(variables, t)[source]¶ Returns the value of given variables at time t. Linear interpolation is performed between two time steps.
Parameters: - variables – one variable or a list of variables
- t – time of evaluation
-
graph¶
-
exception
bms.core.ModelError(message)[source]¶ Bases:
Exception-
args¶
-
with_traceback()¶ Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
-
-
class
bms.core.PhysicalBlock(physical_nodes, nodes_with_fluxes, occurence_matrix, commands, name)[source]¶ Bases:
objectAbstract class to inherit when coding a physical block
-
class
bms.core.PhysicalNode(cl_solves_potential, cl_solves_fluxes, node_name, potential_variable_name, flux_variable_name)[source]¶ Bases:
objectAbstract class
-
class
bms.core.PhysicalSystem(te, ns, physical_blocks, command_blocks)[source]¶ Bases:
objectDefines a physical system
-
dynamic_system¶
-
-
class
bms.core.Signal(names)[source]¶ Bases:
bms.core.VariableAbstract class of signal
-
values¶
-
-
class
bms.core.Variable(names='variable', initial_values=[0], hidden=False)[source]¶ Bases:
objectDefines a variable
Parameters: names – Defines full name and short name. If names is a string the two names will be identical otherwise names should be a tuple of strings (full_name,short_name) :param hidden: inner variable to hide in plots if true
-
values¶
-
Signals¶
Functions¶
Collection of mathematical function signals
-
class
bms.signals.functions.Ramp(name='Ramp', amplitude=1, delay=0, offset=0)[source]¶ Bases:
bms.core.SignalCreate a ramp such as : f(t)=(t-delay)*amplitude+initial_value
-
values¶
-
-
class
bms.signals.functions.SignalFunction(name, function)[source]¶ Bases:
bms.core.SignalUser defined function for signal.
Parameters: function – a function that will give the time values to the signal -
values¶
-
-
class
bms.signals.functions.Sinus(name='Sinus', amplitude=1, w=1, phase=0, offset=0)[source]¶ Bases:
bms.core.Signal-
values¶
-
-
class
bms.signals.functions.Step(name='Step', amplitude=1, delay=0, offset=0)[source]¶ Bases:
bms.core.SignalCreate a Step of amplitude beginning at time delay
-
values¶
-
WLTP signals¶
WLTP signals
-
class
bms.signals.wltp.WLTP1(name)[source]¶ Bases:
bms.core.SignalWLTP classe 1 cycle Caution! speed in m/s, not in km/h!
-
values¶
-
-
class
bms.signals.wltp.WLTP2(name)[source]¶ Bases:
bms.core.SignalWLTP classe 2 cycle Caution! speed in m/s, not in km/h!
-
values¶
-
-
class
bms.signals.wltp.WLTP3(name)[source]¶ Bases:
bms.core.SignalWLTP classe 3 cycle Caution! speed in m/s, not in km/h!
-
values¶
-
Blocks¶
Continuous Blocks¶
Collection of continuous blocks
-
class
bms.blocks.continuous.Division(input_variable1, input_variable2, output_variable)[source]¶ Bases:
bms.core.Blockoutput=input1/input2
-
InputValues(it, nsteps=None)¶ Returns the input values at a given iteration for solving the block outputs
-
OutputValues(it, nsteps=None)¶
-
Solve(it, ts)¶
-
-
class
bms.blocks.continuous.FunctionBlock(input_variable, output_variable, function)[source]¶ Bases:
bms.core.Blockoutput=f(input)
-
InputValues(it, nsteps=None)¶ Returns the input values at a given iteration for solving the block outputs
-
OutputValues(it, nsteps=None)¶
-
Solve(it, ts)¶
-
-
class
bms.blocks.continuous.Gain(input_variable, output_variable, value, offset=0)[source]¶ Bases:
bms.core.Blockoutput=value* input + offset
-
InputValues(it, nsteps=None)¶ Returns the input values at a given iteration for solving the block outputs
-
OutputValues(it, nsteps=None)¶
-
Solve(it, ts)¶
-
-
class
bms.blocks.continuous.ODE(input_variable, output_variable, a, b)[source]¶ Bases:
bms.core.Blocka,b are vectors of coefficients such as H, the transfert function of the block, may be written as: H(p)=(a[i]p**i)/(b[j]p**j) (Einstein sum on i,j) p is Laplace’s variable
-
InputValues(it, nsteps=None)¶ Returns the input values at a given iteration for solving the block outputs
-
OutputValues(it, nsteps=None)¶
-
Solve(it, ts)¶
-
-
class
bms.blocks.continuous.Product(input_variable1, input_variable2, output_variable)[source]¶ Bases:
bms.core.Blockoutput=input1*input2
-
InputValues(it, nsteps=None)¶ Returns the input values at a given iteration for solving the block outputs
-
OutputValues(it, nsteps=None)¶
-
Solve(it, ts)¶
-
-
class
bms.blocks.continuous.Subtraction(input_variable1, input_variable2, output_variable)[source]¶ Bases:
bms.core.Blockoutput=input1-input2
-
InputValues(it, nsteps=None)¶ Returns the input values at a given iteration for solving the block outputs
-
OutputValues(it, nsteps=None)¶
-
Solve(it, ts)¶
-
-
class
bms.blocks.continuous.Sum(inputs, output_variable)[source]¶ Bases:
bms.core.Blockoutput=sum inputs
-
InputValues(it, nsteps=None)¶ Returns the input values at a given iteration for solving the block outputs
-
OutputValues(it, nsteps=None)¶
-
Solve(it, ts)¶
-
-
class
bms.blocks.continuous.WeightedSum(inputs, output_variable, weights, offset=0)[source]¶ Bases:
bms.core.BlockDefines a weighted sum over inputs output=sum w_i * input_i
-
InputValues(it, nsteps=None)¶ Returns the input values at a given iteration for solving the block outputs
-
OutputValues(it, nsteps=None)¶
-
Solve(it, ts)¶
-
Non-linear Blocks¶
Collection of non-linear blocks
-
class
bms.blocks.nonlinear.Coulomb(input_variable, speed_variable, output_variable, max_value, tolerance=0)[source]¶ Bases:
bms.core.BlockReturn coulomb force under condition of speed and sum of forces (input)
-
InputValues(it, nsteps=None)¶ Returns the input values at a given iteration for solving the block outputs
-
OutputValues(it, nsteps=None)¶
-
Solve(it, ts)¶
-
-
class
bms.blocks.nonlinear.CoulombVariableValue(external_force, speed_variable, value_variable, output_variable, tolerance=0)[source]¶ Bases:
bms.core.BlockReturn coulomb force under condition of speed and sum of forces (input) The max value is driven by an input
-
InputValues(it, nsteps=None)¶ Returns the input values at a given iteration for solving the block outputs
-
OutputValues(it, nsteps=None)¶
-
Solve(it, ts)¶
-
-
class
bms.blocks.nonlinear.RegCoulombVariableValue(external_force, speed_variable, value_variable, output_variable, tolerance=0)[source]¶ Bases:
bms.core.BlockReturn coulomb force under condition of speed and sum of forces (input) The max value is driven by an input
-
InputValues(it, nsteps=None)¶ Returns the input values at a given iteration for solving the block outputs
-
OutputValues(it, nsteps=None)¶
-
Solve(it, ts)¶
-
-
class
bms.blocks.nonlinear.Saturation(input_variable, output_variable, min_value, max_value)[source]¶ Bases:
bms.core.Blockoutput=min_value if input < min_value output=max_value if input > max_value output=input if min_value < input < max_value
-
InputValues(it, nsteps=None)¶ Returns the input values at a given iteration for solving the block outputs
-
OutputValues(it, nsteps=None)¶
-
Solve(it, ts)¶
-
-
class
bms.blocks.nonlinear.Sign(input_variable, output_variable)[source]¶ Bases:
bms.core.BlockReturn the sign of a variable :returns: * -1 if input < 0
- 1 if input > 0
-
InputValues(it, nsteps=None)¶ Returns the input values at a given iteration for solving the block outputs
-
OutputValues(it, nsteps=None)¶
-
Solve(it, ts)¶