mirror of
https://gitlab.com/scemama/resultsFile.git
synced 2024-10-09 17:43:07 +02:00
77 lines
2.4 KiB
Python
Executable File
77 lines
2.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# resultsFile is a library which allows to read output files of quantum
|
|
# chemistry codes and write input files.
|
|
# Copyright (C) 2007 Anthony SCEMAMA
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
#
|
|
# Anthony Scemama
|
|
# LCPQ - IRSAMC
|
|
# Universite Paul Sabatier
|
|
# 118, route de Narbonne
|
|
# 31062 Toulouse Cedex 4
|
|
# scemama@irsamc.ups-tlse.fr
|
|
|
|
|
|
|
|
from library import *
|
|
|
|
class CSF(object):
|
|
"""Class for an configuration state function."""
|
|
|
|
def __init__(self):
|
|
self._determinants = []
|
|
self._coefficients = []
|
|
|
|
def __repr__(self):
|
|
out = ""
|
|
for d,c in zip(self.determinants,self.coefficients):
|
|
out += "%10.8f\n"%(c,)
|
|
for spin in d:
|
|
for orb in d[spin]:
|
|
out += "%4d "%(orb,)
|
|
out += "\n"
|
|
return out
|
|
|
|
def __repr__debug__(self):
|
|
out = ""
|
|
out += "CSF:\n"
|
|
out += " Determinants: "+str(self.determinants)+'\n'
|
|
out += " Coefficients: "+str(self.coefficients)+'\n'
|
|
return out
|
|
|
|
def __cmp__(self,other):
|
|
assert ( isinstance(other,CSF) )
|
|
if len(self.coefficients) < len(other.coefficients):
|
|
return -1
|
|
elif len(self.coefficients) > len(other.coefficients):
|
|
return 1
|
|
elif len(self.coefficients) == len(other.coefficients):
|
|
return 0
|
|
|
|
def append(self,c,up,dn):
|
|
det = {}
|
|
det['alpha'] = up
|
|
det['beta'] = dn
|
|
self._determinants.append( det )
|
|
self._coefficients.append( c )
|
|
|
|
for i in "determinants coefficients".split():
|
|
exec("""
|
|
def get_%(i)s(self): return self._%(i)s
|
|
def set_%(i)s(self,value): self._%(i)s = value
|
|
%(i)s = property(fget=get_%(i)s,fset=set_%(i)s) """%locals())
|
|
|