• Published on June 30, 2022.

  • Adds missing support for export of meshes. (#73)

  • No longer checks process environment in stand-alone mode. (#13)


  • Published on February 28, 2022.

  • Fixes: Server does not start when language set to Chinese. (#72)


  • Published on February 23, 2022.

  • Fixes discovery of Comsol 6.0 on Linux. (#67)


  • Published on February 21, 2022.

  • Adds support for export of animations. (#43)

  • Catches spurious exceptions when reading properties in mph.inspect(). (#68)


  • Published on January 8, 2022.

  • Fixes evaluation error for datasets with slash in name. (#66)


  • Published on December 2, 2021.

  • Supports custom Comsol install locations on Linux via symbolic links in ~/.local. (#62)


  • Published on October 21, 2021.

  • Client instances may now re-connect() to a different server. (#41)

  • Server instances can be started with the multi option.

  • Module licenses can be queried with Client.modules() and Model.modules().

  • Node selections can be set and queried with .select() and .selection().

  • Warnings and errors are reported by Node.problems().

  • User comments on model nodes can be accessed with Node.comment().

  • The import_() method is now also available on nodes.

  • No longer logs warning when mph.start() returns existing client instance.

  • Fixes: Java DLL not found if another program is first on the Windows search path. (#49)

  • Fixes: Certain preferences not defined on older Comsol installations. (#50)

  • Added documentation note regarding issue with export of animations. (#43)

  • Improved API documentation. Cross-referenced Comsol API docs.

  • Added new logo. (Not subject to the source code’s MIT license.)


  • Published on May 23, 2021.

  • Adds missing support for installations with classkit license. (#40)

  • Adds name validation of available configuration options. (#40)

  • Adds support for persistent configuration storage to mph.config.

  • Fixes: No preference checkforrecoveries on certain installations. (#39)

  • Fixes: Unclear error message when requested version is not installed. (#42)


  • Published on May 5, 2021.

  • Fixes: Client.remove() did not accept model by name.

  • Fixes: Node names were not escaped when creating new features.

  • Fixes: failed when format given, but not path.

  • Fixes: without path given did not save new models.

  • Fixes: Model.parameters(evaluate=True) returned strings, not numbers.

  • Fixes off-by-one error when passing inner indices to Model.evaluate().

  • Comsol expects 1-based indices, as opposed to Python’s 0-based indexing.

  • Adds missing built-in group 'couplings'.

  • mph.start() now returns existing client instance on subsequent calls.


  • Published on April 28, 2021.

  • Assigns more typical tag names when creating new model features.

  • In most cases, tags are now named like they are in the Comsol GUI.

  • Node.retag() allows post-hoc modification of a node’s tag.

  • Adds missing built-in groups, e.g. evaluations and tables.

  • Improves performance of node navigation in client–server mode.

  • The internal type-casting converts Node instances to their tags.

  • The internal type-casting handles lists of numbers.

  • Before, property() and create() would only accept lists of strings.

  • Node.type() now returns nothing if node has no feature type.

  • Moved tutorial model to demos folder.

  • Added demo script that generates the tutorial model.


  • Published on April 23, 2021.

  • Fixes failing evaluation when name of default dataset contains slash.

  • Fixes failing evaluation of complex-valued expressions.

  • Fixes issue with complex numbers in parameter assignments. (#36)


  • Published on April 13, 2021.

  • We now offer you the best API Comsol has ever seen! 🎉

  • See “Creating models: Python style” for a feature demonstration.

  • A new Node class allows easy navigation of the model tree.

  • The Model class relies internally on Node for most functionality.

  • Feature nodes can be created with Model.create().

  • Node properties can be read and written via

  • Feature nodes can be removed with Model.remove().

  • The Node class has additional functionality for modifying the model.

  • All feature nodes can now be toggled, not just physics features.

  • Model.features() and Model.toggle() have been deprecated.

  • Use the Node class instead to access that functionality.

  • Model.import_() was introduced to supersede Model.load().

  • Arguments unit and description to Model.parameter() are deprecated.

  • Parameter descriptions should now be accessed via Model.description().

  • Model.parameters() now returns a dictionary instead of named tuples.

  • This is a breaking change, but in line with other parts of the API.

  • mph.start() now picks a random free server port in client-server mode.

  • This avoids collisions when starting multiple processes on Linux and macOS.

  • Models may be saved as Java, Matlab, or VBA source files.

  • mph.tree() helps developers inspect the model tree in the console.

  • Known issue: Navigating the model tree is slow in client–server mode.

  • It is much faster in stand-alone mode, the default on Windows.

  • Made folder search case-insensitive on Linux/macOS, as requested in #31.

  • Documentation builds now use the MyST parser and the Furo theme.


  • Published on March 24, 2021.

  • Added documentation chapter “Demonstrations”.

  • Added demo script that runs parallel Comsol sessions.

  • Amended mph.start() to allow hand-selecting the server port.

  • This makes the demo script work reliably on Linux and macOS.

  • Improved error handling at server start-up.

  • Relaxed log levels during discovery of Comsol installations.

  • This suppresses possibly confusing log messages as described in #28.


  • Published on March 10, 2021.

  • mph.start() is now the preferred way to start a local Comsol session.

  • On Windows, it starts a lightweight, stand-alone client.

  • On Linux and macOS, it starts a thin client and local server.

  • This is due to limitations on these platforms described in issue #8.

  • Configuration options are exposed by mph.option().

  • An in-memory cache for previously loaded model files may be activated.

  • Selection names are returned by model.selections().

  • Feature names in physics interfaces are returned by model.features().

  • Feature nodes in physics interfaces can be toggled on or off.

  • Parameter descriptions can be modified.

  • Parameter values may be returned as evaluated numbers instead of string expressions.

  • Custom classes derived from Model can now be more easily type-cast to.

  • Users are warned if log-in details for the Comsol server have not been set up.

  • Fixes issue #23 regarding discovery with older Python versions on Windows.

  • Fixes issue #24 regarding localized server output messages.


  • Published on February 13, 2021.

  • Fixes: Exit code was always 0, even when terminating with sys.exit(2). (#15)

  • Fixes: Exit code was 0, not 1, when exiting due to unhandled exception. (#15)



  • Published on February 7, 2020.

  • Adds support for Linux and macOS.

  • Caveats apply. See documentation chapter “Limitations” as well as issues #8 and #9.

  • Refactored discovery mechanism for Comsol installations.


  • Published on November 29, 2020.

  • Unpins JPype and Python version.

  • Works around issue #1 by brute-forcing shutdown of Java VM.

  • Client instances now report the Comsol version actually used.

  • Updates the documentation regarding limitations.

  • Resolves issue #4 regarding compatibility with 32-bit Python.

  • Possibly resolves issue #5 regarding spaces in path names.


  • Published on July 30, 2020.

  • First release used extensively “in production”.

  • Last release based on JPype 0.7.5.

  • Performs a regular shutdown of the Java VM, as opposed to releases to follow.

  • Respects user-set Comsol preferences when starting Client.

  • Adds screen-shot of Comsol demonstration model to Tutorial.


  • Published on July 17, 2020.

  • Pins JPype dependency to version 0.7.5.

  • Works around shutdown delays of the Java VM, see issue #1.

  • Requires Python version to be 3.8.3 or below.

  • Minor improvements to wording of documentation.



  • Published on May 18, 2020.

  • Makes dataset argument to Model.outer() optional.

  • Minor tweaks to project’s meta information.


  • Published on May 17, 2020… later that day.

  • Fixes meta information on PyPI.


  • Published on May 17, 2020.

  • First open-source release published on PyPI.