Python Common Entities for Science (PyCES)

PyCES is a project to develop a standard set of objects and classes for scientific computing using the Python object-oriented scripting language. Initially, PyCES is concentrating on basic physical entities and properties (such as abstract particles, quantities, and vectors). It will expand to deal with more complex entities, such as macroscopic bodies, fluids, molecules, atoms, and nuclei in the future. The eventual goal is to have a set of useful foundation classes describing all entities encountered in scientific computing.

Python, rather than a system programming language like C++ or Java, is used for several reasons:

The distinction of the object and functional layers parallels the three-tier architectures used in business applications, where the user interface, object set, and database implementation are kept distinct. The use of an intermediate object layer provides a standard interface to the database, which can be modified without requiring changes in the user interface and vice-versa. In like fashion, PyCES separates the objects which are used to model a physical system from implementation details of functions used to operate on the objects.

PyCES version 0.10 has the following classes and modules available (see the PyCES Programmer's Guide for more details):

particleParticle class: abstract physical particles with mass, position, and velocity
physconstDefines useful physical constants such as the speed of light, Planck's constant,etc., with units
pycesImports all PyCES modules
pycesutlUtility functions used by other PyCES modules
quantityQuantity class: base class for all quantities -- numerical value + units
scalarDefines specific scalar quantities, such as Time, Mass, Length, Energy, etc.
spstateSpatialState class: encapsulates time, position, and velocity
unitsUnits class: base class for all units of measure
uomutilUnit of measure conversion utilities for output formatting, etc.
vectorDefines specific vector quantities, such as Position, Velocity, Momentum, Force, etc.

PyCES version 0.10 uses the Numerical Python package for its vector and matrix operations. You can set PyCES quantity values from NumPy array objects and use the Numerical Python array processing functions on PyCES quantities.

PyCES is an open source project, and thus will have frequent revisions.
You can download the current version of PyCES from the MICPC software download page.

XML in Physics

The eXtensible Markup Language (XML) is quickly emerging as the lingua franca of the Internet and computing. Going beyond HTML to provideways of marking content and meaning, XML is simpler to use than its parent, SGML (Standard General Markup Language).  Major efforts are underway, mostly in the electronic commerce and publishing arenas, to develop XML standards capturing both the syntax and semantics of documents and data. The capabilities of XML point to several possible applications for physics:

The concentration of the MICPC is on this last category. The complete set of XML representations of physics concepts is termed "Physics Markup Language", or PhysicsML. It is an effort that runs closely parallel to that of PyCES (as discussed above). Such "physics metadata" include: The first version of the PhysicsML Document Type Definition (DTD) will be available in the near future.

Links to related XML sites

Few and Many Body Problems

The MICPC has a strong interest in developing a unified framework for the modeling and simulation of the few and many body problem, both classical and quantum. Future extensions to PyCES are intended to provide a modeling framework for such investigations

Physics Computing Links