Repository: PlasmaPy/PlasmaPy
Pull request #199 (2017-12-17 20:54:12)

Braginskii
Working on Issue #35 . I've put in some functionality and done some preliminary checks and tests. Definitely still a work in progress, needs tests and documentation and then is going to need some ruthless refactoring. Oh shoot, and the PEP8 checking-thing is going to have a fit.


pep8speaks: Hello @samurai688! Thanks for submitting the PR.

 - In the file [`plasmapy/__init__.py`](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/__init__.py), following are the PEP8 issues :

> [Line 63:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/__init__.py#L63): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (88 > 79 characters)

 - In the file [`plasmapy/physics/parameters.py`](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py), following are the PEP8 issues :

> [Line 163:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L163): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (80 > 79 characters)
> [Line 545:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L545): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 548:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L548): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 550:47](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L550): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 551:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L551): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 554:44](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L554): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 555:44](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L555): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 556:45](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L556): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 557:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L557): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 560:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L560): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 563:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L563): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 566:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L566): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 570:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L570): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 572:76](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L572): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 573:71](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L573): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 575:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L575): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 581:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L581): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 592:12](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L592): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 603:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L603): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 606:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L606): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 609:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L609): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 613:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L613): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 616:44](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L616): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 617:44](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L617): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 618:45](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L618): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 619:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L619): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 622:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L622): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 625:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L625): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 628:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L628): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 633:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L633): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 635:76](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L635): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 636:71](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L636): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 638:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L638): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 644:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L644): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 656:12](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L656): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 658:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L658): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 674:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L674): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 678:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L678): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (83 > 79 characters)
> [Line 685:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/parameters.py#L685): [E303](https://duckduckgo.com/?q=pep8%20E303) too many blank lines (3)

 - In the file [`plasmapy/physics/transport.py`](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py), following are the PEP8 issues :

> [Line 9:55](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L9): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 10:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L10): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 217:74](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L217): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 218:51](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L218): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 219:54](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L219): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 220:56](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L220): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 222:50](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L222): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 225:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L225): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 229:75](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L229): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 230:77](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L230): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 231:74](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L231): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 232:73](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L232): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 234:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L234): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 242:46](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L242): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 243:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L243): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 245:79](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L245): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 246:78](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L246): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 248:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L248): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 254:27](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L254): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 255:43](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L255): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 256:40](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L256): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 257:45](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L257): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 258:29](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L258): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 267:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L267): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 279:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L279): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 282:58](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L282): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 291:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L291): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 294:13](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L294): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 301:74](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L301): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 302:78](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L302): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 305:74](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L305): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 306:76](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L306): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 308:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L308): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 313:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L313): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 319:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L319): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 324:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L324): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 335:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L335): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 340:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L340): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 342:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L342): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 346:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L346): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 352:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L352): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 356:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L356): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 358:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L358): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 364:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L364): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 367:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L367): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 370:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L370): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 373:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L373): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 376:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L376): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 383:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L383): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 385:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L385): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 387:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L387): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 393:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L393): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 395:35](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L395): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 396:13](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L396): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 396:43](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L396): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 397:13](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L397): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 397:40](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L397): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 398:13](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L398): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 398:45](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L398): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 399:13](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L399): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 399:29](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L399): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 400:13](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L400): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 401:13](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L401): [E124](https://duckduckgo.com/?q=pep8%20E124) closing bracket does not match visual indentation
> [Line 409:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L409): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 411:34](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L411): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 412:31](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L412): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 414:31](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L414): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 416:27](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L416): [E261](https://duckduckgo.com/?q=pep8%20E261) at least two spaces before inline comment
> [Line 422:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L422): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 427:27](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L427): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 435:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L435): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 442:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L442): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 460:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L460): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 463:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L463): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 475:53](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L475): [E261](https://duckduckgo.com/?q=pep8%20E261) at least two spaces before inline comment
> [Line 483:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L483): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 486:71](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L486): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 489:73](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L489): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 491:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L491): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 493:5](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L493): [E303](https://duckduckgo.com/?q=pep8%20E303) too many blank lines (2)
> [Line 499:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L499): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 503:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L503): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (80 > 79 characters)
> [Line 505:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L505): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (84 > 79 characters)
> [Line 508:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L508): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 511:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L511): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 518:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L518): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 519:5](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L519): [E265](https://duckduckgo.com/?q=pep8%20E265) block comment should start with '# '
> [Line 528:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L528): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 537:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L537): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 548:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L548): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 560:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L560): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 571:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L571): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 583:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L583): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 591:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L591): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 594:47](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L594): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 596:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L596): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 598:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L598): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 600:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L600): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (86 > 79 characters)
> [Line 610:70](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L610): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 616:66](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L616): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 618:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L618): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 619:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L619): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (82 > 79 characters)
> [Line 620:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L620): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (109 > 79 characters)
> [Line 620:110](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L620): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 626:62](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L626): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 635:22](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L635): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 637:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L637): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (85 > 79 characters)
> [Line 642:40](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L642): [E261](https://duckduckgo.com/?q=pep8%20E261) at least two spaces before inline comment
> [Line 646:68](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L646): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 647:79](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L647): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 648:74](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L648): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 654:65](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L654): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 663:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L663): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (87 > 79 characters)
> [Line 675:70](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L675): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 676:69](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L676): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 677:64](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L677): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 678:79](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L678): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 680:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L680): [E115](https://duckduckgo.com/?q=pep8%20E115) expected an indented block (comment)
> [Line 681:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L681): [E115](https://duckduckgo.com/?q=pep8%20E115) expected an indented block (comment)
> [Line 682:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L682): [E115](https://duckduckgo.com/?q=pep8%20E115) expected an indented block (comment)
> [Line 683:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L683): [E115](https://duckduckgo.com/?q=pep8%20E115) expected an indented block (comment)
> [Line 684:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L684): [E115](https://duckduckgo.com/?q=pep8%20E115) expected an indented block (comment)
> [Line 685:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L685): [E115](https://duckduckgo.com/?q=pep8%20E115) expected an indented block (comment)
> [Line 686:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L686): [E115](https://duckduckgo.com/?q=pep8%20E115) expected an indented block (comment)
> [Line 686:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L686): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (85 > 79 characters)
> [Line 687:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L687): [E115](https://duckduckgo.com/?q=pep8%20E115) expected an indented block (comment)
> [Line 688:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L688): [E115](https://duckduckgo.com/?q=pep8%20E115) expected an indented block (comment)
> [Line 706:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L706): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (87 > 79 characters)
> [Line 709:63](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L709): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 735:74](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L735): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 736:73](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L736): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 737:77](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L737): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 746:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L746): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (85 > 79 characters)
> [Line 749:61](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L749): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 777:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L777): [E303](https://duckduckgo.com/?q=pep8%20E303) too many blank lines (4)
> [Line 786:2](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L786): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 793:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L793): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 796:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L796): [E303](https://duckduckgo.com/?q=pep8%20E303) too many blank lines (3)
> [Line 796:77](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L796): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 808:26](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L808): [E261](https://duckduckgo.com/?q=pep8%20E261) at least two spaces before inline comment
> [Line 813:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L813): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (82 > 79 characters)
> [Line 815:26](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L815): [E261](https://duckduckgo.com/?q=pep8%20E261) at least two spaces before inline comment
> [Line 819:66](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L819): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 822:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L822): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 830:24](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L830): [E261](https://duckduckgo.com/?q=pep8%20E261) at least two spaces before inline comment
> [Line 837:24](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L837): [E261](https://duckduckgo.com/?q=pep8%20E261) at least two spaces before inline comment
> [Line 843:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L843): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 851:22](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L851): [E261](https://duckduckgo.com/?q=pep8%20E261) at least two spaces before inline comment
> [Line 857:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L857): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 865:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L865): [E261](https://duckduckgo.com/?q=pep8%20E261) at least two spaces before inline comment
> [Line 888:26](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L888): [E261](https://duckduckgo.com/?q=pep8%20E261) at least two spaces before inline comment
> [Line 891:10](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L891): [E261](https://duckduckgo.com/?q=pep8%20E261) at least two spaces before inline comment
> [Line 898:19](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L898): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 898:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L898): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 898:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L898): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 898:26](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L898): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 905:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L905): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 933:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L933): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 934:19](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L934): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 934:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L934): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 934:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L934): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 934:25](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L934): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 936:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L936): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 938:53](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L938): [E202](https://duckduckgo.com/?q=pep8%20E202) whitespace before ']'
> [Line 943:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L943): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 949:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L949): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 953:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L953): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 954:58](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L954): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 958:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L958): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 961:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L961): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 962:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L962): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 965:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L965): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 970:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L970): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 976:49](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L976): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 980:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L980): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 983:51](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L983): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 987:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L987): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 990:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L990): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1004:5](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1004): [E306](https://duckduckgo.com/?q=pep8%20E306) expected 1 blank line before a nested definition, found 0
> [Line 1006:73](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1006): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1009:5](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1009): [E306](https://duckduckgo.com/?q=pep8%20E306) expected 1 blank line before a nested definition, found 0
> [Line 1011:46](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1011): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1012:50](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1012): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1029:5](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1029): [E306](https://duckduckgo.com/?q=pep8%20E306) expected 1 blank line before a nested definition, found 0
> [Line 1030:73](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1030): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1033:5](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1033): [E306](https://duckduckgo.com/?q=pep8%20E306) expected 1 blank line before a nested definition, found 0
> [Line 1034:46](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1034): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1035:50](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1035): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1043:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1043): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1044:19](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1044): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1044:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1044): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1044:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1044): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1044:25](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1044): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1046:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1046): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1049:53](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1049): [E202](https://duckduckgo.com/?q=pep8%20E202) whitespace before ']'
> [Line 1054:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1054): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1060:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1060): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1061:56](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1061): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1065:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1065): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1066:58](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1066): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1070:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1070): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1073:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1073): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1074:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1074): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1077:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1077): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1078:19](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1078): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1078:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1078): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1078:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1078): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1078:25](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1078): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1080:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1080): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1082:53](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1082): [E202](https://duckduckgo.com/?q=pep8%20E202) whitespace before ']'
> [Line 1083:55](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1083): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1087:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1087): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1091:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1091): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1095:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1095): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1096:49](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1096): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1100:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1100): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1101:56](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1101): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1105:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1105): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1112:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1112): [E303](https://duckduckgo.com/?q=pep8%20E303) too many blank lines (4)
> [Line 1154:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1154): [E303](https://duckduckgo.com/?q=pep8%20E303) too many blank lines (4)
> [Line 1154:53](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1154): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1156:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1156): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1157:19](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1157): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1157:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1157): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1160:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1160): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1165:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1165): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1170:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1170): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1175:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1175): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1180:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1180): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1185:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1185): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1190:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1190): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1195:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1195): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1200:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1200): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1205:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1205): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1210:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1210): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1215:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1215): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1220:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1220): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1233:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1233): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1237:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1237): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1242:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1242): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1243:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1243): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1244:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1244): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1245:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1245): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1246:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1246): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1246:37](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1246): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1248:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1248): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1252:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1252): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1256:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1256): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1257:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1257): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1258:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1258): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1259:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1259): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1260:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1260): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1260:33](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1260): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1262:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1262): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1266:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1266): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1269:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1269): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1270:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1270): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1271:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1271): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1272:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1272): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1273:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1273): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1274:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1274): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1275:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1275): [E303](https://duckduckgo.com/?q=pep8%20E303) too many blank lines (6)
> [Line 1275:55](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1275): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1277:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1277): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1278:19](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1278): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1278:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1278): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1281:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1281): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1286:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1286): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1289:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1289): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1292:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1292): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1295:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1295): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1298:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1298): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1301:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1301): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1304:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1304): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1307:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1307): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1310:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1310): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1313:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1313): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1324:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1324): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1328:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1328): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1332:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1332): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1333:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1333): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1334:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1334): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1336:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1336): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1340:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1340): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1344:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1344): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1345:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1345): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1346:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1346): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1347:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1347): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1348:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1348): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1350:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1350): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1354:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1354): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1357:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1357): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1358:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1358): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1359:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1359): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1360:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1360): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1361:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1361): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1362:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1362): [E303](https://duckduckgo.com/?q=pep8%20E303) too many blank lines (5)
> [Line 1362:52](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1362): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1364:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1364): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1365:19](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1365): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1365:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1365): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1368:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1368): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1373:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1373): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1376:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1376): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1379:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1379): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1382:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1382): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1385:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1385): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1388:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1388): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1393:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1393): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1396:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1396): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1399:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1399): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1402:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1402): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1405:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1405): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1408:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1408): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1421:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1421): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1425:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1425): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1429:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1429): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1430:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1430): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1431:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1431): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1432:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1432): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1433:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1433): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1435:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1435): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1439:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1439): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1443:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1443): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1444:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1444): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1445:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1445): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1446:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1446): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1447:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1447): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1449:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1449): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1453:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1453): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1456:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1456): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1457:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1457): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1458:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1458): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1459:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1459): [E303](https://duckduckgo.com/?q=pep8%20E303) too many blank lines (3)
> [Line 1459:36](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1459): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1461:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1461): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1462:19](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1462): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1462:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1462): [E231](https://duckduckgo.com/?q=pep8%20E231) missing whitespace after ','
> [Line 1465:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1465): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1468:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1468): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1471:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1471): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1474:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1474): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1477:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1477): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1480:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1480): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1483:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1483): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1486:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1486): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1489:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1489): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1492:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1492): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1495:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1495): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1498:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1498): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1501:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1501): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1502:14](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1502): [E222](https://duckduckgo.com/?q=pep8%20E222) multiple spaces after operator
> [Line 1514:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1514): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1516:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1516): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1521:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1521): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1522:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1522): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1523:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1523): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1524:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1524): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1525:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1525): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1527:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1527): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1529:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1529): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1531:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1531): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1535:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1535): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1536:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1536): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1537:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1537): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1538:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1538): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1539:23](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1539): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1541:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1541): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1543:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1543): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1545:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1545): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1547:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1547): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1551:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1551): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1556:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1556): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1558:10](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1558): [E261](https://duckduckgo.com/?q=pep8%20E261) at least two spaces before inline comment
> [Line 1559:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1559): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1568:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1568): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1572:63](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1572): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1574:26](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1574): [E131](https://duckduckgo.com/?q=pep8%20E131) continuation line unaligned for hanging indent
> [Line 1575:59](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1575): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1576:63](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1576): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1577:46](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1577): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1578:26](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1578): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1578:68](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1578): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1581:24](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1581): [E222](https://duckduckgo.com/?q=pep8%20E222) multiple spaces after operator
> [Line 1583:26](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1583): [E131](https://duckduckgo.com/?q=pep8%20E131) continuation line unaligned for hanging indent
> [Line 1584:59](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1584): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1585:26](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1585): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1585:67](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1585): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1589:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1589): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1591:39](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1591): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1592:25](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1592): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 1592:69](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1592): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1593:62](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1593): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1594:53](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1594): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1597:39](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1597): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1598:25](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1598): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 1598:59](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1598): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1599:25](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1599): [E124](https://duckduckgo.com/?q=pep8%20E124) closing bracket does not match visual indentation
> [Line 1602:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1602): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1604:78](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1604): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1605:17](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1605): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 1606:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1606): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1609:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1609): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1612:16](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1612): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1613:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1613): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1615:10](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1615): [E261](https://duckduckgo.com/?q=pep8%20E261) at least two spaces before inline comment
> [Line 1616:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1616): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1620:25](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1620): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1621:63](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1621): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1623:26](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1623): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1625:55](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1625): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1626:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1626): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1626:79](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1626): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1627:22](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1627): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1627:59](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1627): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1628:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1628): [E124](https://duckduckgo.com/?q=pep8%20E124) closing bracket does not match visual indentation
> [Line 1629:57](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1629): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1630:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1630): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1630:80](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1630): [E501](https://duckduckgo.com/?q=pep8%20E501) line too long (81 > 79 characters)
> [Line 1630:81](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1630): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1631:22](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1631): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1631:59](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1631): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1632:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1632): [E124](https://duckduckgo.com/?q=pep8%20E124) closing bracket does not match visual indentation
> [Line 1633:29](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1633): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1634:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1634): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 1634:64](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1634): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1635:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1635): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 1635:59](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1635): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1636:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1636): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 1636:49](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1636): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1637:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1637): [E124](https://duckduckgo.com/?q=pep8%20E124) closing bracket does not match visual indentation
> [Line 1638:33](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1638): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1639:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1639): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 1639:66](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1639): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1640:59](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1640): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1641:49](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1641): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1646:25](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1646): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1647:26](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1647): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1649:55](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1649): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1650:22](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1650): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1650:59](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1650): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1651:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1651): [E124](https://duckduckgo.com/?q=pep8%20E124) closing bracket does not match visual indentation
> [Line 1652:57](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1652): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1653:22](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1653): [E127](https://duckduckgo.com/?q=pep8%20E127) continuation line over-indented for visual indent
> [Line 1653:59](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1653): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1654:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1654): [E124](https://duckduckgo.com/?q=pep8%20E124) closing bracket does not match visual indentation
> [Line 1655:29](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1655): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1656:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1656): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 1656:52](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1656): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1657:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1657): [E124](https://duckduckgo.com/?q=pep8%20E124) closing bracket does not match visual indentation
> [Line 1658:33](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1658): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1659:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1659): [E128](https://duckduckgo.com/?q=pep8%20E128) continuation line under-indented for visual indent
> [Line 1659:52](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1659): [E502](https://duckduckgo.com/?q=pep8%20E502) the backslash is redundant between brackets
> [Line 1660:21](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1660): [E124](https://duckduckgo.com/?q=pep8%20E124) closing bracket does not match visual indentation
> [Line 1661:65](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1661): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1662:65](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1662): [W291](https://duckduckgo.com/?q=pep8%20W291) trailing whitespace
> [Line 1664:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1664): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1703:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1703): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1704:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1704): [W293](https://duckduckgo.com/?q=pep8%20W293) blank line contains whitespace
> [Line 1705:1](https://github.com/PlasmaPy/PlasmaPy/blob/0735ed59650027d129358aa2af0cb611208ee1b3/plasmapy/physics/transport.py#L1705): [W391](https://duckduckgo.com/?q=pep8%20W391) blank line at end of file


lemmatum: Nice! Let's just be mindful that we aren't overlapping on each other's work (#191 ).
So far looks like it is just collisional rate/frequency which may have a smidgen of overlap.
samurai688: Okay great, sorry about that!  Yeah, I just put the particular collision rates in there to be able to verify that things are kind of working. If you or anyone else have collisions stuff, we can unify around that once the dust settles.
StanczakDominik: I'll be trying to add some tests here!
samurai688: Thanks! I keep hoping to get some work done on these, but I keep failing. 
StanczakDominik: I've got the merge conflicts fixed. Would you mind me pushing to this branch, or would you rather pull from mine?
samurai688: You can push to it. 
samurai688: Oh, or, do I need to do anything to enable that?
StanczakDominik: Nah, it should be working right now :) I might have broken some tests along the way. Fixing them now.
StanczakDominik: While I'm reimplementing `classical_transport`, do you think the original Braginskii is worth scouring for examples of numeric values for those? It seen to me it would be better to compare our results to someone else's rather than only noting our current results and saving them for comparison.
samurai688: Yep, indeed, some tests we could do are:

- We could look for places where authors have deigned to calculate numerical values and check against them. These are often available for the dimensionless coefficients but not so much for the dimensional. I can search for these.
- The 'perpendicular' field results should match the 'parallel' results as the hall parameter goes to zero, for any given model
- Every model should more or less agree (maybe within 10%?) with the Spitzer model as the hall parameter goes to zero. The spitzer model doesn't include magnetic field so all it gives is the hall=0 / parallel-field result
- There might have been some asymptotic expressions for the behavior at high Z or high hall parameter that we might be able to make use of, I'll keep an eye out for these

StanczakDominik: All right, I've got a prototype with some examples working, docs building and tests passing! Haven't added the tests for the new stuff just yet.

* The code is at https://github.com/StanczakDominik/PlasmaPy/tree/braginskii-objectoriented
* The documentation for the `classical_transport` class I made from your code is at https://14-90793234-gh.circle-artifacts.com/0/home/circleci/project/docs/_build/html/api/plasmapy.physics.classical_transport.html#plasmapy.physics.classical_transport 
* and I added an example for this one at https://14-90793234-gh.circle-artifacts.com/0/home/circleci/project/docs/_build/html/auto_examples/plot_braginskii.html#sphx-glr-auto-examples-plot-braginskii-py

Take a look at whether this looks reasonable!
samurai688: Will do! Am traveling today, so might not be able to get to it until tomorrow, but may be.
StanczakDominik: Sure :) I'll be waiting.

Also, I think it might make sense to implement the four models as subclasses of the `classical_transport` - assuming we can stomach another foray into object-orientedness :D  I really think it makes sense here, though. That would simplify a bunch of the code and make each model actually simpler.
samurai688: I think it looks very good, nice!  For making the models subclasses, I think that makes sense, I can't quite visualize what it'll be like, but it's looking good so far so if it sounds good to you, it sounds good to me.

The only question I had was about the "if hall_e: " syntax... will that mess up if the user puts in a zero? For example, if they want to force the unmagnetized limit, they might put hall=0, but would it then evaluate to false and call the hall parameter function?
StanczakDominik: Okay then! I'm pushing those changes here. The `if hall_e` is a very valid point, I thought it would simplify the code but it will indeed mess up on zero. (Hopefully tomorrow) I'll fix it and try to add the subclasses to models.

By the way,  two more questions:
* what do you think about making most of the variables like `get_spitzer_harm_coeffs` or `nondim_whatever` private (as in, `_nondim_whatever` starting with a `_`)? That way it can still be imported if someone really wants to, but it doesn't populate the namespace by default (as we have * imports in our __init__.py's, which I'm not really sure about either). So the default and preferred way to access resistivity etc. functions would be through `classical_transport` or subclasses.
* I forgot the second one. I'll probably ask it later :laughing: 

Anyway, I'd still like to ask @namurphy and @lemmatum for a brief review of the proposed API to these coefficients. It's working right now, let's get it working nicely.
StanczakDominik: I guess I broke the docs again. I'll fix them tomorrow. I remember the second question, though! What does everyone think about moving `transport.py` from `plasmapy.physics` into `plasmapy.transport` on its own? It's getting kinda bloated over in `physics`.

@samurai688, if/when you get the time, I'd really appreciate some of those numerical values for tests you mentioned! If I run out of things to do with the code I'll start looking for them myself, though, so no worries :smiley: 
samurai688: Here are some values I was able to get from the 1965 braginskii reference:

nondim_coefficients
for hall >> 1, (100 or 1000 should do it):

from Table 1:
eq (2.8), Z = 1, alpha_e_par_hat = 0.51
eq (2.8), Z = 2, alpha_e_par_hat = 0.44
eq (2.8), Z = 3, alpha_e_par_hat = 0.40
eq (2.8), Z = 4, alpha_e_par_hat = 0.38
eq (2.8), Z = inf, alpha_e_par_hat = 0.29
eq (2.9), Z = 1, beta_e_par_hat = 0.71
eq (2.9), Z = 2, beta_e_par_hat = 0.9
eq (2.9), Z = 3, beta_e_par_hat = 1.0
eq (2.9), Z = 4, beta_e_par_hat = 1.1
eq (2.9), Z = inf, beta_e_par_hat = 1.5
eq (2.12), Z = 1, kappa_e_par_hat = 3.16
eq (2.12), Z = 2, kappa_e_par_hat = 4.9
eq (2.12), Z = 3, kappa_e_par_hat = 6.1
eq (2.12), Z = 4, kappa_e_par_hat = 6.9
eq (2.12), Z = inf, kappa_e_par_hat = 12.5
eq (2.13), Z = 1, kappa_e_perp_hat * hall^2 = 4.66
eq (2.13), Z = 2, kappa_e_perp_hat * hall^2 = 4.0
eq (2.13), Z = 3, kappa_e_perp_hat * hall^2 = 3.7
eq (2.13), Z = 4, kappa_e_perp_hat * hall^2 = 3.6
eq (2.13), Z = inf, kappa_e_perp_hat * hall^2 = 3.2

eq (2.15), for all Z, kappa_i_par_hat = 3.9
eq (2.16), for all Z, kappa_i_perp_hat * hall^2 = 2.0
eq (2.22), eta_i_hat_0 = 0.96
eq (2.23), eta_i_hat_1 * hall^2 = 0.3
eq (2.23), eta_i_hat_2 * hall^2 = 1.2
eq (2.24), eta_i_hat_3 * hall = 0.5
eq (2.24), eta_i_hat_4 * hall = 1.0
eq (2.25), eta_e_hat_0 = 0.73
eq (2.26), eta_e_hat_1 * hall^2 = 0.51
eq (2.26), eta_e_hat_2 * hall^2 = 2.04
eq (2.27), eta_e_hat_3 * hall = 0.5
eq (2.27), eta_e_hat_4 * hall = 1.0
StanczakDominik: Awesome, thanks! I'll get those implemented as tests!
samurai688: Re questions:

1) I like the idea of making the nondim and assorted helper functions _private
2) Hmm, well I don't like the idea of moving transport to the same hierarchy level as physics, since conceptually "transport" is definitely a subset of "physics". There's plenty more plasma physics left to add, too... in the current organization, I dunno if there's a way around the physics part eventually becoming rather large :). Maybe physics could grow more sub-levels underneath itself?
StanczakDominik: Once I get some time, I will be
* [ ] cleaning up the pep8 stuff
* [ ] adding tests
* [ ] trying to do the subclass thing
samurai688: Sounds good @StanczakDominik, I can help with the tests but I'll hold off if you're going to be doing the subclass thing.
StanczakDominik: @samurai688 I'm not sure I'm going to have much time for PlasmaPy this weekend (I'm already using it to procrastinate, haha). I think we could save the subclass thing for a later date and get this working first. So if you could try to get these tests implemented, that would really be much appreciated!
samurai688: Alright sounds good, if I can I'll take a crack at adding tests. 

Whew, rebasing is pretty gnarly huh!  I guess I need to learn how to use one of these mergetools or whatever to make it a bit easier.

lemmatum: @samurai688 I can recommend [meld](http://meldmerge.org/) as a merge tool. It's a pretty simple UI, just need need to know [which direction the merge is happening] (https://stackoverflow.com/questions/11133290/which-version-of-the-git-file-will-be-finally-used-local-base-or-remote).
StanczakDominik: vimdiff is life 

Meld's okay though.
StanczakDominik: Heads up, tests will be failing due to #229 right now. :(
samurai688: Ah, I wondered what was up with those doctests all failing. Nice sleuthing!
StanczakDominik: The newest changes on master should solve the docstring problem.
samurai688: That'd be great!  I will handle the thing at the bottom with the K=2 and
I'll try to figure out how to test those "cross" terms in the braginskii
that are still untested, but if you can knock out some of the error /
warning / invalid string stuff, that'd be great.

On Mon, Jan 8, 2018 at 1:53 PM, Dominik Stańczak <notifications@github.com>
wrote:

> *@StanczakDominik* commented on this pull request.
>
> The tests are looking good! What's left to do seems to be mostly
> error/warning checks (so that's pytest.raises and pytest.warns) and tests
> without forced valus for the parameters (as in, calculating mu, theta etc.
> from particle masses, temperatures and so on). I think those would be great
> to do as examples in docstrings via doctests, now that #230
> <https://github.com/PlasmaPy/PlasmaPy/pull/230> is merged it'd be stable
> and resistant to any numpy changes. I could probably do that and the
> error/warning checks if you'd like.
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/PlasmaPy/PlasmaPy/pull/199#pullrequestreview-87335728>,
> or mute the thread
> <https://github.com/notifications/unsubscribe-auth/ALnH03gzcy4rlAY9r0FpRw7_UCHIaCfNks5tIoA5gaJpZM4REyrg>
> .
>

StanczakDominik: Sure. I'll just put some animation in my presentation and I should have
some time to do that. :>

StanczakDominik: I think the latex test failures may be fixed soon by @siddharth185 (#227), so let's ignore those for now.
StanczakDominik: I've got a bunch of changes that should fix some of our coverage issues. Unfortunately, I had to rebase in the process. Thus, as usual, please run

```
git fetch --all
git reset --hard origin/braginskii
```

(might want to go with a `--soft` reset if you've got any changes in there!)
StanczakDominik: @samurai688 I think we could move some of your tests for the lowest level functions to the higher level interfaces. That way, we don't have to test them twice. Do you think that's reasonable?

Patch:
diff --git a/docs/conf.py b/docs/conf.py
index 3ffdadd7..77c59512 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -36,7 +36,8 @@
               'sphinx.ext.napoleon', 'sphinx.ext.intersphinx',
               'sphinx_automodapi.automodapi',
               'sphinx_automodapi.smart_resolver',
-              'sphinx_gallery.gen_gallery']
+              'sphinx_gallery.gen_gallery',
+              'sphinx.ext.graphviz']
 
 
 intersphinx_mapping = {
diff --git a/docs/physics/index.rst b/docs/physics/index.rst
index c674d2b0..6d46d9bc 100644
--- a/docs/physics/index.rst
+++ b/docs/physics/index.rst
@@ -3,3 +3,4 @@
 .. _plasmapy-physics:
 
 .. automodapi:: plasmapy.physics
+   :no-inheritance-diagram:
diff --git a/plasmapy/__init__.py b/plasmapy/__init__.py
index 4495b309..e0722b37 100644
--- a/plasmapy/__init__.py
+++ b/plasmapy/__init__.py
@@ -53,6 +53,7 @@ def _split_version(version):
     from . import mathematics
     from . import physics
     from . import diagnostics
+    from . import utils
 except ImportError:
     raise ImportError("Unable to load PlasmaPy subpackages.")
 
diff --git a/plasmapy/examples/plot_braginskii.py b/plasmapy/examples/plot_braginskii.py
new file mode 100644
index 00000000..ef9f8b78
--- /dev/null
+++ b/plasmapy/examples/plot_braginskii.py
@@ -0,0 +1,51 @@
+# coding: utf-8
+"""
+Braginskii coefficients
+=========================
+
+A short example of how to calculate classical transport coefficients
+from Bragiński's theory.
+"""
+
+from astropy import units as u
+from plasmapy import physics
+import matplotlib.pyplot as plt
+import numpy as np
+
+#####################################################
+# We'll use some sample ITER data, without much regard for whether
+# the regime is even fit for classical transport theory:
+
+thermal_energy_per_electron = 8.8 * u.keV
+electron_concentration = 10.1e19 / u.m**3
+
+thermal_energy_per_ion = 8.0 * u.keV
+ion_concentration = electron_concentration
+ion_particle = 'D+'  # a crude approximation
+
+######################################################
+# We now make the default classical_transport object:
+
+braginskii = physics.transport.classical_transport(thermal_energy_per_electron,
+                                                   electron_concentration,
+                                                   thermal_energy_per_ion,
+                                                   ion_concentration,
+                                                   ion_particle)
+
+######################################################
+# These variables are calculated during initialization and can be
+# referred to straight away:
+
+print(braginskii.coulomb_log_ei)
+print(braginskii.coulomb_log_ii)
+print(braginskii.hall_e)
+print(braginskii.hall_i)
+
+######################################################
+# These quantities are not calculated during initialization and can be
+# referred to via methods. To signify the need to calculate them, we
+# call them via (). They could be made to act like variables via @Property,
+# but I'm not sure that's wise.
+
+print(braginskii.resistivity())
+print(braginskii.thermoelectric_conductivity())
diff --git a/plasmapy/physics/__init__.py b/plasmapy/physics/__init__.py
index b78ca4bd..de2f04da 100644
--- a/plasmapy/physics/__init__.py
+++ b/plasmapy/physics/__init__.py
@@ -4,6 +4,6 @@
 from .parameters import Alfven_speed, ion_sound_speed, thermal_speed, kappa_thermal_speed, gyrofrequency, gyroradius, plasma_frequency, Debye_length, Debye_number, inertial_length, magnetic_pressure, magnetic_energy_density, upper_hybrid_frequency, lower_hybrid_frequency
 from .quantum import deBroglie_wavelength, thermal_deBroglie_wavelength, Fermi_energy, Thomas_Fermi_length
 from .relativity import Lorentz_factor
-from .transport import Coulomb_logarithm
-from .distribution import Maxwellian_1D, Maxwellian_velocity_3D, Maxwellian_speed_1D, Maxwellian_speed_3D,kappa_velocity_3D, kappa_velocity_1D
+from .transport import Coulomb_logarithm, classical_transport
+from .distribution import Maxwellian_1D, Maxwellian_velocity_3D, Maxwellian_speed_1D, Maxwellian_speed_3D, kappa_velocity_3D, kappa_velocity_1D
 from .dielectric import cold_plasma_permittivity_LRP, cold_plasma_permittivity_SDP
diff --git a/plasmapy/physics/parameters.py b/plasmapy/physics/parameters.py
index 7563dd62..51f97316 100644
--- a/plasmapy/physics/parameters.py
+++ b/plasmapy/physics/parameters.py
@@ -2,16 +2,16 @@
 
 from astropy import units
 
-from ..constants import (m_e, c, mu0, k_B, e, eps0)
-import plasmapy.atomic as atomic
 # from plasmapy.atomic import ion_mass, charge_state
 
 import numpy as np
 # import warnings
+import inspect
+from ..constants import (m_p, m_e, c, mu0, k_B, e, eps0, pi)
+from plasmapy import atomic, utils
 
-# For future: change these into decorators.  _check_quantity does a
+# TODO for future: change these into decorators.  _check_quantity does a
 # bit more than @quantity_input as it can allow
-import plasmapy.utils as utils
 from plasmapy.utils.checks import _check_quantity
 from plasmapy.utils.exceptions import PhysicsError  # , PhysicsWarning
 
@@ -111,7 +111,7 @@ def Alfven_speed(B, density, ion="p", z_mean=None):
         The magnetic field and density arguments are not Quantities and
         cannot be converted into Quantities.
 
-    UnitConversionError
+    units.UnitConversionError
         If the magnetic field or density is not in appropriate units.
 
     RelativityError
@@ -165,9 +165,10 @@ def Alfven_speed(B, density, ion="p", z_mean=None):
     <Quantity 4.31738703 cm / us>
     """
 
-    _check_quantity(B, 'B', 'Alfven_speed', units.T)
-    _check_quantity(density, 'density', 'Alfven_speed',
-                    [units.m**-3, units.kg / units.m**3], can_be_negative=False)
+    utils._check_quantity(B, 'B', 'Alfven_speed', units.T)
+    utils._check_quantity(density, 'density', 'Alfven_speed',
+                          [units.m**-3, units.kg / units.m**3],
+                          can_be_negative=False)
 
     B = B.to(units.T)
     density = density.si
@@ -268,10 +269,10 @@ def ion_sound_speed(*ignore,
     ValueError
         If the ion mass, adiabatic index, or temperature are invalid.
 
-    PhysicsError
+    plasmapy.utils.PhysicsError
         If an adiabatic index is less than one.
 
-    UnitConversionError
+    units.UnitConversionError
         If the temperature is in incorrect units.
 
     UserWarning
@@ -344,11 +345,13 @@ def ion_sound_speed(*ignore,
                         "a float or int in ion_sound_speed")
 
     if not 1 <= gamma_e <= np.inf:
-        raise PhysicsError("The adiabatic index for electrons must be between "
-                           "one and infinity")
+        raise utils.PhysicsError(
+            "The adiabatic index for electrons must be between "
+            "one and infinity")
     if not 1 <= gamma_i <= np.inf:
-        raise PhysicsError("The adiabatic index for ions must be between "
-                           "one and infinity")
+        raise utils.PhysicsError(
+            "The adiabatic index for ions must be between "
+            "one and infinity")
 
     T_i = T_i.to(units.K, equivalencies=units.temperature_energy())
     T_e = T_e.to(units.K, equivalencies=units.temperature_energy())
@@ -396,7 +399,7 @@ def thermal_speed(T, particle="e", method="most_probable"):
     TypeError
         The particle temperature is not a Quantity
 
-    UnitConversionError
+    units.UnitConversionError
         If the particle temperature is not in units of temperature or
         energy per particle
 
@@ -500,7 +503,7 @@ def kappa_thermal_speed(T, kappa, particle="e", method="most_probable"):
     TypeError
         The particle temperature is not a Quantity
 
-    UnitConversionError
+    units.UnitConversionError
         If the particle temperature is not in units of temperature or
         energy per particle
 
@@ -555,6 +558,165 @@ def kappa_thermal_speed(T, kappa, particle="e", method="most_probable"):
         raise ValueError("Method {method} not supported in thermal_speed")
 
 
+@utils.check_quantity({
+    'T_e': {'units': units.K, 'can_be_negative': False},
+    'n_e': {'units': units.m**-3, 'can_be_negative': False}
+})
+def collision_rate_electron_ion(T_e,
+                                n_e,
+                                ion_particle,
+                                coulomb_log=None,
+                                V=None):
+    r"""
+    momentum relaxation electron-ion collision rate
+
+    From [3]_, equations (2.17) and (2.120)
+
+    Considering a Maxwellian distribution of "test" electrons colliding with
+    a Maxwellian distribution of "field" ions.
+
+    This result is an electron momentum relaxation rate, and is used in many
+    classical transport expressions. It is equivalent to:
+    * 1/tau_e from ref [1]_ eqn (1) pp. #,
+    * 1/tau_e from ref [2]_ eqn (1) pp. #,
+    * nu_e\i_S from ref [2]_ eqn (1) pp. #,
+
+    Parameters
+    ----------
+
+    T_e : ~astropy.units.Quantity
+        The electron temperature of the Maxwellian test electrons
+
+    n_e : ~astropy.units.Quantity
+        The number density of the Maxwellian test electrons
+
+    ion_particle: string
+        String signifying a particle type of the field ions, including charge
+        state information.
+
+    coulomb_log : float or dimensionless ~astropy.units.Quantity, optional
+        option to specify a Coulomb logarithm of the electrons on the ions.
+        If not specified, the Coulomb log will is calculated using the
+        .transport/Coulomb_logarithm function.
+
+    References
+    ----------
+    .. [1] Braginskii
+
+    .. [2] Formulary
+
+    .. [3] Callen Chapter 2, http://homepages.cae.wisc.edu/~callen/chap2.pdf
+
+    """
+    from plasmapy.physics.transport import Coulomb_logarithm
+    T_e = T_e.to(units.K, equivalencies=units.temperature_energy())
+    if coulomb_log is not None:
+        coulomb_log_val = coulomb_log
+    else:
+        particles = ['e', ion_particle]
+        coulomb_log_val = Coulomb_logarithm(T_e, n_e, particles, V)
+    Z_i = atomic.charge_state(ion_particle)
+    nu_e = 4 / 3 * np.sqrt(2 * np.pi / m_e) / (4 * np.pi * eps0) ** 2 * \
+        e ** 4 * n_e * Z_i * coulomb_log_val / (k_B * T_e) ** 1.5
+    return nu_e.to(1 / units.s)
+
+
+@utils.check_quantity({
+    'T_i': {'units': units.K, 'can_be_negative': False},
+    'n_i': {'units': units.m**-3, 'can_be_negative': False}
+})
+def collision_rate_ion_ion(T_i, n_i, ion_particle,
+                           coulomb_log=None, V=None):
+    r"""
+    momentum relaxation ion-ion collision rate
+
+    From [3]_, equations (2.36) and (2.122)
+
+    Considering a Maxwellian distribution of "test" ions colliding with
+    a Maxwellian distribution of "field" ions.
+
+    Note, it is assumed that electrons are present in such numbers as to
+    establish quasineutrality, but the effects of the test ions colliding
+    with them are not considered here.
+
+    This result is an ion momentum relaxation rate, and is used in many
+    classical transport expressions. It is equivalent to:
+    * 1/tau_i from ref [1]_ eqn (1) pp. #,
+    * 1/tau_i from ref [2]_ eqn (1) pp. #,
+    * nu_i\i_S from ref [2]_ eqn (1) pp. #,
+
+    Parameters
+    ----------
+
+    T_i : ~astropy.units.Quantity
+        The electron temperature of the Maxwellian test ions
+
+    n_i : ~astropy.units.Quantity
+        The number density of the Maxwellian test ions
+
+    ion_particle: string
+        String signifying a particle type of the test and field ions,
+        including charge state information. This function assumes the test
+        and field ions are the same species.
+
+    coulomb_log : float or dimensionless ~astropy.units.Quantity, optional
+        option to specify a Coulomb logarithm of the electrons on the ions.
+        If not specified, the Coulomb log will is calculated using the
+        .transport/Coulomb_logarithm function.
+
+    References
+    ----------
+    .. [1] Braginskii
+
+    .. [2] Formulary
+
+    .. [3] Callen Chapter 2, http://homepages.cae.wisc.edu/~callen/chap2.pdf
+
+    """
+    from plasmapy.physics.transport import Coulomb_logarithm
+    T_i = T_i.to(units.K, equivalencies=units.temperature_energy())
+    if coulomb_log is not None:
+        coulomb_log_val = coulomb_log
+    else:
+        particles = [ion_particle, ion_particle]
+        coulomb_log_val = Coulomb_logarithm(T_i, n_i, particles, V)
+    Z_i = atomic.charge_state(ion_particle)
+    m_i = atomic.ion_mass(ion_particle)
+    nu_i = 4 / 3 * np.sqrt(np.pi / m_i) / (4 * np.pi * eps0)**2 * e**4 * \
+        n_i * Z_i**4 * coulomb_log_val / (k_B * T_i)**1.5
+    return nu_i.to(1 / units.s)
+
+
+@utils.check_quantity({
+    'n': {'units': units.m**-3, 'can_be_negative': False},
+    'T': {'units': units.K, 'can_be_negative': False},
+    'B': {'units': units.T}
+})
+def Hall_parameter(n, T, B, particle, ion_particle, coulomb_log=None, V=None):
+    r"""
+    TODO
+    """
+    try:
+        from ..atomic import _is_electron
+    except ImportError:
+        def _is_electron(arg):
+            if not isinstance(arg, str):
+                return False
+            return arg in ['e', 'e-'] or arg.lower() == 'electron'
+
+    gyro_frequency = gyrofrequency(B, particle)
+    gyro_frequency = gyro_frequency / units.radian
+    if _is_electron(particle):
+        coll_rate = collision_rate_electron_ion(T,
+                                                n,
+                                                ion_particle,
+                                                coulomb_log,
+                                                V)
+    else:
+        coll_rate = collision_rate_ion_ion(T, n, ion_particle, coulomb_log, V)
+    return gyro_frequency / coll_rate
+
+
 @utils.check_quantity({
     'B': {'units': units.T}
 })
@@ -704,7 +866,7 @@ def gyroradius(B, *args, Vperp=None, T_i=None, particle='e'):
     TypeError
         The arguments are of an incorrect type
 
-    UnitConversionError
+    units.UnitConversionError
         The arguments do not have appropriate units
 
     ValueError
@@ -776,12 +938,12 @@ def gyroradius(B, *args, Vperp=None, T_i=None, particle='e'):
     elif len(args) > 0:
         raise ValueError("Incorrect inputs to gyroradius")
 
-    _check_quantity(B, 'B', 'gyroradius', units.T)
+    utils._check_quantity(B, 'B', 'gyroradius', units.T)
 
     if Vperp is not None:
-        _check_quantity(Vperp, 'Vperp', 'gyroradius', units.m / units.s)
+        utils._check_quantity(Vperp, 'Vperp', 'gyroradius', units.m / units.s)
     elif T_i is not None:
-        _check_quantity(T_i, 'T_i', 'gyroradius', units.K)
+        utils._check_quantity(T_i, 'T_i', 'gyroradius', units.K)
         Vperp = thermal_speed(T_i, particle=particle)
 
     omega_ci = gyrofrequency(B, particle)
@@ -813,7 +975,7 @@ def plasma_frequency(n, particle='e', z_mean=None):
         a macroscopic description is valid. If this quantity is not
         given then the atomic charge state (integer) of the ion
         is used. This is effectively an average plasma frequency for the
-        plasma where multiple charge states are present. 
+        plasma where multiple charge states are present.
 
     Returns
     -------
@@ -907,7 +1069,7 @@ def Debye_length(T_e, n_e):
     TypeError
         If either argument is not a ~astropy.units.Quantity
 
-    UnitConversionError
+    units.UnitConversionError
         If either argument is in incorrect units
 
     ValueError
@@ -975,7 +1137,7 @@ def Debye_number(T_e, n_e):
     TypeError
         If either argument is not a Quantity
 
-    UnitConversionError
+    units.UnitConversionError
         If either argument is in incorrect units
 
     ValueError
@@ -1049,7 +1211,7 @@ def inertial_length(n, particle='e'):
     TypeError
         If n_i not a Quantity or particle is not a string.
 
-    UnitConversionError
+    units.UnitConversionError
         If n_i is not in units of a number density.
 
     ValueError
@@ -1173,7 +1335,7 @@ def magnetic_energy_density(B: units.T):
     TypeError
         If the input is not a Quantity.
 
-    UnitConversionError
+    units.UnitConversionError
         If the input is not in units convertible to tesla.
 
     ValueError
@@ -1239,7 +1401,7 @@ def upper_hybrid_frequency(B, n_e):
     TypeError
         If either of B or n_e is not a Quantity.
 
-    UnitConversionError
+    units.UnitConversionError
         If either of B or n_e is in incorrect units.
 
     ValueError
@@ -1310,7 +1472,7 @@ def lower_hybrid_frequency(B, n_i, ion='p'):
         If either of B or n_i is not a Quantity, or ion is of an
         inappropriate type.
 
-    UnitConversionError
+    units.UnitConversionError
         If either of B or n_i is in incorrect units.
 
     ValueError
diff --git a/plasmapy/physics/quantum.py b/plasmapy/physics/quantum.py
index 8b762c92..2b69af02 100644
--- a/plasmapy/physics/quantum.py
+++ b/plasmapy/physics/quantum.py
@@ -5,13 +5,10 @@
 import numpy as np
 from astropy import units
 
-import plasmapy.atomic as atomic
-import plasmapy.utils as utils
+from plasmapy import atomic, utils
+from plasmapy.physics.relativity import Lorentz_factor
 
 from ..constants import c, h, hbar, m_e, eps0, e, k_B
-from plasmapy.utils.checks import _check_quantity, _check_relativistic
-from plasmapy.utils.exceptions import RelativityError
-from .relativity import Lorentz_factor
 
 
 def deBroglie_wavelength(V, particle):
@@ -42,7 +39,7 @@ def deBroglie_wavelength(V, particle):
     UnitConversionError
         If the velocity is not in appropriate units.
 
-    RelativityError
+    utils.RelativityError
         If the magnitude of V is faster than the speed of light.
 
     UserWarning
@@ -72,18 +69,20 @@ def deBroglie_wavelength(V, particle):
     <Quantity inf m>
     """
 
-    _check_quantity(V, 'V', 'deBroglie_wavelength', units.m/units.s)
+    utils._check_quantity(V, 'V', 'deBroglie_wavelength', units.m / units.s)
 
     V = np.abs(V)
 
     if np.any(V >= c):
-        raise RelativityError("Velocity input in deBroglie_wavelength cannot "
-                              "be greater than or equal to the speed of "
-                              "light.")
+        raise utils.RelativityError(
+            "Velocity input in deBroglie_wavelength cannot "
+            "be greater than or equal to the speed of "
+            "light.")
 
     if not isinstance(particle, units.Quantity):
         try:
-            m = atomic.ion_mass(particle)  # TODO: Replace with more general routine!
+            # TODO: Replace with more general routine!
+            m = atomic.ion_mass(particle)
         except Exception:
             raise ValueError("Unable to find particle mass.")
     else:
@@ -99,12 +98,12 @@ def deBroglie_wavelength(V, particle):
 
         lambda_dBr = np.ones(V.shape) * np.inf * units.m
         indices = V.value != 0
-        lambda_dBr[indices] = h / (m*V[indices]*Lorentz_factor(V[indices]))
+        lambda_dBr[indices] = h / (m * V[indices] * Lorentz_factor(V[indices]))
 
     else:
 
-        if V == 0*units.m/units.s:
-            lambda_dBr = np.inf*units.m
+        if V == 0 * units.m / units.s:
+            lambda_dBr = np.inf * units.m
         else:
             lambda_dBr = h / (Lorentz_factor(V) * m * V)
 
@@ -216,7 +215,7 @@ def Fermi_energy(n_e):
     <Quantity 1.25867611e-18 J>
     """
     coeff = (np.pi * hbar) ** 2 / (2 * m_e)
-    energy_F = coeff * (3 * n_e / np.pi) ** (2/3)
+    energy_F = coeff * (3 * n_e / np.pi) ** (2 / 3)
     return energy_F.to(units.Joule)
 
 
diff --git a/plasmapy/physics/relativity.py b/plasmapy/physics/relativity.py
index a8a5db0d..231028f5 100644
--- a/plasmapy/physics/relativity.py
+++ b/plasmapy/physics/relativity.py
@@ -2,9 +2,7 @@
 from astropy import units
 
 from ..constants import c
-import plasmapy.atomic as atomic
-from plasmapy.utils.checks import _check_quantity
-from plasmapy.utils.exceptions import RelativityError
+from plasmapy import atomic, utils
 
 
 def Lorentz_factor(V):
@@ -58,11 +56,12 @@ def Lorentz_factor(V):
     inf
     """
 
-    _check_quantity(V, 'V', 'Lorentz_factor', units.m/units.s)
+    utils._check_quantity(V, 'V', 'Lorentz_factor', units.m / units.s)
 
     if not np.all(np.abs(V) <= c):
-        raise RelativityError("The Lorentz factor cannot be calculated for "
-                              "speeds faster than the speed of light. ")
+        raise utils.RelativityError(
+            "The Lorentz factor cannot be calculated for "
+            "speeds faster than the speed of light. ")
 
     if V.size > 1:
 
@@ -71,13 +70,13 @@ def Lorentz_factor(V):
         equals_c = np.abs(V) == c
         is_slow = ~equals_c
 
-        gamma[is_slow] = ((1 - (V[is_slow]/c)**2)**-0.5).value
+        gamma[is_slow] = ((1 - (V[is_slow] / c)**2)**-0.5).value
         gamma[equals_c] = np.inf
 
     else:
         if np.abs(V) == c:
             gamma = np.inf
         else:
-            gamma = ((1 - (V/c)**2)**-0.5).value
+            gamma = ((1 - (V / c)**2)**-0.5).value
 
     return gamma
diff --git a/plasmapy/physics/transport.py b/plasmapy/physics/transport.py
index a7383bc8..0f4c2148 100644
--- a/plasmapy/physics/transport.py
+++ b/plasmapy/physics/transport.py
@@ -1,14 +1,20 @@
+# coding=utf-8
 """Functions to calculate transport coefficients."""
 
 from astropy import units
 import numpy as np
-
 import plasmapy.atomic as atomic
-import plasmapy.utils as utils
-from plasmapy.utils.checks import _check_relativistic
-
-from ..constants import (m_p, m_e, c, mu0, k_B, e, eps0, pi, h, hbar)
-from .parameters import Debye_length
+from plasmapy import utils
+from plasmapy.utils.checks import check_quantity, _check_relativistic
+from plasmapy.utils.exceptions import PhysicsError, PhysicsWarning
+from plasmapy.constants import (m_p, m_e, c, mu0, k_B, e, eps0, pi, h, hbar)
+from ..atomic import (ion_mass, charge_state)
+from plasmapy.atomic.atomic import _is_electron
+from .parameters import (Debye_length, Hall_parameter,
+                         collision_rate_electron_ion, collision_rate_ion_ion)
+from inspect import stack
+from copy import copy
+import warnings
 
 
 @utils.check_quantity({"T": {"units": units.K, "can_be_negative": False},
@@ -88,7 +94,7 @@ def Coulomb_logarithm(T, n_e, particles, V=None):
     the literature on how to define the inner impact parameter [2]_.
 
     Errors associated with the Coulomb logarithm are of order its
-    inverse If the Coulomb logarithm is of order unity, then the
+    inverse. If the Coulomb logarithm is of order unity, then the
     assumptions made in the standard analysis of Coulomb collisions
     are invalid.
 
@@ -119,24 +125,22 @@ def Coulomb_logarithm(T, n_e, particles, V=None):
                          "or tuple containing representations of two charged "
                          "particles.")
 
-    masses = np.zeros(2)*units.kg
-    charges = np.zeros(2)*units.C
+    masses = np.zeros(2) * units.kg
+    charges = np.zeros(2) * units.C
 
     for particle, i in zip(particles, range(2)):
 
         try:
             masses[i] = atomic.ion_mass(particles[i])
         except Exception:
-            raise ValueError("Unable to find mass of particle: " +
-                             str(particles[i]) + " in Coulomb_logarithm.")
+            raise ValueError(f"Unable to find mass of particle: {particles[i]}"
+                             f" in Coulomb_logarithm.")
 
         try:
-            charges[i] = np.abs(e*atomic.charge_state(particles[i]))
-            if charges[i] is None:
-                raise
+            charges[i] = np.abs(e * atomic.charge_state(particles[i]))
         except Exception:
-            raise ValueError("Unable to find charge of particle: " +
-                             str(particles[i]) + " in Coulomb_logarithm.")
+            raise ValueError(f"Unable to find charge of particle: "
+                             f"{particles[i]} in Coulomb_logarithm.")
 
     reduced_mass = masses[0] * masses[1] / (masses[0] + masses[1])
 
@@ -167,7 +171,7 @@ def Coulomb_logarithm(T, n_e, particles, V=None):
 
     if V is None:
         V = np.sqrt(3 * k_B * T / reduced_mass)
-    _check_relativistic(V, 'Coulomb_logarithm', betafrac=0.8)
+    utils._check_relativistic(V, 'Coulomb_logarithm', betafrac=0.8)
 
     # The first possibility is that the inner impact parameter
     # corresponds to a deflection of 90 degrees, which is valid when
@@ -201,7 +205,1556 @@ def Coulomb_logarithm(T, n_e, particles, V=None):
     # transport theory, we shall celebrate by returning the Coulomb
     # logarithm.
 
-    ln_Lambda = np.log(b_max/b_min)
+    ln_Lambda = np.log(b_max / b_min)
     ln_Lambda = ln_Lambda.to(units.dimensionless_unscaled).value
 
     return ln_Lambda
+
+
+class classical_transport:
+    r"""
+    Braginskii-esque classical transport coefficients
+
+    Notes
+    -----
+    Classical transport theory is derived by using kinetic theory to close the
+    plasma two-fluid (electron and ion fluid) equations in the collisional
+    limit. The first complete model in this form was done by S. I. Braginskii.
+
+    This function uses fitting functions from literature to calculate
+    the transport coefficients, which are the resistivity, thermoelectric
+    conductivity, thermal conductivity, and viscosity.
+
+    Note well the assumptions in the derivation of classical transport.
+    It is assumed that the plasma is fully ionized, so only consisting of ions
+    and electrons. Neutral atoms aren't considered. It's assumed that turbulent
+    transport does not dominate, and the velocity distribution function is
+    close to Maxwellian (no extremely strong gradients), which is equivalent
+    to the following conditions:
+
+    * collisional frequency >> gyrofrequency
+    * collisional mean free path << gradient scale length along field
+    * gyroradius << gradient scale length perpendicular to field
+
+    When classical transport is not valid, e.g. due to the presence of strong
+    gradients or turbulent transport, the transport is significantly increased
+    by these other effects. Thus, classical transport often serves as a lower
+    bound on the losses / transport encountered in a plasma.
+
+    Models implemented:
+
+    Braginskii [1]_
+    The original Braginskii treatment as presented in the highly cited review
+    paper from 1965. Coefficients are found from expansion of the kinetic
+    equation in Laguerre / Sonine polynomials, truncated at K = 2. This theory
+    allow for arbitrary Hall parameter and include results for Z = 1, 2, 3, 4,
+    and infinity (Lorentz gas / stationary ion approximation).
+
+    Spitzer-Harm [2]_ [3]_
+    These coefficients were obtained from a numerical solution of the Fokker-
+    Planck equation. They give one of the earliest and most accurate (in the
+    Fokker-Planck sense) results for electron transport in simple plasma. They
+    principally apply in the unmagnetized / parallel field case, although for
+    resistivity Spitzer also calculated a famous result for a strong
+    perpendicular magnetic field. Results are for Z = 1, 2, 4, 16,
+    and infinity (Lorentz gas / stationary ion approximation).
+
+    Epperlein-Haines [4]_
+    Not yet implemented.
+
+    Ji-Held [5]_
+    This is a modern treatment of the classical transport problem that has been
+    carried out with laudable care. It allows for arbitrary hall parameter and
+    arbitrary Z for all coefficients. Similar to the Epperlein-Haines model,
+    it corrects some known inaccuracies in the original Braginskii results,
+    notably the asymptotic behavior of alpha-cross and beta_perp as Hall ->
+    +infinity. It also studies effects of electron collisions in the ion
+    terms, which all other treatments have not. To neglect electron-electron
+    collisions, leave mu = 0. To consider them, specify mu and theta.
+
+    Parameters
+    ----------
+    T_e : Quantity
+        Temperature in units of temperature or energy per particle
+
+    n_e : Quantity
+        The number density in units convertible to per cubic meter.
+
+    T_i : Quantity
+        Temperature in units of temperature or energy per particle
+
+    n_i : Quantity
+        The number density in units convertible to per cubic meter.
+
+    ion_particle : string
+        Representation of the ion species (e.g., 'p' for protons,
+        'e' for electrons, 'D+' for deuterium, or 'He-4 +1' for singly
+        ionized helium-4). If no charge state information is provided,
+        then the particles are assumed to be singly charged.
+
+    Z : integer or np.inf, optional
+        The ion charge state. Overrides particle charge state if included.
+        Different theories support different values of Z. For the original
+        Braginskii model, Z can be any of [1,2,3,4,infinity]. The Ji-Held
+        model supports arbitrary Z. Average ionization states Z_mean can be
+        input using this input and the Ji-Held model, although doing so may
+        neglect effects caused by multiple ion populations.
+
+    B : Quantity, optional
+        The magnetic field strength in units convertible to Tesla. Defaults
+        to zero.
+
+    model: string
+        Indication of whose formulation from literature to use. Allowed values
+        are:
+        'Braginskii',
+        'Spitzer-Harm',
+        'Epperlein-Haines' (not yet implemented),
+        'Ji-Held'.
+        See refs [1]_, [2]_, [3]_, [4]_ and [5]_.
+
+    field_orientation : string
+        Either of 'parallel', 'par', 'perpendicular', 'perp', 'cross', or
+        'all', indicating the cardinal orientation of the magnetic field with
+        respect to the transport direction of interest. Note that 'perp' refers
+        to transport perpendicular to the field direction in the direction of
+        the temperature gradient, while 'cross' refers to the B X grad(T)
+        direction. The option 'all' will return a numpy array of all three,
+        np.array((par, perp, cross)).
+
+    coulomb_log_ei: float or dimensionless Quantity, optional
+        Force a particular value to be used for the electron-ion Coulomb
+        logarithm (test electrons on field ions). If None, the PlasmaPy
+        function Coulomb_Logarithm() will be used. Useful for comparing
+        calculations.
+
+    V_ei: Quantity, optional
+       Supplied to coulomb_logarithm() function, not otherwise used.
+       The relative velocity between particles.  If not provided,
+       thermal velocity is assumed: :math:`\mu V^2 \sim 3 k_B T`
+       where `mu` is the reduced mass.
+
+    coulomb_log_ii: float or dimensionless Quantity, optional
+        Force a particular value to be used for the ion-ion Coulomb logarithm
+        (test ions on field ions). If None, the PlasmaPy function
+        Coulomb_Logarithm() will be used. Useful for comparing calculations.
+
+    V_ii: Quantity, optional
+       Supplied to coulomb_logarithm() function, not otherwise used.
+       The relative velocity between particles.  If not provided,
+       thermal velocity is assumed: :math:`\mu V^2 \sim 3 k_B T`
+       where `mu` is the reduced mass.
+
+    hall_e: float or dimensionless Quantity, optional
+        Force a particular value to be used for the electron Hall parameter. If
+        None, the PlasmaPy function Hall_parameter() will be used. Useful
+        for comparing calculations.
+
+    hall_i: float or dimensionless Quantity, optional
+        Force a particular value to be used for the ion Hall parameter. If
+        None, the PlasmaPy function Hall_parameter() will be used. Useful
+        for comparing calculations.
+
+    mu: optional, float or dimensionless Quantity
+        Ji-Held model only, may be used to include ion-electron effects
+        on the ion transport coefficients. Defaults to zero, thus
+        disabling these effects.
+
+    theta: optional, float or dimensionless Quantity
+        theta = T_e / T_i
+        Ji-Held model only, may be used to include ion-electron effects
+        on the ion transport coefficients. Defaults to T_e / T_i. Only
+        has effect if mu is non-zero.
+
+
+    Raises
+    ------
+    ValueError
+        On incorrect or unknown values of arguments.
+    plasmapy.utils.PhysicsError
+        If input or calculated values for Coulomb logarithms are nonphysical.
+
+    Examples
+    --------
+    >>> from astropy import units
+    >>> t = classical_transport(1*units.eV, 1e20/units.m**3,
+    ...                         1*units.eV, 1e20/units.m**3, 'p')
+    >>> t.resistivity()
+    <Quantity 0.00038845 m Ohm>
+    >>> t.thermoelectric_conductivity()
+    <Quantity 0.711084>
+    >>> t.ion_thermal_conductivity()
+    <Quantity 0.0146639 W / (K m)>
+    >>> t.electron_thermal_conductivity()
+    <Quantity 0.35963098 W / (K m)>
+    >>> t.ion_viscosity()
+    <Quantity [4.36619601e-07, 4.35292253e-07, 4.35292253e-07, 0.00000000e+00,
+               0.00000000e+00] Pa s>
+    >>> t.electron_viscosity()
+    <Quantity [5.50131582e-09, 5.49950422e-09, 5.49950422e-09, 0.00000000e+00,
+               0.00000000e+00] Pa s>
+
+    References
+    ----------
+    .. [1] Braginskii, S. I. "Transport processes in a plasma." Reviews of
+           plasma physics 1 (1965): 205. (1965)
+    .. [2] Spitzer Jr, Lyman, and Richard Härm. "Transport phenomena in a
+           completely ionized gas." Physical Review 89.5 (1953): 977. (1953)
+    .. [3] Physics of Fully Ionized Gases, L. Spitzer (1962)
+    .. [4] Epperlein, E. M., and M. G. Haines. "Plasma transport coefficients
+           in a magnetic field by direct numerical solution of the
+           Fokker–Planck equation." The Physics of fluids 29.4 (1986):
+           1029-1041.
+    .. [5] Ji, Jeong-Young, and Eric D. Held. "Closure and transport theory for
+           high-collisionality electron-ion plasmas." Physics of Plasmas 20.4
+           (2013): 042114.
+    """
+
+    @utils.check_quantity({"T_e": {"units": units.K, "can_be_negative": False},
+                           "n_e": {"units": units.m**-3},
+                           "T_i": {"units": units.K, "can_be_negative": False},
+                           "n_i": {"units": units.m**-3},
+                           })
+    def __init__(self, T_e, n_e, T_i, n_i, ion_particle, m_i=None, Z=None,
+                 B=0.0 * units.T, model='Braginskii',
+                 field_orientation='parallel',
+                 coulomb_log_ei=None, V_ei=None,
+                 coulomb_log_ii=None, V_ii=None,
+                 hall_e=None, hall_i=None,
+                 mu=None, theta=None):
+        # check the model
+        self.model = model.lower()  # string inputs should be case insensitive
+        valid_models = ['braginskii',
+                        'spitzer',
+                        'spitzer-harm',
+                        'ji-held',
+                        ]
+        is_valid_model = self.model in valid_models
+        if not is_valid_model:
+            raise ValueError(f"Unknown transport model '{self.model}'")
+
+        # check the field orientation
+        self.field_orientation = field_orientation.lower()
+        valid_fields = ['parallel', 'par',
+                        'perpendicular', 'perp',
+                        'cross',
+                        'all',
+                        ]
+        is_valid_field = self.field_orientation in valid_fields
+        if not is_valid_field:
+            raise ValueError(f"Unknown field orientation "
+                             f"'{self.field_orientation}'")
+
+        # density and temperature units have already been checked by decorator
+        # so just convert
+        self.T_e = T_e.to(units.K, equivalencies=units.temperature_energy())
+        self.T_i = T_i.to(units.K, equivalencies=units.temperature_energy())
+        self.n_e = n_e.to(units.m**-3)
+        self.n_i = n_i.to(units.m**-3)
+
+        # get ion mass and charge state
+        if m_i is None:
+            try:
+                self.m_i = atomic.ion_mass(ion_particle)
+            except Exception:
+                raise ValueError(f"Unable to find mass of particle: "
+                                 f"{ion_particle} in classical_transport")
+        else:
+            self.m_i = m_i.to(units.kg)
+        if Z is None:
+            try:
+                self.Z = atomic.charge_state(ion_particle)
+            except Exception:
+                raise ValueError(f"Unable to find charge of particle: "
+                                 f"{ion_particle} in classical_transport.")
+        else:
+            # red alert: the user has input a Z
+            self.Z = Z
+            # TODO: we need to make sure Lemmatum's z_mean is implemented here
+            # if it's not available for a particular model, they'll complain
+            # later
+            if Z < 0:
+                raise ValueError("Z not allowed to be negative")
+
+        # decide on the particle string for the electrons
+        self.e_particle = 'e'
+        self.ion_particle = ion_particle
+
+        # save other arguments
+        self.B = B
+        self.V_ei = V_ei
+        self.V_ii = V_ii
+
+        # calculate Coulomb logs if not forced in input
+        if coulomb_log_ei:
+            self.coulomb_log_ei = coulomb_log_ei
+        else:
+            self.coulomb_log_ei = Coulomb_logarithm(
+                T_e, n_e, [self.e_particle, ion_particle], V_ei)
+        if self.coulomb_log_ei < 4:
+            warnings.warn(
+                f"coulomb_log_ei is {self.coulomb_log_ei}, you might "
+                "have strong coupling effects",
+                utils.PhysicsWarning)
+        if self.coulomb_log_ei < 1:
+            raise utils.PhysicsError(
+                f"coulomb_log_ei is {self.coulomb_log_ei}, less than 1")
+
+        if coulomb_log_ii is not None:
+            self.coulomb_log_ii = coulomb_log_ii
+        else:
+            # TODO make comment below more clear?
+            self.coulomb_log_ii = Coulomb_logarithm(T_i,
+                                                    n_e,  # this is not a typo!
+                                                    [ion_particle,
+                                                     ion_particle],
+                                                    V_ii)
+
+        if self.coulomb_log_ii < 4:
+            warnings.warn(
+                f"coulomb_log_ii is {self.coulomb_log_ii}, you might "
+                "have strong coupling effects",
+                utils.PhysicsWarning)
+        if self.coulomb_log_ii < 1:
+            raise utils.PhysicsError(
+                f"coulomb_log_ii is {self.coulomb_log_ii}, less than 1")
+
+        # calculate Hall parameters if not forced in input
+        if hall_e is not None:
+            self.hall_e = hall_e
+        else:
+            self.hall_e = Hall_parameter(
+                n_e,
+                T_e,
+                B,
+                self.e_particle,
+                ion_particle,
+                coulomb_log_ei,
+                V_ei)
+        if hall_i is not None:
+            self.hall_i = hall_i
+        else:
+            self.hall_i = Hall_parameter(
+                n_i, T_i, B, ion_particle, ion_particle, coulomb_log_ii, V_ii)
+        # set up the ion non-dimensional coefficients for the Ji-Held model
+        if mu is not None:
+            self.mu = mu
+        else:
+            self.mu = 0  # disable the JH special features by default
+#            self.mu = m_e / self.m_i  # enable the JH special features
+        if theta is not None:
+            self.theta = theta
+        else:
+            self.theta = self.T_e / self.T_i
+
+    def resistivity(self):
+        """
+        Calculate the resistivity.
+
+        Returns
+        -------
+        astropy.units.quantity.Quantity
+        """
+        alpha_hat = _nondim_resistivity(self.hall_e, self.Z, self.e_particle,
+                                        self.model,
+                                        self.field_orientation)
+        tau_e = 1 / collision_rate_electron_ion(self.T_e, self.n_e,
+                                                self.ion_particle,
+                                                self.coulomb_log_ei,
+                                                self.V_ei)
+
+        alpha = alpha_hat / (self.n_e * e**2 * tau_e / m_e)
+        return alpha.to(units.ohm * units.m)
+
+    def thermoelectric_conductivity(self):
+        """
+        Calculate the thermoelectric conductivity.
+
+        Returns
+        -------
+        astropy.units.quantity.Quantity
+        """
+        beta_hat = _nondim_te_conductivity(self.hall_e,
+                                           self.Z,
+                                           self.e_particle,
+                                           self.model,
+                                           self.field_orientation)
+        beta = beta_hat * units.s / units.s  # yay! already dimensionless
+        return beta
+
+    def ion_thermal_conductivity(self):
+        """
+        Calculate the thermal conductivity for ions.
+
+        Returns
+        -------
+        astropy.units.quantity.Quantity
+        """
+        kappa_hat = _nondim_thermal_conductivity(self.hall_i, self.Z,
+                                                 self.ion_particle,
+                                                 self.model,
+                                                 self.field_orientation,
+                                                 self.mu, self.theta)
+        tau_i = 1 / collision_rate_ion_ion(self.T_i, self.n_i,
+                                           self.ion_particle,
+                                           self.coulomb_log_ii,
+                                           self.V_ii)
+        kappa = kappa_hat * (self.n_i * k_B**2 * self.T_i * tau_i / self.m_i)
+        return kappa.to(units.W / units.m / units.K)
+
+    def electron_thermal_conductivity(self):
+        """
+        Calculate the thermal conductivity for electrons.
+
+        Returns
+        -------
+        astropy.units.quantity.Quantity
+        """
+        kappa_hat = _nondim_thermal_conductivity(self.hall_e, self.Z,
+                                                 self.e_particle, self.model,
+                                                 self.field_orientation,
+                                                 self.mu, self.theta)
+        tau_e = 1 / collision_rate_electron_ion(self.T_e, self.n_e,
+                                                self.ion_particle,
+                                                self.coulomb_log_ei, self.V_ei)
+        kappa = kappa_hat * (self.n_e * k_B**2 * self.T_e * tau_e / m_e)
+        return kappa.to(units.W / units.m / units.K)
+
+    def ion_viscosity(self):
+        """
+        Calculate the ion viscosity.
+
+        Returns
+        -------
+        astropy.units.quantity.Quantity
+        """
+        eta_hat = _nondim_viscosity(self.hall_i,
+                                    self.Z,
+                                    self.ion_particle,
+                                    self.model,
+                                    self.field_orientation,
+                                    self.mu,
+                                    self.theta)
+        tau_i = 1 / collision_rate_ion_ion(self.T_i, self.n_i,
+                                           self.ion_particle,
+                                           self.coulomb_log_ii,
+                                           self.V_ii)
+        common_factor = self.n_i * k_B * self.T_i * tau_i
+        if np.isclose(self.hall_i, 0, rtol=1e-8):
+            eta1 = (eta_hat[0] * common_factor,
+                    eta_hat[1] * common_factor,
+                    eta_hat[2] * common_factor,
+                    eta_hat[3] * common_factor,
+                    eta_hat[4] * common_factor)
+        else:
+            eta1 = (eta_hat[0] * common_factor,
+                    eta_hat[1] * common_factor / self.hall_i**2,
+                    eta_hat[2] * common_factor / self.hall_i**2,
+                    eta_hat[3] * common_factor / self.hall_i,
+                    eta_hat[4] * common_factor / self.hall_i)
+        if eta1[0].unit == eta1[2].unit == eta1[4].unit:
+            unit_val = eta1[0].unit
+            eta = (np.array((eta1[0].value,
+                             eta1[1].value,
+                             eta1[2].value,
+                             eta1[3].value,
+                             eta1[4].value)) * unit_val).to(units.Pa * units.s)
+        return eta
+
+    def electron_viscosity(self):
+        """
+        Calculate the electron viscosity.
+
+        Returns
+        -------
+        astropy.units.quantity.Quantity
+        """
+        eta_hat = _nondim_viscosity(self.hall_e,
+                                    self.Z,
+                                    self.e_particle,
+                                    self.model,
+                                    self.field_orientation,
+                                    self.mu,
+                                    self.theta)
+        tau_e = 1 / collision_rate_electron_ion(self.T_e,
+                                                self.n_e,
+                                                self.ion_particle,
+                                                self.coulomb_log_ei,
+                                                self.V_ei)
+        common_factor = (self.n_e * k_B * self.T_e * tau_e)
+        if np.isclose(self.hall_e, 0, rtol=1e-8):
+            eta1 = (eta_hat[0] * common_factor,
+                    eta_hat[1] * common_factor,
+                    eta_hat[2] * common_factor,
+                    eta_hat[3] * common_factor,
+                    eta_hat[4] * common_factor)
+        else:
+            eta1 = (eta_hat[0] * common_factor,
+                    eta_hat[1] * common_factor / self.hall_e**2,
+                    eta_hat[2] * common_factor / self.hall_e**2,
+                    eta_hat[3] * common_factor / self.hall_e,
+                    eta_hat[4] * common_factor / self.hall_e)
+        if eta1[0].unit == eta1[2].unit and eta1[2].unit == eta1[4].unit:
+            unit_val = eta1[0].unit
+            eta = (np.array((eta1[0].value,
+                             eta1[1].value,
+                             eta1[2].value,
+                             eta1[3].value,
+                             eta1[4].value)) * unit_val).to(units.Pa * units.s)
+        return eta
+
+    def all_variables(self) -> dict:
+        """
+        Return all transport variables as a dictionary.
+
+        Returns
+        -------
+        dict
+        """
+        d = {'resistivity': self.resistivity(),
+             'thermoelectric_conductivity': self.thermoelectric_conductivity(),
+             'electron_thermal_conductivity': self.electron_thermal_conductivity(),
+             'electron_viscosity': self.electron_viscosity()}
+        if self.model != "spitzer":
+            d = dict(d, **{'ion_thermal_conductivity': self.ion_thermal_conductivity(),
+                  'ion_viscosity': self.ion_viscosity()})
+        return d
+
+
+def _nondim_thermal_conductivity(hall, Z, particle, model, field_orientation,
+                                 mu=None, theta=None):
+    """calculate dimensionless classical thermal conductivity coefficients
+
+    This function is a switchboard / wrapper that calls the appropriate
+    model-specific functions depending on which model is specified and which
+    type of particle (electron or ion) is input. Non-electrons are assumed to
+    be ions.
+    """
+    if _is_electron(particle):
+        if model == 'spitzer-harm' or model == 'spitzer':
+            kappa_hat = _nondim_tc_e_spitzer(Z)
+        elif model == 'braginskii':
+            kappa_hat = _nondim_tc_e_braginskii(hall, Z, field_orientation)
+        elif model == 'ji-held':
+            kappa_hat = _nondim_tc_e_ji_held(hall, Z, field_orientation)
+        else:
+            raise ValueError(f"Unrecognized model '{model}' in "
+                             "_nondim_thermal_conductivity")
+    else:
+        if model == 'braginskii':
+            kappa_hat = _nondim_tc_i_braginskii(hall, field_orientation)
+        elif model == 'ji-held':
+            kappa_hat = _nondim_tc_i_ji_held(hall, Z, mu, theta,
+                                             field_orientation)
+        elif model == 'spitzer-harm' or model == 'spitzer':
+            raise NotImplementedError("Ion thermal conductivity is not "
+                                      "implemented in the Spitzer model.")
+        else:
+            raise ValueError(f"Unrecognized model '{model}' in "
+                             "_nondim_thermal_conductivity")
+    return kappa_hat
+
+
+def _nondim_viscosity(hall, Z, particle, model, field_orientation,
+                      mu=None, theta=None):
+    """calculate dimensionless classical viscosity coefficients
+
+    This function is a switchboard / wrapper that calls the appropriate
+    model-specific functions depending on which model is specified and which
+    type of particle (electron or ion) is input. Non-electrons are assumed to
+    be ions.
+    """
+
+    if _is_electron(particle):
+        if model == 'braginskii':
+            eta_hat = _nondim_visc_e_braginskii(hall, Z)
+        elif model == 'ji-held':
+            eta_hat = _nondim_visc_e_ji_held(hall, Z)
+        else:
+            raise ValueError(f"Unrecognized model '{model}' in "
+                             "_nondim_viscosity")
+    else:
+        if model == 'braginskii':
+            eta_hat = _nondim_visc_i_braginskii(hall)
+        elif model == 'ji-held':
+            eta_hat = _nondim_visc_i_ji_held(hall, Z, mu, theta)
+        elif model == 'spitzer-harm' or model == 'spitzer':
+            raise NotImplementedError("Ion viscosity is not "
+                                      "implemented in the Spitzer model.")
+        else:
+            raise ValueError(f"Unrecognized model '{model}' in "
+                             "_nondim_viscosity")
+    return eta_hat
+
+
+def _nondim_resistivity(hall, Z, particle, model, field_orientation):
+    """calculate dimensionless classical resistivity coefficients
+
+    This function is a switchboard / wrapper that calls the appropriate
+    model-specific functions depending on which model is specified.
+    """
+
+    if model == 'spitzer-harm' or model == 'spitzer':
+        alpha_hat = _nondim_resist_spitzer(Z, field_orientation)
+    elif model == 'braginskii':
+        alpha_hat = _nondim_resist_braginskii(hall, Z, field_orientation)
+    elif model == 'ji-held':
+        alpha_hat = _nondim_resist_ji_held(hall, Z, field_orientation)
+    else:
+        raise ValueError(f"Unrecognized model '{model}' in "
+                         "_nondim_resistivity")
+    return alpha_hat
+
+
+def _nondim_te_conductivity(hall, Z, particle, model, field_orientation):
+    """calculate dimensionless classical thermoelectric coefficients
+
+    This function is a switchboard / wrapper that calls the appropriate
+    model-specific functions depending on which model is specified.
+    """
+
+    if model == 'spitzer-harm' or model == 'spitzer':
+        beta_hat = _nondim_tec_spitzer(Z)
+    elif model == 'braginskii':
+        beta_hat = _nondim_tec_braginskii(hall, Z, field_orientation)
+    elif model == 'ji-held':
+        beta_hat = _nondim_tec_ji_held(hall, Z, field_orientation)
+    else:
+        raise ValueError(f"Unrecognized model '{model}' in "
+                         "_nondim_te_conductivity")
+    return beta_hat
+
+
+def _check_Z(allowed_Z, Z):
+    """determine if the input Z value is okay given the list of allowed_Z"""
+    # first, determine if arbitrary Z values are allowed in the theory
+    arbitrary_Z_allowed = False
+    the_arbitrary_idx = np.nan
+    for idx, allowed_Z_val in enumerate(allowed_Z):
+        if allowed_Z_val == 'arbitrary':
+            arbitrary_Z_allowed = True
+            the_arbitrary_idx = idx
+    # next, search the allowed_Z for a match to the current Z
+    Z_idx = np.nan
+    for idx, allowed_Z_val in enumerate(allowed_Z):
+        if Z == allowed_Z_val:
+            Z_idx = idx
+    # at this point we have looped through allowed_Z and either found a match
+    # or not. If we haven't found a match and arbitrary Z aren't allowed, break
+    if np.isnan(Z_idx) and not arbitrary_Z_allowed:
+        raise utils.PhysicsError(f"{Z} is not an allowed Z value")
+    elif np.isnan(Z_idx):  # allowed arbitrary Z
+        # return a Z_idx pointing to the 'arbitrary'
+        Z_idx = the_arbitrary_idx
+    else:  # allowed Z
+        pass
+    # we have got the Z_idx we want. return
+    return Z_idx
+
+
+def _get_spitzer_harm_coeffs(Z):
+    """return numerical coefficients from Spitzer-Harm '53
+
+    Table III, Spitzer and Harm, Phys. Rev. Vol 89, 5, 1953
+    """
+    allowed_Z = [1, 2, 4, 16, np.inf]
+    Z_idx = _check_Z(allowed_Z, Z)
+    gamma_E = [0.5816, 0.6833, 0.7849, 0.9225, 1.0000]
+    gamma_T = [0.2727, 0.4137, 0.5714, 0.8279, 1.0000]
+    delta_E = [0.4652, 0.5787, 0.7043, 0.8870, 1.0000]
+    delta_T = [0.2252, 0.3563, 0.5133, 0.7907, 1.0000]
+    return gamma_E[Z_idx], gamma_T[Z_idx], delta_E[Z_idx], delta_T[Z_idx]
+
+
+def _nondim_tc_e_spitzer(Z):
+    """dimensionless electron thermal conductivity - Spitzer
+
+    This result is for parallel field or unmagnetized plasma only.
+    """
+    (gamma_E, gamma_T, delta_E, delta_T) = _get_spitzer_harm_coeffs(Z)
+    kappa = (64 / np.pi) * delta_T * \
+            (5 / 3 - (gamma_T * delta_E) / (delta_T * gamma_E))
+    return kappa
+
+
+def _nondim_resist_spitzer(Z, field_orientation):
+    """dimensionless resistivity - Spitzer
+
+    These are results for both parallel-field / unmagnetized plasmas as well
+    as perpendicular-field / strongly magnetized plasma. Summary description
+    in Physics of Fully Ionized Gases, Spitzer"""
+
+    alpha_perp = 1
+    if field_orientation == 'perpendicular' or field_orientation == 'perp':
+        return alpha_perp
+
+    (gamma_E, gamma_T, delta_E, delta_T) = _get_spitzer_harm_coeffs(Z)
+    alpha_par = (3 * np.pi / 32) * (1 / gamma_E)
+    if field_orientation == 'parallel' or field_orientation == 'par':
+        return alpha_par
+#        alpha_par = 0.5064 # Z = 1
+
+    if field_orientation == 'all':
+        return alpha_par, alpha_perp
+
+
+def _nondim_tec_spitzer(Z):
+    """dimensionless thermoelectric conductivity - Spitzer
+
+    This result is for parallel field or unmagnetized plasma only.
+    """
+    (gamma_E, gamma_T, delta_E, delta_T) = _get_spitzer_harm_coeffs(Z)
+    beta = 5 / 2 * (8 / 5 * (delta_E / gamma_E) - 1)
+#    beta = 0.703
+    return beta
+
+
+def _nondim_tc_e_braginskii(hall, Z, field_orientation):
+    """dimensionless electron thermal conductivity - Braginskii
+
+    Braginskii, S. I. "Transport processes in a plasma." Reviews of plasma
+    physics 1 (1965): 205.
+    """
+
+    allowed_Z = [1, 2, 3, 4, np.inf]
+    Z_idx = _check_Z(allowed_Z, Z)
+
+    delta_0 = [3.7703, 1.0465, 0.5814, 0.4106, 0.0961]
+    delta_1 = [14.79, 10.80, 9.618, 9.055, 7.482]
+    gamma_1_prime = [4.664, 3.957, 3.721, 3.604, 3.25]
+    gamma_0_prime = [11.92, 5.118, 3.525, 2.841, 1.20]
+    gamma_1_doubleprime = [2.500, 2.500, 2.500, 2.500, 2.500]
+    gamma_0_doubleprime = [21.67, 15.37, 13.53, 12.65, 10.23]
+
+    gamma_0 = gamma_0_prime[Z_idx] / delta_0[Z_idx]
+    Delta = hall**4 + delta_1[Z_idx] * hall**2 + delta_0[Z_idx]
+    kappa_par = gamma_0
+    if field_orientation == 'parallel' or field_orientation == 'par':
+        return kappa_par
+
+    kappa_perp = (gamma_1_prime[Z_idx] * hall **
+                  2 + gamma_0_prime[Z_idx]) / Delta
+    if field_orientation == 'perpendicular' or field_orientation == 'perp':
+        return kappa_perp
+
+    kappa_cross = (gamma_1_doubleprime[Z_idx] * hall**3 +
+                   gamma_0_doubleprime[Z_idx] * hall) / Delta
+    if field_orientation == 'cross':
+        return kappa_cross
+
+    if field_orientation == 'all':
+        return np.array((kappa_par, kappa_perp, kappa_cross))
+
+
+def _nondim_tc_i_braginskii(hall, field_orientation):
+    """dimensionless ion thermal conductivity - Braginskii
+
+    Braginskii, S. I. "Transport processes in a plasma." Reviews of plasma
+    physics 1 (1965): 205.
+    """
+
+    kappa_par_coeff_0 = 3.906
+    kappa_par = kappa_par_coeff_0
+    if field_orientation == 'parallel' or field_orientation == 'par':
+        return kappa_par
+
+    kappa_perp_coeff_2 = 2.0
+    kappa_perp_coeff_0 = 2.645
+    delta_1 = 2.70
+    delta_0 = 0.677
+    Delta = hall**4 + delta_1 * hall**2 + delta_0
+    kappa_perp = (kappa_perp_coeff_2 * hall**2 +
+                  kappa_perp_coeff_0) / Delta
+    if field_orientation == 'perpendicular' or field_orientation == 'perp':
+        return kappa_perp
+
+    kappa_cross_coeff_3 = 2.5
+    kappa_cross_coeff_1 = 4.65
+    kappa_cross = (kappa_cross_coeff_3 * hall**3 +
+                   kappa_cross_coeff_1 * hall) / Delta
+    if field_orientation == 'cross':
+        return kappa_cross
+
+    if field_orientation == 'all':
+        return np.array((kappa_par, kappa_perp, kappa_cross))
+
+
+def _nondim_visc_e_braginskii(hall, Z):
+    """dimensionless electron viscosity - Braginskii
+
+    Braginskii, S. I. "Transport processes in a plasma." Reviews of plasma
+    physics 1 (1965): 205.
+    """
+    allowed_Z = [1]
+    _check_Z(allowed_Z, Z)
+    eta_prime_0 = 0.733
+    eta_doubleprime_2 = 2.05
+    eta_doubleprime_0 = 8.50
+    eta_tripleprime_2 = 1.0
+    eta_tripleprime_0 = 7.91
+    delta_1 = 13.8
+    delta_0 = 11.6
+    eta_0_e = eta_prime_0
+
+    def f_eta_2(hall):
+        Delta = hall**4 + delta_1 * hall**2 + delta_0
+        return (eta_doubleprime_2 * hall**2 + eta_doubleprime_0) / Delta
+    eta_2_e = f_eta_2(hall)
+    eta_1_e = f_eta_2(2 * hall)
+
+    def f_eta_4(hall):
+        Delta = hall**4 + delta_1 * hall**2 + delta_0
+        return (eta_tripleprime_2 * hall**3 +
+                eta_tripleprime_0 * hall) / Delta
+    eta_4_e = f_eta_4(hall)
+    eta_3_e = f_eta_4(2 * hall)
+    return np.array((eta_0_e, eta_1_e, eta_2_e, eta_3_e, eta_4_e))
+
+
+def _nondim_visc_i_braginskii(hall):
+    """dimensionless ion viscosity - Braginskii
+
+    Braginskii, S. I. "Transport processes in a plasma." Reviews of plasma
+    physics 1 (1965): 205.
+    """
+    eta_prime_0 = 0.96
+    eta_doubleprime_2 = 6 / 5
+    eta_doubleprime_0 = 2.23
+    eta_tripleprime_2 = 1.0
+    eta_tripleprime_0 = 2.38
+    delta_1 = 4.03
+    delta_0 = 2.33
+    eta_0_i = eta_prime_0
+
+    def f_eta_2(hall):
+        Delta = hall**4 + delta_1 * hall**2 + delta_0
+        return (eta_doubleprime_2 * hall**2 + eta_doubleprime_0) / Delta
+    eta_2_i = f_eta_2(hall)
+    eta_1_i = f_eta_2(2 * hall)
+
+    def f_eta_4(hall):
+        Delta = hall**4 + delta_1 * hall**2 + delta_0
+        return (eta_tripleprime_2 * hall**3 +
+                eta_tripleprime_0 * hall) / Delta
+    eta_4_i = f_eta_4(hall)
+    eta_3_i = f_eta_4(2 * hall)
+    return np.array((eta_0_i, eta_1_i, eta_2_i, eta_3_i, eta_4_i))
+
+
+def _nondim_resist_braginskii(hall, Z, field_orientation):
+    """dimensionless resistivity - Braginskii
+
+    Braginskii, S. I. "Transport processes in a plasma." Reviews of plasma
+    physics 1 (1965): 205.
+    """
+
+    allowed_Z = [1, 2, 3, 4, np.inf]
+    Z_idx = _check_Z(allowed_Z, Z)
+
+#    alpha_0 = 0.5129
+    delta_0 = [3.7703, 1.0465, 0.5814, 0.4106, 0.0961]
+    delta_1 = [14.79, 10.80, 9.618, 9.055, 7.482]
+    alpha_1_prime = [6.416, 5.523, 5.226, 5.077, 4.63]
+    alpha_0_prime = [1.837, 0.5956, 0.3515, 0.2566, 0.0678]
+    alpha_1_doubleprime = [1.704, 1.704, 1.704, 1.704, 1.704]
+    alpha_0_doubleprime = [0.7796, 0.3439, 0.2400, 0.1957, 0.0940]
+
+    alpha_0 = 1 - alpha_0_prime[Z_idx] / delta_0[Z_idx]
+    Delta = hall**4 + delta_1[Z_idx] * hall**2 + delta_0[Z_idx]
+    alpha_par = alpha_0
+    if field_orientation == 'parallel' or field_orientation == 'par':
+        return alpha_par
+
+    alpha_perp = (1 - (alpha_1_prime[Z_idx] * hall**2 +
+                       alpha_0_prime[Z_idx]) / Delta)
+    if field_orientation == 'perpendicular' or field_orientation == 'perp':
+        return alpha_perp
+
+    alpha_cross = (alpha_1_doubleprime[Z_idx] * hall**3 +
+                   alpha_0_doubleprime[Z_idx] * hall) / Delta
+    if field_orientation == 'cross':
+        return alpha_cross
+
+    if field_orientation == 'all':
+        return np.array((alpha_par, alpha_perp, alpha_cross))
+
+
+def _nondim_tec_braginskii(hall, Z, field_orientation):
+    """dimensionless thermoelectric conductivity - Braginskii
+
+    Braginskii, S. I. "Transport processes in a plasma." Reviews of plasma
+    physics 1 (1965): 205.
+    """
+
+    allowed_Z = [1, 2, 3, 4, np.inf]
+    Z_idx = _check_Z(allowed_Z, Z)
+
+    delta_0 = [3.7703, 1.0465, 0.5814, 0.4106, 0.0961]
+    delta_1 = [14.79, 10.80, 9.618, 9.055, 7.482]
+    beta_1_prime = [5.101, 4.450, 4.233, 4.124, 3.798]
+    beta_0_prime = [2.681, 0.9473, 0.5905, 0.4478, 0.1461]
+    beta_1_doubleprime = [1.5, 1.5, 1.5, 1.5, 1.5]
+    beta_0_doubleprime = [3.053, 1.784, 1.442, 1.285, 0.877]
+
+    Delta = hall**4 + delta_1[Z_idx] * hall**2 + delta_0[Z_idx]
+    beta_0 = beta_0_prime[Z_idx] / delta_0[Z_idx]
+#    beta_0 = 0.7110
+
+    beta_par = beta_0
+    if field_orientation == 'parallel' or field_orientation == 'par':
+        return beta_par
+
+    beta_perp = (beta_1_prime[Z_idx] * hall**2 +
+                 beta_0_prime[Z_idx]) / Delta
+    if field_orientation == 'perpendicular' or field_orientation == 'perp':
+        return beta_perp
+
+    beta_cross = (beta_1_doubleprime[Z_idx] * hall**3 +
+                  beta_0_doubleprime[Z_idx] * hall) / Delta
+    if field_orientation == 'cross':
+        return beta_cross
+
+    if field_orientation == 'all':
+        return np.array((beta_par, beta_perp, beta_cross))
+
+
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#               Abandon all hope, ye who enter here
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+
+
+def _nondim_tc_e_ji_held(hall, Z, field_orientation):
+    """dimensionless electron thermal conductivity - Ji-Held
+
+    Ji, Jeong-Young, and Eric D. Held. "Closure and transport theory for
+    high-collisionality electron-ion plasmas." Physics of Plasmas 20.4 (2013):
+    042114.
+    """
+
+    allowed_Z = [1, 2, 'arbitrary']
+    Z_idx = _check_Z(allowed_Z, Z)
+    r = np.abs(Z * hall)
+
+    def f_kappa_par_e(Z):
+        numerator = 13.5 * Z**2 + 54.4 * Z + 25.2
+        denominator = Z**3 + 8.35 * Z**2 + 15.2 * Z + 4.51
+        return numerator / denominator
+
+    def f_kappa_0(Z):
+        numerator = 9.91 * Z**3 + 75.3 * Z**2 + 518 * Z + 333
+        denominator = 1000
+        return numerator / denominator
+
+    def f_kappa_1(Z):
+        numerator = 0.211 * Z**3 + 12.7 * Z**2 + 48.4 * Z + 6.45
+        denominator = Z + 57.1
+        return numerator / denominator
+
+    def f_kappa_2(Z):
+        numerator = 0.932 * Z**(7 / 3) + 0.135 * Z**2 + 12.3 * Z + 8.77
+        denominator = Z + 4.84
+        return numerator / denominator
+
+    def f_kappa_3(Z):
+        numerator = 0.246 * Z**3 + 2.65 * Z**2 - 92.8 * Z - 1.96
+        denominator = Z**2 + 19.9 * Z + 35.3
+        return numerator / denominator
+
+    def f_kappa_4(Z):
+        numerator = 2.76 * Z**(5 / 3) - 0.836 * Z**(2 / 3) - 0.0611
+        denominator = Z - 0.214
+        return numerator / denominator
+
+    def f_k_0(Z):
+        numerator = 0.0396 * Z**3 + 46.3 * Z + 176
+        denominator = 1000
+        return numerator / denominator
+
+    def f_k_1(Z):
+        numerator = 15.4 * Z**3 + 188 * Z**2 + 240 * Z + 35.3
+        denominator = 1000 * Z + 397
+        return numerator / denominator
+
+    def f_k_2(Z):
+        numerator = -0.159 * Z**2 - 12.5 * Z + 34.1
+        denominator = Z**(2 / 3) + 0.741 * Z**(1 / 3) + 31.0
+        return numerator / denominator
+
+    def f_k_3(Z):
+        numerator = 0.431 * Z**2 + 3.69 * Z + 0.0314
+        denominator = Z + 3.62
+        return numerator / denominator
+
+    def f_k_4(Z):
+        numerator = 0.0258 * Z**2 - 1.63 * Z + 0.711
+        denominator = Z**(4 / 3) + 4.36 * Z**(2 / 3) + 2.75
+        return numerator / denominator
+
+    def f_k_5(Z):
+        numerator = Z**3 + 11.9 * Z**2 + 28.8 * Z + 9.07
+        denominator = 173 * Z + 133
+        return numerator / denominator
+
+    kappa_par_e = [3.204, 2.464, f_kappa_par_e(Z)]
+    kappa_0 = [0.936, 1.749, f_kappa_0(Z)]
+    kappa_1 = [1.166, 2.635, f_kappa_1(Z)]
+    kappa_2 = [3.791, 5.644, f_kappa_2(Z)]
+    kappa_3 = [-1.635, -2.212, f_kappa_3(Z)]
+    kappa_4 = [2.370, 4.129, f_kappa_4(Z)]
+    k_0 = [0.222, 0.269, f_k_0(Z)]
+    k_1 = [0.343, 0.580, f_k_1(Z)]
+    k_2 = [0.655, 0.252, f_k_2(Z)]
+    k_3 = [0.899, 1.626, f_k_3(Z)]
+    k_4 = [-0.110, -0.201, f_k_4(Z)]
+    k_5 = [0.166, 0.255, f_k_5(Z)]
+
+    kappa_par = kappa_par_e[Z_idx]
+    if field_orientation == 'parallel' or field_orientation == 'par':
+        return Z * kappa_par
+
+    def f_kappa_perp(Z_idx):
+        numerator = (13 / 4 * Z + np.sqrt(2)) * r + \
+            kappa_0[Z_idx] * kappa_par_e[Z_idx]
+        denominator = r ** 3 + \
+            kappa_4[Z_idx] * r ** (7 / 3) + \
+            kappa_3[Z_idx] * r ** 2 + \
+            kappa_2[Z_idx] * r ** (5 / 3) + \
+            kappa_1[Z_idx] * r + \
+            kappa_0[Z_idx]
+        return numerator / denominator
+
+    kappa_perp = f_kappa_perp(Z_idx)
+    if field_orientation == 'perpendicular' or field_orientation == 'perp':
+        return Z * kappa_perp
+
+    def f_kappa_cross(Z_idx):
+        numerator = r * (5 / 2 * r + k_0[Z_idx] / k_5[Z_idx])
+        denominator = r ** 3 + \
+            k_4[Z_idx] * r ** (7 / 3) + \
+            k_3[Z_idx] * r ** 2 + \
+            k_2[Z_idx] * r ** (5 / 3) + \
+            k_1[Z_idx] * r + \
+            k_0[Z_idx]
+        return numerator / denominator
+
+    kappa_cross = f_kappa_cross(Z_idx)
+    if field_orientation == 'cross':
+        return Z * kappa_cross
+
+    if field_orientation == 'all':
+        return np.array((Z * kappa_par, Z * kappa_perp, Z * kappa_cross))
+
+
+def _nondim_resist_ji_held(hall, Z, field_orientation):
+    """dimensionless resistivity - Ji-Held
+
+    Ji, Jeong-Young, and Eric D. Held. "Closure and transport theory for
+    high-collisionality electron-ion plasmas." Physics of Plasmas 20.4 (2013):
+    042114.
+    """
+
+    allowed_Z = [1, 2, 'arbitrary']
+    Z_idx = _check_Z(allowed_Z, Z)
+    r = np.abs(Z * hall)
+
+    def f_alpha_par_e(Z):
+        numerator = Z**(2 / 3)
+        denominator = 1.46 * Z**(2 / 3) - 0.330 * Z**(1 / 3) + 0.888
+        return 1 - numerator / denominator
+
+    def f_alpha_0(Z):
+        return 0.623 * Z**(5 / 3) - 2.61 * Z**(4 / 3) + 3.56 * Z + 0.557
+
+    def f_alpha_1(Z):
+        return 2.24 * Z**(2 / 3) - 1.11 * Z**(1 / 3) + 1.84
+
+    def f_alpha_2(Z):
+        return -0.0983 * Z**(1 / 3) + 0.0176
+
+    def f_a_0(Z):
+        return 0.0759 * Z**(8 / 3) + 0.897 * Z**2 + 2.06 * Z + 1.06
+
+    def f_a_1(Z):
+        return 2.18 * Z**(5 / 3) + 5.31 * Z + 3.73
+
+    def f_a_2(Z):
+        return 7.41 * Z + 1.11 * Z**(2 / 3) - 1.17
+
+    def f_a_3(Z):
+        return 3.89 * Z**(2 / 3) - 4.51 * Z**(1 / 3) + 6.76
+
+    def f_a_4(Z):
+        return 2.26 * Z**(1 / 3) + 0.281
+
+    def f_a_5(Z):
+        return 1.18 * Z**(5 / 3) - 1.03 * Z**(4 / 3) + 3.60 * Z + 1.32
+
+    alpha_par_e = [0.504, 0.431, f_alpha_par_e(Z)]
+    alpha_0 = [2.130, 3.078, f_alpha_0(Z)]
+    alpha_1 = [2.970, 3.997, f_alpha_1(Z)]
+    alpha_2 = [-0.081, -0.106, f_alpha_2(Z)]
+    a_0 = [4.093, 9.250, f_a_0(Z)]
+    a_1 = [11.22, 21.27, f_a_1(Z)]
+    a_2 = [7.350, 15.41, f_a_2(Z)]
+    a_3 = [6.140, 7.253, f_a_3(Z)]
+    a_4 = [2.541, 3.128, f_a_4(Z)]
+    a_5 = [5.070, 9.671, f_a_5(Z)]
+
+    alpha_par = alpha_par_e[Z_idx]
+    if field_orientation == 'parallel' or field_orientation == 'par':
+        return alpha_par
+
+    def f_alpha_perp(Z_idx):
+        numerator = 1.46 * Z**(2 / 3) * r + \
+            alpha_0[Z_idx] * (1 - alpha_par_e[Z_idx])
+        denominator = r**(5 / 3) + \
+            alpha_2[Z_idx] * r**(4 / 3) + \
+            alpha_1[Z_idx] * r + \
+            alpha_0[Z_idx]
+        return 1 - numerator / denominator
+
+    alpha_perp = f_alpha_perp(Z_idx)
+    if field_orientation == 'perpendicular' or field_orientation == 'perp':
+        return alpha_perp
+
+    def f_alpha_cross(Z_idx):
+        numerator = Z**(2 / 3) * r * (2.53 * r + a_0[Z_idx] / a_5[Z_idx])
+        denominator = r ** (8 / 3) + \
+            a_4[Z_idx] * r ** (7 / 3) + \
+            a_3[Z_idx] * r ** 2 + \
+            a_2[Z_idx] * r ** (5 / 3) + \
+            a_1[Z_idx] * r + \
+            a_0[Z_idx]
+        return numerator / denominator
+
+    alpha_cross = f_alpha_cross(Z_idx)
+    if field_orientation == 'cross':
+        return alpha_cross
+
+    if field_orientation == 'all':
+        return np.array((alpha_par, alpha_perp, alpha_cross))
+
+
+def _nondim_tec_ji_held(hall, Z, field_orientation):
+    """dimensionless thermoelectric conductivity - Ji-Held
+
+    Ji, Jeong-Young, and Eric D. Held. "Closure and transport theory for
+    high-collisionality electron-ion plasmas." Physics of Plasmas 20.4 (2013):
+    042114.
+    """
+
+    allowed_Z = [1, 2, 'arbitrary']
+    Z_idx = _check_Z(allowed_Z, Z)
+    r = np.abs(Z * hall)
+
+    def f_beta_par_e(Z):
+        numerator = Z**(5 / 3)
+        denominator = 0.693 * Z**(5 / 3) - 0.279 * Z**(4 / 3) + Z + 0.01
+        return numerator / denominator
+
+    def f_beta_0(Z):
+        return 0.156 * Z**(8 / 3) + 0.994 * Z**2 + 3.21 * Z - 0.84
+
+    def f_beta_1(Z):
+        return 3.69 * Z**(5 / 3) + 3.77 * Z + 0.77
+
+    def f_beta_2(Z):
+        return 9.43 * Z + 4.22 * Z**(2 / 3) - 12.9 * Z**(1 / 3) + 4.56
+
+    def f_beta_3(Z):
+        return 2.70 * Z**(2 / 3) + 1.46 * Z**(1 / 3) - 0.17
+
+    def f_beta_4(Z):
+        return 2.58 * Z**(1 / 3) + 0.17
+
+    def f_b_0(Z):
+        numerator = 6.87 * Z ** 3 + 78.2 * Z ** 2 + 623 * Z + 366
+        denominator = 1000
+        return numerator / denominator
+
+    def f_b_1(Z):
+        return 0.134 * Z**2 + 0.977 * Z + 0.17
+
+    def f_b_2(Z):
+        return 0.689 * Z**(4 / 3) - 0.377 * Z**(2 / 3) + \
+            3.94 * Z**(1 / 3) + 0.644
+
+    def f_b_3(Z):
+        return -0.109 * Z + 1.33 * Z**(2 / 3) - 3.80 * Z**(1 / 3) + 0.289
+
+    def f_b_4(Z):
+        return 2.46 * Z**(2 / 3) + 0.522
+
+    def f_b_5(Z):
+        return 0.102 * Z**2 + 0.746 * Z + 0.072 * Z**(1 / 3) + 0.211
+
+    beta_par_e = [0.702, 0.905, f_beta_par_e(Z)]
+    beta_0 = [3.520, 10.55, f_beta_0(Z)]
+    beta_1 = [8.230, 20.03, f_beta_1(Z)]
+    beta_2 = [5.310, 13.87, f_beta_2(Z)]
+    beta_3 = [3.990, 5.955, f_beta_3(Z)]
+    beta_4 = [2.750, 3.421, f_beta_4(Z)]
+    b_0 = [1.074, 1.980, f_b_0(Z)]
+    b_1 = [1.281, 2.660, f_b_1(Z)]
+    b_2 = [4.896, 6.746, f_b_2(Z)]
+    b_3 = [-2.290, -2.605, f_b_3(Z)]
+    b_4 = [2.982, 4.427, f_b_4(Z)]
+    b_5 = [1.131, 2.202, f_b_5(Z)]
+
+    beta_par = beta_par_e[Z_idx]
+    if field_orientation == 'parallel' or field_orientation == 'par':
+        return beta_par
+
+    def f_beta_perp(Z_idx):
+        numerator = 6.33 * Z**(5 / 3) * r + beta_0[Z_idx] * beta_par_e[Z_idx]
+        denominator = r ** (8 / 3) + \
+            beta_4[Z_idx] * r ** (7 / 3) + \
+            beta_3[Z_idx] * r ** 2 + \
+            beta_2[Z_idx] * r ** (5 / 3) + \
+            beta_1[Z_idx] * r + \
+            beta_0[Z_idx]
+        return numerator / denominator
+
+    beta_perp = f_beta_perp(Z_idx)
+    if field_orientation == 'perpendicular' or field_orientation == 'perp':
+        return beta_perp
+
+    def f_beta_cross(Z_idx):
+        numerator = Z * r * (3 / 2 * r + b_0[Z_idx] / b_5[Z_idx])
+        denominator = r ** 3 + \
+            b_4[Z_idx] * r ** (7 / 3) + \
+            b_3[Z_idx] * r ** 2 + \
+            b_2[Z_idx] * r ** (5 / 3) + \
+            b_1[Z_idx] * r + \
+            b_0[Z_idx]
+        return numerator / denominator
+
+    beta_cross = f_beta_cross(Z_idx)
+    if field_orientation == 'cross':
+        return beta_cross
+
+    if field_orientation == 'all':
+        return np.array((beta_par, beta_perp, beta_cross))
+
+
+def _nondim_visc_e_ji_held(hall, Z):
+    """dimensionless electron viscosity - Ji-Held
+
+    Ji, Jeong-Young, and Eric D. Held. "Closure and transport theory for
+    high-collisionality electron-ion plasmas." Physics of Plasmas 20.4 (2013):
+    042114.
+    """
+
+    allowed_Z = [1, 2, 'arbitrary']
+    Z_idx = _check_Z(allowed_Z, Z)
+    r = np.abs(Z * hall)
+
+    def f_eta_0_e(Z):
+        return 1 / (0.55 * Z + 0.083 * Z**(1 / 3) + 0.732)
+
+    def f_hprime_0(Z):
+        return 0.0699 * Z**3 + 0.558 * Z**2 + 1.66 * Z + 1.06
+
+    def f_hprime_1(Z):
+        return 0.657 * Z**2 + 1.42 * Z + 0.416
+
+    def f_hprime_2(Z):
+        return -0.369 * Z**(4 / 3) + 0.379 * Z + 0.339 * Z**(1 / 3) + 2.17
+
+    def f_hprime_3(Z):
+        return 2.16 * Z - 0.657 * Z**(1 / 3) + 0.0347
+
+    def f_hprime_4(Z):
+        return -0.0703 * Z**(2 / 3) - 0.224 * Z**(1 / 3) + 0.333
+
+    def f_h_0(Z):
+        return 0.0473 * Z**3 + 0.323 * Z**2 + 0.951 * Z + 0.407
+
+    def f_h_1(Z):
+        return 0.171 * Z**2 + 0.523 * Z + 0.336
+
+    def f_h_2(Z):
+        return 0.362 * Z**(4 / 3) + 0.178 * Z + 1.06 * Z**(1 / 3) + 1.26
+
+    def f_h_3(Z):
+        return 0.599 * Z + 0.106 * Z**(2 / 3) - 0.444 * Z**(1 / 3) - 0.161
+
+    def f_h_4(Z):
+        return -0.16 * Z**(2 / 3) + 0.06 * Z**(1 / 3) + 0.232
+
+    def f_h_5(Z):
+        return 0.183 * Z**2 + 0.714 * Z + 0.0375 * Z**(1 / 3) + 0.47
+
+    eta_0_e = [0.733, 0.516, f_eta_0_e(Z)]
+    hprime_0 = [3.348, 7.171, f_hprime_0(Z)]
+    hprime_1 = [2.493, 5.884, f_hprime_1(Z)]
+    hprime_2 = [2.519, 2.425, f_hprime_2(Z)]
+    hprime_3 = [1.538, 3.527, f_hprime_3(Z)]
+    hprime_4 = [0.039, -0.061, f_hprime_4(Z)]
+    h_0 = [1.728, 3.979, f_h_0(Z)]
+    h_1 = [1.030, 2.066, f_h_1(Z)]
+    h_2 = [2.860, 3.864, f_h_2(Z)]
+    h_3 = [0.100, 0.646, f_h_3(Z)]
+    h_4 = [0.132, 0.054, f_h_4(Z)]
+    h_5 = [1.405, 2.677, f_h_5(Z)]
+
+    eta_0 = eta_0_e[Z_idx]
+
+    def f_eta_2(Z_idx, r):
+        numerator = (6 / 5 * Z + 3 / 5 * np.sqrt(2)) * r + \
+            hprime_0[Z_idx] * eta_0_e[Z_idx]
+        denominator = r ** 3 + \
+            hprime_4[Z_idx] * r ** (7 / 3) + \
+            hprime_3[Z_idx] * r ** 2 + \
+            hprime_2[Z_idx] * r ** (5 / 3) + \
+            hprime_1[Z_idx] * r + \
+            hprime_0[Z_idx]
+        return numerator / denominator
+
+    eta_2 = f_eta_2(Z_idx, r)
+
+    eta_1 = f_eta_2(Z_idx, 2 * r)
+
+    def f_eta_4(Z_idx, r):
+        numerator = r * (r + h_0[Z_idx] / h_5[Z_idx])
+        denominator = r ** 3 + \
+            h_4[Z_idx] * r ** (7 / 3) + \
+            h_3[Z_idx] * r ** 2 + \
+            h_2[Z_idx] * r ** (5 / 3) + \
+            h_1[Z_idx] * r + \
+            h_0[Z_idx]
+        return numerator / denominator
+
+    eta_4 = f_eta_4(Z_idx, r)
+
+    eta_3 = f_eta_4(Z_idx, 2 * r)
+
+    return np.array((eta_0, eta_1, eta_2, eta_3, eta_4))
+
+
+def _nondim_tc_i_ji_held(hall, Z, mu, theta, field_orientation, K=3):
+    """dimensionless ion thermal conductivity - Ji-Held
+
+    Ji, Jeong-Young, and Eric D. Held. "Closure and transport theory for
+    high-collisionality electron-ion plasmas." Physics of Plasmas 20.4 (2013):
+    042114.
+    """
+
+#    mu = m_e / m_i
+#    theta = T_e / T_i
+    zeta = 1 / Z * np.sqrt(mu / theta)
+    r = np.abs(hall / np.sqrt(2))
+
+#    K = 2  # 2x2 moments, equivalent to original Braginskii
+#    K = 3  # 3x3 moments
+
+    if K == 3:
+        Delta_par_i1 = 1 + 26.90 * zeta + 187.5 * zeta**2 + 346.9 * zeta**3
+        kappa_par_i = (5.586 + 101.7 * zeta + 289.1 * zeta**2) / Delta_par_i1
+    elif K == 2:
+        Delta_par_i1 = 1 + 13.50 * zeta + 36.46 * zeta**2
+        kappa_par_i = (5.524 + 30.38 * zeta) / Delta_par_i1
+    if field_orientation == 'parallel' or field_orientation == 'par':
+        return kappa_par_i / np.sqrt(2)
+
+    if K == 3:
+        Delta_perp_i1 = r**6 + \
+            (3.635 + 29.15 * zeta + 83 * zeta**2) * r**4 + \
+            (1.395 + 35.64 * zeta + 344.9 * zeta**2 +
+             1345 * zeta**3 + 1891 * zeta**4) * r**2 + \
+            0.09163 * Delta_par_i1**2
+        kappa_perp_i = ((np.sqrt(2) + 15 / 2 * zeta) * r ** 4 +
+                        (3.841 + 57.59 * zeta + 297.8 * zeta**2 +
+                         555 * zeta**3) * r ** 2 +
+                        0.09163 * kappa_par_i * Delta_par_i1 ** 2
+                        ) / Delta_perp_i1
+    elif K == 2:
+        Delta_perp_i1 = r**4 + \
+            (1.352 + 12.49 * zeta + 34 * zeta**2) * r**2 + \
+            0.1693 * Delta_par_i1**2
+        kappa_perp_i = ((np.sqrt(2) + 15 / 2 * zeta) * r ** 2 +
+                        0.1693 * kappa_par_i * Delta_par_i1 ** 2
+                        ) / Delta_perp_i1
+    if field_orientation == 'perpendicular' or field_orientation == 'perp':
+        return kappa_perp_i / np.sqrt(2)
+
+    if K == 3:
+        kappa_cross_i = r * (5 / 2 * r**4 +
+                             (7.963 + 64.40 * zeta + 185 * zeta**2) * r**2 +
+                             1.344 + 44.54 * zeta + 511.9 * zeta**2 +
+                             2155 * zeta**3 + 3063 * zeta**4
+                             ) / Delta_perp_i1
+    elif K == 2:
+        kappa_cross_i = r * (5 / 2 * r**2 +
+                             2.323 + 22.73 * zeta + 62.5 * zeta**2
+                             ) / Delta_perp_i1
+    if field_orientation == 'cross':
+        return kappa_cross_i / np.sqrt(2)
+
+    if field_orientation == 'all':
+        return np.array((kappa_par_i / np.sqrt(2), kappa_perp_i / np.sqrt(2),
+                         kappa_cross_i / np.sqrt(2)))
+
+
+def _nondim_visc_i_ji_held(hall, Z, mu, theta, K=3):
+    """dimensionless ion viscosity - Ji-Held
+
+    Ji, Jeong-Young, and Eric D. Held. "Closure and transport theory for
+    high-collisionality electron-ion plasmas." Physics of Plasmas 20.4 (2013):
+    042114.
+    """
+
+    zeta = 1 / Z * np.sqrt(mu / theta)
+    r = np.abs(hall / np.sqrt(2))
+    r13 = 2 * r
+
+#    K = 2  # 2x2 moments, equivalent to original Braginskii
+#    K = 3  # 3x3 moments
+
+    if K == 3:
+        Delta_par_i2 = 1 + 15.79 * zeta + 63.92 * zeta**2 + 71.69 * zeta**3
+        eta_0_i = (1.365 + 16.75 * zeta + 35.84 * zeta**2) / Delta_par_i2
+
+        def Delta_perp_i2(r, zeta, Delta_par_i2):
+            Delta_perp_i2 = r**6 + \
+                (4.391 + 26.69 * zeta + 56 * zeta**2) * r**4 + \
+                (3.191 + 49.62 * zeta + 306.4 * zeta**2 +
+                 808.1 * zeta**3 + 784 * zeta**4) * r**2 + \
+                0.4483 * Delta_par_i2**2
+            return Delta_perp_i2
+
+        Delta_perp_i2_24 = Delta_perp_i2(r, zeta, Delta_par_i2)
+        Delta_perp_i2_13 = Delta_perp_i2(r13, zeta, Delta_par_i2)
+
+        def f_eta_2(r, zeta, Delta_perp_i2):
+            eta_2_i = ((3 / 5 * np.sqrt(2) + 2 * zeta) * r ** 4 +
+                       (2.680 + 25.98 * zeta + 90.71 * zeta**2 + 104 * zeta**3) * r ** 2 +
+                       0.4483 * eta_0_i * Delta_par_i2 ** 2
+                       ) / Delta_perp_i2
+            return eta_2_i
+
+        eta_2_i = f_eta_2(r, zeta, Delta_perp_i2_24)
+        eta_1_i = f_eta_2(r13, zeta, Delta_perp_i2_13)
+
+        def f_eta_4(r, zeta, Delta_perp_i2):
+            eta_4_i = r * (r**4 +
+                           (3.535 + 23.30 * zeta + 52 * zeta**2) * r**2 +
+                           0.9538 + 21.81 * zeta + 174.2 * zeta**2 +
+                           538.4 * zeta**3 + 576 * zeta**4
+                           ) / Delta_perp_i2
+            return eta_4_i
+
+        eta_4_i = f_eta_4(r, zeta, Delta_perp_i2_24)
+        eta_3_i = f_eta_4(r13, zeta, Delta_perp_i2_13)
+
+    elif K == 2:
+        Delta_par_i2 = 1 + 7.164 * zeta + 10.49 * zeta**2
+        eta_0_i = (1.357 + 5.243 * zeta) / Delta_par_i2
+
+        def Delta_perp_i2(r, zeta, Delta_par_i2):
+            Delta_perp_i2 = r**4 + \
+                (2.023 + 11.68 * zeta + 20 * zeta**2) * r**2 + \
+                0.5820 * Delta_par_i2**2
+            return Delta_perp_i2
+
+        Delta_perp_i2_24 = Delta_perp_i2(r, zeta, Delta_par_i2)
+        Delta_perp_i2_13 = Delta_perp_i2(r13, zeta, Delta_par_i2)
+
+        def f_eta_2(r, zeta, Delta_perp_i2):
+            eta_2_i = ((3 / 5 * np.sqrt(2) + 2 * zeta) * r ** 2 +
+                       0.5820 * eta_0_i * Delta_par_i2 ** 2
+                       ) / Delta_perp_i2
+            return eta_2_i
+
+        eta_2_i = f_eta_2(r, zeta, Delta_perp_i2_24)
+        eta_1_i = f_eta_2(r13, zeta, Delta_perp_i2_13)
+
+        def f_eta_4(r, zeta, Delta_perp_i2):
+            Delta_perp_i2 = r**4 + \
+                (2.023 + 11.68 * zeta + 20 * zeta**2) * r**2 + \
+                0.5820 * Delta_par_i2**2
+            eta_4_i = r * (r**2 +
+                           1.188 + 8.283 * zeta + 16 * zeta**2
+                           ) / Delta_perp_i2
+            return eta_4_i
+
+        eta_4_i = f_eta_4(r, zeta, Delta_perp_i2_24)
+        eta_3_i = f_eta_4(r13, zeta, Delta_perp_i2_13)
+
+    return np.array((eta_0_i / np.sqrt(2), eta_1_i / np.sqrt(2),
+                     eta_2_i / np.sqrt(2), eta_3_i / np.sqrt(2),
+                     eta_4_i / np.sqrt(2)))
+
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#                      end of classical_transport
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#
+#


Test patch:
diff --git a/plasmapy/physics/tests/test_transport.py b/plasmapy/physics/tests/test_transport.py
index f69e6094..c1299c78 100644
--- a/plasmapy/physics/tests/test_transport.py
+++ b/plasmapy/physics/tests/test_transport.py
@@ -1,20 +1,51 @@
+# coding=utf-8
 """Tests for functions that calculate transport coefficients."""
 
 
 import numpy as np
 import pytest
 from astropy import units as u
-
-from ...utils.exceptions import RelativityWarning, RelativityError
+from plasmapy.atomic.atomic import ion_mass, charge_state
+from plasmapy.utils.exceptions import (PhysicsError, PhysicsWarning,
+                                       RelativityWarning, RelativityError)
+from plasmapy.physics.parameters import Hall_parameter
 from ...constants import c, m_p, m_e, e, mu0
 
-from ..transport import (Coulomb_logarithm)
+from ..transport import (Coulomb_logarithm,
+                         classical_transport,
+                         _nondim_tc_e_braginskii,
+                         _nondim_tc_i_braginskii,
+                         _nondim_tec_braginskii,
+                         _nondim_resist_braginskii,
+                         _nondim_visc_i_braginskii,
+                         _nondim_visc_e_braginskii,
+                         _nondim_tc_e_spitzer,
+                         _nondim_tec_spitzer,
+                         _nondim_resist_spitzer,
+                         _nondim_thermal_conductivity,
+                         _nondim_resistivity,
+                         _nondim_te_conductivity,
+                         _nondim_tc_e_ji_held,
+                         _nondim_tc_i_ji_held,
+                         _nondim_tec_ji_held,
+                         _nondim_resist_ji_held,
+                         _nondim_visc_e_ji_held,
+                         _nondim_visc_i_ji_held,
+                         _nondim_viscosity,
+                         _check_Z,
+                         )
+
+
+def count_decimal_places(digits):
+    '''Return the number of decimal places of the input digit string'''
+    integral, _, fractional = digits.partition(".")
+    return len(fractional)
 
 
 def test_Coulomb_logarithm():
 
-    n_e = np.array([1e9, 1e9, 1e24])*u.cm**-3
-    T = np.array([1e2, 1e7, 1e8])*u.K
+    n_e = np.array([1e9, 1e9, 1e24]) * u.cm**-3
+    T = np.array([1e2, 1e7, 1e8]) * u.K
     Lambda = np.array([5.97, 21.66, 6.69])
     particles = ('e', 'p')
 
@@ -22,37 +53,941 @@ def test_Coulomb_logarithm():
         assert np.isclose(Coulomb_logarithm(T[i], n_e[i], particles),
                           Lambda[i], atol=0.01)
 
-    assert np.isclose(Coulomb_logarithm(1*u.eV, 5*u.m**-3, ('e', 'e')),
-                      Coulomb_logarithm(11604.5220*u.K, 5*u.m**-3, ('e', 'e')))
+    assert np.isclose(Coulomb_logarithm(1 * u.eV, 5 * u.m**-3, ('e', 'e')),
+                      Coulomb_logarithm(11604.5220 * u.K,
+                                        5 * u.m**-3,
+                                        ('e', 'e')))
 
-    assert np.isclose(Coulomb_logarithm(1e2*u.K, 1e9*u.cm**-3, ('e', 'p')),
+    assert np.isclose(Coulomb_logarithm(1e2 * u.K, 1e9 * u.cm**-3, ('e', 'p')),
                       5.97, atol=0.01)
 
-    assert np.isclose(Coulomb_logarithm(1e7*u.K, 1e9*u.cm**-3, ('e', 'p')),
+    assert np.isclose(Coulomb_logarithm(1e7 * u.K, 1e9 * u.cm**-3, ('e', 'p')),
                       21.6, atol=0.1)
 
-    assert np.isclose(Coulomb_logarithm(1e8*u.K, 1e24*u.cm**-3, ('e', 'p')),
+    assert np.isclose(Coulomb_logarithm(1e8 * u.K,
+                                        1e24 * u.cm**-3,
+                                        ('e', 'p')),
                       6.69, atol=0.01)
 
     assert np.allclose(Coulomb_logarithm(T, n_e, particles), Lambda, atol=0.01)
 
-    assert np.isclose(Coulomb_logarithm(1e5*u.K, 5*u.m**-3, ('e', 'e'),
-                                        V=1e4*u.m/u.s), 21.379082011)
+    assert np.isclose(Coulomb_logarithm(1e5 * u.K, 5 * u.m**-3, ('e', 'e'),
+                                        V=1e4 * u.m / u.s), 21.379082011)
 
     with pytest.warns(RelativityWarning):
-        Coulomb_logarithm(1e5*u.K, 1*u.m**-3, ('e', 'p'), 0.9*c)
+        Coulomb_logarithm(1e5 * u.K, 1 * u.m**-3, ('e', 'p'), 0.9 * c)
 
     with pytest.raises(RelativityError):
-        Coulomb_logarithm(1e5*u.K, 1*u.m**-3, ('e', 'p'), 1.0*c)
+        Coulomb_logarithm(1e5 * u.K, 1 * u.m**-3, ('e', 'p'), 1.0 * c)
 
     with pytest.raises(u.UnitConversionError):
-        Coulomb_logarithm(1e5*u.g, 1*u.m**-3, ('e', 'p'), 29979245*u.m/u.s)
+        Coulomb_logarithm(1e5 * u.g, 1 * u.m**-3,
+                          ('e', 'p'), 29979245 * u.m / u.s)
+
+    with pytest.raises(ValueError):
+        Coulomb_logarithm(1 * u.K, 5 * u.m**-3, ('e'))
+
+    with pytest.raises(ValueError):
+        Coulomb_logarithm(1 * u.K, 5 * u.m**-3, ('e', 'g'))
+
+    with pytest.raises(ValueError):
+        Coulomb_logarithm(1 * u.K, 5 * u.m**-3, ('e', 'D'))
+
+
+# test class for classical_transport class:
+class Test_classical_transport:
+
+    def setup_method(self):
+        """set up some initial values for tests"""
+        u.set_enabled_equivalencies(u.temperature_energy())
+        self.T_e = 1000 * u.eV
+        self.n_e = 2e13 / u.cm ** 3
+        self.ion_particle = 'D +1'
+        self.m_i = ion_mass(self.ion_particle)
+        self.Z = charge_state(self.ion_particle)
+        self.T_i = self.T_e
+        self.n_i = self.n_e / self.Z
+        self.B = 0.01 * u.T
+        self.coulomb_log_val_ei = 17
+        self.coulomb_log_val_ii = 17
+        self.hall_e = None
+        self.hall_i = None
+        self.V_ei = None
+        self.V_ii = None
+        self.mu = m_e / self.m_i
+        self.theta = self.T_e / self.T_i
+        self.model = 'Braginskii'
+        self.field_orientation = 'all'
+        self.ct = classical_transport(
+            T_e=self.T_e,
+            n_e=self.n_e,
+            T_i=self.T_i,
+            n_i=self.n_i,
+            ion_particle=self.ion_particle,
+            Z=self.Z,
+            B=self.B,
+            model=self.model,
+            field_orientation=self.field_orientation,
+            coulomb_log_ei=self.coulomb_log_val_ei,
+            coulomb_log_ii=self.coulomb_log_val_ii,
+            V_ei=self.V_ei,
+            V_ii=self.V_ii,
+            hall_e=self.hall_e,
+            hall_i=self.hall_i,
+            mu=self.mu,
+            theta=self.theta,
+        )
+        self.all_variables = self.ct.all_variables()
+
+    def test_spitzer_vs_formulary(self):
+        """Spitzer resistivity should agree with approx. in NRL formulary"""
+        ct2 = classical_transport(T_e=self.T_e,
+                                  n_e=self.n_e,
+                                  T_i=self.T_i,
+                                  n_i=self.n_i,
+                                  ion_particle=self.ion_particle,
+                                  model='spitzer',
+                                  field_orientation='perp')
+        alpha_spitzer_perp_NRL = (1.03e-4 * ct2.Z *
+                                  ct2.coulomb_log_ei *
+                                  ((ct2.T_e).to(u.eV)).value ** (-3 / 2) *
+                                  u.Ohm * u.m)
+        assert(np.isclose(ct2.resistivity().value,
+                          alpha_spitzer_perp_NRL.value, rtol=2e-2))
+
+    def test_resistivity_units(self):
+        """output should be a Quantity with units of Ohm m"""
+        assert(self.ct.resistivity().unit == u.Ohm * u.m)
+
+    def test_thermoelectric_conductivity_units(self):
+        """output should be a Quantity with units of dimensionless"""
+        assert(self.ct.thermoelectric_conductivity().unit == u.m / u.m)
+
+    def test_ion_thermal_conductivity_units(self):
+        """output should be Quantity with units of W / (m K)"""
+        assert(self.ct.ion_thermal_conductivity().unit == u.W / u.m / u.K)
+
+    def test_electron_thermal_conductivity_units(self):
+        """output should be Quantity with units of W / (m K)"""
+        assert(self.ct.electron_thermal_conductivity().unit == u.W / u.m / u.K)
+
+    def test_ion_viscosity_units(self):
+        """output should be Quantity with units of Pa s """
+        assert(self.ct.ion_viscosity().unit == u.Pa * u.s)
+
+    def test_electron_viscosity_units(self):
+        """output should be Quantity with units of Pa s"""
+        assert(self.ct.electron_viscosity().unit == u.Pa * u.s)
+
+    def test_particle_mass(self):
+        """should raise ValueError if particle mass not found"""
+        with pytest.raises(ValueError):
+            ct2 = classical_transport(T_e=self.T_e,
+                                      n_e=self.n_e,
+                                      T_i=self.T_i,
+                                      n_i=self.n_i,
+                                      ion_particle='empty moment',
+                                      Z=1)
+
+    def test_particle_charge_state(self):
+        """should raise ValueError if particle charge state not found"""
+        with pytest.raises(ValueError):
+            ct2 = classical_transport(T_e=self.T_e,
+                                      n_e=self.n_e,
+                                      T_i=self.T_i,
+                                      n_i=self.n_i,
+                                      ion_particle='empty moment',
+                                      m_i=m_p)
+
+    def test_Z_checks(self):
+        """should raise ValueError if Z is negative"""
+        with pytest.raises(ValueError):
+            ct2 = classical_transport(T_e=self.T_e,
+                                      n_e=self.n_e,
+                                      T_i=self.T_i,
+                                      n_i=self.n_i,
+                                      ion_particle=self.ion_particle,
+                                      Z=-1)
+
+    def test_coulomb_log_warnings(self):
+        """should warn PhysicsWarning if coulomb log is near 1"""
+        with pytest.warns(PhysicsWarning):
+            ct2 = classical_transport(T_e=self.T_e,
+                                      n_e=self.n_e,
+                                      T_i=self.T_i,
+                                      n_i=self.n_i,
+                                      ion_particle=self.ion_particle,
+                                      coulomb_log_ii=1.3)
+
+        with pytest.warns(PhysicsWarning):
+            ct2 = classical_transport(T_e=self.T_e,
+                                      n_e=self.n_e,
+                                      T_i=self.T_i,
+                                      n_i=self.n_i,
+                                      ion_particle=self.ion_particle,
+                                      coulomb_log_ei=1.3)
+
+    def test_coulomb_log_errors(self):
+        """should raise PhysicsError if coulomb log is < 1"""
+        with pytest.raises(PhysicsError), pytest.warns(PhysicsWarning):
+            ct2 = classical_transport(T_e=self.T_e,
+                                      n_e=self.n_e,
+                                      T_i=self.T_i,
+                                      n_i=self.n_i,
+                                      ion_particle=self.ion_particle,
+                                      coulomb_log_ii=0.3)
 
+        with pytest.raises(PhysicsError), pytest.warns(PhysicsWarning):
+            ct2 = classical_transport(T_e=self.T_e,
+                                      n_e=self.n_e,
+                                      T_i=self.T_i,
+                                      n_i=self.n_i,
+                                      ion_particle=self.ion_particle,
+                                      coulomb_log_ei=0.3)
+
+    def test_coulomb_log_calc(self):
+        """if no coulomb logs are input, they should be calculated"""
+        ct2 = classical_transport(T_e=self.T_e,
+                                  n_e=self.n_e,
+                                  T_i=self.T_i,
+                                  n_i=self.n_i,
+                                  ion_particle=self.ion_particle)
+        cl_ii = Coulomb_logarithm(self.T_i,
+                                  self.n_e,
+                                  [self.ion_particle, self.ion_particle],
+                                  self.V_ii)
+        cl_ei = Coulomb_logarithm(self.T_e,
+                                  self.n_e,
+                                  ['e', self.ion_particle],
+                                  self.V_ei)
+        assert(cl_ii == ct2.coulomb_log_ii)
+        assert(cl_ei == ct2.coulomb_log_ei)
+
+    def test_hall_calc(self):
+        """if no hall parameters are input, they should be calculated"""
+        ct2 = classical_transport(T_e=self.T_e,
+                                  n_e=self.n_e,
+                                  T_i=self.T_i,
+                                  n_i=self.n_i,
+                                  ion_particle=self.ion_particle)
+        hall_i = Hall_parameter(ct2.n_i,
+                                ct2.T_i,
+                                ct2.B,
+                                ct2.ion_particle,
+                                ct2.ion_particle,
+                                ct2.coulomb_log_ii,
+                                ct2.V_ii)
+        hall_e = Hall_parameter(
+            ct2.n_e,
+            ct2.T_e,
+            ct2.B,
+            ct2.e_particle,
+            ct2.ion_particle,
+            ct2.coulomb_log_ei,
+            ct2.V_ei)
+        assert(hall_i == ct2.hall_i)
+        assert(hall_e == ct2.hall_e)
+
+    def test_invalid_model(self):
+        with pytest.raises(ValueError):
+            ct2 = classical_transport(T_e=self.T_e,
+                                      n_e=self.n_e,
+                                      T_i=self.T_i,
+                                      n_i=self.n_i,
+                                      ion_particle=self.ion_particle,
+                                      model="standard")
+
+    def test_invalid_field(self):
+        with pytest.raises(ValueError):
+            ct2 = classical_transport(T_e=self.T_e,
+                                      n_e=self.n_e,
+                                      T_i=self.T_i,
+                                      n_i=self.n_i,
+                                      ion_particle=self.ion_particle,
+                                      field_orientation='to the left')
+
+    def test_precalculated_parameters(self):
+        ct2 = classical_transport(T_e=self.T_e,
+                                  n_e=self.n_e,
+                                  T_i=self.T_i,
+                                  n_i=self.n_i,
+                                  ion_particle=self.ion_particle,
+                                  hall_i=0,
+                                  hall_e=0)
+        assert np.isclose(ct2.resistivity(),
+                          2.8184954e-8 * u.Ohm * u.m,
+                          atol=1e-6 * u.Ohm * u.m)
+
+    @pytest.mark.parametrize("model, method, field_orientation, expected", [
+        ("ji-held", "resistivity", "all", 3),
+        ("ji-held", "thermoelectric_conductivity", "all", 3),
+        ("ji-held", "electron_thermal_conductivity", "all", 3),
+        ("ji-held", "ion_thermal_conductivity", "all", 3),
+        ("spitzer", "resistivity", "all", 2),
+    ])
+    def test_number_of_returns(self, model, method, field_orientation,
+                               expected):
+        ct2 = classical_transport(T_e=self.T_e,
+                                  n_e=self.n_e,
+                                  T_i=self.T_i,
+                                  n_i=self.n_i,
+                                  ion_particle=self.ion_particle,
+                                  model=model,
+                                  field_orientation=field_orientation)
+        method_to_call = getattr(ct2, method)
+        assert(np.size(method_to_call()) == expected)
+
+    @pytest.mark.parametrize("model, expected", [
+        ("ji-held", 2.77028546e-8 * u.Ohm * u.m),
+        ("spitzer", 2.78349687e-8 * u.Ohm * u.m),
+        ("braginskii", 2.78349687e-8 * u.Ohm * u.m)
+    ])
+    def test_resistivity_by_model(self, model, expected):
+        ct2 = classical_transport(T_e=self.T_e,
+                                  n_e=self.n_e,
+                                  T_i=self.T_i,
+                                  n_i=self.n_i,
+                                  ion_particle=self.ion_particle,
+                                  model=model)
+        assert np.isclose(ct2.resistivity(), expected, atol=1e-6 * u.Ohm * u.m)
+
+    @pytest.mark.parametrize("model, expected", [
+        ("ji-held", 0.702 * u.s / u.s),
+        ("spitzer", 0.69944979 * u.s / u.s),
+        ("braginskii", 0.711084 * u.s / u.s)
+    ])
+    def test_thermoelectric_conductivity_by_model(self, model, expected):
+        ct2 = classical_transport(T_e=self.T_e,
+                                  n_e=self.n_e,
+                                  T_i=self.T_i,
+                                  n_i=self.n_i,
+                                  ion_particle=self.ion_particle,
+                                  model=model)
+        assert np.isclose(ct2.thermoelectric_conductivity(), expected,
+                          atol=1e-6 * u.s / u.s)
+
+    @pytest.mark.parametrize("model, expected", [
+        ("ji-held",
+         np.array([0.07582084, 0.07582084, 0.07582084, 0, 0]) * u.Pa * u.s),
+        ("braginskii",
+         np.array([0.07582084, 0.07579587, 0.07579587, 0, 0]) * u.Pa * u.s)
+    ])
+    def test_electron_viscosity_by_model(self, model, expected):
+        ct2 = classical_transport(T_e=self.T_e,
+                                  n_e=self.n_e,
+                                  T_i=self.T_i,
+                                  n_i=self.n_i,
+                                  ion_particle=self.ion_particle,
+                                  model=model)
+        assert np.allclose(ct2.electron_viscosity(), expected,
+                           atol=1e-6 * u.Pa * u.s)
+
+    @pytest.mark.parametrize("model, expected", [
+        ("ji-held",
+         np.array([7.78786439, 7.78786439, 7.78786439, 0, 0]) * u.Pa * u.s),
+        ("braginskii",
+         np.array([7.74590133, 7.72235334, 7.72235334, 0, 0]) * u.Pa * u.s)
+    ])
+    def test_ion_viscosity_by_model(self, model, expected):
+        ct2 = classical_transport(T_e=self.T_e,
+                                  n_e=self.n_e,
+                                  T_i=self.T_i,
+                                  n_i=self.n_i,
+                                  ion_particle=self.ion_particle,
+                                  model=model)
+        assert np.allclose(ct2.ion_viscosity(), expected,
+                           atol=1e-6 * u.Pa * u.s)
+
+    @pytest.mark.parametrize("model, expected", [
+        ("ji-held", 5023093.49948463 * u.W / (u.K * u.m)),
+        ("spitzer", 5021013.09835718 * u.W / (u.K * u.m)),
+        ("braginskii", 4956545.55498178 * u.W / (u.K * u.m))
+    ])
+    def test_electron_thermal_conductivity_by_model(self, model, expected):
+        ct2 = classical_transport(T_e=self.T_e,
+                                  n_e=self.n_e,
+                                  T_i=self.T_i,
+                                  n_i=self.n_i,
+                                  ion_particle=self.ion_particle,
+                                  model=model)
+        assert np.allclose(ct2.electron_thermal_conductivity(), expected,
+                           atol=1e-6 * u.W / (u.K * u.m))
+
+    @pytest.mark.parametrize("model, expected", [
+        ("ji-held", 131600.515524444 * u.W / (u.K * u.m)),
+        ("braginskii", 130137.93045042 * u.W / (u.K * u.m))
+    ])
+    def test_ion_thermal_conductivity_by_model(self, model, expected):
+        ct2 = classical_transport(T_e=self.T_e,
+                                  n_e=self.n_e,
+                                  T_i=self.T_i,
+                                  n_i=self.n_i,
+                                  ion_particle=self.ion_particle,
+                                  model=model)
+        assert np.allclose(ct2.ion_thermal_conductivity(), expected,
+                           atol=1e-6 * u.W / (u.K * u.m))
+
+    @pytest.mark.parametrize("key, expected",{
+        'resistivity': [2.84304305e-08,
+                        5.54447070e-08,
+                        1.67853407e-12],
+        'thermoelectric_conductivity': [7.11083999e-01,
+                                        1.61011272e-09,
+                                        2.66496639e-05],
+        'electron_thermal_conductivity': [4.91374931e+06,
+                                          2.28808496e-03,
+                                          6.90324259e+01] ,
+        'electron_viscosity': [7.51661800e-02,
+                               5.23617668e-21,
+                               2.09447067e-20,
+                               1.61841341e-11,
+                               3.23682681e-11],
+        'ion_thermal_conductivity': [1.41709276e+05,
+                                     4.20329493e-02,
+                                     6.90323924e+01] ,
+        'ion_viscosity': [8.43463595e+00,
+                          8.84513731e-13,
+                          3.53805159e-12,
+                          2.54483240e-06,
+                          5.08966116e-06] }.items())
+    def test_dictionary(self, key, expected):
+        calculated = self.all_variables[key]
+        assert np.allclose(expected, calculated.si.value)
+
+
+@pytest.mark.parametrize(["particle"], ['e', 'p'])
+def test_nondim_thermal_conductivity_unrecognized_model(particle):
+    with pytest.raises(ValueError):
+        _nondim_thermal_conductivity(1, 1, particle,
+                                     'standard model is best model',
+                                     'parallel')
+
+
+def test_nondim_resistivity_unrecognized_model():
     with pytest.raises(ValueError):
-        Coulomb_logarithm(1*u.K, 5*u.m**-3, ('e'))
+        _nondim_resistivity(1, 1, 'e', 'SURPRISE SUPERSYMMETRY', 'parallel')
+
 
+def test_nondim_te_conductivity_unrecognized_model():
     with pytest.raises(ValueError):
-        Coulomb_logarithm(1*u.K, 5*u.m**-3, ('e', 'g'))
+        _nondim_te_conductivity(1, 1, 'e', 'this is not a model',
+                                'parallel')
 
+
+@pytest.mark.parametrize(["particle"], ['e', 'p'])
+def test_nondim_viscosity_unrecognized_model(particle):
     with pytest.raises(ValueError):
-        Coulomb_logarithm(1*u.K, 5*u.m**-3, ('e', 'D'))
+        _nondim_viscosity(1, 1, particle, 'not a model', 'parallel')
+
+
+# test class for _nondim_tc_e_braginskii function:
+class Test__nondim_tc_e_braginskii:
+
+    def setup_method(self):
+        """set up some initial values for tests"""
+        self.big_hall = 1000
+        self.small_hall = 0
+
+    # values from Braginskii '65
+    @pytest.mark.parametrize("Z, field_orientation, expected", [
+        (1, 'par', 3.16),  # eq (2.12), table 1
+        (2, 'par', 4.9),  # eq (2.12), table 1
+        (3, 'par', 6.1),  # eq (2.12), table 1
+        (4, 'par', 6.9),  # eq (2.12), table 1
+        (np.inf, 'par', 12.5),  # eq (2.12), table 1
+    ])
+    def test_known_values_par(self, Z, field_orientation, expected):
+        """check some known values"""
+        kappa_e_hat = _nondim_tc_e_braginskii(self.big_hall,
+                                              Z,
+                                              field_orientation)
+        assert np.isclose(kappa_e_hat, expected, atol=1e-1)
+
+    # values from Braginskii '65
+    @pytest.mark.parametrize("Z, field_orientation, expected", [
+        (1, 'perp', 4.66),  # eq (2.13), table 1
+        (2, 'perp', 4.0),  # eq (2.13), table 1
+        (3, 'perp', 3.7),  # eq (2.13), table 1
+        (4, 'perp', 3.6),  # eq (2.13), table 1
+        (np.inf, 'perp', 3.2),  # eq (2.13),table 1
+    ])
+    def test_known_values_perp(self, Z, field_orientation, expected):
+        """check some known values"""
+        kappa_e_hat = _nondim_tc_e_braginskii(self.big_hall,
+                                              Z,
+                                              field_orientation)
+        assert np.isclose(kappa_e_hat * self.big_hall ** 2,
+                          expected, atol=1e-1)
+
+    @pytest.mark.parametrize("Z", [1, 2, 3, 4, np.inf])
+    def test_unmagnetized(self, Z):
+        """confirm perp -> par as B -> 0"""
+        kappa_e_hat_par = _nondim_tc_e_braginskii(self.small_hall, Z, 'par')
+        kappa_e_hat_perp = _nondim_tc_e_braginskii(self.small_hall, Z, 'perp')
+        assert np.isclose(kappa_e_hat_par, kappa_e_hat_perp, rtol=1e-3)
+
+    @pytest.mark.parametrize("Z", [1, 4])
+    def test_cross_vs_ji_held(self, Z):
+        """cross should roughly agree with ji-held"""
+        kappa_e_hat_cross_brag = _nondim_tc_e_braginskii(self.big_hall,
+                                                         Z,
+                                                         'cross')
+        kappa_e_hat_cross_jh = _nondim_tc_e_ji_held(self.big_hall,
+                                                    Z,
+                                                    'cross')
+        assert np.isclose(kappa_e_hat_cross_brag,
+                          kappa_e_hat_cross_jh,
+                          rtol=2e-2)
+
+
+# test class for _nondim_tc_i_braginskii function:
+class Test__nondim_tc_i_braginskii:
+
+    def setup_method(self):
+        """set up some initial values for tests"""
+        self.big_hall = 1000
+        self.small_hall = 0
+
+    def test_known_values_par(self):
+        """check some known values"""
+        kappa_i_hat = _nondim_tc_i_braginskii(self.big_hall,
+                                              field_orientation='par')
+        expected = 3.9  # Braginskii '65 eq (2.15)
+        assert np.isclose(kappa_i_hat, expected, atol=1e-1)
+
+    def test_known_values_perp(self):
+        """check some known values"""
+        kappa_i_hat = _nondim_tc_i_braginskii(self.big_hall,
+                                              field_orientation='perp')
+        expected = 2.0  # Braginskii '65 eq (2.16)
+        assert np.isclose(kappa_i_hat * self.big_hall ** 2,
+                          expected,
+                          atol=1e-1)
+
+    def test_unmagnetized(self):
+        """confirm perp -> par as B -> 0"""
+        kappa_i_hat_par = _nondim_tc_i_braginskii(self.small_hall, 'par')
+        kappa_i_hat_perp = _nondim_tc_i_braginskii(self.small_hall, 'perp')
+        assert np.isclose(kappa_i_hat_par, kappa_i_hat_perp, rtol=1e-3)
+
+    def test_cross_vs_ji_held_K2(self):
+        """confirm cross agrees with ji-held model when K=2"""
+        kappa_i_hat_brag = _nondim_tc_i_braginskii(self.big_hall, 'cross')
+        kappa_i_hat_jh = _nondim_tc_i_ji_held(self.big_hall, 1, 0, 100,
+                                              'cross', K=2)
+        assert np.isclose(kappa_i_hat_brag, kappa_i_hat_jh, rtol=2e-2)
+
+
+# test class for _nondim_tec_braginskii function:
+class Test__nondim_tec_braginskii:
+
+    def setup_method(self):
+        """set up some initial values for tests"""
+        self.big_hall = 1000
+        self.small_hall = 0
+
+    # values from Braginskii '65
+    @pytest.mark.parametrize("Z, field_orientation, expected", [
+        (1, 'par', 0.71),  # eq (2.9), table 1
+        (2, 'par', 0.9),  # eq (2.9), table 1
+        (3, 'par', 1.0),  # eq (2.9), table 1
+        (4, 'par', 1.1),  # eq (2.9), table 1
+        (np.inf, 'par', 1.5),  # eq (2.9),table 1
+    ])
+    def test_known_values_par(self, Z, field_orientation, expected):
+        """check some known values"""
+        beta_hat = _nondim_tec_braginskii(self.big_hall,
+                                          Z,
+                                          field_orientation)
+        assert np.isclose(beta_hat, expected, atol=1e-1)
+
+    @pytest.mark.parametrize("Z", [1, 2, 3, 4, np.inf])
+    def test_unmagnetized(self, Z):
+        """confirm perp -> par as B -> 0"""
+        beta_hat_par = _nondim_tec_braginskii(self.small_hall, Z, 'par')
+        beta_hat_perp = _nondim_tec_braginskii(self.small_hall, Z, 'perp')
+        assert np.isclose(beta_hat_par, beta_hat_perp, rtol=1e-3)
+
+    @pytest.mark.parametrize("Z", [1, 4])
+    def test_cross_vs_ji_held(self, Z):
+        """cross should roughly agree with ji-held"""
+        beta_hat_cross_brag = _nondim_tec_braginskii(self.big_hall, Z, 'cross')
+        beta_hat_cross_jh = _nondim_tec_ji_held(self.big_hall, Z, 'cross')
+        assert np.isclose(beta_hat_cross_brag, beta_hat_cross_jh, rtol=3e-2)
+
+
+# test class for _nondim_resist_braginskii function:
+class Test__nondim_resist_braginskii:
+
+    def setup_method(self):
+        """set up some initial values for tests"""
+        self.big_hall = 1000
+        self.small_hall = 0
+
+    # values from Braginskii '65
+    @pytest.mark.parametrize("Z, field_orientation, expected", [
+        (1, 'par', 0.51),  # eq (2.8), table 1
+        (2, 'par', 0.44),  # table 1
+        (3, 'par', 0.40),  # eq (2.8), table 1
+        (4, 'par', 0.38),  # eq (2.8), table 1
+        (np.inf, 'par', 0.29),  # eq (2.8),table 1
+    ])
+    def test_known_values_par(self, Z, field_orientation, expected):
+        """check some known values"""
+        beta_hat = _nondim_resist_braginskii(self.big_hall,
+                                             Z,
+                                             field_orientation)
+        assert np.isclose(beta_hat, expected, atol=1e-2)
+
+    @pytest.mark.parametrize("Z", [1, 2, 3, 4, np.inf])
+    def test_unmagnetized(self, Z):
+        """confirm perp -> par as B -> 0"""
+        alpha_hat_par = _nondim_resist_braginskii(self.small_hall, Z, 'par')
+        alpha_hat_perp = _nondim_resist_braginskii(self.small_hall, Z, 'perp')
+        assert np.isclose(alpha_hat_par, alpha_hat_perp, rtol=1e-3)
+
+    @pytest.mark.parametrize("Z", [1, 4])
+    def test_cross_vs_ji_held(self, Z):
+        """cross should roughly agree with ji-held at hall 0.1"""
+        alpha_hat_cross_brag = _nondim_resist_braginskii(0.1, Z, 'cross')
+        alpha_hat_cross_jh = _nondim_resist_ji_held(0.1, Z, 'cross')
+        assert np.isclose(alpha_hat_cross_brag, alpha_hat_cross_jh, rtol=5e-2)
+
+
+# test class for _nondim_visc_i_braginskii function:
+class Test__nondim_visc_i_braginskii:
+
+    def setup_method(self):
+        """set up some initial values for tests"""
+        self.big_hall = 1000
+        self.small_hall = 0
+
+    # values from Braginskii '65, eqs. 2.22 to 2.24
+    @pytest.mark.parametrize("expected, power", [
+        (np.array((0.96, 0.3, 1.2, 0.5, 1.0)), np.array((0, 2, 2, 1, 1)))
+    ])
+    def test_known_values(self, expected, power):
+        """check some known values"""
+        eta_i_hat = _nondim_visc_i_braginskii(self.big_hall)
+        eta_i_hat_with_powers = eta_i_hat * self.big_hall ** power
+        assert np.allclose(eta_i_hat_with_powers, expected, atol=1e-2)
+
+    def test_vs_ji_held_K2(self):
+        """confirm agreement with ji-held model when K=2"""
+        eta_i_hat_brag = _nondim_visc_i_braginskii(self.big_hall)
+        eta_i_hat_jh = _nondim_visc_i_ji_held(self.big_hall, 1, 0, 100, K=2)
+        for idx in [0, 1, 2, 3, 4]:
+            assert np.isclose(eta_i_hat_brag[idx], eta_i_hat_jh[idx],
+                              rtol=2e-2)
+
+
+# test class for _nondim_visc_e_braginskii function:
+class Test__nondim_visc_e_braginskii:
+
+    def setup_method(self):
+        """set up some initial values for tests"""
+        self.big_hall = 1000
+        self.small_hall = 0
+
+    # values from Braginskii '65
+    @pytest.mark.parametrize("Z, expected, idx", [
+        (1, 0.73, 0),  # eq (2.25)
+        (1, 0.51, 1),  # eq (2.26)
+        (1, 2.04, 2),  # eq (2.26)
+        (1, 0.5, 3),  # eq (2.27)
+        (1, 1.0, 4),  # eq (2.27)
+    ])
+    def test_known_values(self, Z, expected, idx):
+        """check some known values"""
+        beta_hat = _nondim_visc_e_braginskii(self.big_hall, Z)
+        if idx == 0:
+            assert(np.isclose(beta_hat[idx], expected, atol=1e-2))
+        elif idx == 1 or idx == 2:
+            assert np.isclose(beta_hat[idx] * self.big_hall ** 2, expected,
+                              atol=1e-2)
+        elif idx == 3 or idx == 4:
+            assert np.isclose(beta_hat[idx] * self.big_hall, expected,
+                              atol=1e-1)
+
+
+def test_fail__check_Z_nan():
+    with pytest.raises(PhysicsError):
+        _check_Z([1, 2, 3], 4)
+
+
+@pytest.mark.parametrize("Z", [1, 2, 4, 16, np.inf])
+def test__nondim_tc_e_spitzer(Z):
+    """test _nondim_tc_e_spitzer function"""
+    kappa = _nondim_tc_e_spitzer(Z)
+    if Z == 1:
+        kappa_check = 3.203
+        rtol = 1e-3
+    elif Z == 2 or Z == 4:
+        kappa_check = _nondim_tc_e_braginskii(0, Z, 'par')
+        rtol = 2e-2
+    elif Z == 16:
+        kappa_check = _nondim_tc_e_ji_held(0, Z, 'par')
+        rtol = 2e-2
+    elif Z == np.inf:
+        kappa_check = _nondim_tc_e_ji_held(0, 1e6, 'par')
+        rtol = 2e-2
+    assert np.isclose(kappa, kappa_check, rtol=rtol)
+
+
+@pytest.mark.parametrize("Z", [1, 2, 4, 16, np.inf])
+def test__nondim_resist_spitzer(Z):
+    """test _nondim_resist_spitzer function"""
+    alpha = _nondim_resist_spitzer(Z, 'par')
+    if Z == 1:
+        alpha_check = 0.5064
+        rtol = 1e-3
+    elif Z == 2 or Z == 4 or Z == np.inf:
+        alpha_check = _nondim_resist_braginskii(0, Z, 'par')
+        rtol = 2e-2
+    elif Z == 16:
+        alpha_check = _nondim_resist_ji_held(0, Z, 'par')
+        rtol = 2e-2
+    assert np.isclose(alpha, alpha_check, rtol=rtol)
+
+
+@pytest.mark.parametrize("Z", [1, 2, 4, 16, np.inf])
+def test__nondim_tec_spitzer(Z):
+    """test _nondim_tec_spitzer function"""
+    beta = _nondim_tec_spitzer(Z)
+    if Z == 1:
+        beta_check = 0.699
+        rtol = 1e-3
+    elif Z == 2 or Z == 4 or Z == np.inf:
+        beta_check = _nondim_tec_braginskii(0, Z, 'par')
+        rtol = 2e-2
+    elif Z == 16:
+        beta_check = _nondim_tec_ji_held(0, Z, 'par')
+        rtol = 2e-2
+    assert np.isclose(beta, beta_check, rtol=rtol)
+
+
+# approximated from Ji-Held '13 figures 1 and 2 (black circles)
+@pytest.mark.parametrize("hall, Z, field_orientation, expected", [
+    (0.0501, 1, 'perp', 3.187),
+    (0.2522, 1, 'perp', 2.597),
+    (1.004, 1, 'perp', 0.9942),
+    (3.178, 1, 'perp', 0.2218),
+    (10.03, 1, 'perp', 0.03216),
+    (31.66, 1, 'perp', 0.003878),
+    (100.6, 1, 'perp', 0.0004241),
+    (315.7, 1, 'perp', 0.00004492),
+    (1005, 1, 'perp', 0.000004543),
+    (0.03175, 1, 'cross', 0.1899),
+    (0.1001, 1, 'cross', 0.5648),
+    (0.3166, 1, 'cross', 1.234),
+    (1.267, 1, 'cross', 1.157),
+    (4, 1, 'cross', 0.5359),
+    (12.64, 1, 'cross', 0.1906),
+    (40.04, 1, 'cross', 0.06191),
+    (126.4, 1, 'cross', 0.01981),
+    (401.6, 1, 'cross', 0.006282),
+    (0.02494, 100, 'perp', 11.57),
+    (0.09969, 100, 'perp', 6.707),
+    (0.3987, 100, 'perp', 1.964),
+    (1.586, 100, 'perp', 0.3524),
+    (4.991, 100, 'perp', 0.06185),
+    (15.85, 100, 'perp', 0.008857),
+    (49.85, 100, 'perp', 0.001078),
+    (158, 100, 'perp', 0.0001184),
+    (499.9, 100, 'perp', 0.00001236),
+    (0.0319, 100, 'cross', 3.68),
+    (0.1271, 100, 'cross', 5.023),
+    (0.502, 100, 'cross', 2.945),
+    (1.595, 100, 'cross', 1.283),
+    (5.017, 100, 'cross', 0.462),
+    (15.95, 100, 'cross', 0.1534),
+    (50.24, 100, 'cross', 0.04949),
+    (158.1, 100, 'cross', 0.01572),
+    (500.8, 100, 'cross', 0.004972),
+])
+def test__nondim_tc_e_ji_held(hall, Z, field_orientation, expected):
+    """test _nondim_tc_e_ji_held function"""
+    kappa_hat = _nondim_tc_e_ji_held(hall, Z, field_orientation)
+    kappa_check = expected
+    assert np.isclose(kappa_hat, kappa_check, rtol=2e-2)
+
+
+# approximated from Ji-Held '13 figures 1 and 2 (black circles)
+@pytest.mark.parametrize("hall, Z, field_orientation, expected", [
+    (0.03939, 1, 'perp', 0.6959),
+    (0.2498, 1, 'perp', 0.6216),
+    (1.258, 1, 'perp', 0.3007),
+    (6.321, 1, 'perp', 0.06303),
+    (25.14, 1, 'perp', 0.01126),
+    (100.3, 1, 'perp', 0.00161),
+    (317.2, 1, 'perp', 0.0002877),
+    (1006, 1, 'perp', 0.0000483),
+    (3191, 1, 'perp', 0.000007741),
+    (9958, 1, 'perp', 0.000001226),
+    (0.02515, 1, 'cross', 0.02218),
+    (0.06343, 1, 'cross', 0.0551),
+    (0.1589, 1, 'cross', 0.1268),
+    (0.5041, 1, 'cross', 0.2523),
+    (2.006, 1, 'cross', 0.24),
+    (6.321, 1, 'cross', 0.1335),
+    (19.97, 1, 'cross', 0.05613),
+    (50.26, 1, 'cross', 0.0253),
+    (126.9, 1, 'cross', 0.01083),
+    (317.5, 1, 'cross', 0.004495),
+    (795.3, 1, 'cross', 0.001839),
+    (0.03975, 100, 'perp', 1.335),
+    (0.2522, 100, 'perp', 0.7647),
+    (1.258, 100, 'perp', 0.2709),
+    (6.345, 100, 'perp', 0.05833),
+    (25.12, 100, 'perp', 0.01112),
+    (100.2, 100, 'perp', 0.001649),
+    (317.8, 100, 'perp', 0.0002915),
+    (992.3, 100, 'perp', 0.00004875),
+    (3170, 100, 'perp', 0.000007839),
+    (9994, 100, 'perp', 0.000001213),
+    (0.02507, 100, 'cross', 0.2022),
+    (0.07935, 100, 'cross', 0.4037),
+    (0.3155, 100, 'cross', 0.4764),
+    (1.258, 100, 'cross', 0.3272),
+    (3.958, 100, 'cross', 0.1795),
+    (12.53, 100, 'cross', 0.08046),
+    (39.62, 100, 'cross', 0.03088),
+    (100.2, 100, 'cross', 0.01332),
+    (250.3, 100, 'cross', 0.00562),
+    (629.8, 100, 'cross', 0.002308),
+])
+def test__nondim_tec_ji_held(hall, Z, field_orientation, expected):
+    """test _nondim_tec_ji_held function"""
+    beta_hat = _nondim_tec_ji_held(hall, Z, field_orientation)
+    beta_check = expected
+    assert np.isclose(beta_hat, beta_check, rtol=2e-2)
+
+
+# approximated from Ji-Held '13 figures 1 and 2 (black circles)
+@pytest.mark.parametrize("hall, Z, field_orientation, expected", [
+    (0.06317, 1, 'perp', 0.5064),
+    (0.3966, 1, 'perp', 0.5316),
+    (1.586, 1, 'perp', 0.619),
+    (5.041, 1, 'perp', 0.7309),
+    (15.8, 1, 'perp', 0.8343),
+    (63.35, 1, 'perp', 0.92),
+    (315.6, 1, 'perp', 0.9701),
+    (1998, 1, 'perp', 0.9912),
+    (0.02495, 1, 'cross', 0.005026),
+    (0.06249, 1, 'cross', 0.01255),
+    (0.1574, 1, 'cross', 0.03007),
+    (0.4998, 1, 'cross', 0.07338),
+    (1.995, 1, 'cross', 0.1254),
+    (12.6, 1, 'cross', 0.1211),
+    (62.96, 1, 'cross', 0.07421),
+    (252.4, 1, 'cross', 0.03992),
+    (998.4, 1, 'cross', 0.01908),
+    (3194, 1, 'cross', 0.009749),
+    (9963, 1, 'cross', 0.004812),
+    (0.06333, 100, 'perp', 0.3144),
+    (0.3137, 100, 'perp', 0.3894),
+    (0.9954, 100, 'perp', 0.4979),
+    (2.507, 100, 'perp', 0.6091),
+    (6.324, 100, 'perp', 0.7221),
+    (20.02, 100, 'perp', 0.8401),
+    (79.68, 100, 'perp', 0.9275),
+    (399.2, 100, 'perp', 0.9743),
+    (2509, 100, 'perp', 0.9922),
+    (0.02505, 100, 'cross', 0.02138),
+    (0.07929, 100, 'cross', 0.05403),
+    (0.3138, 100, 'cross', 0.1133),
+    (1.581, 100, 'cross', 0.1693),
+    (9.994, 100, 'cross', 0.1539),
+    (49.88, 100, 'cross', 0.09238),
+    (199.1, 100, 'cross', 0.04845),
+    (786.3, 100, 'cross', 0.02278),
+    (2504, 100, 'cross', 0.01152),
+    (7879, 100, 'cross', 0.005652),
+])
+def test__nondim_resist_ji_held(hall, Z, field_orientation, expected):
+    """test _nondim_resist_ji_held function"""
+    alpha_hat = _nondim_resist_ji_held(hall, Z, field_orientation)
+    alpha_check = expected
+    assert np.isclose(alpha_hat, alpha_check, rtol=2e-2)
+
+
+# approximated from Ji-Held '13 figure 3 (K = 80)
+@pytest.mark.parametrize("hall, Z, index, expected", [
+    (0.01968, 1, 2, 0.7368),
+    (0.1338, 1, 2, 0.7171),
+    (0.4766, 1, 2, 0.6003),
+    (1.339, 1, 2, 0.3241),
+    (4.479, 1, 2, 0.06964),
+    (15.28, 1, 2, 0.008006),
+    (48.82, 1, 2, 0.0008496),
+    (94.89, 1, 2, 0.0002257),
+    (0.01267, 1, 4, 0.009038),
+    (0.03978, 1, 4, 0.02831),
+    (0.1151, 1, 4, 0.08041),
+    (0.2904, 1, 4, 0.1823),
+    (0.8049, 1, 4, 0.3158),
+    (1.77, 1, 4, 0.3083),
+    (3.886, 1, 4, 0.2062),
+    (16.68, 1, 4, 0.05845),
+    (39.82, 1, 4, 0.02501),
+    (77.82, 1, 4, 0.01288),
+])
+def test__nondim_visc_e_ji_held(hall, Z, index, expected):
+    """test _nondim_visc_e_ji_held function"""
+    alpha_hat = _nondim_visc_e_ji_held(hall, Z)
+    alpha_check = expected
+    assert np.isclose(alpha_hat[index], alpha_check, rtol=2e-2)
+
+
+# approximated from Ji-Held '13 figure 7
+# note r = sqrt(2) * x
+# note kappa from figure = kappa_hat / sqrt(2)
+@pytest.mark.parametrize("hall, Z, mu, theta, field_orientation, expected", [
+    (0.01529, 1, 0, 100, 'perp', 3.99586042),
+    (0.0589, 1, 0, 100, 'perp', 3.96828326),
+    (0.22953, 1, 0, 100, 'perp', 3.34885772),
+    (0.50077, 1, 0, 100, 'perp', 2.22385083),
+    (1.29924, 1, 0, 100, 'perp', 0.76650375),
+    (5.48856, 1, 0, 100, 'perp', 0.06337091),
+    (25.99325, 1, 0, 100, 'perp', 0.00298328),
+    (68.00953, 1, 0, 100, 'perp', 0.00042822),
+    (120.53342, 1, 0, 100, 'perp', 0.00013739),
+    (0.01865, 1, 0, 100, 'cross', 0.13661303),
+    (0.04544, 1, 0, 100, 'cross', 0.32795613),
+    (0.14199, 1, 0, 100, 'cross', 0.95317994),
+    (0.38806, 1, 0, 100, 'cross', 1.73029029),
+    (1.12996, 1, 0, 100, 'cross', 1.53230039),
+    (2.96843, 1, 0, 100, 'cross', 0.77216061),
+    (12.42528, 1, 0, 100, 'cross', 0.19968696),
+    (77.11707, 1, 0, 100, 'cross', 0.03235721),
+])
+def test__nondim_tc_i_ji_held(hall, Z, mu, theta, field_orientation, expected):
+    """test _nondim_tc_i_ji_held function"""
+    kappa_hat = _nondim_tc_i_ji_held(hall, Z, mu, theta, field_orientation)
+    kappa_check = expected
+    assert np.isclose(kappa_hat, kappa_check, rtol=2e-2)
+
+
+# approximated from Ji-Held '13 figure 7
+# note r = sqrt(2) * x
+# note eta from figure = eta_hat / sqrt(2)
+@pytest.mark.parametrize("hall, Z, mu, theta, index, expected", [
+    (0.01981, 1, 0, 100, 2, 0.96166522),
+    (0.17423, 1, 0, 100, 2, 0.92206724),
+    (0.66369, 1, 0, 100, 2, 0.6344162),
+    (1.72958, 1, 0, 100, 2, 0.24890159),
+    (10.09041, 1, 0, 100, 2, 0.01134199),
+    (52.50975, 1, 0, 100, 2, 0.00042844),
+    (0.01829, 1, 0, 100, 4, 0.01943837),
+    (0.07845, 1, 0, 100, 4, 0.08251936),
+    (0.35765, 1, 0, 100, 4, 0.31643028),
+    (0.99985, 1, 0, 100, 4, 0.45346758),
+    (4.35295, 1, 0, 100, 4, 0.21036427),
+    (22.74055, 1, 0, 100, 4, 0.04358606),
+    (80.42633, 1, 0, 100, 4, 0.01238144),
+])
+def test__nondim_visc_i_ji_held(hall, Z, mu, theta, index, expected):
+    """test _nondim_visc_i_ji_held function"""
+    kappa_hat = _nondim_visc_i_ji_held(hall, Z, mu, theta)
+    kappa_check = expected
+    assert np.isclose(kappa_hat[index], kappa_check, rtol=2e-2)