-
Couldn't load subscription status.
- Fork 65
Description
Want to allow user to specify (lossy) Drude model.
All Medium objects are defined here.
We want to implement a new DispersiveMedium for Drude model.
Note that the frequency-dependence of all mediums is computed through the Medium.eps_model(frequency) function, which returns the complex relative permittivity at frequency in Hz.
For PoleResidue medium, this model is just a function of the poles and eps_inf.
For other dispersive mediums, it will be a different function of the model's attributes, for example for Debye, the eps_model is a function of self.eps_inf and self.coeffs.
Note that all Mediums are handled by the solver as PoleResidue model. Therefore each DispersiveMedium has a pole_residue @property that returns a PoleResidue object implementing the same eps_model.
What to do:
- Create a new branch off from develop to implement the code changes (
git checkout develop,git checkout -b drude) - Add a new
DispersiveModelcalledDrudefollowing the template inSellmeier,Lorentz, andDebye. See here for example: - Define the additional input arguments needed to define the
Drudemodel, their types, default values, and constraints. See this for discussion on simply constraining types of the model. - Write an
eps_modelmethod forDrudeusing the model's attributes. - Find the conversion from a
Drudemodel to theeps_infandpolesofPoleResiduemodel and implementpole_residue()method. - Add
Drudeto both dispersive material tests, which will test both creation and thatself.eps_modelmatchesself.pole_residue.eps_model(for consistency). - Add
Drudeto theMediumTypeto specify that it can be used as a Medium in the rest of the project. - Edit docstring and add
Drudeto the API. - commit and push your changes to
drudebranch, open pull request and assign Tyler for review.