import numpy as np import matplotlib.pyplot as plt import sympy as sym import math import os import subprocess import fileinput import re import matlab.engine import time # from subprocess import Popen, PIPE #import sys InputFile = "/inputs/cellsolver.parset" OutputFile = "/outputs/output.txt" # path = os.getcwd() # InputFilePath = os.getcwd()+InputFile # OutputFilePath = os.getcwd()+OutputFile # --------- Run from src folder: path_parent = os.path.dirname(os.getcwd()) os.chdir(path_parent) path = os.getcwd() print(path) InputFilePath = os.getcwd()+InputFile OutputFilePath = os.getcwd()+OutputFile print("InputFilepath: ", InputFilePath) print("OutputFilepath: ", OutputFilePath) print("Path: ", path) #1. Define Inputs Gamma-Array.. #2. for(i=0; i<length(array)) ..compute Q_hom, B_eff from Cell-Problem #3 # matrix = np.loadtxt(path + 'Qmatrix.txt', usecols=range(3)) # print(matrix) # Use Shell Commands: # subprocess.run('ls', shell=True) #--------------------------------------------------------------- Gamma_Values = np.linspace(0.01, 2.5, num=6) # TODO variable Input Parameters...alpha,beta... print('(Input) Gamma_Values:', Gamma_Values) mu_gamma = [] # --- Options RUN = True # RUN = False # make_Plot = False make_Plot = True if RUN: for gamma in Gamma_Values: print("Run Cell-Problem for Gamma = ", gamma) # print('gamma='+str(gamma)) with open(InputFilePath, 'r') as file: filedata = file.read() filedata = re.sub('(?m)^gamma=.*','gamma='+str(gamma),filedata) f = open(InputFilePath,'w') f.write(filedata) f.close() # --- Run Cell-Problem t = time.time() subprocess.run(['./build-cmake/src/Cell-Problem', './inputs/cellsolver.parset'], capture_output=True, text=True) # --- Run Cell-Problem_muGama -> much faster!!! # subprocess.run(['./build-cmake/src/Cell-Problem_muGamma', './inputs/cellsolver.parset'], # capture_output=True, text=True) print('elapsed time:', time.time() - t) #Extract mu_gamma from Output-File with open(OutputFilePath, 'r') as file: output = file.read() tmp = re.search(r'(?m)^mu_gamma=.*',output).group() s = re.findall(r"[-+]?\d*\.\d+|\d+", tmp) mu_gammaValue = float(s[0]) print("mu_gamma:", mu_gammaValue) mu_gamma.append(mu_gammaValue) # ------------end of for-loop ----------------- print("(Output) Values of mu_gamma: ", mu_gamma) # ----------------end of if-statement ------------- # mu_gamma=[2.06099, 1.90567, 1.905] # mu_gamma=[2.08306, 1.905, 1.90482, 1.90479, 1.90478, 1.90477] ##Gamma_Values = np.linspace(0.01, 20, num=12) : #mu_gamma= [2.08306, 1.91108, 1.90648, 1.90554, 1.90521, 1.90505, 1.90496, 1.90491, 1.90487, 1.90485, 1.90483, 1.90482] ##Gamma_Values = np.linspace(0.01, 2.5, num=12) # mu_gamma=[2.08306, 2.01137, 1.96113, 1.93772, 1.92592, 1.91937, 1.91541, 1.91286, 1.91112, 1.90988, 1.90897, 1.90828] Gamma_Values = np.linspace(0.01, 2.5, num=6) mu_gamma=[2.08306, 1.95497, 1.92287, 1.91375, 1.9101, 1.90828] # Make Plot if make_Plot: plt.figure() plt.title(r'$\mu_\gamma(\gamma)$-Plot') plt.plot(Gamma_Values, mu_gamma) plt.scatter(Gamma_Values, mu_gamma) # plt.axis([0, 6, 0, 20]) plt.axhline(y = 1.90476, color = 'b', linestyle = ':', label='$q_1$') plt.axhline(y = 2.08333, color = 'r', linestyle = 'dashed', label='$q_2$') plt.xlabel("$\gamma$") plt.ylabel("$\mu_\gamma$") plt.legend() plt.show() # ------------- RUN Matlab symbolic minimization program eng = matlab.engine.start_matlab() # s = eng.genpath(path + '/Matlab-Programs') s = eng.genpath(path) eng.addpath(s, nargout=0) # print('current Matlab folder:', eng.pwd(nargout=1)) eng.cd('Matlab-Programs', nargout=0) #switch to Matlab-Programs folder # print('current Matlab folder:', eng.pwd(nargout=1)) Inp = False print('Run symbolic Minimization...') G, angle, type, kappa = eng.symMinimization(Inp,Inp,Inp,Inp, nargout=4) #Name of program:symMinimization # G, angle, type, kappa = eng.symMinimization(Inp,Inp,Inp,Inp,path + "/outputs", nargout=4) #Optional: add Path G = np.asarray(G) #cast Matlab Outout to numpy array # --- print Output --- print('Minimizer G:') print(G) print('angle:', angle) print('type:', type ) print('curvature:', kappa)