## Tags and keywords

## Modelling and style

The '@' prefix in some of the ConstraintBlocks and OpaqueBehaviors indicate that they are (typically trivial) maths operations that aren't represented by dedicated functions in the Webel `Psy`

Mathematica code library:

The inclusion of such fine-grained `@dw`

for `w2-w1`

in the example diagrams here is purely for demonstration of that naming policy; one could instead simply pass `w1`

and `w2`

to the `dryingAirMassRate`

calculation (with more concise model diagrams).

At the top we see a SysML Parametric Diagram representing a network of equations for the psychrometric properties obtained from low-level CoolProp wrappers for Mathematica, and some ConstraintBlock usages for calculating the volumetric humid air flow rate for achieving a desired degree of drying of another object.

In the middle and bottom Activity Diagrams we see how the problem can be setup instead using Webel `MPsy`

objects, which encapsulate the lower level CoolProp calls. Together, they represent this Mathematica invocation:

```
ex8$psy1 = newPsy[asDegF[80.6], $opt$psy$r -> 0.8];
ex8$psy2 = newPsy[asDegF[140], $opt$psy$twb -> asDegF[125.6]];
psy$humidification$vfr$via$waterMassRate[
ex8$psy1,
ex8$psy2,
5.68 unitPoundPerHour,
$opt$psy$doShowAsIP -> True
]
1058.7950696434616 ft^3/hr
```

Here `unitPoundPerHour`

is a pre-built Mathematica `Quantity[1.0, ("Pounds")/("Hours")]`

:

*Webel Best Practice:*Webel: Mathematica: TIP: Maintain a Package library of Quantity variables for frequently used units using a naming convention unit$[unitSymbol] and unit[DescriptiveName] or unit[Acronym]

And the units utility function `asDegF[magF_Real]`

similarly creates a Quantity for °F.

Note that: