I like Calculix, but I do not like having to go into the GUI to change some parameters. I want to be able to change an input file and run it all with a script.
I've used OOF2 for a few research projects. Despite its warts, I found it very hackable. The application itself is written in Python with performance-intensive bits written in C++ and wrapped with SWIG. Adding new code in Python is a piece of cake, and fitting in some C++ when you need to is fairly easy. I haven't used any other FEA software, though, so I can't give you a comparison.
I haven't used Calculix, but I was under the impression it uses an Abaqus format input deck? Looking at the documentation, this appears to be the case.
Yeah, the only problem with automation was boundary condition specification. I guess I could use shell scripts to infer the list of boundary points for every boundary condition, given I knew in what order the points in the mesh were created.
That's probably your best bet. I know with Abaqus, you could potentially do that with the python scripting, but a lot of the stuff I've done creates a model with a python script, writes a dummy input file with nodes, element connectivity and set definitions, then I read that into MATLAB and write out a reorganized/more readable input deck from there. If I refine the mesh, I just rerun the MATLAB script and it spits out the new input file. If your model is complicated, another way you could do it is create multiple node/surface/element sets for each boundary condition and then just update the BC keyword section with the proper set and constraint. The benefit there is that you can manually tweak and remesh the model in the GUI and then set it off running with the shell script, but without needing to explicitly track node numbers since they're store d in the sets. That might be a bit overcomplicated though if your model is simple enough or the node numbering is consistent enough to keep track of.