Error index 101 is out of bounds for axis 0 with size 101

Hello guys, i´m trying to solve the Poisson´s equation by using the relaxation method to know the potential and electric field matrixs but i have an error that say “index 101 is out of bounds for axis 0 with size 101” and i dont understand what is the problem. ¿Can anyone helpme please?

import numpy as np
import math

SYMBOLS USED IN THIS CODE

E = Total electric field matrix using Poisson’s equation

#% V = Potential matrix

#% Nx = Number of grid points in X- direction
#% Ny =Number of grid points in Y-Direction

#Enter the dimensions

Nx = 101 # Number of X-grids
Ny = 101 # Number of Y-grids
mpx = math.ceil(Nx/2) # Mid-point of x
mpy = math.ceil(Ny/2) #Mid point of y

Ni = 750 #Number of iterations for the Poisson solver
V = np.zeros((Nx,Ny))

T = 0 # Top-wall potential
B = 0 # Bottom-wall potential
L = 0 # Left-wall potential
R = 0 # Right-wall potential

#-------------------------------------------------------------------------

Initializing edges potentials

#-------------------------------------------------------------------------

V[1,:] = L
R= V[Nx,:]
V[:,1] = B
V[:,Ny] = T

#-------------------------------------------------------------------------

Initializing Corner potentials

#-------------------------------------------------------------------------

V[1,1] = 0.5*(V[1,2]+V[2,1])
V[Nx,1] = 0.5*(V[Nx-1,1]+V[Nx,2])
V[1,Ny] = 0.5*(V[1,Ny-1]+V[2,Ny])
V[Nx,Ny] = 0.5*(V[Nx,Ny-1]+V[Nx-1,Ny])

length_plate = 51 # Length of plate in terms of number of grids
lp = math.floor(length_plate/2)

position_plate = 15 # Position of plate on x axis
pp1 = mpx+position_plate
pp2 = mpx-position_plate

for z in range(1,Ni): #Number of iterations
for i in range(2,Nx-1):
for j in range(2,Ny-1):

#The next two lines are meant to force the matrix to hold the

potential values for all iterations

V[pp1,mpy-lp:mpy+lp] = 100
V[pp2,mpy-lp:mpy+lp] = -100

V[i,j]=0.25*(V[i+1,j]+V[i-1,j]+V[i,j+1]+V[i,j-1])

Take transpose for proper x-y orientation

V = np.transpose(V)

[Ex,Ey]=np.gradient(V)
Ex = -Ex
Ey = -Ey

Electric field Magnitude

E= math.sqrt( ExEx + EyEy )

Hi,

You should have a stack trace of where the error happened right? The error means that the index you use is out of bound of the Tensor you try to read from (python is 0 indexed, so for a Tensor of size 101, the valid indices are 0 to 100 :slight_smile:

1 Like