def writeSeries(oldInput, key, replacements, GPU=False): mainDir = basename(oldInput).split(".")[0] + "series" mkdir(mainDir) for repl in replacements: newDir = "step" + str(repl) newDir = join(mainDir, newDir) mkdir(newDir) inputName = join(newDir, "step" + str(repl) + ".com") rewriteInput(oldInput, inputName, key, repl) writeSlurmScript(join(newDir, "run.slurm"), basename(inputName), GPU)
def writeScans( oldInput, coords, atomStart, atom2Move, atomDir, nSteps, minDist, GPU = False ): atomStartIndex = atomStart atomStart = np.array(coords[atom2Move]) atomStop = np.array(coords[atomDir]) moveVector = atomStop - atomStart length = np.linalg.norm(moveVector) moveVector = moveVector*(length-minDist)/length step = moveVector/nSteps mainDir = basename(oldInput).split(".")[0]+"scan" mkdir(mainDir) for i in range(nSteps): newDir = "step"+str(i) newDir = join(mainDir, newDir) mkdir(newDir) atomStart += step coords[atom2Move] = atomStart.tolist() inputName = join(newDir, "step"+str(i)+".com") writeNewInput(oldInput, coords, inputName, "" ) writeSlurmScript(join(newDir, "run.slurm"), basename(inputName), GPU)
inpFile = join(dirname, dirname + ".inp") inputFile = open(inpFile, 'w') xyzName = basename(xyzFile) inputFile.write("basis 6-31g**\n") inputFile.write("charge 0\n") inputFile.write("run ts\n") inputFile.write("method ub3lyp\n") inputFile.write("new_minimizer yes\n") inputFile.write("coordinates " + xyzName + "\nend\n\n") frozen = [] for f in indexes: frozen.append(str(f + 1)) if frozen: inputFile.write("$constraint_freeze\n") if frozen: inputFile.write("xyz " + ",".join(frozen) + "\n") inputFile.write("$end\n") inputFile.close() writeSlurmScript(join(dirname, dirname + ".slurm"), basename(inpFile), True, "terachem") else: print("katalog " + dirname + " juz istnieje")
line = oldFile.readline() destiny.close() oldFile.close() if len(sys.argv) < 4: print( "Potrzebuje: g16Log, oldInput, newInputName, geometry index [optional, negative indexes possible]" ) else: g16Log = sys.argv[1] oldInput = sys.argv[2] newInputName = sys.argv[3] index = -1 if len(sys.argv) > 4: index = int(sys.argv[4]) newDir = newInputName.split(".")[0] if isdir(newDir): print("Wybrana sciezka juz istnieje!") else: mkdir(newDir) last = getCoordsFromLog(g16Log, index) newInputName = join(newDir, newInputName) writeNewInput(oldInput, last, newInputName) writeSlurmScript(join(newDir, "run.slurm"), basename(newInputName), False)
destiny.write(line) line = oldFile.readline() destiny.close() oldFile.close() if len(sys.argv) < 3: print("Potrzebuje: input start, input final, steps, gpu(optional)") else: inputStart = sys.argv[1] inputFinal = sys.argv[2] steps = int(sys.argv[3]) gpu = False if len(sys.argv) > 4: gpu = True indexesStart, coordsStart, el = getFrozenIndexes(inputStart) indexesFinal, coordsFinal, el = getFrozenIndexes(inputFinal) coordsFinalFixed = fixCoordinates(indexesStart, coordsStart, coordsFinal) frames = generateFrames(coordsStart, coordsFinalFixed, steps) for n, frame in enumerate(frames): dirname = "linerScan_" + str(n) mkdir(dirname) inputName = join(dirname, "linearScan.com") slurmFile = join(dirname, "linearScan.slurm") writeNewInput(inputStart, frame, inputName) writeSlurmScript(slurmFile, basename(inputName), gpu)