CompPad is an OpenOffice.org / LibreOffice extension for performing units-aware engineering calculations within a Writer document, allowing calculations to be documented using all of the resources of the Writer application. It has functionality similar to Mathcad, but is not intended to be a Mathcad clone. Rather, I hope it might prove more flexible and extensible, and that it might encourage other free / open-source alternatives to a proprietary engineering "Killer App."

CompPad allows you to create technical calculations in the form of conventional-looking mathematical expressions using the OpenOffice.org equation editor. This editor has a simple text syntax that some consider to be faster and more intuitive than other equation editors. Then, with the click of a toolbar icon, CompPad will evaluate the expressions and display the results, embedded in your document. All of the features of OpenOffice.org are available for documenting and formatting your document so that it can be presented with pride to co-workers, customers, professors, etc.

NOTE: This page is fairly static. The most up-to-date information may be found in the wiki.

Example

Here is an example of how you might use CompPad. It is a simple mechanical harmonic oscillator example based on the Wikipedia topic . You can download this example here: example - harmonic oscillator.odt. (Formulas rendered using mathimo.com)

• Install the CompPad extension (easy, see below.)
• Open a new OpenOffice.org Writer document. You should see a toolbar that looks like this: .
• First we define the mass of the oscillator. Enter the following text in the toolbar edit field : (without quotation marks) "M:=10 kg"
• Press "enter" or click . The following formula will be created:
• Use the mouse to move the cursor to a point after the formula. Now you can create another formula or edit text.
• Define the spring constant: "K:= 4 lbf/inch"
• Calculate the natural frequency of the oscillator: "f_n := 1 over {2 %pi} sqrt{ K over M}="
• To evaluate the expressions you've entered so far, click . You will see that the last expression gets updated with the result of the calculation:

Notice how the units of measure were handled automatically. Even though we entered quantities in both SI and US Customary units, the correct solution was computed.
• Define the amplitude of the oscillation: "A:= 2 cm"
• Define position as a function of time: "x(t) := A cos left( sqrt{K over M } t right)"
• Create a time vector with 21 elements, ranging from 0 to 1 s: "t:={0 dotslow 20} over 20 s"
• Then calculate the position vector: x_t:= x(t)
• To plot position vs. time: "plotxy(t,x_t)"
• Finally, click . You will see the following plot added to the document:

Now, you can add text, pictures, formatting, and other elements using all of the features of OpenOffice.org Writer. If you need to change a parameter in the calculation, you can make your changes using the equation editor, and then to re-evaluate the document.

CompPadDemo.odt demonstrates all the features of CompPad in a writer document. Also, check out the example files.

Screenshots

Click thumbnails for full-size image.

Installation

• Both Stable (feature-complete) and unstable (developer snap-shot) releases are available HERE.
• Download the most recent .oxt from "Stable", if you are a new user or from "Unstable", if you are more adventurous or require bleeding-edge features.
• In OpenOffice.org or LibreOffice 3.x, installing the extension for the first time should be as simple as opening the file using "File" -> "Open".
• After installing, you will need to re-start OpenOffice.org / LibreOffice.
• If you are upgrading from a previous version of CompPad, the above procedure may work. However, if it fails, Check the FAQ

CompPad is an OpenOffice.org / LibreOffice extension implemented in Java. In theory it should run on any platform that supports OpenOffice.org / LibreOffcie 3 and Sun Java 1.5 or higher. It is being developed under Ubuntu 10.05, NetBeans 6.9.1, Openoffice 3.2 and Java 1.6.0_15. It should run in on Windows, Linux, OS X, and other operating systems that support OOO/LibO and Java.

• Try the example above
• See the User Guide, which applies to version 0.3 and higher.
• Try changing the expressions in these examples, or create a new document with your own expressions. If you get an error, double-check the offending formula.
• If you're stuck, check the FAQ
• If you're still stuck, check the mailing list archive to see if your question has been answered.
• Email questions, bug-reports and feature requests to the Mailing List .

Current Status

