ABSTRACT
In this paper an approach is taken towards a pattern language for physical quantities in software applications. The central pattern, Physical Quantity, is described as well as some needed candidate patterns revolving around. The Physical Quantity design pattern is a specialized version of the Quantity analysis pattern, optimized for the SI unit system. It is intended for the physical and mathematical domains where calculations, arithmetic, conversion and simulations are the most used functionalities. Its emphasis is on type safety, dimensional analysis, performance, and convenient syntax. Supporting candidate patterns for handling tolerances, validation, conversion or matrix operations are shortly described. The target audiences are software engineers and practitioners working in the area of physical simulations and calculations.
- BIPM. 2006. The International System of Units (SI) (8th ed.). 186 pages.Google Scholar
- Frank Buschmann, Kevlin Henney, and Douglas Schmidt. 2007. Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing. 639 pages. Google ScholarDigital Library
- C2. 2011. Canonical Form. (2011). http://wiki.c2.com/?CanonicalFormGoogle Scholar
- Darren Dale. 2011. Quantities. (2011). http://pythonhosted.org/quantities/Google Scholar
- Enthought. 2011. Scimath Documentation. (2011). http://scimath.readthedocs.io/en/latest/Google Scholar
- Martin Fowler. 1996a. Analysis Patterns: Reusable Object Models. Addison-Wesley Professional. 384 pages. Google ScholarDigital Library
- Martin Fowler. 1996b. Money. (1996). https://www.martinfowler.com/eaaCatalog/money.htmlGoogle Scholar
- Martin Fowler. 1997. Quantity. (1997).Google Scholar
- Erich Gamma, Richard Helm, Ralph E. Johnson, and John Vlissides. 1995. Design Patterns - Elements of Reusable Object-Oriented Software (1 ed.). Addison-Wesley, Boston, USA. 395 pages. Google ScholarDigital Library
- James Geoffrey. 1987. The Tao Of Programming. (1987). http://canonical.org/ Google ScholarDigital Library
- David Goldberg. 1991. What every computer scientist should know about floating-point arithmetic. Vol. 23. 5--48 pages. Google ScholarDigital Library
- Stefan Hausberger, Martin Rexeis, Raphael Luz, Christian Kreiner, Michael Krisper, Markus Quaritsch, Philipp Gretzl, and Helmut Eichlseder. 2016. VECTO tool development. (2016).Google Scholar
- Nicholas J Higham. 2002. Accuracy and Stability of Numerical Algorithms. 1--663 pages. Google ScholarDigital Library
- ISO. 2009. ISO:80000-1:2009. (2009). https://www.iso.org/obp/ui/\#iso:std:iso:80000:-1:ed-1:v1:enGoogle Scholar
- JScience. 2011. JScience. (2011). http://jscience.org/Google Scholar
- William Kahan. 1996. IEEE Standard 754 for Binary Floating-Point Arithmetic. University of California, Berkeley May 1995 (1996), 1--30.Google Scholar
- William Kahan. 2001. Why do we need a floating-point arithmetic standard? (2001).Google Scholar
- Werner Keil. 2017. UOMSI. (2017). http://uom.siGoogle Scholar
- Andrew Kennedy. 2008. Units of Measure in F#. (2008). https://blogs.msdn.microsoft.com/andrewkennedy/2008/08/29/units-of-measure-in-f-part-one-introducing-units/Google Scholar
- Antonius Kies, Martin Rexeis, Gerard Silberholz, Raphael Luz, and Stefan Hausberger. 2013. Options to consider future advanced fuel- saving technologies in the CO2 test procedure for HDV. Technical Report. Forschungsgesellschaft für Verbrennungskraftmaschinen und Thermodynamik mbH. 108 pages.Google Scholar
- Andreas Gullberg Larsen. 2017. Units.Net. (2017). https://github.com/anjdreas/UnitsNetGoogle Scholar
- Chris MacLeod and Pierre Denis. 2013. Units in Python. (2013). https://pypi.python.org/pypi/UnumGoogle Scholar
- Josh Mafu. 2013. NGenericDimensions™. (2013). http://ngenericdimensions.codeplex.comGoogle Scholar
- Scott Meyers. 2004. The Most Important Design Guideline? In IEEE Software, Martin Fowler (Ed.). 14--16. http://www.aristeia.com/Papers/IEEE Google ScholarDigital Library
- Microsoft. 2012. FSPowerPack.Community. (2012). https://www.nuget.org/packages/FSPowerPack.CommunityGoogle Scholar
- Microsoft. 2014. The Old F# "PowerPack". (2014). http://fsharppowerpack.codeplex.com/Google Scholar
- Microsoft. 2016. Units of Measure (F#). (2016). https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/units-of-measureGoogle Scholar
- Keith Nicewarner. 2013. The Units of Measure Library. (2013). http://tuoml.sourceforge.netGoogle Scholar
- NIST. 2008. SP811 - Guide for the Use of the International System of Units (SI). Technical Report.Google Scholar
- NIST. 2009. Derived Units, Outside the SI. (2009). http://physics.nist.gov/cuu/Units/outside.htmlGoogle Scholar
- Gordon S. Novak. 1995. Conversion of units of measurement. IEEE Transactions on Software Engineering 21, 8 (1995), 651--661. Google ScholarDigital Library
- Steve Pemberton. 2015. F# Units of Measure - A Worked Example. (2015). http://stevenpemberton.net/blog/2015/03/11/FSharp-Units-Of-Measure/Google Scholar
- Eric S. Raymond. 2004. The art of Unix programming. Addison-Wesley. 525 pages. Google ScholarDigital Library
- John F. Reiser and Donald E. Knuth. 1975. Evading the drift in floating-point addition. Inform. Process. Lett. 3, 3 (1975), 84--87.Google ScholarCross Ref
- Matthias C. Schabel. 2010. Boost.Units 1.1.0. (2010). http://www.boost.org/doc/libs/1_55_0/doc/html/boost_units.htmlGoogle Scholar
- Gernot Schmoelzer, Christian Kreiner, Zsolt Kovacs, and Michael Thonhauser. 2006. Reflective, Model-Based Data Access with the Type-Safe Entity Container. In 30th Annual International Computer Software and Applications Conference (COMP-SAC'06), Vol. 2. 87--92. Google ScholarDigital Library
- Almas Shaikh, Chris Senior, Jean-Marie Dautelle, Karen Legrand, Leonardo Lima, Martin Desruisseaux, Mohamed Taman, Otavio Santana, Rajmahendra Hedge, and Werner Keil. 2016. JSR 363 Units of Measurement. (2016), 1--45.Google Scholar
- Markus Voelter, Daniel Ratiu, Bernhard Schaetz, and Bernd Kolb. 2012. mbeddr: an Extensible C-based Programming Language and IDE for Embedded Systems. (2012). http://voelter.de/data/pub/wavefront-updatedSubmission2.pdfGoogle Scholar
- James H. Wilkinson. 1994. Rounding Errors in Algebraic Processes (reprint ed.). Dover Publications. 161 pages. https://www.amazon.com/Rounding-Errors-Algebraic-Processes-Wilkinson/dp/0486679993 Google ScholarDigital Library
- Scott Wlaschin. 2012. Units of measure - Type safety for numerics. (2012). https://fsharpforfunandprofit.com/posts/units-of-measure/Google Scholar
- J.W. Yoder, F. Balaguer, and Ralph Johnson. 2000. From analysis to design of the observation pattern. (2000), 18. http://www.joeyoder.com/Research/metadata/Observation/ObservationModel.pdfGoogle Scholar
Index Terms
- Physical Quantity: Towards a Pattern Language for Quantities and Units in Physical Calculations
Recommendations
Using physical quantities in robot software models
RoSE '18: Proceedings of the 1st International Workshop on Robotics Software EngineeringOne of the challenges of modeling any software application that deals with real-world physical systems resides in the correct representation of numerical values and their units. This paper shows how both measurement uncertainty and units can be ...
Design Patterns for Cyber-Physical Systems: The Case of a Robotic Greenhouse
SBESC '11: Proceedings of the 2011 Brazilian Symposium on Computing System EngineeringCyber-physical systems (CPS) are a new discipline of research that involves electrical engineering, electronics, computer science, control and communications interacting with physical processes. This leads to a co-managed domain where both worlds (cyber ...
Ion injection in electrostatic particle-in-cell simulations of the ion sheath
A particle injection algorithm has been developed for its use in electrostatic particle-in-cell (PIC) simulations of the ion sheath which takes place in the surroundings of a planar electrode immersed in a plasma when negatively biased. The algorithm ...
Comments