pax_global_header 0000666 0000000 0000000 00000000064 15055564116 0014522 g ustar 00root root 0000000 0000000 52 comment=28c1a60c18dcb3a4c3ca542ed239c1e50a744032
danieljprice-splash-28c1a60/ 0000775 0000000 0000000 00000000000 15055564116 0015771 5 ustar 00root root 0000000 0000000 danieljprice-splash-28c1a60/.github/ 0000775 0000000 0000000 00000000000 15055564116 0017331 5 ustar 00root root 0000000 0000000 danieljprice-splash-28c1a60/.github/workflows/ 0000775 0000000 0000000 00000000000 15055564116 0021366 5 ustar 00root root 0000000 0000000 danieljprice-splash-28c1a60/.github/workflows/build.yml 0000664 0000000 0000000 00000002763 15055564116 0023220 0 ustar 00root root 0000000 0000000 # This is a basic workflow to help you get started with Actions
name: build
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Install gfortran and cairo on Linux
run: sudo apt-get install gfortran libcairo2-dev
- name: Check gfortran version
run: gfortran --version
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4
- name: get a copy of giza
run: git clone https://github.com/danieljprice/giza
- name: compile splash
run: make SYSTEM=gfortran withgiza
- name: clean
run: make clean
- name: compile libexact
run: make SYSTEM=gfortran libexact
- name: compile libread
run: make SYSTEM=gfortran libread
- name: clean
run: make clean
- name: compile splash in single precision
run: make SYSTEM=gfortran DOUBLEPRECISION=no withgiza
- name: clean
run: make clean
- name: compile splash with debug flags
run: make SYSTEM=gfortran DEBUG=yes withgiza
danieljprice-splash-28c1a60/.github/workflows/release.yml 0000664 0000000 0000000 00000006633 15055564116 0023541 0 ustar 00root root 0000000 0000000 name: release
# a general github action to generate a release whenever a version tag is pushed
# generates and uploads a tarball of the source code
# in a way that plays nicely with git submodules
# could be easily adapted to produce binaries for each OS
# Daniel Price, Aug 2020
on:
push:
tags:
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
release:
strategy:
matrix:
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: checkout code
uses: actions/checkout@v3
with:
submodules: recursive
- name: Get version
id: get_version
env:
vernum: ${{ github.ref }}
repo: ${{ github.repository }}
run: |
echo "version=${vernum/refs\/tags\//}" >> $GITHUB_ENV
echo "repo=$(basename ${repo})" >> $GITHUB_ENV
echo "tarfile=$(basename ${repo})-${vernum/refs\/tags\//}.tar.gz" >> $GITHUB_ENV
# - name: build tarball mac
# if: matrix.os == 'macos-latest'
# env:
# tarfile: ${{ steps.get_version.outputs.tarfile }}
# repo: ${{ steps.get_version.outputs.repo }}
# run: |
# tar cfz /tmp/$tarfile --exclude ".git*" -s "/./${repo}/" .
- name: build tarball
if: matrix.os == 'ubuntu-latest'
env:
tarfile: ${{ env.tarfile }}
repo: ${{ env.repo }}
run: |
echo "tarfile=${{ env.tarfile }}, repo=${{ env.repo }}"
tar cfz /tmp/${{ env.tarfile }} --exclude ".git*" \
--transform "s,.,${{ env.repo }}," .
- name: check tarball and get SHA
env:
tarfile: ${{ env.tarfile }}
id: shasum
run: |
mv /tmp/${{ env.tarfile }} .
tar tfz ${{ env.tarfile }}
echo "sha=$(shasum -a 256 ${{ env.tarfile }} | awk '{printf $1}')" >> $GITHUB_ENV
- name: Extract Release Notes
run: |
./scripts/get_release_notes.pl > release-notes.md
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.version }}
release_name: ${{ env.version }}
body_path: release-notes.md
draft: false
prerelease: false
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.tarfile }}
asset_name: ${{ env.tarfile }}
asset_content_type: application/gzip
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
- name: Bump Brew
env:
HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.BREW_TOKEN_SPLASH }}
version: ${{ env.version }}
brewtap: danieljprice/all
formula: ${{ env.repo }}
run: |
git config --global user.email "daniel.price@monash.edu"
git config --global user.name "Daniel Price"
brew install pipgrip
brew tap $brewtap
brew bump-formula-pr -f --version=${version/v/} --no-browse --no-audit \
--sha256=${{ env.sha }} \
--url="https://github.com/${{ github.repository }}/releases/download/${{ env.version }}/${{ env.tarfile }}" \
$brewtap/$formula
danieljprice-splash-28c1a60/.gitignore 0000664 0000000 0000000 00000000447 15055564116 0017766 0 ustar 00root root 0000000 0000000 *.mod
*.o
*.so
?splash
docs/splash.aux
docs/splash.log
docs/splash.toc
docs/splash.out
docs/splash.blg
docs/splash.haux
docs/*.bib
docs/html/*.png
docs/html/*.html
docs/html/splash.css
cairo-*
pixman-*
bin
ref
*otherendian.f90
Portfile*
.DS_Store
releasenotes*
ChangeLog
giza*
tests
__pycache__
danieljprice-splash-28c1a60/.readthedocs.yml 0000664 0000000 0000000 00000001212 15055564116 0021053 0 ustar 00root root 0000000 0000000 # .readthedocs.yml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the version of Python and other tools
build:
os: ubuntu-22.04
tools:
python: "3.12"
# Build documentation in the docs/ directory with Sphinx
sphinx:
configuration: docs/conf.py
# Build documentation with MkDocs
#mkdocs:
# configuration: mkdocs.yml
# Optionally build your docs in additional formats such as PDF
#formats:
# - pdf
# Optionally set the version of Python and requirements required to build your docs
python:
install:
- requirements: docs/requirements.txt
danieljprice-splash-28c1a60/INSTALL 0000664 0000000 0000000 00000000544 15055564116 0017025 0 ustar 00root root 0000000 0000000 Basic compilation, with all dependencies present:
make SYSTEM=gfortran
Compilation with giza in subdirectory of splash:
cd splash
git clone https://github.com/danieljprice/giza
make SYSTEM=gfortran withgiza
More detailed installation instructions can be found in the userguide:
https://splash-viz.readthedocs.io/en/latest/getting-started.html#install
danieljprice-splash-28c1a60/LICENCE 0000664 0000000 0000000 00000035445 15055564116 0016771 0 ustar 00root root 0000000 0000000 GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
danieljprice-splash-28c1a60/Makefile 0000664 0000000 0000000 00000001070 15055564116 0017427 0 ustar 00root root 0000000 0000000 #----------------------------------------------------------------
# Parent Makefile for SPLASH
# This file is just a wrapper for the sub-make in the build
# directory. Refer to build/Makefile for more details.
#
# (c) 2007-2013 Daniel Price
#
#----------------------------------------------------------------
.PHONY: splash install docs tests src bin
splash:
@cd build; ${MAKE} ${MAKECMDGOALS}
%::
@cd build; ${MAKE} ${MAKECMDGOALS}
install:
@cd build; ${MAKE} ${MAKECMDGOALS}
docs:
@cd build; ${MAKE} ${MAKECMDGOALS}
clean:
@cd build; ${MAKE} clean
danieljprice-splash-28c1a60/README.md 0000664 0000000 0000000 00000005476 15055564116 0017264 0 ustar 00root root 0000000 0000000 SPLASH - an interactive visualisation tool for SPH data
=======================================================
About
-----
SPLASH is a free and open source visualisation tool for Smoothed Particle Hydrodynamics (SPH) simulations in one, two and three dimensions, developed mainly for astrophysics. It uses a command-line menu but data can be manipulated interactively in the plotting window.
Data is read *directly* from the code dump format giving rapid access to results and the visualisation is advanced forwards and backwards through timesteps by single keystrokes.
SPLASH uses the SPH smoothing kernel to render plots of density and other physical quantities, giving a smooth representation of the data. The goal is to produce beautiful plots and visualisations from SPH codes, instead of simple particle plots.
SPLASH can also be used as a standalone plotting tool for any kind of tabulated or image data from ascii, csv or .fits files.
Status
------

[](https://splash-viz.readthedocs.io/en/latest/?badge=latest)
Example
-------
Links
-----
- Project homepage: http://users.monash.edu.au/~dprice/splash
- Code repository: https://github.com/danieljprice/splash
- Documentation: https://splash-viz.readthedocs.io
- Code paper: https://adsabs.harvard.edu/abs/2007PASA...24..159P
Install
-------
For installation instructions see the [userguide](https://splash-viz.readthedocs.io/en/latest/getting-started.html).
Usage
------------
```
splash mydata.txt
```
Command line mode (to screen):
```
splash -r density dump_0*
```
Command line mode (to file):
```
splash -r density -dev myplot.pdf dump_0*
```
See the [userguide](https://splash-viz.readthedocs.io) for more.
Contributing
------------
We welcome contributions, including (but not limited to):
1. Code, via [pull request](https://github.com/danieljprice/splash/pulls). Please read developer section of user guide for guidelines.
2. Documentation, also by [pull request](https://github.com/danieljprice/splash/pulls). Docs can be edited in the docs/ directory of the main code.
3. Suggestions for features or bug reports, via the [issue tracker](https://github.com/danieljprice/splash/issues/new). Please file bugs via github rather than by email.
4. Discussion via the [mailing lists](http://users.monash.edu.au/~dprice/splash/mailinglists.html)
Citation
--------
Please cite [Price (2007)](https://adsabs.harvard.edu/abs/2007PASA...24..159P)
when using SPLASH.
License
-------
See [LICENCE](LICENCE) file for usage and distribution conditions
Copyright (c) 2004-2025 Daniel Price and contributors
danieljprice-splash-28c1a60/bin/ 0000775 0000000 0000000 00000000000 15055564116 0016541 5 ustar 00root root 0000000 0000000 danieljprice-splash-28c1a60/bin/.keep 0000664 0000000 0000000 00000000000 15055564116 0017454 0 ustar 00root root 0000000 0000000 danieljprice-splash-28c1a60/build/ 0000775 0000000 0000000 00000000000 15055564116 0017070 5 ustar 00root root 0000000 0000000 danieljprice-splash-28c1a60/build/.depends 0000664 0000000 0000000 00000016430 15055564116 0020517 0 ustar 00root root 0000000 0000000 globaldata.o multiplot.mod settings_data.mod labels.mod filenames.mod particle_data.mod params.mod: globaldata.f90
asciiutils.o asciiutils.mod: asciiutils.f90
setpage.o pagesetup.mod: setpage.f90
transform.o transforms.mod: transform.f90
prompting.o prompting.mod: prompting.f90
geometry.o geometry.mod: geometry.f90
plotutils.o plotutils.mod: plotutils.f90
colourbar.o colourbar.mod: pagesetup.mod colourbar.f90
colours.o colours.mod: colours.f90
colourparts.o colourparts.mod: colourparts.f90
shapes.o shapes.mod: transforms.mod prompting.mod params.mod shapes.f90
units.o settings_units.mod: settings_data.mod labels.mod prompting.mod params.mod units.f90
write_pixmap.o write_pixmap.mod: colours.mod filenames.mod write_pixmap.f90
write_sphdata.o write_sphdata.mod: params.mod settings_units.mod labels.mod write_sphdata.f90
analysis.o analysis.mod: prompting.mod params.mod filenames.mod asciiutils.mod labels.mod analysis.f90
discplot.o disc.mod: transforms.mod discplot.f90
exact_fromfile.o exactfromfile.mod: exact_fromfile.f90
exact_mhdshock.o mhdshock.mod: exact_mhdshock.f90
exact_polytrope.o polytrope.mod: exact_polytrope.f90
exact_rhoh.o rhoh.mod: exact_rhoh.f90
exact_sedov.o sedov.mod: exact_sedov.f90
exact_shock.o shock.mod: exact_shock.f90
exact_shock_sr.o shock_sr.mod: exact_shock_sr.f90
exact_wave.o wave.mod: exact_wave.f90
exact_toystar1D.o toystar1d.mod: exact_toystar1D.f90
exact_toystar2D.o toystar2d.mod: exact_toystar2D.f90
exact_densityprofiles.o densityprofiles.mod: exact_densityprofiles.f90
exact_torus.o torus.mod: exact_torus.f90
exact_ringspread.o ringspread.mod: exact_ringspread.f90
exact.o exact.mod: transforms.mod ringspread.mod densityprofiles.mod wave.mod toystar2d.mod toystar1d.mod torus.mod shock_sr.mod shock.mod sedov.mod rhoh.mod polytrope.mod mhdshock.mod exactfromfile.mod labels.mod filenames.mod prompting.mod settings_data.mod exact.f90
limits.o limits.mod: asciiutils.mod settings_data.mod particle_data.mod geometry.mod labels.mod params.mod limits.f90
allocate.o mem_allocation.mod: particle_data.mod allocate.f90
titles.o titles.mod: filenames.mod asciiutils.mod titles.f90
system_f2003.o system_commands.mod: system_f2003.f90
system_utils.o system_utils.mod: system_commands.mod system_utils.f90
options_render.o settings_render.mod: params.mod prompting.mod colours.mod labels.mod colourbar.mod options_render.f90
options_particleplots.o settings_part.mod: multiplot.mod geometry.mod prompting.mod particle_data.mod settings_render.mod limits.mod labels.mod exact.mod settings_data.mod params.mod options_particleplots.f90
calc_quantities.o calcquantities.mod: settings_units.mod mem_allocation.mod settings_part.mod settings_data.mod particle_data.mod labels.mod calc_quantities.f90
get_data.o getdata.mod: system_utils.mod asciiutils.mod settings_units.mod calcquantities.mod geometry.mod labels.mod prompting.mod particle_data.mod settings_part.mod settings_data.mod limits.mod filenames.mod exact.mod get_data.f90
convert.o convert.mod: prompting.mod getdata.mod analysis.mod write_sphdata.mod filenames.mod settings_data.mod particle_data.mod convert.f90
options_data.o options_data.mod: settings_units.mod labels.mod limits.mod calcquantities.mod getdata.mod prompting.mod filenames.mod params.mod settings_data.mod options_data.f90
options_limits.o settings_limits.mod: transforms.mod labels.mod limits.mod prompting.mod calcquantities.mod settings_data.mod filenames.mod multiplot.mod options_limits.f90
options_page.o settings_page.mod: filenames.mod prompting.mod params.mod shapes.mod settings_limits.mod options_page.f90
options_powerspec.o settings_powerspec.mod: prompting.mod labels.mod limits.mod settings_data.mod options_powerspec.f90
options_vecplot.o settings_vecplot.mod: limits.mod labels.mod settings_data.mod prompting.mod options_vecplot.f90
options_xsecrotate.o settings_xsecrot.mod: transforms.mod multiplot.mod calcquantities.mod settings_data.mod prompting.mod limits.mod labels.mod filenames.mod options_xsecrotate.f90
pdfs.o pdfs.mod: asciiutils.mod filenames.mod plotutils.mod transforms.mod prompting.mod pdfs.f90
rotate.o rotation.mod: rotate.f90
interpolate1D.o interpolations1d.mod: interpolate1D.f90
interpolate2D.o interpolations2d.mod: interpolate2D.f90
interpolate3D.o interpolations3d.mod: interpolate3D.f90
interpolate3D_xsec.o xsections3d.mod: interpolate3D_xsec.f90
interpolate3D_projection.o projections3d.mod: interpolate3D_projection.f90
interpolate3D_opacity.o interpolate3d_opacity.mod: colours.mod projections3d.mod interpolate3D_opacity.f90
interpolate_vec.o interpolate_vec.mod: interpolate_vec.f90
interactive.o interactive_routines.mod: colours.mod settings_part.mod labels.mod calcquantities.mod filenames.mod transforms.mod settings_limits.mod settings_data.mod limits.mod settings_vecplot.mod settings_page.mod multiplot.mod shapes.mod settings_xsecrot.mod colourbar.mod interactive.f90
fieldlines.o fieldlines.mod: fieldlines.f90
legends.o legends.mod: legends.f90
particleplot.o particleplots.mod: geometry.mod interpolations2d.mod settings_part.mod settings_data.mod labels.mod params.mod particleplot.f90
powerspectrums.o powerspectrums.mod: interpolations3d.mod powerspectrums.f90
render.o render.mod: settings_vecplot.mod legends.mod plotutils.mod colourbar.mod render.f90
plotstep.o timestep_plotting.mod: asciiutils.mod rotation.mod fieldlines.mod interpolate_vec.mod geometry.mod shapes.mod legends.mod colourbar.mod write_pixmap.mod exactfromfile.mod disc.mod pagesetup.mod render.mod xsections3d.mod interpolate3d_opacity.mod interpolations3d.mod interpolations2d.mod interpolations1d.mod powerspectrums.mod particleplots.mod interactive_routines.mod transforms.mod colourparts.mod settings_units.mod settings_vecplot.mod settings_limits.mod toystar2d.mod toystar1d.mod exact.mod filenames.mod pdfs.mod projections3d.mod particle_data.mod settings_powerspec.mod settings_xsecrot.mod settings_render.mod settings_part.mod settings_page.mod settings_data.mod titles.mod prompting.mod multiplot.mod limits.mod labels.mod colours.mod params.mod plotstep.f90
timestepping.o timestepping.mod: params.mod settings_part.mod getdata.mod timestep_plotting.mod settings_page.mod settings_data.mod particle_data.mod filenames.mod timestepping.f90
defaults.o defaults.mod: shapes.mod titles.mod settings_units.mod settings_powerspec.mod settings_xsecrot.mod settings_vecplot.mod settings_render.mod settings_part.mod options_data.mod settings_limits.mod multiplot.mod exact.mod settings_page.mod settings_data.mod particle_data.mod limits.mod labels.mod filenames.mod defaults.f90
menu.o mainmenu.mod: settings_units.mod params.mod timestepping.mod getdata.mod geometry.mod defaults.mod transforms.mod prompting.mod multiplot.mod settings_xsecrot.mod settings_vecplot.mod settings_render.mod settings_page.mod settings_part.mod settings_limits.mod settings_data.mod options_data.mod limits.mod labels.mod filenames.mod menu.f90
splash.o: settings_page.mod timestepping.mod analysis.mod write_sphdata.mod convert.mod write_pixmap.mod asciiutils.mod system_utils.mod system_commands.mod settings_xsecrot.mod settings_data.mod projections3d.mod mem_allocation.mod mainmenu.mod limits.mod defaults.mod getdata.mod filenames.mod splash.f90
read_data_sphNG.o sphngread.mod: settings_units.mod geometry.mod calcquantities.mod labels.mod system_utils.mod mem_allocation.mod settings_data.mod particle_data.mod params.mod read_data_sphNG.f90
danieljprice-splash-28c1a60/build/Makefile 0000664 0000000 0000000 00000073212 15055564116 0020535 0 ustar 00root root 0000000 0000000 ##-------------------------------------------------------------------##
## Makefile for compiling SPLASH and linking with ##
## required libraries ##
## ##
## Written by Daniel Price ##
## University of Exeter, UK, 2004-2008 ##
## Monash University, Australia, 2008- ##
## ##
## requires GNU make (on some systems this is 'gmake' instead ##
## of 'make') ##
## ##
## see the INSTALL file for detailed installation instructions ##
##-------------------------------------------------------------------##
.KEEP_STATE:
KNOWN_SYSTEM=no
SRCDIR=../src
BINDIR=../bin
TESTDIR=../tests
VPATH=$(SRCDIR) $(SRCDIR)/H5Part ../utils
SHELL=/bin/bash
#
# use SYSTEM=gfortran if no SYSTEM variable is set
#
ifndef SYSTEM
SYSTEM=gfortran
endif
#
# some default settings for unix systems
#
FC=
FFLAGS=
#
# change the line below if SPLASH does not find the X11 libraries
# (some settings of the SYSTEM variable for specific machines overwrite this)
#
# X11_LIBS= -L/usr/X11R6/lib64 -lX11
X11_DIR= /usr/X11/
X11_LIBS= -L$(X11_DIR)/lib -lX11
X11_CFLAGS= -I$(X11_DIR)/include
CAIRO_LIBS= -L$(X11_DIR)/lib -lcairo
CAIRO_CFLAGS= -I$(X11_DIR)/include
#--------------------------------------------------------------
# here we choose the backend plotting library for splash
# (giza is the default backend for splash v2.x, but can
# still be compiled with PGPLOT, just with disabled features)
#--------------------------------------------------------------
ifneq ($(BACKEND), pgplot)
#-- C A I R O --
GIZA_DIR= $(PREFIX)
PLOTLIB= giza-fortran.F90 plotlib_giza.f90
PGPLOTLIBS = -L$(GIZA_DIR)/lib -lgiza $(CAIRO_LIBS)
CFLAGS= -fPIC -Wall -Wextra -O3 -g
CC = gcc
else
#-- P G P L O T --
PLOTLIB= plotlib_pgplot.f90
#
# change the line below depending on where/how you have installed PGPLOT
# (some settings of the SYSTEM variable for specific machines overwrite this)
#
PGPLOTLIBS = -L$(PGPLOT_DIR) -lpgplot -lpng
endif
#--------------------------------------------------------------
#
# If you need the HDF5 libraries, edit the lines below
# possibly adding a -L/libpath/ and a -I/includepath/
#
ifndef HDF5ROOT
ifdef HDF5_ROOT
HDF5ROOT=$(HDF5_ROOT)
endif
ifdef HDF5_DIR
HDF5ROOT=$(HDF5_DIR)
endif
endif
HDF5LIBS = -L$(HDF5ROOT)/lib -lhdf5
HDF5INCLUDE = -I$(HDF5ROOT)/include
H5PART_LIBS = -L$(H5PART_DIR)/lib -lH5Part
H5PART_INCLUDE = -I$(H5PART_DIR)/include
ifdef FITS_DIR
FITSLIBS = -L$(FITS_DIR)/lib -lcfitsio
else
FITSLIBS = -lcfitsio
endif
FITSINCLUDE = -I$(FITS_DIR)/include
#
# this file contains system-dependent routines like getarg, iargc etc.
#
SYSTEMFILE= system_f2003.f90
#
# this can be used to static link the pgplot libraries if all else fails
#
STATICLIBS=
#
# set the parallel flag to 'yes' to compile with openMP directives
#
#PARALLEL=no
ifndef OPENMP
OPENMP=yes
endif
#
# compile in double precision by default (v3.0 onwards this is now default)
#
ifndef DOUBLEPRECISION
DOUBLEPRECISION=yes
endif
#
# the openMP flags should be set in the lines defining your system type
# (ie. leave line below blank)
OMPFLAGS=
#
# the endian flag can be used to compile the code to read BIG or LITTLE endian data
# some compilers also allow this to be done at runtime (e.g. g95, ifort) by setting
# an environment variable appropriately (e.g. G95_ENDIAN or F_UFMTENDIAN)
#
#ENDIAN=
#ENDIAN='BIG'
#ENDIAN='LITTLE'
#
# default destination for installed binaries
#
DESTDIR=
PREFIX=/usr/local/
#
# default C compiler
#
ifndef CC
CC = gcc
endif
ifndef CXX
CXX = g++
endif
# default C++ library linking
# (different between Mac/Linux)
UNAME=$(shell uname)
ifeq ($(UNAME), Darwin)
CXXLIBS= -lc++
else
CXXLIBS= -lstdc++
endif
#--------------------------------------------------------------
# the following are general settings for particular compilers
#
# set the environment variable 'SYSTEM' to one of those
# listed to use the appropriate settings
#
# in bash the equivalent is
# export SYSTEM='gfortran'
#
#--------------------------------------------------------------
ifeq ($(SYSTEM), gfortran)
# gfortran compiler (part of gcc 4.x.x)
FC= gfortran
FFLAGS= -O3 -fPIC
DBLFLAGS= -fdefault-real-8 -fdefault-double-8
SYSTEMFILE= system_f2003.f90
DEBUGFLAG= -Wall -Wextra -pedantic -g -frange-check -fcheck=all -fbacktrace \
-finit-real=NaN #-ffpe-trap=invalid,zero,overflow
OMPFLAGS= -fopenmp
ENDIANFLAGBIG= -fconvert=big-endian
ENDIANFLAGLITTLE= -fconvert=little-endian
KNOWN_SYSTEM=yes
endif
ifeq ($(SYSTEM),sunf95)
# sun f95 compiler on linux
FC= sunf95
FFLAGS= -fast -ftrap=%none
OMPFLAGS= -openmp
DBLFLAGS= -xtypemap=real:64,double:64
DEBUGFLAG= -g -C -w4 -errtags -erroff=COMMENT_1582,COMMENT_1744 -ftrap=%all
SYSTEMFILE= system_f2003.f90
ENDIANFLAGBIG= -xfilebyteorder=big16:%all
ENDIANFLAGLITTLE= -xfilebyteorder=little16:%all
KNOWN_SYSTEM=yes
endif
ifeq ($(SYSTEM),ifort)
# this is for the intel fortran compiler (version 10)
FC= ifort
FFLAGS= -O3 -nbs
OMPFLAGS= -qopenmp
DBLFLAGS= -r8
DEBUGFLAG= -C -g
SYSTEMFILE= system_f2003.f90
ENDIANFLAGBIG= -convert big_endian
ENDIANFLAGLITTLE= -convert little_endian
# or use setenv F_UFMTENDIAN=big or little at runtime
KNOWN_SYSTEM=yes
CC=icc
CFLAGS=-Wall -O3 -fPIC
endif
ifeq ($(SYSTEM),ifx)
# this is for the intel fortran compiler (version 10)
FC= ifx
FFLAGS= -O3 -nbs
OMPFLAGS= -qopenmp
DBLFLAGS= -r8
DEBUGFLAG= -C -g
SYSTEMFILE= system_f2003.f90
ENDIANFLAGBIG= -convert big_endian
ENDIANFLAGLITTLE= -convert little_endian
# or use setenv F_UFMTENDIAN=big or little at runtime
KNOWN_SYSTEM=yes
CC=icc
CFLAGS=-Wall -O3 -fPIC
endif
ifeq ($(SYSTEM),pgf90)
# this is for the Portland Group Fortran 90 compiler (tested with version 7.2-5)
FC= pgf90
FFLAGS= -fast -mcmodel=medium -Mbackslash -Ktrap=none
DBLFLAGS= -r8
DEBUGFLAG= -C -g -gopt -Mbounds -Mchkfpstk -Mchkptr -Mchkstk -Mcoff \
-Mdwarf1 -Mdwarf2 -Melf -Mpgicoff -traceback
OMPFLAGS= -mp
SYSTEMFILE= system_f2003.f90
ENDIANFLAGBIG= -Mbyteswapio # only works on a little-endian machine
ENDIANFLAGLITTLE=
KNOWN_SYSTEM=yes
endif
ifeq ($(SYSTEM),pathf95)
# this is for the Pathscale f95 compiler
FC= pathf95
FFLAGS= -Ofast -mcmodel=medium
DBLFLAGS= -r8
DEBUGFLAG= -C -g
OMPFLAGS= -openmp
SYSTEMFILE= system_f2003.f90
ENDIANFLAGBIG= -convert big_endian
ENDIANFLAGLITTLE= -convert little_endian
KNOWN_SYSTEM=yes
endif
#--------------------------------------------------------------
#
# the following presets are user or machine-specific
#
#--------------------------------------------------------------
ifeq ($(SYSTEM),cody)
FC= gfortran
FFLAGS= -O3 -Wall
SYSTEMFILE= system_f2003.f90
DBLFLAGS= -fdefault-real-8 -fdefault-double-8
DEBUGFLAG= -g -frange-check
OMPFLAGS= -fopenmp
ENDIANFLAGBIG= -fconvert=big-endian
ENDIANFLAGLITTLE= -fconvert=little-endian
SNFLAGS= -L$(HOME)/tree16/Objfiles/g5 -lsw
CFLAGS = -g -O2 -Wall -I$(HOME)/tree16/include -fbounds-check
CC = gcc
KNOWN_SYSTEM=yes
endif
#
# these are the flags used for linking
#
LDFLAGS= $(X11_LIBS) $(PGPLOTLIBS)
#
# this is an option to change the endian-ness at compile time
# (provided the appropriate flags are specified for the compiler)
#
ifeq ($(ENDIAN), BIG)
FFLAGS += ${ENDIANFLAGBIG}
endif
ifeq ($(ENDIAN), LITTLE)
FFLAGS += ${ENDIANFLAGLITTLE}
endif
# compile in parallel
ifeq ($(PARALLEL),yes)
FFLAGS += $(OMPFLAGS)
else
ifeq ($(OPENMP),yes)
FFLAGS += $(OMPFLAGS)
endif
endif
# compile in double precision
ifeq ($(DOUBLEPRECISION), yes)
FFLAGS += ${DBLFLAGS}
FPPFLAGS+=-DDP
endif
# add debugging flags at compile time
ifeq ($(DEBUG),yes)
FFLAGS += $(DEBUGFLAG)
endif
#
# MPI... no splash doesn't use it
# but sometimes you need to compile
# with the mpi compiler (e.g. to link
# correctly to MPI-HDF5 libraries)
# This just changes the compiler name
# whilst keeping the flags the same
# if MPI is set to "yes"
#
ifeq ($(MPI),yes)
FC= mpif90 -DPARALLEL_IO
CC=mpicc -DPARALLEL_IO
endif
#
# If PGPLOT was compiled with a different compiler to the one used here,
# need to link to the libraries for that compiler. We attempt to do this
# automatically below by looking in the PGPLOT makefile.
#
# If the relevant library is not found, may also need -L/dir/ for the directory
# where the corresponding library is located (e.g. -L/usr/local/gfortran/lib -lgfortran)
#
# (information about what is done here is printed via the checkpgplot target, below)
#
ifeq ($(BACKEND),pgplot)
ifdef PGPLOT_DIR
PGPLOT_COMP=${shell if [ -e $$PGPLOT_DIR/makefile ]; then grep 'FCOMPL=' $$PGPLOT_DIR/makefile | cut -d= -f2; else echo unknown; fi}
ifneq (X$(FC), X) # make sure it is not just accidentally blank
ifneq ($(PGPLOT_COMP), $(FC))
# g77-compiled PGPLOT
ifeq ($(PGPLOT_COMP), g77)
PGPLOTLIBS+=-lg2c
endif
# gfortran-compiled PGPLOT
ifeq ($(PGPLOT_COMP), gfortran)
PGPLOTLIBS+=-lgfortran
endif
# g95-compiled PGPLOT
ifeq ($(PGPLOT_COMP), g95)
PGPLOTLIBS+=-lg95
endif
endif
endif
endif
endif
ifeq ($(FC),gfortran)
GFORTRAN_VERSION=${shell $(FC) -dumpversion | head -1 | awk '{print $$NF}'}
GFORTRAN_VMAJOR:=${shell echo "$(GFORTRAN_VERSION)" | cut -f1 -d.}
GFORTRAN_VMINOR:=${shell echo "$(GFORTRAN_VERSION)" | cut -f2 -d.}
GFORTRAN_GE_4_4:=$(shell [ $(GFORTRAN_VMAJOR) -gt 4 -o \( $(GFORTRAN_VMAJOR) -eq 4 -a $(GFORTRAN_VMINOR) -ge 4 \) ] && echo true)
else
GFORTRAN_GE_4_4:=true
endif
# define the implicit rule to make a .o file from a .f90/.f95 file
# (some Make versions don't know this)
%.o : %.f90
$(FC) $(FFLAGS) -c $< -o $@
%.o : %.F90
$(FC) $(FPPFLAGS) $(FFLAGS) -c $< -o $@
%.o : %.f95
$(FC) $(FFLAGS) -c $< -o $@
%.o : %.c
$(CC) -c $(CFLAGS) $(INCLUDES) $< -o $@
# modules must be compiled in the correct order to check interfaces
# really should include all dependencies but I am lazy
READFILES= read_data_ascii.f90 read_data_sphNG.f90 read_data_ndspmhd.f90 \
read_data_gadget.f90 read_data_VINE.f90 read_data_sro.f90 \
read_data_dragon.f90 read_data_seren.f90 read_data_tipsy.f90 \
read_data_mhutch.f90 read_data_UCLA.f90 read_data_aly.f90 \
read_data_bauswein.f90 read_data_egaburov.f90 read_data_starsmasher.f90 \
read_data_gadget_jsb.f90 read_data_foulkes.f90 read_data_jjm.f90 \
read_data_jjm_multiphase.f90 read_data_mbate.f90 read_data_oilonwater.f90 \
read_data_rsph.f90 read_data_urban.f90 read_data_spyros.f90 \
read_data_vanaverbeke.f90 read_data_vtk.f90
READFILES_HDF5= hdf5_helper_utils.c read_data_gadget_hdf5_utils.c read_data_gadget_hdf5.f90 \
read_data_amuse_hdf5_utils.c read_data_amuse_hdf5.f90 \
read_data_cactus_hdf5_utils.c read_data_cactus_hdf5_futils.f90 read_data_cactus_hdf5.f90 \
read_data_flash_hdf5_utils.c read_data_flash_hdf5.f90
#read_data_falcON_hdf5_utils.cc read_data_falcON_hdf5_utils.f90 read_data_falcON_hdf5.f90 \
READFILES_FITS= write_fits.f90 read_data_fits.f90
READFILES_PBOB= read_data_pbob_utils.c read_data_pbob.f90 read_pbob.c read_particle.c
READFILES_H5PART= H5PartF.c H5PartAttribF.c H5Part.f90 H5PartAttrib.f90
RUN_CHECKS=
LDFLAGSLIB=
# link with hdf5 libraries
ifeq ($(HDF5),yes)
READFILES+=$(READFILES_HDF5)
CFLAGS+=$(HDF5INCLUDE)
LDFLAGS+=$(HDF5LIBS)
LDFLAGSLIB+=$(HDF5LIBS)
FPPFLAGS+=-DHDF5
RUN_CHECKS+=checkhdf5
endif
ifeq ($(FITS),yes)
READFILES+= $(READFILES_FITS)
LDFLAGS+=$(FITSLIBS)
LDFLAGSLIB+=$(FITSLIBS)
FPPFLAGS+=-DFITS
RUN_CHECKS+=checkfits
else
READFILES+=no_fits.f90
endif
ifdef PBOB_DIR
READFILES+=$(READFILES_PBOB)
VPATH+=$(PBOB_DIR)
RUN_CHECKS+=checkpbob
endif
ifdef H5PART_DIR
READFILES+=$(READFILES_H5PART)
VPATH+=$(H5PART_LIBS) $(HDF5LIBS)
RUN_CHECKS+=checkh5part
endif
SOURCES= $(PLOTLIB) globaldata.f90 physcon.f90 utils_vectors.f90 \
asciiutils.f90 byteswap.f90 \
labels.f90 partutils.f90 transform.f90 setpage.f90 sort.f90 \
prompting.f90 promptlist.f90 map_columns.f90 geometry.f90 kernels.f90 \
plotutils.f90 blackbody.f90 colourbar.f90 \
colours.f90 colourparts.f90 timing.f90 pagecolours.f90 \
interpolation.f90 interpolate1D.f90 interpolate2D.f90 \
rotate.f90 interpolate3D_projection.f90 interpolate3D_geom.f90 interpolate3D_xsec.f90 \
interpolate3D_proj_geom.f90 \
interpolate3D_opacity.f90 interpolate_vec.f90 interpolate3D.f90 \
units.f90 limits.f90 geomutils.f90 dataread_utils.f90 \
write_data_gadget.f90 write_data_phantom.f90 write_pfm.f90 write_pixmap.f90 \
write_griddata.f90 write_sphdata.f90 read_composition.f90 \
$(SYSTEMFILE) system_utils.f90 \
cubicsolve.f90 discplot.f90 fparser.f90 parsetext.f90 \
exact_fromfile.f90 exact_Cshock.f90 exact_mhdshock.f90 \
exact_polytrope.f90 exact_rhoh.f90 exact_rochelobe.f90 \
exact_sedov.f90 exact_shock.f90 exact_shock_sr.f90 exact_wave.f90 \
exact_toystar1D.f90 exact_toystar2D.f90 exact_function.f90 exact_planetdisc.f90\
exact_densityprofiles.f90 exact_dustywaves.f90 exact_torus.f90 exact_bondi.f90 \
exact_ringspread.f90 exact_gresho.f90 exact.f90 shapes.f90 \
allocate.f90 titles.f90 calc_quantities.f90 contours.f90 \
legends.f90 options_render.f90 options_particleplots.f90 options_xsecrotate.f90 \
options_limits.f90 options_page.f90 imageutils.f90 \
lightcurve_utils.f90 $(READFILES) lightcurve.f90 extinction.f90 \
read_data.F90 get_h.f90\
adjust_data.f90 set_options_from_dataread.f90 get_data.f90 \
options_data.f90 options_powerspec.f90 \
options_vecplot.f90 pdfs.f90 \
particleplot.f90 interactive.f90 \
convert_grid.f90 \
analysis.f90 convert.f90 fieldlines.f90 \
powerspectrums.f90 render.f90 \
plotstep.f90 timestepping.f90 \
defaults.f90 initialise.f90 menu.f90 \
splash.f90
OBJECTS1= $(SOURCES:.f90=.o) $(STATICLIBS)
OBJECTS2= $(OBJECTS1:.F90=.o)
OBJECTS3= $(OBJECTS2:.c=.o)
OBJECTS= $(OBJECTS3:.cc=.o)
#
# Now compile with the appropriate data read file
# (move yours to the top so that you can simply type "make")
#
all: checksystem $(RUN_CHECKS) $(OBJECTS) read_data.o
$(FC) $(FFLAGS) -o $(BINDIR)/splash $(OBJECTS) $(LDFLAGS)
@echo; echo ' SPLASH v3 successfully compiled! ';
@echo; echo ' "sudo make install" to copy the binary to $(DESTDIR)$(PREFIX)/bin';
@echo; echo ' If you do not have admin privileges, add the following to your .bashrc or equialent:';
@echo; echo ' export SPLASH_DIR=$$HOME/splash';
@echo ' export PATH=$$PATH:$$SPLASH_DIR/bin';
@echo; echo ' For backwards compatibility with v2.x, add the following to your .bashrc or equivalent:';
@echo; echo " alias asplash='splash ' # alias for ascii splash";
@echo " alias ssplash='splash -f phantom'";
@echo " alias gsplash='splash -f gadget' ";
@echo " alias vsplash='splash -f vine' ";
@echo " alias nsplash='splash -f ndspmhd' ";
@echo " alias rsplash='splash -f srosph' ";
@echo " alias dsplash='splash -f dragon' ";
@echo " alias srsplash='splash -f seren' ";
@echo " alias tsplash='splash -f tipsy' ";
@echo " alias msplash='splash -f mhutch' "; echo;
#---falcON HDF5 read ---
falcon: falcON
falcON: falcON_hdf5
falcON_hdf5: checksystem checkhdf5 $(OBJECTS) read_data_falcON_hdf5_utils.o read_data_falcON_hdf5.o
$(FC) $(FFLAGS) -o $(BINDIR)/fsplash $(OBJECTS) read_data_falcON_hdf5_utils.o read_data_falcON_hdf5.o $(LDFLAGS) $(CXXLIBS) $(HDF5LIBS) -lhdf5_cpp
read_data_falcON_hdf5_utils.o: read_data_falcON_hdf5_utils.cc
$(CXX) $(CXXFLAGS) -std=c++11 $(HDF5INCLUDE) -c $< -o $@
#---SILO read ---
silo: checksystem checksilo $(OBJECTS) read_data_silo_utils.o read_data_silo.o
$(FC) $(FFLAGS) -o $(BINDIR)/silosplash $(OBJECTS) read_data_silo_utils.o read_data_silo.o $(LDFLAGS) $(HDF5LIBS) -lsiloh5
read_data_silo_utils.o: read_data_silo_utils.c
$(CC) $(CFLAGS) $(HDF5INCLUDE) -c $< -o $@
#
# sources for the grid2pdf command-line utility
#
SRCGRID2PDF= $(SYSTEMFILE) globaldata.f90 prompting.f90 transform.f90 \
asciiutils.f90 write_griddata.f90 pdfs.f90 grid2pdf.f90
OBJGRID2PDF= ${SRCGRID2PDF:.f90=.o}
grid2pdf: checksystem $(OBJGRID2PDF)
$(FC) $(FFLAGS) -o $(BINDIR)/$@ $(OBJGRID2PDF)
#
#
#
liball: lib libexact libread
#
# libsplash: library version of splash interpolation routines
#
SRCLIB= sort.f90 asciiutils.f90 kernels.f90 timing.f90 geometry.f90 \
interpolation.f90 interpolate1D.f90 interpolate2D.f90 interpolate3D.f90 \
interpolate3D_geom.f90 interpolate3D_projection.f90 \
interpolate3D_proj_geom.f90 interpolate3D_opacity.f90 interpolate3D_xsec.f90 \
libsplash.f90 libutils.f90
OBJLIB1=${SRCLIB:.f90=.o}
OBJLIB=${OBJLIB1} libread.o
.PHONY: libsplash
libsplash: lib
lib: $(OBJLIB)
$(FC) -shared -fPIC $(FFLAGS) $(FPPFLAGS) $(DBLFLAGS) $(OBJLIB) -o libsplash.so
#
# libexact: exact solution library
#
SRCLIBEXACT= plotlib_mock.f90 libutils.f90 geometry.f90 exact_shock.f90 \
exact_shock_sr.f90 exact_sedov.f90 \
exact_polytrope.f90 exact_toystar1D.f90 exact_toystar2D.f90 exact_gresho.f90 \
exact_mhdshock.f90 exact_rhoh.f90 exact_densityprofiles.f90 exact_torus.f90 \
exact_ringspread.f90 cubicsolve.f90 exact_dustywaves.f90 exact_rochelobe.f90 \
exact_Cshock.f90 exact_planetdisc.f90 exact_bondi.f90 \
libexact.f90
OBJLIBEXACT=${SRCLIBEXACT:.f90=.o}
OBJLIBEXACTALL=${OBJLIBEXACT:.F90=.o}
.PHONY: libexact
libexact: checksystem $(OBJLIBEXACTALL)
$(FC) -shared -fPIC $(FFLAGS) $(FPPFLAGS) $(DBLFLAGS) $(OBJLIBEXACTALL) -o libexact.so
#
# libread: data read library
#
SRCLIBREAD= globaldata.f90 physcon.f90 asciiutils.f90 libutils.f90 labels.f90 allocate.f90 byteswap.f90 $(SYSTEMFILE)\
system_utils.f90 geometry.f90 prompting.f90 fparser.f90 units.f90 timing.f90\
sort.f90 geomutils.f90 partutils.f90 calc_quantities.f90 dataread_utils.f90 \
utils_vectors.f90 lightcurve_utils.f90 read_composition.f90 $(READFILES) read_data.F90 kernels.f90 get_h.f90\
adjust_data.f90 limits.f90 get_data.f90 initialise.f90 read.f90 libread.f90
OBJLIBREAD=${SRCLIBREAD:.f90=.o}
OBJLIBREAD1=${OBJLIBREAD:.F90=.o}
OBJLIBREADALL=${OBJLIBREAD1:.c=.o}
.PHONY: libread
libread: checksystem $(OBJLIBREADALL)
$(FC) -shared -fPIC $(FFLAGS) $(FPPFLAGS) $(DBLFLAGS) $(OBJLIBREADALL) -o libread.so $(LDFLAGSLIB)
#
# splash image manipulation utilities
#
SOURCESIMLIB= asciiutils.f90 $(SYSTEMFILE) system_utils.f90 timing.f90 kernels.f90 \
interpolation.f90 interpolate2D.f90 interpolate3D.f90 \
imageutils.f90 write_fits.f90 denoise.f90
OBJECTSIMLIB = $(SOURCESIMLIB:.f90=.o)
.PHONY: denoise
splash-image: denoise
splash-denoise: denoise
denoise: checksystem checkfits $(OBJECTSIMLIB)
$(FC) $(FFLAGS) -o $(BINDIR)/$@ $(OBJECTSIMLIB) $(FITSLIBS)
@echo; echo ' Denoise utility successfully compiled! ';
@echo; echo ' Use "make install" to copy the binaries to $(DESTDIR)$(PREFIX)/bin'; echo;
#
# splash moments
#
SOURCESM= asciiutils.f90 $(SYSTEMFILE) system_utils.f90 timing.f90 kernels.f90 \
interpolate1D.f90 write_fits.f90 moments.f90 sph_moments.f90
OBJECTSM = $(SOURCESM:.f90=.o)
.PHONY: sphmoments
sphmoments: checksystem checkfits $(OBJECTSM)
$(FC) $(FFLAGS) -o $(BINDIR)/$@ $(OBJECTSM) $(FITSLIBS)
@echo; echo ' sphmoments utility successfully compiled! ';
@echo; echo ' Use "make install" to copy the binaries to $(DESTDIR)$(PREFIX)/bin'; echo;
checksystem:
ifeq ($(KNOWN_SYSTEM), yes)
@echo ""
@echo "Compiling splash for $(SYSTEM) system..........."
@echo ""
ifeq ($(ENDIAN), BIG)
@echo "Flags set for conversion to BIG endian"
endif
ifeq ($(ENDIAN), LITTLE)
@echo "Flags set for conversion to LITTLE endian"
endif
ifeq ($(PARALLEL), yes)
@echo "Compiling the PARALLEL code"
else
ifeq ($(OPENMP), yes)
@echo "Compiling the PARALLEL code"
else
@echo "Compiling the SERIAL code"
endif
endif
ifeq ($(FC),gfortran)
ifeq ($(GFORTRAN_GE_4_4),true)
@echo "compiling with gfortran v$(GFORTRAN_VERSION) (OK)"
else
${error gfortran v$(GFORTRAN_VERSION) is too old to compile this version of splash: please upgrade your gfortran}
endif
endif
else
@echo ""
@echo " Makefile for splash by Daniel Price "
@echo " -- see INSTALL file for detailed instructions"
@echo ""
@echo " make: ERROR: value of SYSTEM=$(SYSTEM) not recognised..."
@echo " => set the environment variable SYSTEM to one listed "
@echo " in build/Makefile and try again"
@echo ""
@${MAKE} compilers
@$(MAKE) err;
endif
compilers:
@echo "I suggest one of the following, based on detected Fortran compilers..."; echo;
@if type -p ifx > /dev/null; then echo "make SYSTEM=ifx"; fi;
@if type -p ifort > /dev/null; then echo "make SYSTEM=ifort"; fi;
@if type -p pathf90 > /dev/null; then echo "make SYSTEM=pathf90"; fi;
@if type -p pgf90 > /dev/null; then echo "make SYSTEM=pgf90"; fi;
@if type -p xlf90_r > /dev/null; then echo "make SYSTEM=ukaff1a [uses xlf90_r]"; fi;
@if type -p gfortran > /dev/null; then echo "make SYSTEM=gfortran"; fi;
@if type -p g95 > /dev/null; then echo "make SYSTEM=g95"; fi;
@echo "(end of possible selections)"; echo;
checkpgplot:
ifeq (X${PGPLOT_DIR}, X)
@echo; echo "ERROR: PGPLOT_DIR should be set before compiling splash"; echo; ${MAKE} err;
else
@if [ -d $$PGPLOT_DIR ]; then echo; echo "PGPLOT_DIR=$$PGPLOT_DIR"; echo; else echo; echo "ERROR: Directory given by PGPLOT_DIR=$$PGPLOT_DIR does not exist"; echo; ${MAKE} err; fi;
endif
ifneq ($(PGPLOT_COMP),$(FC))
@echo; echo "*** WARNING: PGPLOT appears to have been compiled with a different Fortran"; echo " compiler (${PGPLOT_COMP}) to the one you are using to compile SPLASH (${FC}),"; echo " so may need to link to the relevant compiler libraries ***";
# g77-compiled PGPLOT
@if [ "${PGPLOT_COMP}" = "g77" ]; then echo " [Adding -lg2c to the link flags for g77-compiled PGPLOT]"; fi;
# gfortran-compiled PGPLOT
@if [ "${PGPLOT_COMP}" = "gfortran" ]; then echo " [Adding -lgfortran to the link flags for gfortran-compiled PGPLOT]"; fi;
# g95-compiled PGPLOT
@if [ "${PGPLOT_COMP}" = "g95" ]; then echo " [Adding -lg95 to the link flags for g95-compiled PGPLOT]"; fi;
@echo
# else
# @echo "PGPLOT was compiled with ${PGPLOT_COMP}";
endif
checkgiza:
@if [ ! -e $(GIZA_DIR)/include/giza-fortran.F90 ]; then \
if [ -d ../giza/ ]; then \
echo "*********************************************************"; \
echo "* *"; \
echo "* ERROR: Cannot find system install of giza *"; \
echo "* Type \"make withgiza\" to build local copy of giza *"; \
echo "* *"; \
echo "*********************************************************"; \
else \
echo "*********************************************************"; \
echo "* *"; \
echo "* ERROR: giza is not installed. Please install it. *"; \
echo "* *"; \
echo "* e.g: *"; \
echo "* git clone https://github.com/danieljprice/giza.git *"; \
echo "* make withgiza *"; \
echo "* *"; \
echo "*********************************************************"; \
fi; \
fi;
checkh5part: checkhdf5
ifeq (X${H5PART_DIR}, X)
@echo; echo "ERROR: H5PART_DIR should be set before compiling splash with h5part read/write"; echo; ${MAKE} err;
else
@if [ -d $$H5PART_DIR ]; then echo; echo "H5PART_DIR=$$H5PART_DIR"; echo; else echo; echo "ERROR: Directory given by H5PART_DIR=$$H5PART_DIR does not exist"; echo; ${MAKE} err; fi;
endif
checkhdf5:
ifeq (X${HDF5ROOT}, X)
@echo; echo "ERROR: HDF5ROOT should be set before compiling splash with HDF5 utilities"; echo; ${MAKE} err;
else
@if [ -d $$HDF5ROOT ]; then echo; echo "HDF5ROOT=$$HDF5ROOT"; echo; else echo; echo "ERROR: Directory given by HDF5ROOT=$$HDF5ROOT does not exist"; echo; ${MAKE} err; fi;
endif
checksilo: checkhdf5
ifeq (X${SILO_DIR}, X)
@echo; echo "ERROR: SILO_DIR should be set before compiling splash with SILO reader"; echo; ${MAKE} err;
else
@if [ -d $$SILO_DIR ]; then echo; echo "SILO_DIR=$$SILO_DIR"; echo; else echo; echo "ERROR: Directory given by SILO_DIR=$$SILO_DIR does not exist"; echo; ${MAKE} err; fi;
endif
checkfits:
ifeq (X${FITS_DIR}, X)
@echo; echo "*** WARNING: May need FITS_DIR=/usr/local to find cfitsio library **"; echo;
else
@if [ -d $$FITS_DIR ]; then echo; echo "FITS_DIR=$$FITS_DIR"; echo; else echo; echo "ERROR: Directory given by FITS_DIR=$$FITS_DIR does not exist"; echo; ${MAKE} err; fi;
endif
checkpbob:
ifeq (X${PBOB_DIR}, X)
@echo; echo "ERROR: PBOB_DIR should be set before compiling splash with PBOB reader"; echo; ${MAKE} err;
else
@if [ -d $$PBOB_DIR ]; then echo; echo "PBOB_DIR=$$PBOB_DIR"; echo; else echo; echo "ERROR: Directory given by PBOB_DIR=$$PBOB_DIR does not exist"; echo; ${MAKE} err; fi;
endif
#
# install option, copies any binaries compiled to /usr/local/bin/
# run `make' first, then `make install'. Could in principle
# have install compile it as well, but environment variables
# will not be defined if "make" is run using sudo, so better
# to do the two separately
#
install: destdircheck installcheck
@cd $(BINDIR); for x in *splash*; do if [ -e $$x ]; then echo "copying $$x -> $(DESTDIR)$(PREFIX)/bin/$$x"; cp $$x $(DESTDIR)$(PREFIX)/bin/; fi; done;
@cd $(BINDIR); x=denoise; if test -e $$x; then echo "copying $$x -> $(DESTDIR)$(PREFIX)/bin/$$x"; cp $$x $(DESTDIR)$(PREFIX)/bin/; fi;
@cd $(BINDIR); x=sphmoments; if test -e $$x; then echo "copying $$x -> $(DESTDIR)$(PREFIX)/bin/$$x"; cp $$x $(DESTDIR)$(PREFIX)/bin/; fi;
@echo; echo 'installation complete';
installcheck:
@if [ -e $(BINDIR)/splash ] || [ -e $(BINDIR)/denoise ] || [ -e $(BINDIR)/sphmoments ]; then echo; \
echo 'compiled binaries install to $(DESTDIR)$(PREFIX)/bin'; \
echo '(use "sudo make install" if Permission denied)'; \
echo; else echo;\
echo 'run "make" first, followed by "make install"'; echo;\
$(MAKE) err; fi
destdircheck: installcheck
@if test -d $(DESTDIR)$(PREFIX)/bin; then echo $(DESTDIR)$(PREFIX)/bin exists and is a directory; else \
echo; echo "*** ERROR in make install ***"; echo "$(DESTDIR)$(PREFIX)/bin is not a valid directory"; echo;\
$(MAKE) err; fi;
installclean: destdircheck
@for x in $(DESTDIR)$(PREFIX)/bin/?splash; do rm $$x; done;
distclean: installclean
cleanall: clean installclean
err:
$(error aborting);
## other stuff
plotlib_pgplot.o: checkpgplot
plotlib_giza.o : giza-fortran.o
giza-fortran.o : giza-fortran.F90
$(FC) $(FFLAGS) -I$(GIZA_DIR)/include/ -c $(GIZA_DIR)/include/giza-fortran.F90 -o $@
.PHONY: giza gizabuild libgiza
giza-fortran.F90 : checkgiza
#
# LOCAL build of giza
#
withgiza: ../giza/lib/libgiza.a
$(MAKE) $(MAKECMDFLAGS) GIZA_DIR="../giza"
../giza/lib/libgiza.a:
@echo "Compiling local copy of giza..."
cd ../giza; ./configure --prefix="$(PWD)/../giza" CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="" CAIRO_LIBS="$(CAIRO_LIBS)" CAIRO_CFLAGS="$(CAIRO_CFLAGS)" X11_LIBS="$(X11_LIBS)" X11_CFLAGS="$(X11_CFLAGS)"
cd ../giza; $(MAKE) $(MAKECMDFLAGS) install CC="$(CC)" CFLAGS="$(CFLAGS)"
docs: doc
doc:
cd ../docs; make html latexpdf
htmldocs: htmldoc
htmldoc: doc cleanhtmldocs
cd ../docs; \
make html
cleanhtmldocs:
cd ../docs; make clean
tar:
tar cf splash.tar Makefile $(SOURCES) read_data*.f90
targz:
tar cf splash.tar Makefile $(SOURCES) read_data*.f90
gzip splash.tar
## unit tests of various modules as I write them
.PHONY: tests
test: test1 test2 test3 test_slicer test_prompt test-parse
test1: interpolate3D_projection.o interpolate3D_xsec.o test_interpolate3D.o
$(FC) $(FFLAGS) $(LDFLAGS) -o $(BINDIR)/test_interpolation3D $(TESTDIR)/test_interpolate3D.o interpolate3D_projection.o interpolate3D_xsec.o
test2: transform.o $(TESTDIR)//test_transform.o
$(FC) $(FFLAGS) $(LDFLAGS) -o $(BINDIR)/test_transform $(TESTDIR)/test_transform.o transform.o
test3: fieldlines.o $(TESTDIR)//test_fieldlines.o
$(FC) $(FFLAGS) $(LDFLAGS) -o $(BINDIR)/test_fieldlines $(TESTDIR)/test_fieldlines.o fieldlines.o
test_slicer: interpolate3D_projection.o interpolate3D_xsec.o test_slicer3D.o
$(FC) $(FFLAGS) $(LDFLAGS) -o $(BINDIR)/test_slicer3D $(TESTDIR)/test_slicer3D.o interpolate3D_projection.o interpolate3D_xsec.o
test_prompt: prompting.o test_prompting.o
$(FC) $(FFLAGS) $(LDFLAGS) -o $(BINDIR)/test_prompt prompting.o test_prompting.o
test-parse: $(PLOTLIB) asciiutils.o fparser.o parsetext.o $(TESTDIR)/test-parsetext.o
$(FC) $(FFLAGS) -o $(BINDIR)/test-parse giza-fortran.o plotlib_giza.o fparser.o asciiutils.o parsetext.o $(TESTDIR)/test-parsetext.o $(LDFLAGS)
#
#--code dependencies: MAY BE INCOMPLETE - I generate this automatically every so often
#
include .depends
cleanread:
rm -f read_data*.o splash.o $(BINDIR)/?splash $(BINDIR)/splash* libsplash.so libexact.so
clean:
rm -f *.o *.mod $(BINDIR)/?splash $(BINDIR)/splash* libsplash.so libexact.so $(BINDIR)/denoise
cleangiza:
${MAKE} -C ../giza clean uninstall
danieljprice-splash-28c1a60/docs/ 0000775 0000000 0000000 00000000000 15055564116 0016721 5 ustar 00root root 0000000 0000000 danieljprice-splash-28c1a60/docs/360.rst 0000664 0000000 0000000 00000004251 15055564116 0017765 0 ustar 00root root 0000000 0000000 .. _sec:360:
Making 360 videos for YouTube
------------------------------
Thanks to input from Chris Russell, splash has the ability to output images and videos
that can be played as '360' videos in YouTube, where the user can move around in 3D.
Try moving around in the video below (made with splash!). Here the viewer is at the
Galactic Centre while the simulation models the surrounding stars and their winds.
.. raw:: html