Node¶
- class Node(model, path=None)[source]¶
Represents a model node.
This class makes it possible to navigate the model tree, inspect a node, namely its properties, and manipulate it, like toggling it on/off, creating child nodes, or “running” it.
Instances of this class reference a node in the model tree and work similarly to
Pathobjects from Python’s standard library. They support string concatenation to the right with the division operator in order to reference child nodes:>>> node = model/'functions' >>> node Node('functions') >>> node/'step' Node('functions/step')
Note how the
modelobject also supports the division operator in order to generate node references. As mere references, nodes must must not necessarily exist in the model tree:>>> (node/'new function').exists() False
In interactive sessions, the convenience function
mph.tree()may prove useful to see the node’s branch in the model tree at a glance:>>> mph.tree(model/'physics') physics ├─ electrostatic │ ├─ Laplace equation │ ├─ zero charge │ ├─ initial values │ ├─ anode │ └─ cathode └─ electric currents ├─ current conservation ├─ insulation ├─ initial values ├─ anode └─ cathode
In rare cases, the node name itself might contain a forward slash, such as the dataset
sweep/solutionthat happens to exist in the demo model from the Tutorial. These literal forward slashes can be escaped by doubling the character:>>> node = model/'datasets/sweep//solution' >>> node.name() 'sweep//solution' >>> node.parent() Node('datasets')
If the node refers to an existing model feature, then the instance wraps the corresponding Java object, which could belong to a variety of classes, but would necessarily implement the
com.comsol.model.ModelEntityinterface. That Java object can be accessed directly via the.javaproperty. The full Comsol functionality is thus available if needed. The convenience functionmph.inspect()is provided for introspection of the Java object in an interactive session.- model¶
Model object this node refers to.
- groups¶
Mapping of the built-in groups to corresponding Java objects.
- alias¶
Accepted aliases for the names of built-in groups.
- path¶
Path of this node reference from the model’s root.
- property java¶
Java object this node maps to, if any.
Note that this is a property, not an attribute. Internally, it is a function that performs a top-down search of the model tree in order to resolve the node reference. So it introduces a certain overhead every time it is accessed.
- type()[source]¶
Returns the node’s feature type.
This a something like
'Block'for “a right-angled solid or surface block in 3D”. Refer to the Comsol documentation for details. Feature types are displayed in the Comsol GUI at the top of theSettingstab.
- problems()[source]¶
Returns problems reported by the node and its descendants.
The problems are returned as a list of dictionaries, each with an entry for
'message'(the warning or error message),'category'(either'warning'or'error'),'node'(either this one or a node beneath it in the model tree), and'selection'(an empty string if not applicable).Calling this method on the root node returns all warnings and errors in geometry, mesh, and solver sequences.
- property(name, value=None)[source]¶
Returns or changes the value of the named property.
If no
valueis given, returns the value of propertyname. Otherwise sets the property to the given value.
- properties()[source]¶
Returns names and values of all node properties as a dictionary.
In the Comsol GUI, properties are displayed in the Settings tab of the model node (not to be confused with the Properties tab).
- select(entity)[source]¶
Assigns
entityas the node’s selection.entitycan either be another node representing a selection feature, in which case a “named” selection is created. Or it can be a list/array of integers denoting domain, boundary, edge, or point numbers (depending on which of those the selection requires), producing a “manual” selection. It may also be'all'to select everything orNoneto clear the selection.Raises
NotImplementedErrorif the node (that this method is called on) is a geometry node. These may be supported in a future release. Meanwhile, access their Java methods directly. RaisesTypeErrorif the node does not have a selection and is not itself an “explicit” selection.
- selection()[source]¶
Returns the entity or entities the node has selected.
If it is a “named” selection, the corresponding selection node is returned. If it is a “manual” selection, an array of domain, boundary, edge, or point numbers is returned (depending on which of those the selection holds).
Noneis returned if nothing is selected.Raises
NotImplementedErrorif the node is a geometry node. These may be supported in a future release. Meanwhile, access their Java methods directly. RaisesTypeErrorif the node does not have a selection and is not itself a selection.
- toggle(action='flip')[source]¶
Enables or disables the node.
If
actionis'flip'(the default), it enables the feature in the model tree if it is currently disabled or disables it if enabled. Pass'enable'or'on'to enable the feature regardless of its current state. Pass'disable'or'off'to disable it.
- import_(file)[source]¶
Imports external data from the given
file.Note the trailing underscore in the method name. It is needed so that the Python parser does not treat the name as an
importstatement.
- create(*arguments, name=None)[source]¶
Creates a new child feature node.
Note that this only works for what Comsol considers model “features”, not for any and all nodes in the model tree (such as property groups of materials).
Refer to the Comsol documentation for valid
arguments. It is often just the feature type of the child node to be created, given as a string such as'Block', but may also require different or more arguments.If
nameis not given, a unique name/label will be assigned automatically.Returns the node instance of the newly created feature.