def horizontal_nodal_proxy(formdata, forcedata, *args, **kwargs): """RPC proxy for node-per-node calculation of horizontal equilibrium. Parameters ---------- formdata : dict The data dictionary of a :class:`FormDiagram`. forcedata : dict The data dictionary of a :class:`ForceDiagram`. Additional Parameters --------------------- alpha : int, optional Weighting factor for computing target vectors for parallelisation of corresponding edges of Form and ForceDiagram. Default is `100` which means that the target vectors are equal to the FormDiagram edges. kmax : int, optional Maximum number of iterartions. Default is `100`. display : bool, optional Display all messages generated by the solver. Default is `True`. Returns ------- tuple 0. The updated data dict of the FormDiagram. 1. The updated data dict of the ForceDiagram. """ form = FormDiagram.from_data(formdata) force = ForceDiagram.from_data(forcedata) horizontal_nodal(form, force, *args, **kwargs) return form.to_data(), force.to_data()
def load_session(session): print("loading session") scene = get_scene() scene.clear() if 'settings' in session: scene.settings = session['settings'] if 'data' in session: data = session['data'] if 'pattern' in data and data['pattern']: pattern = Pattern.from_data(data['pattern']) scene.add(pattern, name="pattern") else: if 'form' in data and data['form']: form = FormDiagram.from_data(data['form']) thrust = form.copy( cls=ThrustDiagram) # this is not a good idea scene.add(form, name="form") scene.add(thrust, name="thrust") if 'force' in data and data['force']: force = ForceDiagram.from_data(data['force']) force.primal = form form.dual = force force.update_angle_deviations() scene.add(force, name="force") scene.update()