Skip to content

Curated list of awsome Free and Open Source Software for engineering and science

Notifications You must be signed in to change notification settings

Foadsf/awsomeEngSci

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

awsomeEngSci

Curated list of awsome Free and Open Source Software for engineering and science

There are many reasons one may want to use Free and Open Source CAD software. For example if you are a scientist and you want to be sure about the reproducibility of your work. You are a teacher and you follow certain ethics to do not promote a specific comercial package over the others. Or you are a startup and you don't have the resources to pay for expensive licensing fees, or you care about your privacy and don't want to use freemium/shareware/spyware proprietary software which nobody know what information they collect about you. Or maybe you are a big company which is suffering from huge licensing fees imposed by the companies. Or you are an student and you want to work on your own computer rather than the college/University computers. Or you are just normal sane person who is using a non-Windows operating system like macOS or GNU/Linux, who finds the whole concept of running a virtual machine just for your CAD insane!

I have searched the internet and I have found some of the open source 3D and 2D CAD packages. Please share your experience. If there are good books, examples, demos, tutorials ... please share. Or if you know other options not listed here please add to the comments.

3D CAD:

  1. FreeCAD
  2. solveSpace
  3. NaroCAD
  4. BRL-CAD
  5. HeeksCAD
  6. Antimony → visual programing
  7. VARKON
  8. JS.Sketcher → web based self hosted
  9. SALOME

2D CAD:

  1. LibreCAD
  2. LibreDWG
  3. OpenDWG
  4. Archimedes
  5. QCAD
  6. SAMoCAD
  7. SagCAD
  8. Piglet Drawing Editor
  9. DESI-III

Sculpting:

  1. Blender
  2. EQUINOX-3D
  3. K-3D
  4. Wings 3D
  5. DeleD CE
  6. Structure Synth
  7. Moonlight|3D
  8. OpenFX
  9. Fragmentarium

Here I have also listed all the Free and Open source CAM/CNC software I could find. and if you care about indirect code based CAD (aka generative, programmatic design) I have made a list here as well.

3D:

Mesh:

2D/vector graphics :

  • PostScript
  • LaTeX based graphics: Tikz/PGF, asymptote, pstricks
  • MetaPost
  • xml/svg
  • diagrams
  • UML Unified Modeling Language
  • CGM Computer Graphics Metafile

CAM:

  • G-code
  • OpenSBP
  • HPLG or HPGL (Hewlett-Packard Graphics Language)

Plotting and data visualisation:

  • GnuPlot
  • Mathplotlib
  • GeoGebra
  • ggplot
  • D3

PDE solver (FEM, CFD...) (list1) Preprocessor: Gmsh, Netgen, tetgen, ElmerGrid (Quickmesh), GetDDM, METIS, pdnMesh, EasyMesh, libmesh, tetlib, nglib, OpenFOAM blockMesh, gCAD3D, Larosterna, enGrid solver: ELMER, Impact, OpenFOAM, SALOME Meca, ONELAB, GetDP KRATOS, MOOSE, CalculiX, Code_Aster, Code_Saturne, FEniCS-Oasis, FreeFem++, SU2, Vortexje, Caedium, NASA NASTRAN, cast3m, R-desolve, z88, OOFEM, CMISS (list1, list2, list3), NGSolve, tochnog, NiftySim, MFEM/GLVis, Finite Element ToolKit (FETK), deal.II, GetFEM++, DUNE, Gerris Flow Solver, SfePy , HiFlow3,Agros2D, Hermes Project, oomph-lib, FeatFlow, futureye , OpenFVM, coolfluid3, MBDyn, OpenSees, Dedalus, MuPIF, AixVipMap, CHEOPS, CouPE , Advanced Simulation Library (ASL) , ALBERTA , The FEBio software suite ...? postprocessors:ParaView, OpenDX, Wings 3D, VisIt, libmesh, tetgen mesh edit: MeshLab, GLC_Player, CloudCompare, blender, meshfix, ReMESH, Openmesh, open3mod