CompPad is currently in alpha release. It is quite usable, and has been reportedly used to evaluate documents with hundreds of formulas. I expect to finally move to a Beta release in the 0.3 branch (release 0.3.1.1)

Here are a few of the features that are supported in the most recent version:

• Single-line function definition
• Quick editing of formulas using edit field in tool-bar.
• Real and Complex numbers, booleans, vectors and matrices
• Units of measure are handled in all quantities and calculations.
• Units are displayed according to the specified system of units. Options are "SI","US","CGS".
• Support for alternate decimal separators - either "." or ","
• Basic operators including arithmetical, exponential, comparison, rounding, trigonometric, logarithmic, exponential..
• Vector / matrix operators including transpose, multiply, Min, max, sum, product. Scalar operators can also be applied to vectors.
• Basic X-Y plotting
• Complex variable names consisting of almost any combination of text or formula element.
• Changing expression color
• Blocking evaluation of an expression.
• Setting number of displayed significant figures or decimal places.
• import expressions from a text file.

If you require a certain feature for CompPad to be useful to you, please let me know. I may be able to give it priority.

Development

CompPad is being actively developed. I have been making commits to Subversion at least weekly as I add new features or fix bugs.

Following are a few features I hope to implement eventually:

• Import expressions from other documents
• Read from and write to cells in OpenOffice.org Calc.
• Solve blocks
• Function blocks
• Control stuctures (do-loops, if-then-else, etc.)
• More complete set of built-in functions and operators, including integrals and derivatives.
• Symbolic operations, using Maxima as a symbolic engine
• Localization
• Plug-in framework for adding new functions, operators, etc.
• Web interface

A roadmap is located here: Roadmap. However, it is not kept very current.

Contribute

Currently the best way to contribute is to try out CompPad, and post your question and comments to the Mailing List. Your comments help me know what is important to users. I would especially like to know how you would like to use CompPad. If you require a certain feature in order for CompPad to be useful to you, then let me know. I may be able to give it priority.

If you like CompPad, please let people know by posting a message in your blog, in on-line forums, or other news outlets. If you don't like it, then ping the dev list and tell me why!

If you find a discrepancy in the documentation on the Wiki, then feel free to fix it yourself, or at least flag the problem with a comment, eg. "THIS SECTION NEEDS MORE DETAILS" so myself or another contributor can correct the problem.

Translation work would be helpful. Spanish, Russian and Chinese would be especially valuable, but anything would be welcomed.

Source code is provided under the terms of the GPL Ver. 3. It is available through Subversion on the Sourceforge Project Page.

News

• Not Currently Maintained

This project is not currently being maintained. If you want to take over, please contact the (not)maintainer.

• Unstable 0.4.03x - Plotting in LibreOffice

Unstable release 0.4.03x provides for plotxy functionality in LibreOffice 3.4. This feature was previously broken in LibreOffice. However, it is NOW broken in OpenOffice, and may not be fixed, unless LibO and OOO reconcile their API / SDK. In order to support OOO AND LibO, I may need to start compiling using different SDK's.

I also disabled the features which caused vectors in comma-separated lists to be concatenated automatically. As a result, plotxy now works a bit differently - each x and y series MUST be its own column-vector.

Also, in the process of testing this, I found that slicing is broken - eg. "A sub {0 dotslow 10, 2} " doesn't return the 3rd column of A - So this will be the next fix.

• NoIDE Branch

Current development is taking place on the NoIDE branch. Dependence on NetBeans has been removed, so it should be easier to hack on. The build process involves installing the necessary libraries, fixing the path definitions in the build file, and type "ant" to build the .oxt file. "ant deploy" will build and deploy in OOO or LibO. If you have questions, email the mailing list. Eventually I'll add more details to the build faq.

• Mathimo.com

An online version of CompPad is under development. An online version of the Harmonic Oscillator example is located here:
http://mathimo.com/docs/FWZPPCKH
Some basic instructions are included on this page. It has been tested with Firefox and Chrome. It does not yet work with IE.