Mathematica and Wolfram SystemModeler tips and issues Note pages

Webel IT Australia promotes the amazing Mathematica tool and the powerful Wolfram Language and offers professional Mathematica services for computational computing and data analysis. Our Mathematica tips, issue tracking, and wishlist is offered here most constructively to help improve the tool and language and support the Mathematica user community.
Title Keywords Note kind
Mathematica: GOTCHA: If a function is used to generate a control specification (or a grouping of control specifications in a layout) under some circumstances an 'Evaluate@' must be applied to the function for the control specification to be accepted. Wolfram, Mathematica, Wolfram Language GOTCHA, TIP, WARNING
Mathematica: Webel ADT pseudo classes: 'Q: Do I have to use these EX$Val scalar "atom" thingies and the EX$Row, EX$RowList, and EX$RowMap? Can't I just use Wolfram Language Lists and Associations?' A: Of course you can also use the basic Wolfram Language! Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional CAPABILITY
Mathematica: Webel ADT pseudo classes: An EX$Val has concise methods for testing the type of its wrapped '$$' value: isR, isI, isB, isQ, isS. These may be used in ADT "constructor" type tests. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional CAPABILITY
Mathematica: Webel ADT pseudo classes: The validity of the type of a wrapped '$$' value of an EX$Val may be checked in ADT "constructors" which have type checking utility support. This strategy has been chosen over sub-types of EX$Val. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional CAPABILITY
Mathematica: Webel ADT pseudo classes: There does not seem to be a way to register ::usage specific to a Webel ADT-Method (TagSetDelayed UpValue). The Webel libraries offer method documentation support via the HelpO` class/method registry. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional CAPABILITY
Mathematica: Webel ADT pseudo classes: Webel ADT-Methods support Wolfram Language Options[] as TagSetDelayed UpValues (but there are some pros and cons). Webel ADT-Methods work with the Webel HelpO` class/method registry, including rich help on options. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional CAPABILITY
Mathematica: Webel ADT pseudo classes: «adt:ref» applied to a property indicates that it is resolved by ID through the ADT store using adt$fetch[id]. Use adt$store[adt] for very large ADTs and for cleaner ADT views and easier Notebook development. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional CONVENTION, POLICY
Mathematica: Webel OpenXML: The XL$Cell value accessor XL$Cell⊙valReal has no units-awareness; prefer the US$Cell value accessor US$Cell⊙val, which can return a Quantity. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, OpenXML POLICY
Mathematica: Webel ADT pseudo classes: POLICY: Where an ADT-Method uses UUID-driven Once[] caching the trigger argument is a String '$uuid' which MUST have a default None and MUST be the first argument that has a default. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional CONVENTION, POLICY
Mathematica: Webel ADT pseudo classes: The SysMLv1 models are supported by custom stereotypes with icons. Some of these indicate OO-similar use of ADT-Methods and departures from formal Abstract Data Type (ADT) definitions. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:Method, Webel:ADT CONVENTION, NAMING
Mathematica: Webel ADT pseudo classes: The ADT⊙get method may be used to access the '$$' wrapped primary. This is intended for development and testing purposes only (not for regular use by clients) since it BREAKS ENCAPSULATION! Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT POLICY
Mathematica: TIP: Start with With, update to Module as needed. Mathematica, Mathematica::With, Mathematica::Module, Wolfram, Wolfram Language TIP
Mathematica: SUPER TIP: Use CreateUUID[] to trigger recalculation against Once[] to create a flexible optionally caching function! (May incur a memory penalty, consider also using a 'loc' persistence location.) Mathematica, Wolfram, Wolfram Language, Mathematica::CreateUUID, Mathematica::Once EXPLANATION, TIP
Mathematica: GOTCHA: The Problems Analysis review system of Mathematica Plugin for IntelliJ IDEA reports a declared Module variable used as a Table loop variable as an "Used local variable". DO NOT SIMPLY DELETE IT! Mathematica, Wolfram, Mathematica::Module, Mathematica::Table, Wolfram Language, Mathematica:IntelliJ-IDEA-Plugin EXPLANATION, GOTCHA, ISSUE
Mathematica: TIP/GOTCHA: When using a Table loop variable within a Module always declare a module variable for it or you can get very hard to track side-effects elsewhere in your project due to exposed scope. Yes, it's obvious (yet easy to miss). Mathematica, Wolfram, Mathematica::Module, Mathematica::Table, Wolfram Language EXPLANATION, GOTCHA, TIP
Mathematica: Webel: A concise i:/o: notation is often used for indicating input/output cells in Mathematica notebooks in Webel's online help pages and tutorials, instead of 'In[n]:=' and 'Out[n]='. (Also learn how to hide them completely in notebooks.) Wolfram, Mathematica, Wolfram Language, Mathematica:notebook CONVENTION, TIP
Mathematica: Webel ADT pseudo classes: POLICY: The ADT-Methods of an ADT-Class are created as TagSetDelayed UpValues using the 'signature' of the ADT-Class and its defining 'pattern' as 1st argument Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT, Webel:ADT:Definer CONVENTION, NAMING, POLICY
Mathematica: Webel ADT pseudo classes: CONVENTION: PROVISIONAL: The infix operator for calling ADT-Methods on ADT "objects" is the CircleDot (⊙ in Notebooks). ISSUE: \[CircleDot] is NOT GOOD FOR USE IN IDEs! Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:Class, Webel:ADT:Definer, singleton, Webel:ADT:infix, Webel:ADT:Object CONVENTION, NAMING, POLICY
Mathematica: Webel ADT pseudo classes: POLICY/DEFINITION: Every "hard coded" definer or defining client of a definer has a corresponding ADT ArchetypeClass. Example ("hard coded"): The definer 'my$def$MY$SmartList' has ArchetypeClass 'MY$SmartList'. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:Class, Webel:ADT:Definer, singleton, Webel:ADT:ArchetypeClass CONVENTION, NAMING, POLICY
Mathematica: Webel ADT pseudo classes: TIP: Prefer the Decorator Pattern over multiple inheritance of ADT-Method UpValues! (But not because "inheritance is evil" per se, it isn't.) The base ADT libraries make heavy (and very useful) use in inheritance. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:MemberInterface, Decorator Pattern, multiple inheritance, inheritance TIP
Mathematica: Webel ADT pseudo classes: A tricky POLICY & CONVENTION: Client packages MUST access the special "wrapped" primary '$$' via $ContextAliases! The recommended alias is "A`" (which stands of course for ADT). Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:Class, Webel:ADT, Webel:ADT:A`, Mathematica:$ContextAliases CONVENTION, POLICY, TIP
Mathematica: Webel ADT pseudo classes: POLICY: Multiple inheritance is supported via ONE (only) ADT-Class and one or more ADT-MemberInterfaces (which have no ADT-Method UpValues) Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:MemberInterface, Webel:ADT:Class, inheritance, multiple inheritance POLICY
Mathematica: Webel ADT pseudo classes: POLICY: Definer functions MUST return the self-declared or injected 'pattern' that determines the unique "ADT-signature" of the defined ADT class. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT, Webel:ADT:Definer, Webel:ADT:signature POLICY
Mathematica: Webel ADT pseudo classes: ADTs that define membership of ADT-classes in a domain package have ADT-signature MemberInterface[$$:None] and MUST NOT populate ADT-method UpValues in their definers. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:MemberInterface POLICY
Mathematica: Webel ADT pseudo classes: NAMING CONVENTION: An UpValue that can be invoked on an ADT accepting its unique 'signature' pattern as (at least) 1st argument is called an 'ADT-Method'. They are NOT methods in the general object-oriented sense! Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:Method, Webel:ADT CONVENTION, NAMING
Mathematica: Webel ADT pseudo classes: There is an 'ADT' universal base that has no supers. It "blesses" every other sub-class ADT by populating it with some common ADT-Method UpValues against a signature pattern via the 'adt$def$All[]' definer function. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT:All, Webel:ADT, Mathematica::UpValue POLICY
Mathematica: Webel ADT pseudo classes: DEFINITION/CONVENTION: Functions that populate ADTs with reusable ADT-method UpValues are called 'definers' and include '$def' in the name after a Package scope indicator: Example: adt$def$ADT, my$def$MY$CleverList Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional, Webel:ADT, Webel:ADT:Definer CONVENTION, NAMING, POLICY
Mathematica: Webel ADT pseudo classes: POLICY: Every named concrete Abstract Data Type (ADT) has a ONE unique "signature" (which is the pattern passed to the "definer" functions). To vary a signature, define another unique ADT name. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional CONVENTION, POLICY
Mathematica: Webel ADT pseudo classes: POLICY: The Abstract Data Types (ADTs) are stateless functional (although inheritance and overrides are supported), with no caching by default (although there is nice optional caching using CreateUUID[] and Once[]). Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming, stateless functional CONVENTION, POLICY
Mathematica: Webel ADT: The term 'Abstract Data Types (ADT)' is used informally (the Webel ADTs do not always adhere to strict definitions of ADTs). Please just think of it here as meaning a strong type or stateless "pseudo class". Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming EXPLANATION
Mathematica: Webel ADT pseudo classes: POLICY: The expression '$$' is reserved as the primary named parameter for the defining pattern of all ADT classes that extend the universal base 'ADT' class. Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT POLICY
Mathematica: Webel: You get compelling incremental value out of Mathematica even if you don't yet command all of the syntax and massive powers of the Wolfram Language! Wolfram Language, Wolfram, functional, functional programming, object-oriented, ADTs, Abstract Data Types, Mathematica, symbolic algebra ASSERTION, TIP
Webel on Mathematica and the Wolfram Language vs Python. Python is not even close, not even vaguely close, it's not in the same league, as the Wolfram Language and Mathematica! python, Mathematica, Wolfram, Wolfram Language ASSERTION
TIP: Mathematica: Webel's ultimate guide to using Abstract Data Types to create "pseudo classes" (strong types) with inheritance for the Wolfram Language, all modelled in SysML! Mathematica, Abstract Data Types, ADTs, strong types, Wolfram, Wolfram Language, Systems Modeling Language, SysML, SysMLv1.x, SysMLv1.7, SysMLv1.6, inheritance TIP
TIP: Mathematica: The IntelliJ IDEA Plugin for Mathematica is HEAPS better than the Eclipse-based Wolfram Workbench (at least for the Wolfram Language as used by Webel projects)! Mathematica, Wolfram, Mathematica:IntelliJ-IDEA-Plugin, IntelliJ IDEA TIP, TOOL
Mathematica: TIP: Notebooks: Automatic Cell Grouping driving you up the wall? Try Manual Grouping and make it part of your workflow! Mathematica, Wolfram, Mathematica:notebook FEATURE, GOTCHA, ISSUE, TIP, TOOL
Mathematica: The output form of Mathematica follows internal rules that may not always correspond exactly to how a human might typeset it. Wolfram Language, Mathematica, Wolfram, equation GOTCHA, WARNING
Cameo Simulation Toolkit: You can use Mathematica as an external maths engine to share maths between an OpaqueBehavior and a ConstraintBlock using custom auto-loaded Mathematica functions (keeps a project nice and DRY and respects Single Source of Truth) Wolfram, JLink, Mathematica, MagicDraw SysML, SysML, MD SysML, SysML Parametrics, mathematics, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], DRY, WET, Single Source of Truth, SysMLv1.x CAPABILITY, FEATURE, MODELLING, TIP, TOOL
SysMLv1.x: Limitation: The 'body' (maths formula) of an OpaqueBehavior can't be synchronised (shared) with the 'constraint' of a ConstraintBlock (directly in the SysML model). Can lead to a WET (not DRY) model and breaks Single Source of Truth! DRY, WET, Single Source of Truth, Systems Modeling Language, SysMLv1.x, Model-Based Systems Engineering, Wolfram, Mathematica CAVEAT, COMPLICATION, LIMITATION
GOTCHA: Mathematica v13.2+: Operations on "DegreesFahrenheit" °F and "DegreesCelsius" °C are now performed using Kelvins (K). CASE: Naive percentage operation gives answer relative to Kelvins. Use "DegreesCelsiusDifference"/"DegreesFahrenheitDifference"! Wolfram, Wolfram Language, Mathematica, temperature, celsius, Fahrenheit, kelvin, Kelvins, units, unit conversion CAVEAT, GOTCHA, TIP, WARNING
Mathematica: Notebooks: Automatic Cell Grouping mode can be a "royal pain", turn it off by setting Cell > Grouping > Manual Grouping Wolfram, Mathematica, Mathematica::Cell, Mathematica:notebook ISSUE, TIP, WORKAROUND
GOTCHA: Mathematica: Specific enthalpy conversion J/kg to Btu/lb: Does not consider a possible "total" enthalpy reference offset vs 0 °C or 0 °F respectively enthalpy, specific enthalpy, unit conversion, SI unit, Imperial unit, Btu, British Thermal Unit, Mathematica, Wolfram, HVAC&R, water condensation, humid air, air, air conditioner, Psychrometrics, US customary measurement system COMPLICATION, GOTCHA, TIP
Mathematica: HOWTO: Add every element of one list to the end of another list Mathematica, Mathematica::Join, Mathematica::List, Wolfram, Mathematica::MapThread CAPABILITY, TIP
Mathematica: Wolfram Player Pro 13.1: NotebookDelete[] does not work Wolfram, Mathematica, Wolfram Player Pro CAVEAT, ISSUE, LIMITATION, TOOL
TIP: Mathematica: Use of For is often a hint that Map, Table, Scan, or something else more functional could be used. But don't stress over it! Wolfram, Wolfram Language, Mathematica, Mathematica::For, Mathematica::Map, Mathematica::Table, functional, functional programming, Wolfram Workbench, Eclipse IDE ANTI-PATTERN, TIP
The integration between Wolfram Workbench and Mathematica is partly gammy (as of latest versions 2022-08-23) Mathematica, Mathematica:notebook, Wolfram, Wolfram Language ISSUE, MODELLING, TIP, TOOL, WARNING, WORKAROUND
Mathematica: TIP: Wolfram Notebooks are the best testing environment I've ever used! Mathematica, Mathematica:notebook, Wolfram, Wolfram Language CAPABILITY, FEATURE, MODELLING, STYLE, TIP, TOOL
Mathematica: ISSUE with all Entity operations on MMAv13.0.0.0 vs macOS Monterey 12.3 or 12.4 ["solved" by upgrade to MMA 13.1.0.0] Mathematica, Wolfram, macOS, Mac, macOS Monterey ISSUE
CoolProp: Mathematica: Mac: HOWTO get CoolProp for Mathematica running on Apple M1 Max and Mathematica13 CoolProp, Darwin, Mathematica, Wolfram, Mac, M1 Max, M1 Silicon, CMake, C++, dylib ISSUE, LIMITATION, WARNING
Mathematica: TIP: Protecting against computations breaking verbosely because of Null, None, Undefined. And about using Undefined as a return policy. Wolfram, Wolfram Language, Mathematica, Mathematica::Null, Mathematica::None, Mathematica::Undefined CONVENTION, PATTERN, POLICY, TIP
Mathematica: The Webel Units` package has Quantity variables for frequently used units using a naming convention 'unit$[Symbol]' or 'unit[DescriptiveName]' or unit[Acronym], each with a corresponding '$unit...' for the units identifier String(s). Wolfram, Mathematica, SI unit, quantity, units, Webel Best Practice, Mathematica::Quantity CONVENTION, NAMING, PATTERN, STYLE, TIP
Mathematica: Use of UnitConvert (or even just multiplication or division by a unit Quantity) MASSIVELY slows the calculations down! Wolfram, Mathematica, Mathematica:Compile, compilation, performance, SI unit, quantity, units ISSUE, LIMITATION
Mathematica: Compile won't work with a Quantity with units Wolfram, Mathematica, Mathematica:Compile, compilation, performance, quantity, SI unit, units ISSUE, LIMITATION
CoolProp: HOWTO reproduce a pressure vs specific enthalpy chart in Mathematica. Example: R32 refrigerant. CoolProp, equation-of-state, EoS, thermodynamics, chemistry, chemical properties, enthalpy, specific enthalpy, Wolfram, Mathematica, R32, refrigerant CAVEAT, GOTCHA, ISSUE, LIMITATION, WARNING
Mathematica: TIP: The ThermodynamicData function of Mathematica uses NIST's RefProp under the hood. Wolfram, Mathematica, thermodynamics, HVAC&R, RefProp TIP
Mathematica: CoolProp wrapper binaries don't seem to be maintained past CoolProp 5.1.1 (and the PhaseSI and 2-args Props1SI functions do not work) Mathematica, Wolfram ISSUE, LIMITATION
Mathematica: MTools: Argument Pattern strong type matching does not intrinsically respect inheritance (makes implementing design-by-contract and some Design Patterns less convenient). But you can use PatternTests with Webel MAll extensions. Wolfram, Mathematica, Mathematica:MTools, inheritance, object-oriented ANTI-PATTERN, GOTCHA, ISSUE, LIMITATION, WARNING
Webel + Mathematica + MTools + SysML Wolfram, Mathematica, Mathematica:MTools, Wolfram Language, Systems Modeling Language, MD SysML, CATIA Magic:v2021xR1, MagicDraw SysML, MagicDraw, Cameo Systems Modeler, Webel:MathematicaSysML PATTERN, TIP, TOOL
Mathematica: LINKS: Manipulating Strings and using RegularExpression Wolfram, Mathematica, String, regex, regular expression TIP
Mathematica: GOTCHA: Null is tricky! Wolfram, Wolfram Language, Mathematica GOTCHA, TIP
Mathematica: Wolfram Workbench: Basic variable name refactoring is not supported. (Or just use the IntelliJ IDEA Plugin for Mathematica, which does variable and function renaming well.) Webel:WISHLIST, Mathematica, Wolfram Workbench, Wolfram FEATURE, ISSUE, LIMITATION, WISHLIST
Mathematica: Objectica 3rd-party commercial package for OO in Mathematica. Earth calling Objectica, do you still exist? Mathematica, Wolfram, object-oriented QUESTION
Mathematica: Wolfram Workbench: Sometimes the Outline view gets completely out of sync with the .m or .wl Package code Mathematica, Wolfram Workbench, Wolfram Language, Wolfram, Eclipse IDE ISSUE, TOOL
Mathematica: Wolfram Workbench: Sometimes the code syntax checking goes haywire (with red nearly everywhere) for no good reason (even when the code load and runs fine in Mathematica). WORKAROUND: Just restart Eclipse. Mathematica, Wolfram Workbench, Wolfram Language, Wolfram, Eclipse IDE ISSUE, TOOL, WORKAROUND
Webel vs Mathematica: The Very Good, The Bad, and The Ugly Mathematica, Wolfram, Wolfram Language, Mathematica:Dataset FEATURE, TIP, TOOL
Mathematica: TIP: Try //Dataset on just about anything and be amazed! Click on nearly anything to navigate through nearly anything in impressively interactive human-readable format. Mathematica, Wolfram, Wolfram Language, Mathematica:Dataset FEATURE, TIP, TOOL
Mathematica: How mimic pattern matching of arguments for pseudo "Boolean" (including providing a default)? Wolfram, Mathematica, Wolfram Language GOTCHA, LIMITATION, TIP
Mathematica: The awesome Quantity system for values with units is everything the SysMLv1.x Quantity/Unit system should have been (and hopefully SysMLv2 will be). But it comes at a high performance cost! Mathematica, Mathematica::Quantity, Wolfram, Wolfram Language, quantity, scientific unit system, SI unit, deep value ASSERTION, TIP
Mathematica: TIPS for living with the user-contributed MTools for Object-Orientation (until a vendor-supported OO solution is eventually provided) Mathematica, Mathematica:MTools, object-oriented, Wolfram, Wolfram Workbench TIP
Wolfram Workbench for Mathematica: Limitation: Using more than one '$' sign within function names blocks navigation on function usages. Mathematica, Wolfram Workbench, Wolfram, Eclipse IDE GOTCHA, ISSUE, LIMITATION, TOOL
Mathematica: GOTCHA: EntityFunction can only return a scalar. Wolfram, Mathematica, object-oriented, OOP GOTCHA, ISSUE, LIMITATION, MODELLING, WARNING, WISHLIST
Mathematica: Some links on Object-Orientation (or the lack thereof) Wolfram, Mathematica, object-oriented, OOP ISSUE, LIMITATION, MODELLING, TOOL
Mathematica: The Entity system: useful links Mathematica, Wolfram, Mathematica:Entity TIP
Mathematica: TIP: How to change a value within an Association inline within a Module (like pass by reference) Mathematica, Wolfram Language, Wolfram TIP
Mathematica: GOTCHA: Package usages (Needs) are not transitive Wolfram, Wolfram Language, Mathematica GOTCHA, TIP, WARNING
Mathematica: HOWTO Find the value of a symbol in all contexts Wolfram, Wolfram Language, Mathematica TIP
Mathematica: TIP: LINKS: Filename chooser dialogs Wolfram, Mathematica, GUI, Mathematica::Manipulate CAPABILITY, FEATURE, TOOL
GOTCHA/BUG: Cameo Simulation Toolkit v2021xR1 + Mathematica: Delegation to Mathematica from ConstraintBlocks FAILS if any of the input or output parameters are larger than 99999 because they get interpreted as 1.0e5 and that trips something! Aarrrggggh! SysML, MD SysML, Mathematica, Wolfram, Cameo Systems Modeler, SysML Parametrics, calculation, CATIA Magic:v2021xR1 GOTCHA, ISSUE, TOOL
LINKS: Wolfram Workbench for Mathematica (or just use the far superior IntelliJ IDEA Plugin) Wolfram, Wolfram Workbench, Wolfram Language, Mathematica, coding, code formatting, documentation TOOL
HOWTO access custom (user-defined) Mathematica functions using Mathematica v13.2 as an external maths engine for SysML Parametrics (ConstraintBlocks) in Magic Model Analyst (Cameo Simulation Toolkit) versions 2021x, 2021xR1, 2022xR1 Wolfram, JLink, Mathematica, MagicDraw SysML, SysML, MD SysML, SysML Parametrics, mathematics, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], CATIA Magic:v2021x, CATIA Magic:v2021xR1, JDK, Java Development Kit, Java, CATIA Magic:v2022xGolden, CATIA Magic:v2022xRefresh1 QUESTION, TIP, TOOL
Mathematica: HOWTO Autoload the simplest possible .m or .wl Package file with a few custom functions Wolfram, Mathematica NAMING, PATTERN, TIP
Mathematica + Magic Model Analyst (Cameo Simulation Toolkit) for SysML Parametrics: GOTCHA: You must use a regular '=' on the SysML side, not the Mathematica '==' (or it will be intepreted as a constraint condition to test, not an equation to solve). Wolfram, JLink, Mathematica, MagicDraw SysML, SysML, MD SysML, SysML Parametrics, mathematics, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], CATIA Magic:v2021x, CATIA Magic:v2021xR1, JDK, Java Development Kit, Java GOTCHA, TOOL, WARNING
HOWTO use Mathematica v12.3.2 as an external maths engine for SysML Parametrics (ConstraintBlocks) in Magic Model Analyst (Cameo Simulation Toolkit) versions 2021x, 2021xR1, 2022xR1 Wolfram, JLink, Mathematica, MagicDraw SysML, SysML, MD SysML, SysML Parametrics, mathematics, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], CATIA Magic:v2021x, CATIA Magic:v2021xR1, JDK, Java Development Kit, Java TIP, TOOL
Mathematica: TIP: Package Editor mode: Use cell division between every function in .wl library files to make them more readable (and to make it easier to apply at least some degree automated code formatting per function). Wolfram, Mathematica CAPABILITY, FEATURE, TIP, TOOL
Webel: Mathematica is functional programming on steroids (and has nearly everything else, except for decent in-built OO support, although you can make some progress with Abstract Data Types and even some inheritance). Mathematica, Wolfram, functional programming, functional ASSERTION, TIP
Webel: Mathematica: WISHLIST: Support for EXTRACTABLE structured documentation for individual arguments of functions RIGHT IN/NEAR THE CODE. Yes it is needed, really it is. (And ::usage support for "methods" would be nice too.) Wolfram, Mathematica, Webel:WISHLIST LIMITATION, TOOL, WISHLIST
Webel: Mathematica: WISHLIST: Support for decent vendor-supported, built-in, fully fledged, IDE-friendly, object-orientation (OO)! [With or without the use of state, which is a choice, not obligatory, and OO doesn't throw functional away] Wolfram, Mathematica, Webel:WISHLIST, inheritance, object-oriented, OOP, OO TOOL, WISHLIST
Mathematica: Webel: You CAN/MAY use $ in variable names and function names - just not as the first character before a Capital - and it's extremely useful. You won't get sent to Azkaban prison if do you use a $ character! Wolfram, Mathematica, Mathematica:Entity, Wolfram Language, notation NAMING, OPTION, PATTERN, TIP
Mathematica: Having trouble clearing a variable with complex formatting? Try =. Wolfram, Mathematica TIP
Mathematica: HOWTO Manage test data for functions using rules across multiple functions (and about the Webel '$0' variable suffix convention for substitution targets). Wolfram, Mathematica TIP
Mathematica: HOWTO: Strip an option from an OptionsPattern[] sequence before passing down (propagating) to a function with fewer options Wolfram, Mathematica TIP
Mathematica: Nasser M. Abbasi's cheat sheet Wolfram, Mathematica TIP, TOOL
Mathematica: HOWTO Convert a list into a Sequence of arguments to a function (where each of the arguments to the function corresponds to a list item) Wolfram, Mathematica
Mathematica: HOWTO Create collapsible control groups in Manipulate GUIs Wolfram, Mathematica, Mathematica::Manipulate DISPLAY, FEATURE, TIP, TOOL
Mathematica: TIP: OverDot: Type CTRL & and then . to enter an OverDot directly Mathematica, Wolfram, notation FEATURE, TIP, TOOL
Mathematica: TIP: OverBar: Type CTRL & and then _ to enter an OverBar directly Mathematica, Wolfram, notation FEATURE, TIP, TOOL
Mathematica: v12.3.1.0: How to obtain values of physical constants Mathematica, physical quantity, quantity, magnitude, units, Wolfram TIP
Mathematica: GOTCHA: MMA distinguishes between Kelvins and KelvinsDifference Mathematica, quantity, units, physical quantity, temperature, Kelvins, celsius, Wolfram GOTCHA, WARNING
Wolfram SystemModeler: Not clear how to draw a connect that already exists in the Modelica code Modelica, Wolfram SystemModeler, Wolfram ISSUE, TOOL
Wolfram SystemModeler: On Mac the Unit Conversions dialog is under SystemModeler -> Preferences -> Global -> Unit Conversion (rather than under Tools -> Options) Modelica, Wolfram SystemModeler, units, unit conversion, macOS, Wolfram GOTCHA, TIP, WARNING
Wolfram SystemModeler: GOTCHA: The conversion dialog will not offer the Add Unit Conversion button unless there is not already an existing conversion in BOTH directions. Modelica, Wolfram SystemModeler, units, unit conversion, Wolfram GOTCHA, TIP, WARNING