TIP |
Mathematica: TIP: Start with With, update to Module as needed. |
|
|
|
Mathematica, Mathematica::With, Mathematica::Module, Wolfram, Wolfram Language |
MODELLING |
SysMLv1 (or v2): CHALLENGE EXERCISE: Simplified Parsing Analysis breakdown of 'Build an Airport' with variations |
|
|
ElementGroup, ElementGroup::/member, AbstractRequirement, Satisfy, Refine, DeriveReqt |
Webel Parsing Analysis, Systems Modeling Language, requirements engineering, WPA:«snippet», WPA:Snippet::source, Model-Based Systems Engineering, MBSE, SysML |
CONVENTION, MODELLING, NAMING, TIP |
Webel: SysML/UML: Dr Darren explains HOWTO use concise 'i'/'o' (input/output) Pin and Parameter naming conventions to promote a signal processing mindset in Activity Diagrams. And HOWTO get them compact. |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Activity, Parameter, NamedElement::name, Pin, InputPin, OutputPin, ActivityEdge, CallAction, ActivityParameterNode, CallOperationAction, CallBehaviorAction |
SysML Activity Diagram |
systems engineering, Model-Based Systems Engineering, MBSE, SysML, Systems Modeling Language, SysMLv1, SysMLv1.x, SysMLv2, signal processing, Webel Best Practice |
MODELLING, TIP |
Webel: SysML: TIP: Try "reverse" time ordered effect-from-cause Dependencies. Because it's harder to depend on something that does not already exist! |
|
Dependency, Dependency::client, Dependency::supplier, custom Stereotype |
|
Systems Modeling Language, SysML, time, time-ordering, Webel Best Practice |
ASSERTION |
Webel: SysML/MBSE: Dr Darren's Open Letter on why you may initially need the Model-Based (MB) and Single Source Of Truth aspects of MBSE more than the formal Systems Engineering (SE) aspect (or even initially no formal SE process at all) to benefit most! |
SysML-1.6, SysML-1.7, SysMLv2 |
|
|
systems engineering, Model-Based Systems Engineering, SysML, Systems Modeling Language, SysMLv1.x, SysMLv1.7, SysMLv2, Single Source of Truth |
MODELLING, NAMING, TIP |
Webel: SysMLv1: Dr Darren for LinkedIn: On "Trusting The Type" and avoiding unnecessary verbose repetitive Property names ... unless you really, really need them and really do have reasons to use them, and then only use concise role indicators anyway! |
SysML-1.6, SysML-1.7, SysMLv2, UML-2.5.1 |
Type, Property, NamedElement::name |
ValueType, Block, value property, block property |
Systems Modeling Language, SysML, Webel Best Practice, MagicDraw, CATIA Magic, SysMLv1.x, SysMLv2, Cameo Systems Modeler |
EXPLANATION, TIP |
Mathematica: SUPER TIP: Use CreateUUID[] to trigger recalculation against Once[] to create a flexible optionally caching function! |
|
|
|
Mathematica, Wolfram, Wolfram Language, Mathematica::CreateUUID, Mathematica::Once |
EXPLANATION, GOTCHA, ISSUE |
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, TIP |
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 |
CONVENTION, 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, NAMING, POLICY |
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 |
TIP |
Mathematica: Webel: ADT pseudo classes: TIP: Prefer the Decorator Pattern over multiple inheritance of ADT-Method UpValues! (But not because "inheritance is evil", it isn't.) |
|
|
|
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 |
CONVENTION, POLICY, TIP |
Mathematica: Webel ADT pseudo classes: A tricky POLICY & CONVENTION: Client packages MUST access the special "wrapped" primary named ADT-parameter '$$' 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 |
POLICY |
Mathematica: POLICY: Webel: ADT pseudo classes: 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: POLICY: Webel: ADT pseudo classes 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 |
CONVENTION, NAMING |
Mathematica: NAMING CONVENTION: Webel: ADT pseudo classes: 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 |
POLICY |
Mathematica: Webel: ADT pseudo classes: There is an 'ADT' universal base class that has no supers. It "blesses" every other sub-class ADT by populating it with some common ADT-method UpValues against its signature pattern via the 'adt$def$All[]' definer. |
|
|
|
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 |
CONVENTION, NAMING, 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, POLICY |
Mathematica: Webel: ADT pseudo classes: POLICY: Every named concrete Abstract Data Type (ADT) class has a ONE unique "signature" (which is the pattern passed to the "definer" functions). To vary a signature, define another unique ADT class 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 |
EXPLANATION |
Mathematica: Webel: ADT pseudo classes: The term 'Abstract Data Types (ADTs)' is used informally (the ADTs do not always adhere to strict mathematical definitions of ADTs). Just please think of it here as meaning a "strong type" for Mathematica. |
|
|
|
Mathematica, ADTs, Wolfram, Wolfram Language, Abstract Data Types, WebelADT, object-oriented, OO, OOP, functional, functional programming |
POLICY |
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 |
ASSERTION, TIP |
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 |
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 |
GOTCHA, TIP |
Mathematica: GOTCHA: The Module/With system (especially under rewriting when nested) can leave variables with a trailing '$' suffix, which may cause name clashes because the variables (Expressions) are available later outside the scope of the Module/With! |
|
|
|
Mathematica, Mathematica::With, Mathematica::Module, Mathematica::Block |
TIP |
TIP: Mathematica: COMING SOON! Webel's ultimate guide to using Abstract Data Types to create pseudo-classes WITH INHERITANCE in Wolfram Language, all modelled in SysML! [There's already some examples and some detailed policy notes.] |
SysML-1.6, SysML-1.7 |
|
|
Mathematica, Abstract Data Types, ADTs, strong types, Wolfram, Wolfram Language, Systems Modeling Language, SysML, SysMLv1.x, SysMLv1.7, SysMLv1.6, inheritance |
TIP, TOOL |
TIP: Mathematica: The IntelliJ IDEA Plugin for Mathematica is HEAPS better than the Eclipse-based Wolfram Workbench! |
|
|
|
Mathematica, Wolfram, Mathematica:IntelliJ-IDEA-Plugin, IntelliJ IDEA |
DISPLAY, FEATURE, MODELLING, STYLE, TOOL |
TIP: UML/SysML: MagicDraw/Cameo: Activity Diagrams: Consider using the Pin display mode 'Name And Type Labels Inside' for 'Position of Labels'. Dr Darren swears by it! |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Activity, Pin, Activity Diagram, InputPin, OutputPin, Parameter |
SysML Activity Diagram |
MagicDraw, UML, MagicDraw UML, Unified Modeling Language, Systems Modeling Language, SysML, MD SysML, Cameo Systems Modeler, CATIA Magic, Mathematica, Webel:MathematicaSysML, Webel Best Practice |
DISPLAY, FEATURE, TIP, TOOL |
TIP: UML/SysML: MagicDraw/Cameo: Activity Diagrams: Pins: You can display the 'multiplicity' of the underlying Parameter on Pins symbols using Edit Compartments. (The 'multiplicity' shows anyway if the :Type is shown.) |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Parameter, multiplicity, MultiplicityElement, Pin, InputPin, OutputPin |
|
Systems Modeling Language, Unified Modeling Language, MagicDraw, MD SysML, Cameo Systems Modeler, CATIA Magic |
DISPLAY, FEATURE, TIP, TOOL |
TIP: UML/SysML: MagicDraw/Cameo: Activity Diagrams: ActivityParameterNodes: Displaying the underlying 'parameter::multiplicity' using Edit Compartments is extremely useful! |
SysML-1.6, SysML-1.7, UML-2.5.1 |
ActivityParameterNode, Parameter, multiplicity, MultiplicityElement |
|
Systems Modeling Language, Unified Modeling Language, MagicDraw, MD SysML, Cameo Systems Modeler, CATIA Magic |
GOTCHA, ISSUE, TIP, TOOL |
UML/SysML: MagicDraw/Cameo: Edit Compartments: ActivityParameterNode: Can't select the 'parameter::multiplicity'? Run the synchronisation between the Activity in the direction Synchronize Activity Parameter Nodes by Activity Parameter then try again! |
SysML-1.6, SysML-1.7, UML-2.5.1 |
ActivityParameterNode, Parameter, multiplicity, MultiplicityElement |
|
Systems Modeling Language, Unified Modeling Language, MagicDraw, MD SysML, Cameo Systems Modeler, CATIA Magic |
FEATURE, GOTCHA, ISSUE, 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 |
GOTCHA, TIP, WARNING |
MagicDraw/Cameo/CATIA Magic: How to (try to) edit and fix a corrupt MDZIP project file |
SysML-1.6, SysML-1.7 |
|
|
CATIA Magic, MagicDraw, Cameo Systems Modeler |
GOTCHA, TIP, WARNING |
MagicDraw/Cameo: UML/SysML: DO NOT use '$' character in Stereotype names (corrupts MDZIP file) |
SysML-1.6, SysML-1.7 |
|
|
CATIA Magic, MagicDraw, Cameo Systems Modeler |
CONVENTION, LIMITATION, MODELLING, NAMING, TOOL |
Webel: Psy/MPsy: Psychrometrics for Mathematica: '$HC' in a function name indicates pure sensible heating or cooling (with no change in water vapour content). Such functions may also be used in the pure sensible portion of a 2-step treatment. |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Activity, CallBehaviorAction, Action, Parameter, Activity Diagram, ObjectFlow, Pin, InputPin, OutputPin |
SysML Activity Diagram, MD:UNSPECIFIED |
Webel::MPsy, Webel::Psy, Psychrometrics, Mathematica |
GOTCHA, WARNING |
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 |
CONVENTION, NAMING |
Webel: Psy/MPsy: Psychrometrics for Mathematica: Equation registry with variable/quantity markup |
|
|
|
Psychrometrics, Webel::MPsy, Webel::Psy, humid air, water, liquid water, steam, gas, fluid, vapour, water vapour |
CONVENTION, NAMING |
Webel: SysML4Mathematica: Convention: A prefix '$doc' indicates a documentation String for each primary variable/quantity (argument or output) |
SysML-1.6, SysML-1.7, UML-2.5.1 |
|
|
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, Webel::Psy |
CONVENTION, NAMING |
Webel: SysML4Mathematica: Convention: A prefix 'sym$' indicates a markup variable "symbol" for a documented variable. It need not be a String, but each referenced part MUST be a String, not a raw Mathematica Symbol, to avoid namespace clashes! |
SysML-1.6, SysML-1.7, UML-2.5.1 |
|
|
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, Webel::Psy |
CONVENTION, NAMING |
Webel: Psy/MPsy: Psychrometrics for Mathematica: A suffix '$wat$i' indicates water (liquid or vapour) flow TO (into) the humid air mixture. A suffix '$wat$o' indicates water (liquid or vapour) flow FROM (out of) the humid air mixture. |
|
|
|
Psychrometrics, Webel::MPsy, Webel::Psy, humid air, water, liquid water, steam, gas, fluid, vapour, water vapour, flow direction, flow |
CONVENTION, NAMING |
Webel: Psy/MPsy: Psychrometrics for Mathematica: A suffix '$sat' indicates a humid air mixture quantity at saturation (relative humidity = 1 or degree of saturation = 1). |
|
|
|
Psychrometrics, Webel::MPsy, Webel::Psy, humid air, water, vapour, water vapour, saturation, relative humidity, degree of saturation |
CONVENTION, NAMING |
Webel: Psy/MPsy: Psychrometrics for Mathematica: A suffix '$ha' indicates a HUMID air mixture variable, quantity, or function or a PER humid air mass quantity. |
|
|
|
Psychrometrics, Webel::MPsy, Webel::Psy, humid air, water, liquid water, steam, gas, fluid, vapour, water vapour |
CONVENTION, NAMING |
Webel: Psy/MPsy: Psychrometrics for Mathematica: A suffix '$a' indicates a DRY air component variable, quantity, or function. A suffix '$da' indicates a HUMID air mixture quantity PER dry air. |
|
|
|
Psychrometrics, Webel::MPsy, Webel::Psy, humid air, water, liquid water, steam, gas, fluid, vapour, water vapour |
CONVENTION, NAMING |
Webel: Psy/MPsy: Psychrometrics for Mathematica: A suffix '$wat' indicates a water-related variable, quantity, or function (note that 'w' is reserved for the humidity ratio). |
|
|
|
Psychrometrics, Webel::MPsy, Webel::Psy, humid air, water, liquid water, steam, gas, fluid, vapour, water vapour, flow direction, flow |
CONVENTION, NAMING |
Webel: Psy/MPsy: Psychrometrics for Mathematica: Variable/quantity registry and naming conventions, with symbol markup. |
|
|
|
Psychrometrics, Webel::MPsy, Webel::Psy, humid air, water, liquid water, steam, gas, fluid, vapour, water vapour |
CONVENTION, NAMING |
Webel: Psy/MPsy: Psychrometrics for Mathematica: The term 'steam' (indicated in variable names with a suffix '$s') is reserved for water vapour created through boiling. |
|
|
|
Psychrometrics, Webel::MPsy, Webel::Psy, humid air, water, liquid water, steam, gas, fluid, vapour, water vapour |
CONVENTION, NAMING |
Webel: Psy/MPsy: Psychrometrics for Mathematica: A suffix '$g' in a water-related variable name refers to water vapour (a special case of gas) or steam. A suffix '$f' refers to liquid (fluid) water. [Although a gas is a fluid.] |
|
|
|
Psychrometrics, Webel::MPsy, Webel::Psy, humid air, water, liquid water, steam, gas, fluid, vapour, water vapour |
MODELLING, NAMING, TIP |
Webel: SysML4Mathematica: Does every bit of the Mathematica code need to be modelled in SysML? No. Typically just the main function parameters and their interdependencies, data structures, and main code logic. Except for special or educational purposes. |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Activity, OpaqueBehavior |
ConstraintBlock |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language |
ASSERTION, TIP |
Psychrometrics: Calculations of the mass flow rate of the dry air component (assumed constant under steady state) from the ENTRY volumetric flow rate of the humid air mixture MUST use the INITIAL state variables! |
|
|
|
Psychrometrics, humid air, air, water, water vapour, steam |
EXPLANATION, MODELLING |
Webel: SysML/UML: Some example diagrams show extremely fine-grained and trivial examples purely for educational and capability demonstration purposes (not as practical recommendations for real-world projects). You can sometimes just use code in SysML. |
fUML-1.4, OCL-2.4, SysML-1.6, SysML-1.7, SysMLv2, SysPhS-1.1, UML-2.5.1 |
|
|
SysML, UML, Model-Based Systems Engineering, training, education, demonstration, Webel Best Practice |
MODELLING, POLICY |
Webel: SysML4Mathematica: POLICY: Handle flow sign changes via a single negative (not duplicated and "adjusted" algebra). This strategy may come at a very slight performance cost (for benefit of more robustness). |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Parameter, Constraint, Activity, OpaqueExpression |
SysML Parametric Diagram, ConstraintBlock, constraint parameter, MD:ConstraintParameter, SysML Activity Diagram |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, Mathematica:notebook, Webel::MPsy, Psychrometrics, Webel::Psy |
CAPABILITY, FEATURE, MODELLING, TIP, TOOL |
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) |
SysML-1.6, SysML-1.7 |
Constraint |
ConstraintBlock, SysML Parametric Diagram |
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 |
TIP, TOOL |
HOWTO: MagicDraw/Cameo: v2022Refresh1: JDK 11 download compatible with the modelling tools AND Apple Silicon (ARM) machines (such as M1 Max) |
|
Constraint |
ConstraintBlock, SysML Parametric Diagram |
MagicDraw SysML, CATIA Magic, Magic Model Analyst [Cameo Simulation Toolkit], CATIA Magic:v2021x, CATIA Magic:v2021xR1, JDK, Java Development Kit, Java, ARM Architecture, M1 Max, Apple Silicon, CATIA Magic:v2022xGolden, CATIA Magic:v2022xRefresh1 |
CAVEAT, COMPLICATION, LIMITATION |
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! |
|
Constraint, OpaqueBehavior:body, OpaqueBehavior:language, Activity, OpaqueBehavior, Abstraction |
ConstraintBlock, SysML Parametric Diagram, SysML Activity Diagram |
DRY, WET, Single Source of Truth, Systems Modeling Language, SysMLv1.x, Model-Based Systems Engineering, Wolfram, Mathematica |
MODELLING, TIP |
Webel: SysML4Mathematica: Yes, SysML Activities and SysML Activity Diagrams CAN represent functional programming paradigms! You can type Parameters by encapsulations of functions and pass them to/from InputPins/OutputPins of Actions. |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Parameter, Activity, Action |
SysML Activity Diagram |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, functional, functional programming |
MODELLING, TIP |
Webel: SysML4Mathematica: TIP: Representing Mathematica Paclets and their inter-dependencies as SysML Packages modelled in SysML Package Diagrams can really help you organise your Wolfram Language code on complex projects! |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Package, Model, Usage, Dependency |
SysML Package Diagram |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, Mathematica:notebook, Mathematica:Paclet |
MODELLING, TIP |
Webel: SysML4Mathematica: TIP: Representing Mathematica functions as SysML ConstraintBlocks modelled in Block Definition Diagram (BDD) overviews can really help you organise and document your Wolfram Language code on complex projects! |
SysML-1.6, SysML-1.7, UML-2.5.1 |
|
SysML Block Definition Diagram, ConstraintBlock, constraint parameter, MD:ConstraintParameter |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, Mathematica:notebook |
MODELLING, TIP |
Webel: SysML4Mathematica: TIP: Representing Mathematica functions as SysML ConstraintBlocks modelled in SysML Parametric Diagrams and as Activities in SysML Activity Diagrams is super for analysing the dependencies between functions and their arguments! |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Parameter, Constraint, Activity |
SysML Parametric Diagram, ConstraintBlock, constraint parameter, MD:ConstraintParameter, SysML Activity Diagram |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, Mathematica:notebook |
MODELLING, TIP |
Webel: SysML4Mathematica: TIP: Exported SysML Diagrams can be embedded in Mathematica Notebooks! |
SysML-1.6, SysML-1.7, UML-2.5.1 |
|
|
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, Mathematica:notebook |
CONVENTION, MODELLING |
Webel: SysML4Mathematica: Convention: A custom SysML ValueType 'Quantity' extends a custom ValueType '_' (representing a Mathematica '_' Blank). It DOES NOT also extend the SysML Real! |
SysML-1.6, SysML-1.7 |
|
ValueType |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, MagicDraw SysML, Cameo Systems Modeler, CATIA Magic, Mathematica::Expression, Mathematica::Blank |
CAVEAT, GOTCHA, LIMITATION, MODELLING, TIP |
SysML: Cameo Systems Modeler: A ValueType that does not extend Real might not always simulate correctly when used to type a constraint parameter of a ConstraintBlock (in a SysML Parametric Diagram) or to type a parameter (in a SysML Activity Diagram)! |
|
Parameter, Activity, Action, Pin |
ConstraintBlock, constraint parameter, SysML Parametric Diagram, SysML Activity Diagram, Real, ValueType, value property |
Cameo Systems Modeler, Magic Model Analyst [Cameo Simulation Toolkit], MagicDraw SysML, SysML, CATIA Magic, Systems Modeling Language, simulation, execution |
CONVENTION, MODELLING, NAMING, TOOL |
Webel: SysML4Mathematica: Convention: A Mathematica Blank '_' (which pattern-matches any Expression) is represented by a custom SysML ValueType '_' |
SysML-1.6, SysML-1.7 |
Activity, Type, Parameter, custom Stereotype |
ConstraintBlock, constraint parameter, ValueType, MD:UNSPECIFIED |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, MagicDraw SysML, Cameo Systems Modeler, CATIA Magic, Mathematica::Expression, Mathematica::Blank |
MODELLING, TIP, TOOL |
SysML1.x: MagicDraw/Cameo: The nested property path concept is implemented using a vendor-specific stereotype extension NestedPropertyPath |
SysML-1.6, SysML-1.7 |
|
nested property path, MD:NestedPropertyPath |
MagicDraw SysML, Cameo Systems Modeler, Systems Modeling Language, CATIA Magic, SysMLv1.x |
MODELLING, TIP, TOOL |
SysML1.x: MagicDraw/Cameo: The value property concept is implemented using a vendor-specific stereotype extension ValueProperty |
SysML-1.6, SysML-1.7 |
|
value property, MD:ValueProperty |
MagicDraw SysML, Cameo Systems Modeler, Systems Modeling Language, CATIA Magic, SysMLv1.x |
MODELLING, TIP, TOOL |
SysML1.x: MagicDraw/Cameo: The shared property concept is implemented using a vendor-specific stereotype extension SharedProperty |
SysML-1.6, SysML-1.7 |
|
shared property, MD:SharedProperty |
MagicDraw SysML, Cameo Systems Modeler, Systems Modeling Language, CATIA Magic, SysMLv1.x |
MODELLING, TIP, TOOL |
SysML1.x: MagicDraw/Cameo: The reference property concept is implemented using a vendor-specific stereotype extension ReferenceProperty |
SysML-1.6, SysML-1.7 |
|
reference property, MD:ReferenceProperty |
MagicDraw SysML, Cameo Systems Modeler, Systems Modeling Language, CATIA Magic, SysMLv1.x |
MODELLING, TIP, TOOL |
SysML1.x: MagicDraw/Cameo: The part property concept is implemented using a vendor-specific stereotype extension PartProperty |
SysML-1.6, SysML-1.7 |
|
part property, MD:PartProperty |
MagicDraw SysML, Cameo Systems Modeler, Systems Modeling Language, CATIA Magic, SysMLv1.x |
MODELLING, TIP, TOOL |
SysML1.x: MagicDraw/Cameo: The block property concept is implemented using a vendor-specific stereotype extension BlockProperty |
SysML-1.6, SysML-1.7 |
|
block property, MD:BlockProperty |
MagicDraw SysML, Cameo Systems Modeler, Systems Modeling Language, CATIA Magic, SysMLv1.x |
MODELLING, TIP, TOOL |
SysML1.x: MagicDraw/Cameo: The constraint parameter concept is implemented using a vendor-specific stereotype extension ConstraintParameter |
SysML-1.6, SysML-1.7 |
|
constraint property, MD:ConstraintParameter |
MagicDraw SysML, Cameo Systems Modeler, Systems Modeling Language, CATIA Magic, SysMLv1.x |
MODELLING, TIP, TOOL |
SysML1.x: MagicDraw/Cameo: The constraint property concept is (was) implemented using a vendor-specific stereotype extension ConstraintProperty [VENDOR-DEPRECATED] |
SysML-1.6, SysML-1.7 |
|
constraint property, MD:ConstraintProperty |
MagicDraw SysML, Cameo Systems Modeler, Systems Modeling Language, CATIA Magic, SysMLv1.x |
ASSERTION, GOTCHA, TIP |
Psychrometrics: The volumetric flow rate of a humid air mixture MAY change between a State1 and State2 (but the mass flow rate of dry air does not under steady state)! This is sometimes "glossed over" in some online calculators and less formal guides. |
|
|
|
Psychrometrics, humid air, air, water, water vapour, steam |
NAMING, PATTERN, POLICY |
Webel: Psy/MPsy: Psychrometrics for Mathematica: Convention: Option variable names are prefixed with '$opt$psy' |
|
|
|
Webel Best Practice, Mathematica, Wolfram Language, naming, coding, Mathematica::option, Webel::MPsy, Webel::Psy |
NAMING, PATTERN, POLICY |
Webel Best Practice: Mathematica: Options are encapsulated as a String variable with the prefix '$opt', and have a related '$info$opt$' String (help), '$lab$opt' String (label), a 'def$opt' default value expression, and an optional '$warn$opt' String. |
|
|
|
Webel Best Practice, Webel::SysML4Mathematica, Mathematica, Wolfram Language, naming, coding, Mathematica::option |
CONVENTION, MODELLING, NAMING |
Webel: SysML4Mathematica: An Association used as the Type of an argument or return is represented by a Block '<||>'. A List used as as the Type of an argument or return is represented by a Block '{}'. |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Activity, OpaqueBehavior |
Block, ConstraintBlock |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, Mathematica::Association, Mathematica::List |
GOTCHA, TIP |
CoolProp: Mathematica wrapper: Psychrometrics (humid air): When obtaining the dew point temperature 'Tdp' at the pressure 'P', humidity ratio 'W', and dry bulb temperature 'Tdb', the 'Tdb' value will be "ignored" but MUST be within a sensible range! |
|
|
|
Psychrometrics, Webel::Psy, Mathematica, CoolProp, humid air, temperature, pressure, wet bulb temperature, dry bulb temperature, humidity ratio, dew point temperature |
EXPLANATION, FEATURE, POLICY |
Webel: Psy/MPsy: Psychrometrics for Mathematica: The default newPsy[tdb] builder accepts the pressure 'p' as an option, which defaults to sea level atmospheric pressure. |
|
|
|
Psychrometrics, Webel::Psy, Mathematica, humid air, temperature, pressure, wet bulb temperature, dry bulb temperature, relative humidity, humidity ratio |
CONVENTION |
Webel: Psy/MPsy: Psychrometrics for Mathematica: The CoolProp "wrappers" of the Psy library in fact wrap lower-level wrappers (bindings) for CoolProp for Mathematica |
|
|
|
Psychrometrics, Webel::Psy, Mathematica, CoolProp, humid air, temperature, pressure, wet bulb temperature, dry bulb temperature, relative humidity, humidity ratio |
CAVEAT, COMPLICATION, GOTCHA, ISSUE, MODELLING, NAMING, TOOL |
ISSUE/GOTCHA: MagicDraw/Cameo v2022x: UML/SysML: If you "rename" an ActivityParameterNode symbol on the frame of an Activity Diagram it actually renames the underlying Parameter (only) NOT the name of the ActivityParameterNode element! |
|
Activity, ActivityParameterNode, Activity Diagram, Pin, Parameter, CallBehaviorAction, CallOperationAction |
SysML Activity Diagram |
Unified Modeling Language, UML, SysML, Systems Modeling Language, SysMLv1.x, MagicDraw UML, MagicDraw SysML, Cameo Systems Modeler, MagicDraw:validation |
MODELLING, NAMING, TIP, TOOL |
SysML/UML: MagicDraw/Cameo: The name of an ActivityParameterNode does not always stay in synch with its Parameter (and it is not always desirable that it does). |
|
Activity, ActivityParameterNode, Activity Diagram, Pin, Parameter, CallBehaviorAction, CallOperationAction |
SysML Activity Diagram |
Unified Modeling Language, UML, SysML, Systems Modeling Language, SysMLv1.x, MagicDraw UML, MagicDraw SysML, Cameo Systems Modeler, MagicDraw:validation |
MODELLING, TIP, TOOL |
SysML/UML: MagicDraw/Cameo: Activity Diagrams: All Pins of CallBehaviorActions and CallOperationActions MUST be displayed (synchronised). All ActivityParameterNodes MUST be shown on the frame of an Activity Diagram. |
|
Activity, ActivityParameterNode, Activity Diagram, Pin, Parameter, CallBehaviorAction, CallOperationAction |
SysML Activity Diagram |
Unified Modeling Language, UML, SysML, Systems Modeling Language, SysMLv1.x, MagicDraw UML, MagicDraw SysML, Cameo Systems Modeler, MagicDraw:validation |
CAPABILITY, EXPLANATION |
Webel: Psy/MPsy: Psychrometrics for Mathematica: The default MPsy class is a readonly one-shot class that pre-builds many frequently used psychrometric properties (offered as public fields) using CoolProp, and also offers some value-adding methods. |
|
|
|
Psychrometrics, Webel::Psy, Mathematica, humid air, temperature, pressure, wet bulb temperature, dry bulb temperature, relative humidity, humidity ratio, CoolProp |
EXPLANATION, FEATURE, POLICY |
Webel: Psy/MPsy: Psychrometrics for Mathematica: The default newPsy[tdb] builder requires the dry bulb temperature 'tdb', and one (only) of the relative humidity 'r', the humidity ratio 'w', or the wet bulb temperature 'twb' (as options). |
|
|
|
Psychrometrics, Webel::Psy, Mathematica, humid air, temperature, pressure, wet bulb temperature, dry bulb temperature, relative humidity, humidity ratio |
LIMITATION, MODELLING, WARNING |
Webel: SysML4Mathematica: SysML Parametric Diagrams are not well suited to modelling calculations with Blocks for MTools classes, or for modelling complex logic flow of Mathematica functions. Prefer SysML Activity Diagrams for those modelling cases. |
|
|
SysML Activity Diagram, SysML Parametric Diagram |
SysML, Systems Modeling Language, Mathematica, Wolfram Language, Mathematica:MTools |
COMPLICATION, CONVENTION, GOTCHA, LIMITATION, NAMING, TOOL |
SysML/UML: MagicDraw/Cameo: GOTCHA: Connecting a typed OutputPin to an untyped (UNSPECIFIED) InputPin with an ObjectFlow changes the type of the InputPin |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Activity, CallBehaviorAction, Action, Parameter, Activity Diagram, ObjectFlow, Pin, InputPin, OutputPin |
SysML Activity Diagram, MD::UNSPECIFIED |
Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, MagicDraw SysML, Cameo Systems Modeler, CATIA Magic |
CONVENTION, LIMITATION, MODELLING, NAMING, TOOL |
Webel: SysML4Mathematica: Convention: A '$E' in a function name indicates that all parameters (arguments and return) are Mathematica '_' expressions. However, when representing such functions as Activities they may end up getting strongly typed in tools! |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Activity, CallBehaviorAction, Action, Parameter, Activity Diagram, ObjectFlow, Pin, InputPin, OutputPin |
SysML Activity Diagram, MD:UNSPECIFIED |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, MagicDraw SysML, Cameo Systems Modeler, CATIA Magic, Mathematica::Expression, Mathematica::Blank |
MODELLING, TIP |
TIP: Webel: SysML/UML: On the boundary of symbols for ConstraintParameters on a ConstraintProperty (ConstraintBlock usage) symbol in Parametric Diagrams use any placement or "ordering" of ConstraintParameter symbols that works for the diagram! |
|
|
MD:ConstraintParameter, constraint parameter, SysML Parametric Diagram, ConstraintBlock |
Systems Modeling Language, SysML, SysMLv1.x, Webel Best Practice, MagicDraw SysML, Cameo Systems Modeler, CATIA Magic |
MODELLING, TIP |
TIP: Webel: SysML/UML: On the boundary of Action symbols in Activity Diagrams use any placement or "ordering" of Parameter symbols that works for the diagram. Ignore the Parameter ordering of Operation and Behavior signatures completely! |
|
Activity Diagram, Action, Activity, Behavior, Parameter, Operation, ActivityParameterNode |
SysML Activity Diagram |
Systems Modeling Language, SysML, SysMLv1.x, Webel Best Practice, MagicDraw SysML, Cameo Systems Modeler, CATIA Magic |
CONVENTION, MODELLING, NAMING |
Webel: SysML4Mathematica: When modelling the logic flow of Mathematica code with Activity diagrams it is not necessary to model every single Mathematica construct. Placeholder OpaqueBehaviors (used via CallBehaviorActions) and OpaqueActions may be used. |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Activity, OpaqueBehavior, OpaqueAction |
ConstraintBlock |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, MagicDraw SysML, Cameo Systems Modeler, CATIA Magic |
CAVEAT, COMPLICATION, ISSUE, LIMITATION, MODELLING, TOOL |
Webel: SysML4Mathematica: Cameo Systems Modeler: Can perform calculations with a custom Quantity ValueType (for Mathematica) directly, but DOES NOT perform units-aware algebra (no automatic conversions) |
SysML-1.6, SysML-1.7 |
Activity, OpaqueBehavior |
ConstraintBlock, Real, ValueType, ValueType::unit, MD:ValueProperty, value property |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, Mathematica::Quantity, SI unit, units, Imperial unit, Mathematica::Blank, Cameo Systems Modeler, CATIA Magic, MagicDraw SysML |
DISPLAY, MODELLING, TIP, TOOL |
SysML/UML: MagicDraw/Cameo: To display the body of an OpaqueBehavior on a usage (CallBehaviorAction) in an Activity Diagram use an element property callout of 'Body' into a Note with a handle to the CallBehaviorAction |
SysML-1.6, SysML-1.7, UML-2.5.1 |
CallBehaviorAction, OpaqueBehavior, Activity Diagram, Note, callout |
SysML Activity Diagram |
Systems Modeling Language, Unified Modeling Language, SysML, MagicDraw SysML, Cameo Systems Modeler, CATIA Magic, SysMLv1.x |
CONVENTION, MODELLING, NAMING |
Webel: SysML4Mathematica: An '@' prefix in the name of a Block indicates a Mathematica data structure (such as an Association or List) that is not represented by an MTools class in the Mathematica code |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Activity, OpaqueBehavior |
ConstraintBlock |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language, Mathematica::Association, Mathematica::List |
CONVENTION, MODELLING, NAMING |
Webel: SysML4Mathematica: An '@' prefix in the name of a ConstraintBlock, Activity, or OpaqueBehavior indicates that it is not represented by a dedicated function in a Mathematica code library (typically for minor maths or logic) |
SysML-1.6, SysML-1.7, UML-2.5.1 |
Activity, OpaqueBehavior |
ConstraintBlock |
Webel::SysML4Mathematica, Mathematica, Systems Modeling Language, SysML, SysMLv1.x, Wolfram Language |
CONVENTION |
Webel: Psy/MPsy: Psychrometrics for Mathematica: Most CoolProp wrappers can be invoked with the dry bulb temperature 'tdb', the pressure 'p', and one (only) of the relative humidity 'r', the humidity ratio 'w', or the wet bulb temperature 'twb' |
|
|
|
Psychrometrics, Webel::Psy, Mathematica, CoolProp, humid air, temperature, pressure, wet bulb temperature, dry bulb temperature, relative humidity, humidity ratio |
CONVENTION |
Webel: Psy/MPsy: Psychrometrics for Mathematica: Due to Mathematica's units-aware Quantity algebra system it is irrelevant what units are used for the input Quantities for creation of the MPsy objects, as long as they are dimensionally consistent! |
|
|
|
Psychrometrics, Webel::Psy, Webel::MPsy, Mathematica, units, SI unit, Imperial unit, Mathematica::Quantity |
MODELLING, NAMING, TIP |
SysML Parametrics: You can use custom stereotypes keywords «i» and «o» on constraint parameters to indicate their intended use (causality) as (i)nputs and (o)utputs on ConstraintBlocks |
|
Property, Stereotype, custom Stereotype, keyword |
constraint parameter, ConstraintBlock, SysML Parametric Diagram, BindingConnector, MD:ConstraintParameter, MD:ConstraintProperty |
Webel Best Practice, Systems Modeling Language |
CAVEAT, GOTCHA, TIP, WARNING |
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 |
TIP |
TIP: If your browser can't zoom in on large tutorial trail slide images in the tutorial trail image viewer, open the slide image in a separate tab then zoom in there |
|
|
|
|