Analysis models#
loadtracer.analysis_models.analysis_model#
- class loadtracer.analysis_models.analysis_model.AbstractAnalysisModel[source]#
Bases:
ABCAn abstract base class (“abc”) to describe the interface required of any and all classes used as analysis models within loadtracer.
- Parameters:
pm – A papermodels model (dict)
model – An attribute to store the analysis model while it is being used
loadtracer.analysis_models.frame_model#
- class loadtracer.analysis_models.frame_model.PyniteFrame(pm: dict, model: Pynite.FEModel3D.FEModel3D | None = None)[source]#
Bases:
AbstractAnalysisModel- Parameters:
pm (dict)
model (FEModel3D | None)
- get_reactions()[source]#
Returns the reactions keyed by support index (see get_support_reactions). A member with no loads has empty reactions at each support.
- dump_model(fp=None, indent=2)[source]#
Dumps the model to ‘fp’. If ‘fp’ is None, then a Python dict is returned.
- loadtracer.analysis_models.frame_model.build_pynite_frame_model(pm, material=None, section=None, load_combinations=None)[source]#
Returns a FEModel3D populated with the data from ‘pm’.
- loadtracer.analysis_models.frame_model.get_node_locations(pm)[source]#
Returns a list of (location, constraints) for the nodes of the member, sorted by location. The member ends are included as free nodes (constraints = None) when there is no support at the end.
The first support is a pin and the others are rollers unless a support has a “fixity” of its own. Coincident supports (see validate_papermodel) are not modelled.
Raises UnstableMemberError if the supports cannot make the member stable.
- loadtracer.analysis_models.frame_model.get_support_reactions(model, pm)[source]#
Returns the reactions of the solved ‘model’ keyed by support index, in the same order as the supports in ‘pm’ (which is the order that papermodels uses for ‘transfer_reaction_index’). Every support is included, even when its reactions are zero, so that the indexes always line up.
e.g. {0: {“FY”: {“D”: -5.0, “L”: -10.0}, …}, 1: {…}}
loadtracer.analysis_models.wall_model#
- class loadtracer.analysis_models.wall_model.LoadbearingWall(pm: dict, model: loadbearing_wall.wall_model.LinearWallModel | None = None, vertical_spread_angle: float = 0, minimum_point_spread: float = 0.5)[source]#
Bases:
AbstractAnalysisModel- Parameters:
- get_reactions()[source]#
Returns the reactions of the wall on its (single, continuous) support as distributed loads: {0: {dir: {case: [dist_load, …]}}}.
The magnitudes are the forces on the support, which is the same sign convention as the frame and column models (the opposite sign of the applied loads).
- dump_model(filepath=None, indent=2)[source]#
Dumps the model to ‘filepath’. If ‘filepath’ is None, then a Python dict is returned.
- loadtracer.analysis_models.wall_model.get_wall_height(pm, vertical_spread_angle)[source]#
Returns the wall height to use in the LinearWallModel for ‘pm’.
The height is only needed when ‘vertical_spread_angle’ is not zero. It is then read from the “height” value that the designer annotated on the wall (element_attributes.user_defined.height).
loadtracer.analysis_models.column_model#
- class loadtracer.analysis_models.column_model.PointColumn(pm: dict, model: loadtracer.analysis_models.concentric_column.concentric_column.ConcentricColumn | None = None)[source]#
Bases:
AbstractAnalysisModel- Parameters:
pm (dict)
model (ConcentricColumn | None)
- dump_model(filepath=None, indent=2)[source]#
Dumps the model to ‘fp’. If ‘fp’ is None, then a Python dict is returned.
loadtracer.analysis_models.concentric_column#
- class loadtracer.analysis_models.concentric_column.concentric_column.ConcentricColumn(*, height=None, point_loads=None, gravity_dir='z', strong_axis_dir='y', weak_axis_dir='x', reverse_reaction_sign=True)[source]#
Bases:
BaseModel- Parameters:
- model_post_init(_ConcentricColumn__context)[source]#
Override this method to perform additional initialization after __init__ and model_construct. This is useful if you want to do some validation that requires the entire model to be initialized.
- Parameters:
_ConcentricColumn__context (Any)
- add_point_load(magnitude, location, case, direction)[source]#
Adds a point load to the collection of point loads
- get_reactions()[source]#
Returns a float representing the total sum of loads for the given ‘dir’ (direction) and ‘case’ (load case).
- Return type:
- model_config = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].