Example #1
0
def sweep(runspath,resultspath,inputtemplatepath,sweepdicarr):
    sweeplog = open(resultspath+"/sweep.log","w+")
    sweeplog.write("runspath  "+runspath+"\n")
    sweeplog.write("resultspath  "+resultspath+"\n")
    sweeplog.write("inputtemplatepath  "+inputtemplatepath+"\n")
    
    rundirlog = open(resultspath+"/rundir.log","w+")
   
   
    inputtree = etree.parse(inputtemplatepath)

    for irun, sweepdic in enumerate(sweepdicarr):
        time.sleep(0.1)
        runpath, rundir = tstamp_folder.tstamp_folder(runspath)
        os.chdir(runpath)
        sweeplog.write("\n"+"runpath  "+runpath+"\n")
        rundirlog.write(runpath+"\n")

        inputdscr="Input file generated by sweep.py script\n"
        inputdscr=inputdscr+"input.xml template in: %s\n"%(inputtemplatepath)
        inputdscr=inputdscr+"results path is: %s\n"%(resultspath)


        for xpath,value in sweepdic.items():
            sweeplog.write("\t"+"sweepvar  "+xpath+"\n")
            sweeplog.write("\t"+"value  "+str(value)+"\n")

            inputdscr=inputdscr+"sweeping variable: "+xpath+"\n"
            inputdscr=inputdscr+"value: "+str(value)+"\n"
            
            setinputxml.setByXpath(inputtree,xpath,str(value))
        
        setinputxml.setByXpath(inputtree,"/input/keywords",inputdscr)

        inputtree.write(runpath+"/input.xml",pretty_print="true")
        
        
    sweeplog.close()
    rundirlog.close()
Example #2
0
def energy(var, data):
    runpath = data[0]
    runcommand = data[1]
    xpath = data[2]

    os.chdir(runpath)
    os.system("rm -f info.xml")

    inputtree = etree.parse("input.xml")

    nvar = len(var)

    for i in range(nvar):
        setinputxml.setByXpath(inputtree, xpath[i], str(var[i]))

    inputtree.write("input.xml", pretty_print="true")

    os.system(runcommand)

    while not os.path.exists("info.xml"):
        time.sleep(1)

    time.sleep(5)
    return -queryinfoxml.getLastTotalEnergy()
Example #3
0
def optimize(
    runpath, resultspath, inputtemplatepath, vararr, runcommand, ftolerance=1.0e-4, xtolerance=1.0e-4, itmax=500
):
    amoebalog = open(resultspath + "/amoeba.log", "w+")
    optimizelog = open(resultspath + "/optimize.log", "w+")
    optimizelog.write("runpath  " + runpath + "\n")
    optimizelog.write("resultspath  " + resultspath + "\n")
    optimizelog.write("inputtemplatepath  " + inputtemplatepath + "\n")

    optimizelog.write("Variables:\n")

    inputtree = etree.parse(inputtemplatepath)
    inputdscr = "Input file generated by script optimize.py \n"
    inputdscr = inputdscr + "runpath: %s\n" % (runpath)
    inputdscr = inputdscr + "resultspath: %s\n" % (resultspath)
    inputdscr = inputdscr + "input template from path: %s\n" % (inputtemplatepath)
    inputdscr = inputdscr + "optimization varibales:\n"

    for var in vararr:
        optimizelog.write("xpath: " + var[0] + "\n")
        optimizelog.write("guess: " + str(var[1]) + "\n")
        optimizelog.write("scale: " + str(var[2]) + "\n")
        inputdscr = inputdscr + "xpath: " + str(var[0]) + "\n"
        inputdscr = inputdscr + "guess: " + str(var[1]) + "\n"
        inputdscr = inputdscr + "scale: " + str(var[2]) + "\n"

    optimizelog.flush()

    setinputxml.setByXpath(inputtree, "/input/keywords", inputdscr)
    inputtree.write(runpath + "/input.xml", pretty_print="true")

    guess = []
    scale = []
    data = []
    data.append(runpath)
    data.append(runcommand)
    data.append([])
    for var in vararr:
        data[-1].append(var[0])  # build xpath array
        guess.append(var[1])  # build array of initial guess values for the variables
        scale.append(var[2])

    simplex, fvalue, iteration = amoeba.amoeba(guess, scale, energy, ftolerance, xtolerance, itmax, data, amoebalog)

    amoebalog.write("%d\t" % (iteration))
    amoebalog.write("%1.10f\t" % (fvalue))
    for value in simplex:
        amoebalog.write("%1.10f\t" % (value))
    amoebalog.write("\n")
    amoebalog.flush()

    optimizelog.write("\nOptimization converged after %d iterations of amoeba.py\n" % (iteration))
    optimizelog.write("\nOptimized variables found:\n")
    for i, var in enumerate(vararr):
        optimizelog.write("xpath: " + var[0] + "\n")
        optimizelog.write("optimized value: %1.0f\n\n" % (simplex[i]))

    optimizelog.flush()

    optimizelog.close()
    amoebalog.close()