From cscf.cc:
#include <libipv1/ip_lib.h>
#include <libpsio/psio.h>
int main(int argc,char* argv[])
{
using namespace psi::cscf;
...
psi_start(&infile,&outfile,&psi_file_prefix,argc-1, argv+1, 0);
ip_cwk_add(":SCF");
From scf_input.cc:
errcod = ip_string("LABEL",&alabel,0);
if(errcod == IPE_OK) fprintf(outfile," label = %s\n",alabel);
reordr = 0; /* this sets the default that will be used in case the
user hasn't specified this keyword */
errcod = ip_boolean("REORDER",&reordr,0);
if(reordr) {
errcod = ip_count("MOORDER",&size,0);
for(i=0; i < size ; i++) {
errcod = ip_data("MOORDER","%d",&iorder[i],1,i);
errchk(errcod,"MOORDER");
}
}
second_root = 0;
if (twocon) {
errcod = ip_boolean("SECOND_ROOT",&second_root,0);
}
if(iopen) {
errcod = ip_count("SOCC",&size,0);
if(errcod == IPE_OK && size != num_ir) {
fprintf(outfile,"\n SOCC array is the wrong size\n");
fprintf(outfile," is %d, should be %d\n",size,num_ir);
exit(1);
}
if(errcod != IPE_OK) {
fprintf(outfile,"\n try adding some electrons buddy!\n");
fprintf(outfile," need SOCC\n");
ip_print_tree(outfile,NULL);
exit(1);
}