Is it possible to set up a Boys–Bernardi counterpoise calculation using the ORCA extension in Avogadro?

Hello,

I am using Avogadro with the ORCA extension to prepare input files for ORCA calculations.

I would like to perform a Boys–Bernardi counterpoise calculation alongside the main calculation to estimate the interaction energy between two molecular fragments and account for Basis Set Superposition Error (BSSE).

I know that ORCA supports counterpoise calculations, but I would like to know if this calculation can be configured directly through the ORCA input generation interface/extension in Avogadro, rather than manually editing the .inp file afterwards.

For example, is there an option in the Avogadro ORCA extension to specify something equivalent to:

Counterpoise 2

or to define the two molecular fragments required for a two-fragment counterpoise calculation?

If there is no dedicated option in the interface, is there a field in the ORCA extension where I can add the appropriate ORCA keywords or fragment definitions so that Avogadro automatically generates the correct input?

I am currently working with a dimer composed of two fragments (M1 and M2) and would like the generated input file to perform the appropriate Boys–Bernardi/BSSE correction.

I would greatly appreciate any guidance on whether this is supported by the Avogadro ORCA extension and, if so, how it should be configured.

Level of theory: wB97X-D4 cc-pVDZ

Thanks!

At the moment, the ORCA generator doesn’t track layers or selections, but this seems like a good time to add it - for example assigning atoms in particular layers to each fragment for BSSE.

Shouldn’t take more than a day or two to implement.

(I’ve been meaning to add layer support for doing calculations like this for a while.)

Okay, it definitely needs review and testing, but I have an initial version linked below. It adds a “Counterpoise” calculation type which then grabs monomers from different layers, sets up the multiple %new_job sections and copies keywords.

I asked @brockdyer03 to review, but I’m open to input and suggestions

@brockdyer03 reminded me that the %new_job syntax was deprecated by ORCA, but there’s a new BSSE script, which I’ll look into tomorrow:

I didn’t run the calculation.
But I did create a Python GUI.
One that generates dimers from monomers within a supramolecular cluster.
M1-Mn…
Then I used your code to try and build a Python GUI to initiate the BSSE correction as well.
The goal is to create a more user-friendly interface. I haven’t tested if it works, and now I’m going to try to get some sleep. I used Claude and made some implementations.

gerar_dimeros_gui.py (9.6 KB)

bsse_orca_gui.py (50.6 KB)

The dimer script could likely be turned into a plugin directly - I’ll look at the GUI more carefully this afternoon, but it looks pretty straight-forward to migrate.

The draft BSSE script I wrote basically did the same thing - select some atoms or move them to a new layer and you have your two monomers. It looks like ORCA has a nice BSSE compound script, but I’ll need to think about how to integrate that. (ORCA’s compound script itself is easy - you just need to mark some of the atoms with : to indicate the two monomers and it goes from there.)

Today’s the first day of classes, so I have a bunch of things to sort through - but we can get this working soon.