EC_Model.tvc
and EC_Model.fin
¶Plot current and all surface concentrations against time from the data in EC_Model.tvc
.
Plot all concentrations (scaled units) against the distance from the electrode surface for the final timestep (EC_Model.fin
).
Use MECSimPlotter for CV plots.
# import required python packages
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
# load MECSim output file
def ReadMECSimFile(filename):
f = open(filename, 'r')
time = []
eapp = []
current = []
conc = []
i = 0
for line in f:
i += 1
if(i==1):
concnumber = int(line)
for j in range(concnumber):
conc.append([])
else: # remove the number of species line
columns = line.split()
time.append(float(columns[0]))
eapp.append(float(columns[1]))
current.append(float(columns[2]))
for j in range(concnumber):
conc[j].append(columns[3+j])
return concnumber, np.asfarray(time), np.asfarray(current), np.asfarray(eapp), np.asfarray(conc)
# load MECSim *.fin file with final snapshot of concentrations against distance from electrode
def ReadMECSimFin(filename, concnumber = 2):
f = open(filename, 'r')
x = []
concfin = []
for j in range(concnumber):
concfin.append([])
i = 0
for line in f:
columns = line.split()
x.append(float(columns[0]))
for j in range(concnumber):
concfin[j].append(columns[1+j])
return x, concfin
concnumber, time, current, eapp, conc = ReadMECSimFile('EC_Model.tvc')
x, concfin = ReadMECSimFin('EC_Model.fin', concnumber)
plt.figure(figsize=(8,6),dpi=100)
plt.rcParams['xtick.major.size'] = 5
plt.rcParams['xtick.major.width'] = 2
plt.rcParams['xtick.minor.size'] = 3
plt.rcParams['xtick.minor.width'] = 2
plt.rcParams['ytick.major.size'] = 5
plt.rcParams['ytick.major.width'] = 2
plt.rcParams['ytick.minor.size'] = 3
plt.rcParams['ytick.minor.width'] = 2
plt.rcParams['axes.linewidth'] = 2
plt.rcParams['lines.linewidth'] = 2
plt.rcParams['xtick.labelsize'] = 14
plt.rcParams['ytick.labelsize'] = 14
plt.ticklabel_format(axis='y', style='sci', scilimits=(-2,2))
for i in range(concnumber):
plt.plot(time, conc[i], color = plt.cm.gist_rainbow(i*100))
plt.xlim([0,time[-1]])
plt.xlabel('Time (s)', fontsize=20)
plt.ylabel('Scaled concentration', fontsize=20)
plt.savefig('MECSimOutputConcT.png')
plt.savefig('MECSimOutputConcT.ps')
plt.savefig('MECSimOutputConcT.pdf')
plt.figure(figsize=(8,6),dpi=100)
plt.ticklabel_format(axis='y', style='sci', scilimits=(-2,2))
plt.plot(time, current, color = 'k')
plt.xlim([0,time[-1]])
plt.xlabel('Time (s)', fontsize=20)
plt.ylabel('Current (A)', fontsize=20)
plt.savefig('MECSimOutputCt.png')
plt.savefig('MECSimOutputCt.ps')
plt.savefig('MECSimOutputCt.pdf')
plt.figure(figsize=(8,6),dpi=100)
plt.ticklabel_format(axis='y', style='sci', scilimits=(-2,2))
for i in range(concnumber):
plt.plot(x, concfin[i], color = plt.cm.gist_rainbow(i*100))
plt.xlabel('Distance from electrode (cm)', fontsize=20)
plt.xscale('log')
plt.ylabel('Scaled concentration', fontsize=20)
plt.savefig('MECSimOutputConcX.png')
plt.savefig('MECSimOutputConcX.ps')
plt.savefig('MECSimOutputConcX.pdf')