Sadly the world of CAM/CNC is dominated by proprietary software which costs hobbyists and students a lot. Besides for scientists and researchers they do not provide much freedom to tinker around. I have previously listed all the available CAD options here or if you are interested in indirect code based design here. I'm going to just list everything I have found and then maybe you guys can share others:

Machine languages:

These are the languages most of CNC/NC controllers can read:

some software can directly read 2D formats like SVG and DXF too.

Nesting:

CAM and slicer software:

These are the software which take the CAD file and then generate the tool-path in machine language.

PCB:

  • visolate mill PCBs using voronoi-regions
  • pcb2gcode a CLI tool for isolation, routing and drilling of PCBs, reads Gerber files, there is also pcb2gcodeGUI, it is cross-platform.
  • FlatCAM for PCB milling, reads Gerber and Excellon , witten in Python,
  • cirQWizard Gerber to GCode converter for PCB milling

3D printing:

Simulation and Post-processors:

If you have the machine code, you need to simulate the process to be sure it is what you intended and sometimes you have to modify the code manually and simulate it again.

  • CAMotics formerly (OpenSCAM), reads 3-axis G-code, is cross-platform, is GPL v2+ licensed

Machine controller:

These are the software which read the tool-path and control the CNC/NC machine directly:

  • LinuxCNC which works on RTAI Linux, has a GNU GPLv2 license
  • Grbl: parallel-port-based motion control, GPLv3 license, Arduino
  • Jedicut: controlling 4 axis CNC machines to make hot wire cuttings,
  • PyCNC G-code interpreter and CNC/3D-printer controller
  • Inkcut
  • Universal Gcode Sender (UGS)
  • TinyG, Chilipepper, TgFX
  • Smoothie
  • LaserGRBL
  • bCNC

more firmwares listed here, grbl interfaces listed here.

Other:

There are other lists also at wiki.shapeoko, wiki.linuxcnc, freebyte, GroundControl, fablab, maker-works. Also here a list of Python G-code generator scripts. I have also posted this question here in hobycnc sub

Following my former lists of awesome CAD and CAM/CNC FOSS for mechanical engineering, I decided to create also a similar list for electrical engineering too. However it turned out to be way more complicated than what I expected, taking two weeks of my free time to research.

I'm not gonna lecture you about the importance of FOSS, and I think most professionals are aware of the advantages. From software licensing costs, privacy, cross platform experience, customizability and most importantly vendor lock down. Just imaging Autodesk decides to triple its fees all of a sudden. Your designs are basically ransom! Or if you are a scientist and want to implement your own auto routing method or improved compiling algorithm, or you are a student you want to do something on your mac or Linux computer without loosing your sanity over virtualization...

The way I categorize these software will be based on the conventional workflow I use for my own work (Robotics). I will start with conceptual design including a circuit schematics and a breadboard implementation. Following by programing the Microcontroller and then merging the circuit and MCU in a prototype or simulation. Next step the PCB should be designed and send for manufacturing. I hope this list will stimulate FOSS adoption and help the community to better know of their alternatives.

EDA suits:

These are the family of the products which try to integrate most of the PCB Design process in one place. They usually include the schematic capture and CAD parts, and sometimes even the simulation and auto routing.

  • KiCAD: Is probably the most famous and stable of all FOSS EDA suits. It does not require introduction; if you haven't heard of it you have probably living under a stone :) what makes it unique is the fact it is used and supported by the folks at CERN. In the latest version it has some simulation (using Ngspice?) and some auto routing plugins.
  • Fritzing: In my humble opinion is the most hobbyist friendly of all EDA suits. I have read a lot of criticism on the forums about it though. What makes it unique is the virtual breadboard where you can place parts and connections similar to the way you could do it on a real one. It is great for beginners like me as well as documentation and publication.
  • gEDA Is a combination of several other packages including gschem, pcb and Gerbv. It is the classic gold standard of EDA suits world. It's community is comparable to KiCAD and Fritzing, if not bigger.
  • LibrePCB: Is an ambitious attempt to develop an EDA suit from scratch which outperforms KiCAD in terms of usability and extendability. Extensive libraries and version control are some of the key features. Reading from the forums this project has a bright future.
  • Horizon: similar to the LibrePCB, is another attempt to make a better FOSS EDA and very appreciated by the community.

