1 minute read

import numpy as np
import matplotlib.pyplot as plt
import math

# parameters for v(x) 
pho1 = 0.2         # volume charge density 
pho2 = 0.1
pho3 = 0.05
pho4 = 0.01
# if pho increases, shape is getting more sharp
er = 3.8        # SiO2 permittivity
e0 = 8.854e-12
e  = e0 * er 
distance = 100e-6 # distance between plates 
V_0 = 5 # 5 volts at x = 0
V_d = 0 # ground at x = distance
C2 = 5
def potential_pho1(x, C1_pho1, C2):
    return -(pho1/(2*e))*(x**2) + C1_pho1*x + C2 
def potential_pho2(x, C1_pho2, C2):
    return -(pho2/(2*e))*(x**2) + C1_pho2*x + C2
def potential_pho3(x, C1_pho3, C2):
    return -(pho3/(2*e))*(x**2) + C1_pho3*x + C2
def potential_pho4(x, C1_pho4, C2):
    return -(pho4/(2*e))*(x**2) + C1_pho4*x + C2

# It would be more comfortable if using array
# for example, pho = [0.2, 0.1, 0.05, 0.01] and C1 = [ ~ ]
# Then make subplot using i, j as you can see below 

C1_pho1 = (pho1*distance)/(2*e) - (5/distance) # pho1,2,3,4 -> Fixing codes in a simpler way 
C1_pho2 = (pho2*distance)/(2*e) - (5/distance)
C1_pho3 = (pho3*distance)/(2*e) - (5/distance)
C1_pho4 = (pho4*distance)/(2*e) - (5/distance)
x = np.linspace(0, distance, 500)
# Making subplot for four values of rho 
figure, axis = plt.subplots(2, 2, figsize=(10, 8), constrained_layout=True)

# i, j = divmod(idx, 2)  # 2x2 subplot, calculate indexes

axis[0, 0].plot(x, potential_pho1(x, C1_pho1, C2))
axis[0, 0].set_title(f"pho = {pho1}")
axis[0, 0].set_xlabel("distance (m)")
axis[0, 1].plot(x, potential_pho2(x, C1_pho2, C2))
axis[0, 1].set_title(f"pho = {pho2}")
axis[0, 1].set_xlabel("distance (m)")
axis[1, 0].plot(x, potential_pho3(x, C1_pho3, C2))
axis[1, 0].set_title(f"pho = {pho3}")
axis[1, 0].set_xlabel("distance (m)")
axis[1, 1].plot(x, potential_pho4(x, C1_pho4, C2))
axis[1, 1].set_title(f"pho = {pho4}")
axis[1, 1].set_xlabel("distance (m)")

plt.show()

asd

Updated: