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.

OBJ
OFF
PLY
STL
GLTF
URDF

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.