FRED
was developed with the following goals in mind:
FRED Overview

FRED is an advanced optical engineering software program capable of simulating the propagation of light through virtually any optical/mechanical system. FRED has two methods of propagating light, through either standard raytracing or a Gaussian beam decomposition algorithm to propagate coherent optical fields. FRED has been under development for over 10 years and currently contains approximately 400,000 lines of C++ code. (This does not include code that is part of third-party graphics routines and the BASIC compiler.)