예제 #1
0
    #Plot results
    r = solver.getrArray()
    for potentialType in boltzmannOfPotentialDictionary:
        pl.plot(r,
                boltzmannOfPotentialDictionary[potentialType],
                label='exp(-beta*' + str(potentialType) + ')')
        pl.xlabel('r/sigma')
        pl.ylabel('exp(-beta*u)')
        pl.legend(loc='upper right')

    pl.show()

    #We  just repeat everything from above with a density > 0 to get a RDF fifferent from the Boltzmann of mutual potential
    density = 0.3
    #We switch to ScipyAndersonOZsolver since it can better handle Star potential (?)
    solver = ScipyAndersonOZsolver(port=0)
    solver.setVolumeDensity(density)
    for potentialType in listOfPotentials:
        solver.setPotentialByName(*(potentialType.split('_')))
        solver.solve()
        g = solver.getRDF()
        RDFdictionary[potentialType] = g

    #Plot results
    r = solver.getrArray()
    for potentialType in RDFdictionary:
        pl.plot(r,
                RDFdictionary[potentialType],
                label='RDF with' + str(potentialType))
        pl.xlabel('r/sigma')
        pl.ylabel('g')
예제 #2
0
from picardOZsolver import PicardOZsolver
from andersonOZsolver import AndersonOZsolver
from scipyAndersonOZsolver import ScipyAndersonOZsolver
from scipyNewtonKrylovOZsolver import ScipyNewtonKrylovOZsolver

if __name__ == '__main__':

    #Dict to contain the various algorithms (classes)
    solverClassDictionary = {}
    #Dict to contain the various results (algorithm specific)
    algorithmSqDictionary = {}

    #Instantiate solver classes (port=0 means no server)
    solverClassDictionary['Picard'] = PicardOZsolver(port=0)
    solverClassDictionary['Anderson'] = AndersonOZsolver(port=0)
    solverClassDictionary['scipyAnderson'] = ScipyAndersonOZsolver(port=0)
    solverClassDictionary['scipyNewtonKrylov'] = ScipyNewtonKrylovOZsolver(
        port=0)

    #Basic params, use HardSphere together with analytical Solution (and PY, but this is default)
    density = 0.3
    potential = 'HardSphere'

    #Start loop over classes (calculate S(q) with all algorithms)
    for algorithmKey in solverClassDictionary:
        #Activate the next line to use a different FPO, here the investment in design pays off,
        #since the fixpoint operator can easily be exchanged without further modifications
        #solverClassDictionary[algorithmKey].doNotUseGammaFixPointOperator()
        solverClassDictionary[algorithmKey].setPotentialByName(potential)
        solverClassDictionary[algorithmKey].setVolumeDensity(density)
        solverClassDictionary[algorithmKey].solve()
예제 #3
0
   
    options, args = parser.parse_args()
    return options, args


#Start here
#*******************************************************************************************************************************************************************
if __name__ == '__main__':
  options, args = readOptions()
  portNumber = int(options.portNumber)
  typeOfIteration = options.typeOfIteration
  
  if typeOfIteration == 'Picard':
    PicardOZsolver(portNumber)
    
  elif typeOfIteration == 'Anderson':
    AndersonOZsolver(portNumber)
    
  elif typeOfIteration == 'ScipyAnderson':
    ScipyAndersonOZsolver(portNumber)
    
  elif typeOfIteration == 'ScipyNewtonKrylov':
    ScipyNewtonKrylovOZsolver(portNumber)
    
  else:
    print "Unknown iteration schema, exiting"
    sys.exit()