• Published on March 18, 2023.

  • Tells Comsol server process to not save recovery files. (#128)

  • Allows users to pass extra arguments to the server process. (#128)


  • Published on February 12, 2023.

  • Fixes: Not all time steps returned from parametric sweep. (#112)

  • Fixes: Connect failure with Comsol 6.1 on some Linux distributions. (#114)


  • Published on January 2, 2023.

  • Increases default time-out of server shutdown to accommodate Comsol 6.1. (#106)

  • Fixes tests that would otherwise fail with Comsol 6.1.

  • Added “Credits” page to documentation.


  • Published on August 31, 2022.

  • Includes Comsol installation found on PATH in discovery. (#89)
    So if the comsol command works in the console, the corresponding installation will now be found automatically, even if not in a default location.

  • Adds support for material property groups, which now show up in model tree. (#78)
    Material properties can be read and altered by calling property() on the node referring to its property group.

  • Adds method problems() to the Model class.
    It does the same as calling Node.problems() on the model’s root node, but provides for an easy way to check if there are currently errors or warnings reported anywhere in the model.

  • Adds “Uncertainty Quantification” to list of recognized modules.

  • External links to Comsol documentation now refer to Comsol 6.0.


  • 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.