Samir Khan

1911 Reputation

19 Badges

16 years, 15 days

My role is to help customers better exploit our tools. I’ve worked in selling, supporting and marketing maths and simulation software for all my professional career.

I’m fascinated by the full breadth and range of application of Maple. From financial mathematics and engineering to probability and calculus, I’m always impressed by what our users do with our tools.

However much I strenuously deny it, I’m a geek at heart. My first encounter with Maple was as an undergraduate when I used it to symbolically solve the differential equations that described the heat transfer in a series of stirred tanks. My colleagues brute-forced the problem with a numerical solution in Fortran (but they got the marks because that was the point of the course). I’ve since dramatized the process in a worksheet, and never fail to bore people with the story behind it.

I was born, raised and spent my formative years in England’s second city, Birmingham. I graduated with a degree in Chemical Engineering from The University of Nottingham, and after completing a PhD in Fluid Dynamics at Herriot-Watt University in Edinburgh, I started working for Adept Scientific – Maplesoft’s partner in the UK.

MaplePrimes Activity

These are answers submitted by Samir Khan

With this option selected, Enter (in addition to Tab) inserts the selected item from command and argument completion lists.

Without this option selected, only tab performs the action.

Select the text you want to format, and then go to Format > Character > Subscript or Format > Character > Superscript

The ThermophysicalData:-Property subpackage is built on top of an open source library called CoolProp. CoolProp natively use SI units, and returns temperatures in K.

For this call…

ThermophysicalData:-Property(T, "IF97::Water", Q = 0.100, P = 1*Unit(psi))

…Maple receives an absolute temperature of 311.9 K from CoolProp.

If the unit system is set to FPS via Units:-UseSystem(FPS), this is converted to 561.1 F (= 311.1 * 9/5), assuming that 311.9K is a temperature difference.

This assumption is incorrect in context, but this context is not known to Units:-UseSystem(). The correct temperature conversion would be (311.9K − 273.15) × 9/5 + 32 = 101.7F

Rather than changing the default unit system to FPS, you could consider

  • Keeping the default unit system to SI

  • Changing the units of individual results manually to FPS

    • via the Context Panel

    • except for absolute temperatures, in which use use convert(temperature_in_kelvin,temperature,degF) instead

Maple Flow doesn't yet support

  • for loops in the canvas (you can, however, enter procedures with for loops in the coding window)
  • print statements in the canvas

Try something like this instead:

Section 6.3 of the User Manual (Help > User Manual) states:

To create a multi-line header or footer, use a newline character.
• On Windows, use \n
• On Mac, use \r


The manual also offers an example:

Here's a couple of methods you could try:

The conversion that's closest in spirit to the Mathcad worksheet is this:

But this isn't necessarily the best way to implement this type of calculation in Maple Flow. Here's another approach that you might consider a better use of Maple Flow's functionality:

When resizing an image with the mouse, hold down the Shift key to maintain the aspect ratio.

This is on the roadmap, but not in the product just yet

You can use the Context Panel to rescale Ω to kΩ.




In "Enter Units", write `Omega` for ohms, or `kOmega` for kilo ohms.

You can generate compressibility factor charts with the ThermophysicalData package

fluid := "CH4":
Zc := (p, t) -> Property(Z, fluid, temperature = t, pressure = p):
temps := [200*Unit(K), 300*Unit(K), 600*Unit(K)]:
    seq(plot(Zc(p, temps[i]), p = 0 * Unit(bar)..600 * Unit(bar)),i = 1..3)
   ,seq(plots:-textplot([640, Zc(600*Unit(bar), temps[i]), temps[i]] ), i = 1..3)
   ,labels = ["Pressure (bar)", "Compressibility Factor"]
   ,labeldirections = [horizontal, vertical]

You can certainly rescale kg/(m^2*s^2) to N/m^3 using the Context Panel. You need to use the "Enter Unit" field to specify your custom unit:

You can convert to torque units (e.g. N*m, lbf*ft etc) with the Context Panel.

  • Click on the result you want to rescale to torque (this probably has units of energy e.g. J) and open the Context Panel

  • Locate the "Enter Unit" box in the Context Panel, and enter your desired units of torque (e.g. N*m)

  • Press Enter

You should now find that your result is rescaled to units of torque

The Optimization package understands units, so you could do something like this:


XU:=Vector([1*Unit(s), 2*Unit(s), 3*Unit(s), 4*Unit(s), 5*Unit(s), 6*Unit(s)]):
YU:=Vector( [2*Unit(m), 3*Unit(m), 4*Unit(m), 3.5*Unit(m), 5.8*Unit(m), 7*Unit(m)]):

sse:=(a,b,c)->add( (a+b*XU[i]+c*XU[i]^2 - YU[i])^2, i = 1..6):

Optimization:-Minimize(sse(a,b,c),initialpoint = {a=1*Unit(m),b=1*Unit(m/s), c=1*Unit(m/s^2)})

Warning, (in sse) `i` is implicitly declared local


[1.287714285714*Units:-Unit(m^2), [a = HFloat(1.9599999999999476)*Units:-Unit(m), b = HFloat(0.16500000000003545)*Units:-Unit(m/s), c = HFloat(0.11071428571428099)*Units:-Unit(m/s^2)]]




1 2 3 4 Page 1 of 4