Published papers

Opposed Piston Engines

In context of a resurgence of interest in use of opposed piston engines for high specific output and high power density, Jean-Pierre Pirault of PTL has co-authored  SAE publication “Opposed Piston Engines” , a historical and  technical review of the topic.

Software downloads

Matlab functions and class frameworks

A UNIT class is defined to automatically perform units conversion into the MKS system (metre,kg,sec).

The aim was to solve the problem of using, say, mm instead of m, or converting mm to inches. This is also a problem during plotting, because of the need to keep track of the units of what is being plotted. For this reason we like to define all variables into the MKS system by writing:

diameter = 10.0 * mm;

This is an automatic conversion into MKS, while still allowing to think in mm (or grams, N, inches …). If the value of mm is 1e-3, then the value of diameter is 1e-2, which, expressed in metres is = 10 mm. (everything is fine)

From this point onward all the calculations that use ‘diameter’ can be done in the MKS, avoiding any “order of magnitude error”. The syntax above is also particularly useful in input files where a lot of scalar parameters are defined. It provides a lot of information at a glance. When a variable needs to be displayed or plotted the following syntax can be used:

disp(diameterVector/mm)
or:
plot(diameterVector/mm,lengthVector/mm)

Also it is possible to perform units conversions in functions or on the command line. For example the following statement converts 10 mm into inches

>> 10 * mm/in
ans =
0.3937

All of this is not our invention, being in use in at least another software. We adopted it because for us it works very well. It also allows to create composite units:

typing: kg/mm^3
will display: kg/(mm^3) = 1.000000e+009

in this case the class returned variable is ‘COMPOSITEUNIT’

Other examples:
typing: kg*m/sec^2 / (kg/mm^3)
will display: kg*m/(sec^2)/(kg/(mm^3)) = 1.000000e-009

in this case the class returned variable is ‘COMPOSITEUNIT’

or:
kg*m/sec^2
kg*m/(sec^2) = 1.000000

INSTALLATION:

To implement the syntax above I created a class called ‘unit’, which must be saved into a directory called ‘unitClasses’. The directory ‘unitClasses’ must be added to the classpath. The function ‘unitClasses@unitprivategetStructure.m’ contains a comprehensive list of units, which can be extended as suitable. Then by calling the method ‘update(unit)’, a number of classes will be created, one for each of the units defined in ‘getStructure’.

You might then have to type:
‘clear classes’
‘rehash toolbox’

the updating can be done at any time a new unit is added to the function ‘unitsList’. From now on every time a syntax like ‘diameter = 10.0 * mm;’ is used a unit conversion is made. More info in the README.txt file. Your feedback is welcome

Download the files

We wrote these utilities to avoid having to keep writing

"set(figureHandle ,'windowStyle','docked')".

Default behaviour is defined and help is provided.


Download the files