finesse.utilities.components.names_to_nodes¶
- finesse.utilities.components.names_to_nodes(model, names, default_hints=())[source]¶
Attempts to convert a list of node/dof/ports into nodes. This is to provide a way for actions to convert string names into nodes for simulation use. It attempts to provide useful default behaviours, and can accept “hints” on how to select nodes.
- Parameters
- namesiterable[str|(str, iterable[str])]
A collection of names to convert. A (name, hint) pair can also be provided where hint is an iterable of strings.
- default_hintsiterable[str]
Default hint to use with particular set of names if no hints are provided.
Notes
Posible hints when name is a Port or DOF: - input : try and select a singular input node - output : try and select a singular output node
Examples
Selecting various nodes from a model with and without hinting:
>>> import finesse >>> from finesse.utilities.components import names_to_nodes >>> model = finesse.Model() >>> model.parse(''' ... l l1 P=100k ... mod mod1 f=10M midx=0.1 order=1 mod_type=pm ... m m1 R=1-m1.T T=0.014 Rc=-1984 xbeta=0n ... m m2 R=1 T=0 Rc=2245 xbeta=0n phi=0 ... link(l1, mod1, m1, 3994, m2) ... dof DARM m1.dofs.z -1 m2.dofs.z +1 ... ''') >>> names_to_nodes(model, ('m1.p1', 'DARM.AC'), default_hints=('output')) [<OpticalNode m1.p1.o @ 0x7f92c9a5c880>, <SignalNode DARM.AC.o @ 0x7f92c9a0e5b0>] >>> names_to_nodes(model, ('m1.p1', 'DARM.AC'), default_hints=('input')) [<OpticalNode m1.p1.i @ 0x7f92c9a5ca60>, <SignalNode DARM.AC.i @ 0x7f92c9a0e460>] >>> names_to_nodes(model, ('m1.p1.o', 'DARM.AC.i')) [<OpticalNode m1.p1.o @ 0x7f92c9a5c880>, <SignalNode DARM.AC.i @ 0x7f92c9a0e460>]
Hints do not insist on a particular output. For example, this is valid:
>>> names_to_nodes(model, ('m1.p1.o', ('DARM.AC.o', "input")))