TinyCAD, FreePCB, BSch3V MINIMAL PCB EDITOR, MeowCAD, PCB Elegance, Caneda, diy-layout-creator, BlackBoard Circuit Designer, eSim formerly Oscad FreeEDA, myNetPCB, FidoCadJ) are also some of the available options for those who enjoy investigating. Also if you care about programatic (aka code based indirect CAD), there are attempts like aeCAD and SKiDL to look into. Immediate advantages of indirect CAD are version control and object oriented programing, but it requires its own essay. If you have a design with lots of components and layers, manual placement and routing (PnR) can be cumbersome. There are some automatic PnR tools available which are either an standalone GUI/CLI and/or as plugins to above EDA suits:

Circuit diagram:

These are the software for schematics capture. Some might use these as a conceptual design platform, But I personally prefer to use pen and paper first. Then using these software is necessary for documentation of the final design. Some of them can also export different flavors of netlist (SPICE, Spectre, CDL...) to be imported to EDA suits, auto-routing or simulation software:

There also more general purpose software like Dia diagram editor, InkScape, LibreOffice (LibreSymbols) for design and documentation of discute boards. If you prefer non-WYSWYG way of design then TikZ CircuiTikz, METAPOST MakeCirc, PSTricks pst-circ, Circuit_macros , Cirkuit , lcapy, might be your cup of tee.

Simulation:

Now some people might argue that thanks to the cheap development boards like Arduino and Raspberry pi, simulation is unnecessary, which I strongly disagree. For me personally simulation is important to reduce risks of damage on the hardware or even novice students, documentation, long distance collaboration...

The most well-known software commercial software in this category is the infamous Proteus VSM which not only is very expensive for hobbyists and students, but is also only on Windows! Unfortunately there is not much in the FOSS world coming close to Proteus VSM in terms of stability and features. Mosts of the FOSS are either for analogue or logic circuits simulation or for MCU emulation, not much available for integrated virtual prototyping. However, it does not mean FOSS community has done nothing. There are amazing attempts:

Integrated MCU-analogue:

  • KTechLab: is probably the most amazing and in some ways peculiar of all in this section. It is primarily an KDE tool for RCL, logic and PIC MCU (using gpsim) simulation. However it has a unique visual programing environment where one can develop the MCU workflow by flowcharts. Then it is translated into Microbe or MicroBASIC, another peculiar high level language of KTechLab. It also an IDE for C, assembly and MicroBASIC development and compiling (using SDCC?). It is unfortunate that KTechLab is still very unstable full of bugs. Another long requested feature is the AVR integration. There have been requests since 2006 to use SimulAVR, yet this feature to be seen :(
  • SimulIDE: is all KTechLab wished to be. It has both PIC and AVR integration. However it is also not yet stable, more to be considered as a prototype.
  • Emulare: for ATMega line of MCUs
  • simuino an Arduino UNO/MEGA Pin Simulator
  • gpsim used in both KTechLab and SimulIDE
  • PICsim PICsimLab
  • SimulAVR which also includes simulavr-disp a TCL-TK GUI. It used in SimulIDE and is the gold standard FOSS AVR simulation.
  • simavr is the newer AVR simulation which according to the forums is a very promising alternative to SimulAVR.
  • PIC-Simulator
  • GNUSim8085
  • MCUSim
  • Ardulator
  • Arduino Simulator
  • emulino
  • HAPSIM

General purpose:

There are softwares which are not specifically for EE simulation:

  • Modelica Language and its FOSS implementations such as OpenModelica and jModelica are a great option for simulation of multi physics systems. The OM software has libraries for analogue, digital and logic electronic components. You have the option to use the GUI to connect the components or code your system in Modelica Language using continuous and discrete algebraic differential equations. The language has also been adopted by Wolfram Mathematica's produces, Maple and many more. It is just a shame that it is not already an industry standard!
  • Scilab's Xcos or ScicosLab's SciCos are somehow attempts to replicate MATLAB's SIMULINK. They are indeed not as powerful but still great for students, teachers and even easy industrial simulation. Especially if you want to prototype a system and do not want to spend much time to code it, the visual programing environment can be a great help.
  • MyOpenLab is also a great platform for visual physical system simulation. It can be considered an alternative to NI's LabVIEW.

Analogue:

These are the software which can only simulate the RCL and logical circuits. They import netlist files mostly:

  • SPICE (Simulation Program with Integrated Circuit Emphasis) which has been around since the beginning of time, is just for analogue simulation.
  • Quite Universal Circuit Simulator (QUCS), and its SPICE compatible version Qucs-S have one of the largest user bases. Qucsstudio is also another derivative.
  • Ngspice which is a combination of three FOSS projects Spice3f5, Cider1b1 and Xspice, is "a mixed-level/mixed-signal circuit simulator". It is the simulation backend of most EDAs above KiCAD, Fritzing and gEDA.
  • Xyce is also an SPICE compatible simulator for "extremely large circuit problems by supporting large-scale parallel computing platforms"
  • Circuit Simulator](https://github.com/pfalstad/circuitjs1) Java and web based
  • BrainBox web based
  • PySpice
  • SpiceOpus
  • QSapecNG
  • oregano
  • gSpiceUI
  • GNU Circuit Analysis Package (Gnucap)
  • linNet symbolically
  • LCSIM - Laboratory Circuit Simulator)

