# Geometries

Geometries in Vorpal are non-grid-aligned material shapes. They can be defined in a number of ways, e.g., a triangular surface mesh from an STL file, a set of shape from a STEP file, Constructive Solid Geometry (CSG), and functional (a function defining whether a point in space is inside or outside). In visual setup, the material assigned to the shape determines how the electromagnetic field interacts with the shape.

Visual Setup supports STL import with translation, STEP import, and CSG. One can then assign a material to the shape. CSG is discussed in the Visual Setup section, where you learn to build primitives and perform operations on them.

In text setup, you can still use CSG primitives, but the process is a little different. Rather than being able to simply click and add primitives, text-setup requires one to import the appropriate geometries macro and define primitives using built-in functions. This all will be covered in detail in the Geometries page of the following Text-based (.pre) Input File Structure section. Also covered in this section are the procedures for importing CAD and Python-defined geometries, moving and rotating shapes, and building custom primitives for your simulation.

One can also use geometries in particle boundary conditions. Particles can be emitted, reflected, or absorbed by a geometry. Additionally, an absorber on a geometry can be attached to a secondary emitter or a sputterer as a source for the same or another kind or particle.