def __init__( self, # solvation related arguments: cavity, dielectric, interactions, # RealSpaceHamiltonian arguments: gd, finegd, nspins, collinear, setups, timer, xc, world, redistributor, vext=None, psolver=None, stencil=3): """Constructor of SolvationRealSpaceHamiltonian class. Additional arguments not present in RealSpaceHamiltonian: cavity -- A Cavity instance. dielectric -- A Dielectric instance. interactions -- A list of Interaction instances. """ self.cavity = cavity self.dielectric = dielectric self.interactions = interactions cavity.set_grid_descriptor(finegd) dielectric.set_grid_descriptor(finegd) for ia in interactions: ia.set_grid_descriptor(finegd) if psolver is None: psolver = WeightedFDPoissonSolver() psolver.set_dielectric(self.dielectric) self.gradient = None RealSpaceHamiltonian.__init__(self, gd, finegd, nspins, collinear, setups, timer, xc, world, vext=vext, psolver=psolver, stencil=stencil, redistributor=redistributor) for ia in interactions: setattr(self, 'e_' + ia.subscript, None) self.new_atoms = None self.vt_ia_g = None self.e_el_free = None self.e_el_extrapolated = None
def __init__(self, cavity, dielectric, interactions, gd, finegd, nspins, setups, timer, xc, world, redistributor, vext=None, psolver=None, stencil=3, collinear=None): """Constructor of SJM_RealSpaceHamiltonian class. Notes ----- The only difference to SolvationRealSpaceHamiltonian is the possibility to perform a dipole correction """ self.cavity = cavity self.dielectric = dielectric self.interactions = interactions cavity.set_grid_descriptor(finegd) dielectric.set_grid_descriptor(finegd) for ia in interactions: ia.set_grid_descriptor(finegd) if psolver is None: psolver = WeightedFDPoissonSolver() self.dipcorr = False elif isinstance(psolver, dict): psolver = SJMDipoleCorrection(WeightedFDPoissonSolver(), psolver['dipolelayer']) self.dipcorr = True if self.dipcorr: psolver.poissonsolver.set_dielectric(self.dielectric) else: psolver.set_dielectric(self.dielectric) self.gradient = None RealSpaceHamiltonian.__init__(self, gd, finegd, nspins, collinear, setups, timer, xc, world, vext=vext, psolver=psolver, stencil=stencil, redistributor=redistributor) for ia in interactions: setattr(self, 'e_' + ia.subscript, None) self.new_atoms = None self.vt_ia_g = None self.e_el_free = None self.e_el_extrapolated = None