Message Boards Message Boards

External technical slide trail: The Webel libraries for Wolfram Mathematica: With SysMLv1 models.

This post links to an external web pages slide trail (which site necessarily also advertises Webel IT Australia's services). This forum post is for the interest of Mathematica users and the Wolfram Community, not for promotion of Webel IT Australia's services. Please restrict any discussions to Wolfram Language topics. Wolfram Community members may apply for access to a convenient self-contained PDF slide set version of the trail here (there's a form where you can provide a link to your Wolfram Community profile page).


Webel IT Australia is delighted to announce a new technical slide trail on the Webel libraries for Mathematica and the Wolfram Language, with Systems Modeling Language v1 (SysML®) models using the Webel SysML4Mathematica (v1) recipe:

'The Webel libraries for Wolfram Mathematica: With SysMLv1 models.'

If you are not already familiar with it, OMG Systems Modeling Language (SysML) is the most used graphical language for Model-Based Systems Engineering (MBSE). There is now a SysMLv2 version that has its own textual representation code (a bit similar to Modelica code) - and Webel IT Australia is working on combining Mathematica with SysMLv2 - but only the SysMLv1.7 version is used in the linked slide trail.

This is a very detailed and technical slide trail (not a tutorial), one that will be maintained for many years to come. The underlying Wolfram Language code libraries can't currently be made available to the public (that may change), but you may still find the comprehensive examples in the slides of applications of the libraries and how SysML is used throughout interesting, and some of the related Policy Notes and coding conventions could be adopted easily without access to the full Webel libraries for the Wolfram Language. Some slides do include some code snippets.

The trail is split into sections, some of which overlap, and some of which handle separate topics.

If you wish to understand exactly what the slide trail is for and how it is organised it's best to read all of the intro page and the intro to each section, otherwise you may wonder what some Webel-specific notations and conventions mean and why some things are done as they are (and how some of them relate specifically to the SysML modelling recipe).

If you are not interested in the SysML diagrams and are not familiar with SysMLv1 notations by all means do simply skip those slides. Many slides only have Mathematica application examples (some have SysML mini diagrams in them too).

If you don't want to read each slide web page you can bring up a slide gallery viewer for each section in a desktop web browser and click through the slides (mileage with the slide viewer varies on iPhones and some mobiles).

Since some sections handle some topics that may not be of interest to everyone, the following Links Guide (also available as a page here) may help you find what is of immediate interest to you. Over the next weeks many individual examples with detailed explanations may be posted on some LinkedIn Groups and this Wolfram Community forums. Until then, the following Links Guide may help you find your way through the slides and sections:


"I'm interested in the Webel SysML4Mathematica graphical modelling recipe and how it helps development of very complex Wolfram Language projects"

Visit:

SECTION: The Webel Mathematica libraries - INTRODUCTION - And the role of SysML

SECTION: Modelling the Wolfram Language in SysMLv1 and related Webel coding conventions

If you skip these sections you'll see lots of examples in later slides anyway.


"I'm interested in the coding conventions for the Wolfram Language used by Webel"

If you skip these you may be left wondering about some of the notations used in later sections, but if you are keen to just get to application examples and case studies just skip them, you can always just use the many cross-linked Policy Note page or visit particular relevant later slides as needed:

SECTION: Webel coding and naming conventions for the Wolfram Language

SECTION: The Webel \ $opt\$ and \ $arg\$ help holder conventions for options and arguments in the Wolfram Language

Note that some of these coding conventions are chosen to "play nicely" with the Wolfram Language Plugin for IntellijIDEA and with the SysML modelling (which was done in the MagicDraw/Cameo tool).


"I'm interested in the very low level Webel utility packages and the Webel help registry system."

SECTION: A brief look at the Webel W`Base` utilities for Mathematica

SECTION: The Webel Doc` package and the HelpF`, HelpO` & HelpM` help registry packages

The utilities section is not a high priority and the packages discussed have some basic low-level functions that would be obvious to most Mathematica users. The section on the Webel help registries for rich help for package functions and class "methods" (for MTools classes and Webel Abstract Data Type (ADT) pseudo classes) and ::usage generation is far more likely to be of interest.


"I'm interested in the user-contributed MTools package for classes and object-orientation in the Wolfram Language and how it is extended by Webel classes. "

SECTION: The Webel MAll & MOptsSet classes MTools extensions (with SysMLv1 models)

(It will help if you've viewed the section on the Webel help registries and at least had a glance at the section on the SysMLv1 modelling recipe above.)

There's a nice example of use of a Webel MAll MTools class extension in this small physics case study trail section for the MPsy class:

SECTION: CASE STUDY: Applications of the Webel MTools class extensions to Psychrometrics (humid air physics). With SysMLv1 models.

(Unfortunately at the time of writing some of the accompanying case studies for the Webel MTools extensions can't be made public, but there are some examples in other slide sections and trails elsewhere on the Webel site. The Webel MTools extensions have been applied with great effect to some very complex air conditioner and heat exchanger simulations and refrigerant circuit component modelling tasks, examples may become available later.)


"I'm interested in the Webel recipe for Abstract Data Types (ADTs) as adapted from a technique for strong types originally by Roman Maeder and extended to include inheritance"

SECTION: The Webel Abstract Data Type (ADT) stateless pseudo-classes with inheritance (with SysMLv1 models)

SECTION: Webel ADT case study: Extracting structured data from unstructured Open XML spreadsheet data

Please note that: Webel ADTs include inheritance (and aren’t actually formal ADTs)


And a special request concerning any feedback on the trail

The Webel libraries for Mathematica make for - very special reasons such as Webel's projects combining Mathematica with SysML - heavy use of object-oriented and class-related coding strategies for the Wolfram Language, such as the Webel extensions to the user-contributed MTools for classes and OO in Mathematica, and the Webel Abstract Data Type (ADT) stateless pseudo classes with inheritance as described in detail in the linked slide trail.

Feedback here on the linked trail with reference to specific slides by link is welcome (my time responding may be limited). Each slide page URL has a /node/XXXX identifier, you can just reference that node number XXXX if you don't wish to link to a slide page, or just reference the slide title.

But I'd ask you to please not engage here in debates about the pros and cons of use of classes and OO with the Wolfram Language (and not "functional vs OO" debates). If you can work without such with more traditional use of the Wolfram Language and if that works for you for your own projects that's of course good; for the SysML-oriented Webel projects use of classes and some OO strategies is crucial and has proven extremely useful. Whether or not that's "the Mathematica way" is please out-of-scope for discussions regarding this Wolfram Community forum posting and the linked trail.

I'm a huge fan of Mathematica and the Wolfram Language, and have decided to make it my primary development language and primary tool for data analysis and physics and engineering simulations (in combination with and in parallel with SysML for MBSE) for the rest of my professional life. I need classes and some aspects of OO for my particular SysML-oriented projects, and my focus is on finding ways of doing that effectively with the Wolfram Language. I am not trying to convince others of how they "should" use the Wolfram Language on their own projects.

The Wolfram Language and Mathematica as a tool have some "short comings" (which they are depend on what you wish to achieve with them). I also have some "short comings" (quite a few actually), and my Wolfram Language code definitely has some "short comings". And I still have lots to learn about how to best use the Wolfram Language, Patterns, and its super functional capabilities effectively; sometimes what I initially thought were "short comings" were just my own ignorance about how to achieve things best with the Wolfram Language.

Ultimately though, Mathematica is just so wonderful that its pros more than make up for any for perceived or real cons, and it's well worth finding ways of working with or around any limitations or challenges, which is part of what the linked trail is for.

Finally, may I offer my eternal thanks to Mathematica expert Faysal Aberkane for kindly making his MTools packages for Object-Oriented Programming in Mathematica available to others. Without MTools, many of the applications by Webel IT of Mathematica and the Wolfram Language to some very demanding and complex projects and development of the SysML4Mathematica modelling recipe would not have been possible (or at least would have been far more difficult).

I'd also like to thank Patrick Scheibe for his simply brilliant Wolfram Language Plugin for the IntelliJ IDEA. Haven't tried it yet? It's a "no brainer" for any really complex code-oriented Mathematica project.

I hope you enjoy the linked technical slide trail and gain some benefit from your time spent examining any part of it.

Dr Darren, Webel IT Australia, Aug 2024

POSTED BY: Darren Kelly
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract