Package: wakeflow
Generate and manipulate semi-analytic models of planet wakesQuickstart tutorial »Documentation »Overviewwakeflowis a Python package primarily for calculating tidally-induced perturbations resulting from a planet embedded in a gas disk. It is an implementation of both the linear theory for planet wake generation (Goldreich and Tremaine 1979) and the non-linear theory of wake propagation (Rafikov 2002) in 2D.wakeflowlets you generate these models by specifying disk and system properties as typically parameterised in the planet formation literature. It also contains additional tools allowing you to:Visualise your resultsCreate 3D models under some assumptionsInterface directly with the radiative transfer codeMCFOSTto generate synthetic images of these models(Planned) Rotate and project your models to create line-of-sight maps of velocity perturbations at some emitting layer(Planned) Create analytic predictions for peak velocity maps as found inCalcino et al. 2022wakeflowis intended to allow both theorists and observers to easily generate models of the interaction between disks and embedded planets, instead of having to run expensive fluid simulations. In particular,wakeflowallows researchers to easily test whether a planet can explain kinematic perturbations observed in some set of disk observations, so-calledvelocity kinks(see for examplePinte et al. 2018).wakeflowtherefore also allows for a fast exploration of disk and planet parameters in order to determine those most likely to recreate observations, before resources are spent on 3D simulations. In addition,wakeflowmodels may be used withMCFOSTto create synthetic images that may be compared directly with observations.(back to top)Installationwakeflowmay be most easily installed from the Python Package Index (PyPI), or can also be installed from theGitHub repositoryif you wish to make contributions. Dependencies forwakeflowconsist mostly of standard python libraries. We recommend using a package manager such asAnacondato make your life easier, but this is not required.PyPI (pip)The easiest way to installwakeflowis viaPyPI, usingpip:pipinstallwakeflowthat's it!From source (GitHub)If you want to contribute to, or modifywakeflow, you should install it from theGitHub repository. After installing the dependencies (see below), simply fork the repo using the button in the top right, and then clone it:gitclonehttps://github.com/<replace-by-your-username>/wakeflow.gitAlternatively, you may install from source even if you do not wish to editwakeflow, in which case I would recommend skipping the fork and simply cloning the repo directly:gitclonehttps://github.com/TomHilder/wakeflow.gitNavigate to the directory it is installed in:cdwakeflowYou can verify that you are in the correct directory by checking that you seeREADME.mdwhen you run:lsNow we usepipto create a local andeditableinstall ofwakeflow:python-mpipinstall-e.Do not forget the dot (.) in the above command, as it tellspipto look in the current working directory (wherewakeflowis). The advantage of installing this way is that it places alinktowakeflowin yoursite-packagesfolder instead ofmovingit there. Now when you edit the code inwakeflow/src/wakeflow/it will edit your installation!(back to top)DependenciesPython packages:numpymatplotlibastropyscipysetuptoolspyyamltqdmpytest(optional)pytest-cov(optional)pymcfost(optional, only if interfacing withMCFOST)If you installwakeflowusingpipthen the required dependencies will be automatically installed.UsagePlease refer to theQuickstart tutorialfor the most typical usage ofwakeflowincluding generating models and reading the results. Additional examples of more advanced usage can be found in theDocumentation.(back to top)Testingwakeflowis automatically unit-tested on Github using Actions andtox. If you have installedwakeflowfrom source, you may run a local test on your machine provided that you havepytestandpytest-covinstalled. Simply navigate to your installation directory and run:pytestContributingContributions towakefloware welcome. If you would like to implement a new feature, please:Install using the above installation from source instructionsCreate your Feature Branch (git checkout -b feature/NewFeature)Commit your Changes (git commit -m 'Added some NewFeature')Push to the Branch (git push origin feature/NewFeature)Open a Pull RequestIf you have a suggestion that would improvewakeflowbut do not have the time or means to implement it yourself, please simply open an issue with the tag "enhancement". If you would like to report a bug, please open an issue with the tag "bug".Don't forget to give the project a star!(back to top)LicenseDistributed under the MIT License. SeeLICENSE.txtfor more information.(back to top)CitingPlease citeHilder et al. (2023)andBollati et al. (2021)in any work wherewakeflowhas been used. Please contact us ifwakeflowis useful to you, we welcome any collaboration opportunities.(back to top)Getting HelpIf you are experiencing issues withwakeflow, please try the following:Check thedocumentationto see if it may be easily resolvedOpen anissueon therepositoryFeel free to contact us directly using the details belowContactIf you are having difficulties installing or usingwakeflow, please let us know! We are happy to answer any questions or provide assistance.Thomas Hilder -thil0004@student.monash.eduProject Link:https://github.com/TomHilder/wakeflow(back to top)Acknowledgmentswakeflowis based on the semi-analytic theory of planets wakes described inRafikov (2002)andBollati et al. (2021). The code is partially adapted fromanalytical kinkswhich was written by Francesco Bollati, Daniele Fasano and Thomas Hilder, and can be foundhere.Additional acknowledgements:Img ShieldsBest-README-TemplateToxTox GH Actions(back to top)