Skip to main content

FARGO3D Wrapping

Project description

FARGOpy

Wrapping FRAGO3D

version downloads

FARGOpy is a python wrapping for FARGO3D., the well-knwon hydrodynamics and magnetohydrodynamics parallel code. This wrapping is intended to ensue the interaction with FARGO3D especially for those starting using the code, for instance for teaching and training purposes, but also provide functionalities for most advanced users in tasks related to the postprocessing of output files and plotting.

Download and install

For using FARGOpy you first need to download and install FARGO3D and all its prerequisites. For a detailed guide please see the FARGO documentation or the project repo at bitbucket. Still, FARGOpy provides some useful commands and tools to test the platform on which you are working and check if it is prepared to use the whole functionalities of the packages or part of them.

NOTE: It is important to understand that FARGO3D works especially well on Linux plaforms (including MacOS). The same condition applies for FARGOpy. Because of that, most internal as well as public features of the packages are designed to work in a Linux environment. For working in another operating systems, for instance for teaching or training purposes, please consider to use virtual machines.

For installing FARGOpy run:

# Uncomment if you are in Google Colab
# !pip install -q fargopy

Once installed import it:

import fargopy as fp

# Set in True to see all messages
fp.Conf.VERBOSE = False

# For developing purpose. Remove during production
%load_ext autoreload
%autoreload 2
The autoreload extension is already loaded. To reload it, use:
  %reload_ext autoreload

Install FARGO3D

For obvious reasons FARGO3D is not provided with FARGOpy. Get and set the package using:

fp.Conf.set_fargo3d()
> Checking for FARGO3D directroy:
	✓FARGO3D source code is available in your system at './public/'
> Checking for FARGO3D normal binary:
	✓Binary in normal mode compiling correctly
> Checking for FARGO3D parallel binary:
	✓Binary in parallel mode compiling correctly
> Checking for FARGO3D GPU binary:
FARGO3D binary with options 'GPU=1' not compiled at './public/'
	Compiling FARGO3D with GPU (it may take a while)...
Compiling FARGO3D with options 'GPU=1' (it may take a while... go for a coffee)
	No GPU available

These are the critical configuration variables that must be setup before starting working with FARGOpy:

print("FARGO3D is present: ",fp.Conf.FARGO3D_IS_HERE)
print("Is FARGO3D compiling: ",fp.Conf.FARGO3D_IS_COMPILING)
print("Is FARGO3D compiling in parallel: ",fp.Conf.FARGO3D_PARALLEL)
print("Is FARGO3D compiling in GPU: ",fp.Conf.FARGO3D_GPU)
FARGO3D is present:  True
Is FARGO3D compiling:  True
Is FARGO3D compiling in parallel:  1
Is FARGO3D compiling in GPU:  0

If you already have a copy of FARGO3D you just need to set the configuration variables telling FARGOpy where the source code is located:

  fp.Conf.update_fargo3d_dir('/tmp','public')

once the variables has been set, you should run:

  fp.Conf.set_fargo3d()

Quickstart

The first thing you need to run FARGOpy is to create a simulation:

sim = fp.Simulation()

FARGO3D comes along with several test simulations configured as setups. You may list which setups are available using:

sim.list_setups()
['binary',
 'fargo',
 'fargo_multifluid',
 'fargo_nu',
 'mri',
 'otvortex',
 'p3diso',
 'p3disof',
 'sod1d']

Once you select the setup, you may load it into the simulation:

sim.load_setup('fargo')

Alternatively, you may create the simulation from the beginning using the setup option:

sim = fp.Simulation(setup='fargo')

Before start, it's a good idea to clean all outputs (if they exists):

sim.clean_output()
Cleaning simulation outputs...
Output directory is clean already.

You may compile the simulation:

sim.compile(force=True)
Compiling FARGO3D with options 'SETUP=fargo PARALLEL=1 GPU=0 ' (it may take a while... go for a coffee)

Once you have loaded the setup we may proceed compiling and running the simulation:

sim.run()
Running asynchronously: mpirun -np 1 ./.fargo3d_SETUP-fargo_PARALLEL-1_GPU-0_ -m -t setups/fargo/fargo.par
Command is running in background

You can check the status:

sim.status(mode='isrunning')
################################################################################
Running status of the process:
	The process is running.

There are several status modes:

  • Check the latest lines of the logfile:
sim.status(mode='logfile')
################################################################################
Logfile content:
The latest 10 lines of the logfile:

..............
..............
..............
..............
..............
..............
..............
..............
..............
...........
  • Check (and return) the output files:
sim.status(mode='outputs')
################################################################################
Output content:

118 available datafiles:

bigplanet0.dat, dims.dat, domain_x.dat, domain_y.dat, domain_z.dat, gasdens0.dat, gasdens0_2d.dat, gasdens1.dat, gasdens10.dat, gasdens11.dat, 
gasdens12.dat, gasdens13.dat, gasdens14.dat, gasdens15.dat, gasdens16.dat, gasdens17.dat, gasdens18.dat, gasdens19.dat, gasdens2.dat, gasdens20.dat, 
gasdens3.dat, gasdens4.dat, gasdens5.dat, gasdens6.dat, gasdens7.dat, gasdens8.dat, gasdens9.dat, gasenergy0.dat, gasenergy1.dat, gasenergy10.dat, 
gasenergy11.dat, gasenergy12.dat, gasenergy13.dat, gasenergy14.dat, gasenergy15.dat, gasenergy16.dat, gasenergy17.dat, gasenergy18.dat, gasenergy19.dat, gasenergy2.dat, 
gasenergy20.dat, gasenergy3.dat, gasenergy4.dat, gasenergy5.dat, gasenergy6.dat, gasenergy7.dat, gasenergy8.dat, gasenergy9.dat, gasvx0.dat, gasvx0_2d.dat, 
gasvx1.dat, gasvx10.dat, gasvx11.dat, gasvx12.dat, gasvx13.dat, gasvx14.dat, gasvx15.dat, gasvx16.dat, gasvx17.dat, gasvx18.dat, 
gasvx19.dat, gasvx2.dat, gasvx20.dat, gasvx3.dat, gasvx4.dat, gasvx5.dat, gasvx6.dat, gasvx7.dat, gasvx8.dat, gasvx9.dat, 
gasvy0.dat, gasvy0_2d.dat, gasvy1.dat, gasvy10.dat, gasvy11.dat, gasvy12.dat, gasvy13.dat, gasvy14.dat, gasvy15.dat, gasvy16.dat, 
gasvy17.dat, gasvy18.dat, gasvy19.dat, gasvy2.dat, gasvy20.dat, gasvy3.dat, gasvy4.dat, gasvy5.dat, gasvy6.dat, gasvy7.dat, 
gasvy8.dat, gasvy9.dat, orbit0.dat, outputgas.dat, planet0.dat, summary0.dat, summary1.dat, summary10.dat, summary11.dat, summary12.dat, 
summary13.dat, summary14.dat, summary15.dat, summary16.dat, summary17.dat, summary18.dat, summary19.dat, summary2.dat, summary20.dat, summary3.dat, 
summary4.dat, summary5.dat, summary6.dat, summary7.dat, summary8.dat, summary9.dat, tqwk0.dat, used_rad.dat, 
  • Check the available snapshots:
sim.status(mode='snapshots')
################################################################################
Snapshots:
	Number of available snapshots: 25
	Latest resumable snapshot: 23

You may also combine them:

sim.status(mode='isrunning snapshots')
################################################################################
Running status of the process:
	The process is running.

################################################################################
Snapshots:
	Number of available snapshots: 30
	Latest resumable snapshot: 28

Or ran all of them:

sim.status(mode='all')
################################################################################
Running status of the process:
	The process is running.

################################################################################
Logfile content:
The latest 10 lines of the logfile:

.............
.............
.............
.............
.............
.............
.............
.............
.............
....
################################################################################
Output content:

178 available datafiles:

bigplanet0.dat, dims.dat, domain_x.dat, domain_y.dat, domain_z.dat, gasdens0.dat, gasdens0_2d.dat, gasdens1.dat, gasdens10.dat, gasdens11.dat, 
gasdens12.dat, gasdens13.dat, gasdens14.dat, gasdens15.dat, gasdens16.dat, gasdens17.dat, gasdens18.dat, gasdens19.dat, gasdens2.dat, gasdens20.dat, 
gasdens21.dat, gasdens22.dat, gasdens23.dat, gasdens24.dat, gasdens25.dat, gasdens26.dat, gasdens27.dat, gasdens28.dat, gasdens29.dat, gasdens3.dat, 
gasdens30.dat, gasdens31.dat, gasdens32.dat, gasdens4.dat, gasdens5.dat, gasdens6.dat, gasdens7.dat, gasdens8.dat, gasdens9.dat, gasenergy0.dat, 
gasenergy1.dat, gasenergy10.dat, gasenergy11.dat, gasenergy12.dat, gasenergy13.dat, gasenergy14.dat, gasenergy15.dat, gasenergy16.dat, gasenergy17.dat, gasenergy18.dat, 
gasenergy19.dat, gasenergy2.dat, gasenergy20.dat, gasenergy21.dat, gasenergy22.dat, gasenergy23.dat, gasenergy24.dat, gasenergy25.dat, gasenergy26.dat, gasenergy27.dat, 
gasenergy28.dat, gasenergy29.dat, gasenergy3.dat, gasenergy30.dat, gasenergy31.dat, gasenergy32.dat, gasenergy4.dat, gasenergy5.dat, gasenergy6.dat, gasenergy7.dat, 
gasenergy8.dat, gasenergy9.dat, gasvx0.dat, gasvx0_2d.dat, gasvx1.dat, gasvx10.dat, gasvx11.dat, gasvx12.dat, gasvx13.dat, gasvx14.dat, 
gasvx15.dat, gasvx16.dat, gasvx17.dat, gasvx18.dat, gasvx19.dat, gasvx2.dat, gasvx20.dat, gasvx21.dat, gasvx22.dat, gasvx23.dat, 
gasvx24.dat, gasvx25.dat, gasvx26.dat, gasvx27.dat, gasvx28.dat, gasvx29.dat, gasvx3.dat, gasvx30.dat, gasvx31.dat, gasvx32.dat, 
gasvx4.dat, gasvx5.dat, gasvx6.dat, gasvx7.dat, gasvx8.dat, gasvx9.dat, gasvy0.dat, gasvy0_2d.dat, gasvy1.dat, gasvy10.dat, 
gasvy11.dat, gasvy12.dat, gasvy13.dat, gasvy14.dat, gasvy15.dat, gasvy16.dat, gasvy17.dat, gasvy18.dat, gasvy19.dat, gasvy2.dat, 
gasvy20.dat, gasvy21.dat, gasvy22.dat, gasvy23.dat, gasvy24.dat, gasvy25.dat, gasvy26.dat, gasvy27.dat, gasvy28.dat, gasvy29.dat, 
gasvy3.dat, gasvy30.dat, gasvy31.dat, gasvy32.dat, gasvy4.dat, gasvy5.dat, gasvy6.dat, gasvy7.dat, gasvy8.dat, gasvy9.dat, 
orbit0.dat, outputgas.dat, planet0.dat, summary0.dat, summary1.dat, summary10.dat, summary11.dat, summary12.dat, summary13.dat, summary14.dat, 
summary15.dat, summary16.dat, summary17.dat, summary18.dat, summary19.dat, summary2.dat, summary20.dat, summary21.dat, summary22.dat, summary23.dat, 
summary24.dat, summary25.dat, summary26.dat, summary27.dat, summary28.dat, summary29.dat, summary3.dat, summary30.dat, summary31.dat, summary32.dat, 
summary4.dat, summary5.dat, summary6.dat, summary7.dat, summary8.dat, summary9.dat, tqwk0.dat, used_rad.dat, 

################################################################################
Snapshots:
	Number of available snapshots: 33
	Latest resumable snapshot: 31

You may stop the run at any time:

sim.stop()
Stopping FARGO3D process (pid = 8084)

Before resuming get the latest resumable snapshot:

sim.status(mode='snapshots')
################################################################################
Snapshots:
	Number of available snapshots: 37
	Latest resumable snapshot: 35

And resume since the latest resumable snapshot:

sim.resume(since=sim.resumable_snapshot)
Resuming from snapshot 35
Running asynchronously: mpirun -np 1 ./.fargo3d_SETUP-fargo_PARALLEL-1_GPU-0_ -m -t -S 35 -t setups/fargo/fargo.par
Command is running in background

Check the status again:

sim.status(mode='snapshots')
################################################################################
Snapshots:
	Number of available snapshots: 41
	Latest resumable snapshot: 37

Once the running is finished you will get:

sim.status(mode='isrunning')
################################################################################
Running status of the process:
	The process has ended with termination code 0.

What's new

Version 0.1.*:

  • All the dynamics of loading/compiling/running/stoppìng/resuming FARGO3D has been developed.

Version 0.0.*:

  • First classes created.
  • The project is started!

This package has been designed and written mostly by Jorge I. Zuluaga with advising and contributions by Matías Montesinos (C) 2023

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fargopy-0.1.0.tar.gz (14.9 kB view hashes)

Uploaded Source

Built Distribution

fargopy-0.1.0-py3-none-any.whl (12.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page