IC design and simulation programing:

Software for logic, FPGA, IC ...

Microcontroller programing:

Operating Systems:

List of real-time operating systems or firmware here

Compilers:

High level languages:

more at fedoraproject and piclist

Editors and IDE:

  • CodeBlocks Arduino IDE
  • Arduino
  • Pinguino
  • Piklab
  • Wiring http://wiring.org.co/
  • Embitz
  • Code::Blocks
  • Eclipse CDT
  • Code Composer Essentials (CCEssentials) TI
  • ChipVault
  • Ardiuno debugger
  • MCU 8051 IDE

burner, programmer, downloader, inhibitor...: avrdude avrgal pic32prog ardupic32 PonyProg prog84

other lists:

P.S. This as far as I could go. There are probably a lot of mistakes here. Please help me complete and improve this list.

  1. symbolic mathematical analysis alternatives to Mathematica, Maple and MATLAB symbolic toolbox (formerly MuPAD)
    1. Maxima Language using WxMaxima or Jupyter
    2. Python-Sympy using Jupyter
    3. SageMath which uses Sympy, Maxima, Giac
    4. Yacas
    5. PanAxiom ( Axiom, FriCAS, OpenAxiom )
    6. FORM
    7. Macaulay2
    8. Magnus
    9. Mathomatic
    10. REDUCE
    11. Euler Math Toolbox (EMT)
    12. Mathics
    13. Cantor
    14. MathAction
    15. SymbolicC++
    16. SymEngine
    17. GiNaC
    18. Piranha

CAS: Cadabra, Singular, Giac/Xcas, CoCoA, GAP, Erable/ALGB, Aldor Numerical: (R, Python, Julia, gnuplot, CERN/ROOT, Fortran, GNU Octave, Scilab/Scicoslab, Modelica, ASCEND, bc, PDL Perl Data Language, IDL interactive data language ) Plotting: gnuplot, Matplotlib, TikZ/PGFplot, Qtiplot, SciDAVis, LabPlot, List simulation: Modelica language

CAS/symbolic : WxMaxima (Euler Math Toolbox (EMT), Mathics, Cantor, MathAction) Numerical: (GNU Ocatve, scilab, scicoslab, FreeMat, EngLab ,ASCEND, PyDSTool, Reinteract , MathPiper ) Ket, Mirai Math, PARI/GP, Calc, Euler Math Toolbox, GSL Shell, Genius, spyder, python(x,y), (list) Ploting: gnuplot Matplotlib Ptplot Data analysis Orange, Fityk, Simfit, QtiPlot, PyModelFit, other

About

Curated list of awsome Free and Open Source Software for engineering and science

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published