DRY(O)
Don't repeat yourself (or others). COMPAS provides a base framework and easy access to peer-reviewed computational research, libraries, and tools, such that you don't have to reinvent the wheel over and over again.
Share your Work
COMPAS is open source framework with a permissive license. Research that is based on COMPAS or that is compatible with it, can be easily shared and reused, across platforms and software ecosystems.
Collaborate
AEFC research and developmen is highly multidisciplinary. COMPAS simplifies collaboration between individuals and teams with various academic backgrounds.
Ecosystem
The COMPAS framework consists of a general-purpose core library, written in pure Python, and a growing collection of extensions that provide easy access to peer-reviewed research, state-of-the-art external libraries such as CGAL, libigl and Triangle, and tools with specialized functionality for AEFC applications such as Abaqus, ANSYS, SOFISTIK, ROS, etc.

Getting started
COMPAS is written in Python and can be easily installed using popular package managers on multiple platforms.
$ conda create -n research COMPAS
$ conda activate research
$ python
>>> import compas
>>> compas.__version__
'1.0.0'
>>> exit()
Core
The main library of COMPAS provides flexible data structures, a geometry processing library, robot fundamentals, numerical solvers, and various other components as a base framework for computational AE(F)C research.
CAD Integration
CAD tools are everywhere in AEFC, both in research and in practice. COMPAS provides a consistent interface for visualising and interacting with data structures, and for working with geometry, in Blender, Rhino, RhinoMac, and Grasshopper.



Geometry Formats
COMPAS supports several 3D geometry file formats for loading and saving 3D geometry.
Data IO
Using flexible data management with Python dictionaries and json serialization, instances of COMPAS data structures and geometry objects can be saved to disk, sent over a network or to a subprocess, and reloaded witout loss of information.
# A.py
import compas
from compas.geometry import Point, Box, Frame
from compas.datastructures import Network, Mesh
point = Point(0, 0, 0)
box = Box(Frame.worldXY(), 1, 1, 1)
network = Network()
mesh = Mesh.from_shape(box)
data = [point, box, network, mesh]
compas.json_dump(data, 'data.json')
# B.py
import compas
data = compas.json_load('data.json')
point, box, network, mesh = data
Projects
Computational research in AEFC can only be truly validated by applying it in real-world projects.