A 2D Finite-Element field profile solver for a graduate CEM course offered at Purdue University. At the request of the instructor, the course details and project report have been removed from this repository. Please reach out if you are interested in the course details and project report.
This codebase, as well as others from this class, are not designed to be user-friendly as they were only intended to be run by myself for the purpose of a class project. With that said however all code is reasonably documented to the standards outlined in this course.
If you do not have it installed already, you will first need to download and install Python.
Next, you will need to install MeshIO
, NumPy
and SciPy
all of which are dependencies for this project.
To install said packages, run the following command in your terminal of choice.
pip install numpy scipy meshio
pip3 install numpy scipy meshio
All project configuration occurs in ./src/main.py
.
The model takes an input mesh using the ABAQUS .inp
format with boundary elements contained in a nodeset.
It is recommended to use Coreform Cubit for the generation of these meshes.
Please see ./rectangle.inp
as an example mesh.
To replace with your own mesh, simply change the path in the Mesh
constructor within `main.py.
Once configured, the model can be run from the project root with one of the following terminal commands.
python ./src/main.py
python3 ./src/main.py
As configured in main.py
, the model currently finds the first 10 eigenvalues of both the TE and TM modes as well as
their corresponding column indices in the eigenvector array.
Additional plotting / analysis code can be placed below the existing code in main.py
to view / analyze these field
profiles.
These commands have been removed in this version as they are not critical to the functionality of the model.
Below are several labeled figures from the report.