---
tags: community, minutes
---
# PlasmaPy Community Meeting | Tuesday 2023 Feb 21 at 2 pm ET
### Video Conference Information
* [Zoom link](https://zoom.us/j/91633383503?pwd=QWNkdHpWeFhrYW1vQy91ODNTVG5Ndz09)
* [Element chat](https://app.element.io/#/room/#plasmapy:openastronomy.org)
* [GitHub Minutes Repository](https://github.com/PlasmaPy/plasmapy-project/tree/master/minutes)
* ["Community" Sub-directory](https://github.com/PlasmaPy/plasmapy-project/tree/master/minutes/_community)
* [Repository](https://github.com/PlasmaPy/plasmapy) ([pull requests](https://github.com/PlasmaPy/plasmapy/pulls), [issues](https://github.com/PlasmaPy/plasmapy/issues))
* [PlasmaPy Enhancement Proposals](https://github.com/PlasmaPy/PlasmaPy-PLEPs)
* [Calendar](https://calendar.google.com/calendar/embed?src=c_sqqq390s24jjfjp3q86pv41pi8%40group.calendar.google.com&ctz=America%2FNew_York)
## Agenda (please feel free to edit or add items)
[MPRL]: http://webhome.auburn.edu/~thomaed/mprl/mdpx-pages/mdpx-construction/construction-images-junejul/index.html
[ZEUS]: https://zeus.engin.umich.edu/laser/
[bridge]: http://ems-docs.element.io/books/element-cloud-documentation/page/discord-bridge
[SULI summer school]: https://suli.pppl.gov/2021/course/
1. Introductions
2. [Issues](https://github.com/PlasmaPy/PlasmaPy/issues)
- Classes for equilibria/configurations:
- [#1978](https://github.com/PlasmaPy/PlasmaPy/issues/1978): pinches
- [#1979](https://github.com/PlasmaPy/PlasmaPy/issues/1979): Harris sheet
- [#1980](https://github.com/PlasmaPy/PlasmaPy/issues/1980): those cylindrical equilibria with Bessel functions whatever they're called
3. [Pull requests](https://github.com/PlasmaPy/PlasmaPy/pulls)
- ...
4.
5.
6.
## Attendees
* ...
## Action Items
***Person***
* ...
## Minutes
Harris:
$$B_x(y) = B_0 \tanh((y-y_0)/\delta)$$
dimensionless or **dimensional form** <- focus this for now
Pinch:
* takes current density -> outputs magnetic field
* OR takes magnetic field -> outputs current density
* AND optionally also takes a pressure profile
* OR (in 2d axisymmetric case) takes stream function -> outputs the other three
Magnetic flux rope (force-free)
$$ \vec{B} = B_0 J_1(\lambda r) \hat{\theta} + B_0 J_0 (\lambda r) \hat{z}$$
* Sketching
```python=
class Abstract1DEquilibrium(abc):
pass
def magnetic_field(self, one_d_coordinate: float[N]) -> np.ndarray[3, N]:
pass
def current_density(self, one_d_coordinate: float[N]) -> np.ndarray[3, N]:
pass
def pressure (same): # assume scalar
pass
class Pinch(Abstract1DEquilibrium):
def __init__(self,
current_density: Callable[Quantity, Quantity], # is this right format for Callable?
magnetic_field: Callable[Quantity, Quantity],
r_max = np.inf, # default unbounded for example for flux rope
):
pass
# figure out current density from magnetic field or other way around at this time
# calling functions from another module
"""
TODO later:
@classmethod
def from_sympy(cls, expression)
"""
"""
inputting discrete values: nah, but happy to provide example on how to do that via scipy.interpolate
"""
"""
# not doing it like this:
class Harris1DSheet(Pinch):
def __init__(self, B0, y0, delta):
B = lambda y: ...
super().__init__(self, B)
"""
class Harris1DSheet(AbstractEquilibrium):
def magnetic_field(self, x: float[N] # positional only args mean they share interface
) -> np.ndarray[3, N]:
pass
class ForceFreeFluxRope(Abstract1DEquilibrium):
def magnetic_field(self, r: float[N]) -> np.ndarray[3, N]:
pass
def current_density(self, one_d_coordinate: float[N]) -> np.ndarray[3, N]:
pass
def pressure (same): # assume scalar
pass
```
- [ ] TODO: [look into `omfit_classes`](https://omfit.io/code.html#module-omfit_classes.omfit_eqdsk) to see how much overlap there is and how much we can really bring to the table