Releases

1.3.1

  • Published on November 7, 2025.

  • Fixes spelling of project name (MPh, not mph) on PyPI.
    This was due to a bug in the build backend, which has since been fixed.

1.3.0

  • Published on October 30, 2025.

  • Adds support for ARM versions of Comsol on macOS. (#80)
    On newer Macs with Apple Silicon CPUs, we now look for the ARM versions of Comsol, unless Python is running through the Rosetta emulation layer.

  • Drops support for Python 3.6, 3.7, 3.8, 3.9. (#234)
    These older Python versions have reached end of life and are poorly supported by modern development tools.

  • Adds type annotations to code base for an improved development experience. (#230)
    Type annotations improve autocompletion results and enhance context-based suggestions in code editors and IDEs.

  • Makes client–server mode the default also on Windows. (#236)
    This has always been the default on Linux and macOS. We now use client–server mode on Windows in order to connect to the Comsol compute back-end, instead of the stand-alone client we used to prefer for better start-up performance. This might solve some non-reproducible problems Windows users have reported. It is not expected to have detrimental effects on the overall user experience.

  • Prioritizes Comsol installation found on search path. (#232)
    The Comsol installation associated with the Comsol executable found on the search path (the PATH environment variable) is now preferred over other Comsol installations of the same version. This is useful for the rare scenario when different single-user licenses are to be used on the same machine.

  • Replaces Comsol’s deprecated clearSolution() with clearSolutionData(). (#193)
    For reasons unexplained, Comsol has introduced a new method to purge solution data from models. What it does differently is unclear. Therefore, this change may not be 100% backward-compatible, but it is not expected to be noticeable.

1.2.4

  • Published on June 9, 2024.

  • Improves the phrasing of certain error messages. (#177)

1.2.3

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

1.2.2

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

1.2.1

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

1.2.0

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

1.1.6

  • Published on June 30, 2022.

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

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

1.1.5

  • Published on February 28, 2022.

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

1.1.4

  • Published on February 23, 2022.

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

1.1.3

  • Published on February 21, 2022.

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

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

1.1.2

  • Published on January 8, 2022.

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

1.1.1

  • Published on December 2, 2021.

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

1.1.0

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

1.0.4

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

1.0.3

  • 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: Model.save() failed when format given, but not path.

  • Fixes: Model.save() 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.

1.0.2

  • 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 create_capacitor.py that generates the tutorial model.

1.0.1

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

1.0.0

  • 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 Model.property().

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

0.9.1

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

0.9.0

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

0.8.2

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

0.8.1

0.8.0

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

0.7.6

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

0.7.5

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

0.7.4

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

0.7.3

0.7.2

  • Published on May 18, 2020.

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

  • Minor tweaks to project’s meta information.

0.7.1

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

  • Fixes meta information on PyPI.

0.7.0

  • Published on May 17, 2020.

  • First open-source release published on PyPI.