Can I use one code for geometry optimization and another code for a single point calculation on that optimized geometry? Can one publish results like that?
I do this all the time, and often use several codes, since each code has its own strengths and weaknesses.
I used 7 different codes in this paper where all I was doing was the ionization energy of one carbon atom (this means calculating the energy of a neutral carbon atom, and the energy of a singly ionized carbon cation and then reporting the difference between these two energies).
- MOLPRO was used to optimize the basis sets (because not many codes can optimize basis set exponents).
- GAUSSIAN was used to optimize the k-type functions in the basis sets (GAUSSIAN cannot automatically optimize exponents, so we had to do the optimization manually, but GAUSSIAN can treat k-type functions whereas MOLPRO cannot).
- MOLCAS was used to calculate the integrals, because even though GAUSSIAN can use k-type and l-type functions, it cannot print the integrals in FCIDUMP format but MOLCAS can; and the integrals needed to be in FCIDUMP format because it's the format that NECI reads.
- NECI was used to do the FCIQMC calculations (the other programs either can't do FCIQMC or can't do it with as much control as we needed).
- CFOUR was used to calculate the DBOC and X2C corrections because MOLPRO, GAUSSIAN, MOLCAS and NECI couldn't do these at the time (and still probably cannot do DBOC).
- MRCC was used to calculate coupled cluster calculations for the X2C and DBOC corrections beyond CCSD(T), since the other programs cannot go beyond CCSD(T).
- Psi3 (a precursor to Psi4) was used to optimize some of the functions of the basis sets (but this part was done before we started this project, and it was the subject of previous papers, so we did not need to use Psi3 or Psi4 directly in this paper).
It is a very common thing to calculate integrals in one program, and post-SCF calculations in another program. That is the purpose of the fcidump file: To calculate integrals in one program, print them in FCIDUMP format, which is the universal format that almost all programs can read.
Why is it that MOLPRO, PySCF, (Open)MOLCAS, ARROW, DALTON, DIRAC, GAMESS, DICE, BLOCK, CheMPS2, xacc, NECI, BAGEL, HANDE, Psi4 and probably others, can all read FCIDUMP format? It's because people want to be able to calculate integrals in one program and post-SCF calculations in a different program. This is also the reason why MRCC has interfaces with CFOUR, MOLPRO, Psi4, DIRAC, ORCA, COLUMBUS, AMBER: people want to be able to calculate integrals in one program and do high-order coupled cluster in a different program. There's several other examples.
As for geometry optimization: We actually do single-point energy calculations at geometries obtained by different programs all the time when we take a geometry from the literature and do a single-point energy calculation on it. We often even take the geometry from an X-ray crystallography experiment, then do a single-point energy calculation on it. Some programs can do certain types of single-point energy calculations (maybe they have a special DFT functional implemented, for example) but cannot do geometry optimization because the optimization algorithm is simply not implemented.
But be careful: Frozen-core CCSD(T) is MOLPRO, doesn't mean the same thing as frozen-core CCSD(T) in CFOUR, for example. What a method means in one software, is not necessarily what it means in another software. In addition to making sure you are clear in your paper about which basis set, SCF, post-SCF, and other methods are used, it is a good idea to also say which program was used (for both the geometry optimization, and for the single-point energy calculation).
Depending on what properties you care about.. maybe. I don't suggest this in general. I work on phonon calculations where forces must relaxed to a pretty strict tolerance. It has been my experience that the relaxed structure (using e.g. VASP) is not usually identical to what another code finds (e.g. ABINIT). Of course, the two structures are close and further relaxation with the 2nd code (in my case ABINIT) converges in only a couple steps. For something like total energy or electronic density of states, it probably doesn't really matter.
This has been done previously. In my experience the geometry is found with one code, and solvent corrections are performed with another. I have personally done this, and have had the results published. I performed a geometry optimization using QChem, and then solvent corrections using ORCA.
 T. J. Doyon, J. C. Perkins, S. A. Baker Dockrey, E. O. Romero, K. C. Skinner, P. M. Zimmerman, A. R. H. Narayan “Chemoenzymatic o-quinone methide formation” J. Am. Chem. Soc. 2019, 141, 20269–20277.
The reason is that different codes are required to generate exactly the same results if they refers to the same methods.
E.g., if you use Gaussian, Orca, Molpro, NWChem, Psi4, PySCF...(I cannot list the full list) to perform HF/cc-pVTZ to study H2, they should generate exactly the same results, including the energy and wave functions.
Different packages can of course output in different formats. Besides, Different packages can have different default values for some parameters (E.g., the threshold of optimization, the geminal beta of explicit correlated methods, size of integral grids, the initial orbital for SCF iteration, etc.) It is the users' responsibility to check the default value, because apparently it is impossible for the pioneer package to tell you how will the after-coming software treats the default values.
So, if you perform the exactly same computation use two different packages, here same means the same explicitly given parameters and implicit parameters, while get different results, we should consider
- At least one of them has a bug; or
- They should be referred as different methods, e.g., the PM7 methods in Gaussian and in MOPAC. This should be mentioned in the manual, or should be considered as a bug.
In summary, it is the methods matter, not the software. Since it is a common way to perform the geometry optimization using a cheaper method, and to do the single-point computation using a more accurate method, of course it is acceptable to use different software, considering some methods are only available in less-used packages.