├── .github └── workflows │ ├── linkchecker.yml │ └── spelling.yml ├── .typos.toml ├── LICENSE ├── README.md ├── Resources ├── .DS_Store ├── airfoil-animated.png ├── contours │ ├── A.png │ └── B.png ├── creatingAnAnnimation │ ├── A.png │ ├── B.png │ ├── C.png │ ├── D.png │ └── E.png ├── cubeAndSphere.pvsm └── threeStepsToNiceVisualization │ ├── A.png │ ├── B.png │ ├── C.png │ ├── D.png │ └── E.png ├── Tutorials ├── FFMPEG-cheat-sheet.md ├── contours.md ├── creating-an-annimation.md ├── general-interactive-visualization.md ├── interactive-visualization-on-Phoenix.md └── three-steps-to-nice-visualization.md ├── contributing.md └── mlc_config.json /.github/workflows/linkchecker.yml: -------------------------------------------------------------------------------- 1 | name: LinkChecker 2 | 3 | on: push 4 | 5 | jobs: 6 | markdown-link-check: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@master 10 | - uses: gaurav-nelson/github-action-markdown-link-check@v1 11 | with: 12 | config-file: 'mlc_config.json' 13 | -------------------------------------------------------------------------------- /.github/workflows/spelling.yml: -------------------------------------------------------------------------------- 1 | name: Spell Check 2 | on: 3 | push: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | run: 8 | name: Spell Check 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout 12 | uses: actions/checkout@v3 13 | 14 | - name: Spell Check 15 | uses: crate-ci/typos@master 16 | -------------------------------------------------------------------------------- /.typos.toml: -------------------------------------------------------------------------------- 1 | [default] 2 | extend-ignore-identifiers-re = [ 3 | "AttributeID.*Supress.*", 4 | ] 5 | 6 | [default.extend-identifiers] 7 | AttributeIDSupressMenu = "AttributeIDSupressMenu" 8 | 9 | [default.extend-words] 10 | Daa = "Daa" 11 | 12 | [files] 13 | extend-exclude = ["Resources/"] 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Scientific Visualization 2 | 3 | This repository contains a collection of useful Paraview skills for scientific visualization that I've developed and condensed into one place. 4 | I've used the default MacOS keyboard shortcuts in this collection for brevity. 5 | If you are using a different operating system, the corresponding shortcuts can easily be found via a quick Google search. 6 | I've also assumed that anyone using this collection has the most recent version of Paraview. 7 | Here's an example visualization of inviscid flow over an airfoil from a simulation run with 2.25 billion grid cells. 8 | 9 |

10 | Airfoil Example
11 | Example Visualization (full video) 12 |

13 | 14 | ## Table of Contents 15 | 16 | ### General Visualization 17 | 18 | [Three Steps to Nicer Visualization](Tutorials/three-steps-to-nice-visualization.md) 19 | 20 | [Creating an Animation](Tutorials/creating-an-annimation.md) 21 | 22 | [FFMPEG Cheat Sheet](Tutorials/FFMPEG-cheat-sheet.md) 23 | 24 | ### Remote Visualization 25 | 26 | [Interactive Visualization on Phoenix](Tutorials/interactive-visualization-on-Phoenix.md) 27 | 28 | [General Interactive Visualization](Tutorials/general-interactive-visualization.md) 29 | 30 | ### Paraview Filters 31 | 32 | [Contours/Isosurfaces](Tutorials/contours.md) 33 | 34 | ### Volume Rendering 35 | 36 | Coming soon! 37 | 38 | ### Ray Tracing 39 | 40 | Coming soon! 41 | 42 | Have something to contribute? See the contributing guidelines [here.](contributing.md) 43 | 44 | ## Additional Resources 45 | Additional resources can be found in Paraview's documentation [Here](https://docs.paraview.org/en/latest/) 46 | -------------------------------------------------------------------------------- /Resources/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/.DS_Store -------------------------------------------------------------------------------- /Resources/airfoil-animated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/airfoil-animated.png -------------------------------------------------------------------------------- /Resources/contours/A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/contours/A.png -------------------------------------------------------------------------------- /Resources/contours/B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/contours/B.png -------------------------------------------------------------------------------- /Resources/creatingAnAnnimation/A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/creatingAnAnnimation/A.png -------------------------------------------------------------------------------- /Resources/creatingAnAnnimation/B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/creatingAnAnnimation/B.png -------------------------------------------------------------------------------- /Resources/creatingAnAnnimation/C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/creatingAnAnnimation/C.png -------------------------------------------------------------------------------- /Resources/creatingAnAnnimation/D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/creatingAnAnnimation/D.png -------------------------------------------------------------------------------- /Resources/creatingAnAnnimation/E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/creatingAnAnnimation/E.png -------------------------------------------------------------------------------- /Resources/threeStepsToNiceVisualization/A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/threeStepsToNiceVisualization/A.png -------------------------------------------------------------------------------- /Resources/threeStepsToNiceVisualization/B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/threeStepsToNiceVisualization/B.png -------------------------------------------------------------------------------- /Resources/threeStepsToNiceVisualization/C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/threeStepsToNiceVisualization/C.png -------------------------------------------------------------------------------- /Resources/threeStepsToNiceVisualization/D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/threeStepsToNiceVisualization/D.png -------------------------------------------------------------------------------- /Resources/threeStepsToNiceVisualization/E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/comp-physics/Scientific-Visualization/b98ee9484258078c072648a86d1812b3cb6c5b32/Resources/threeStepsToNiceVisualization/E.png -------------------------------------------------------------------------------- /Tutorials/FFMPEG-cheat-sheet.md: -------------------------------------------------------------------------------- 1 | # FFMPEG Cheat Sheet 2 | This file details a set of common things you may want to do with FFMPEG. 3 | 4 | ## Create a video from a sequence of PNG images 5 | The following command can be used to make a .mp4 video from a series of images padded with zeros (`pic.00001.png`, `pic.0002.png`, ...). 6 | 7 | ``` 8 | ffmpeg -r 30 -f image2 -i pic.%04d.png -vcodec libx264 -crf 25 -pix_fmt yuv420p test.mp4 9 | ``` 10 | 11 | The inputs are: 12 | * `-r` is the framerate 13 | * `-crf` is the quality, lower means better quality 14 | * `-S` (optional) video resolution in pixels 15 | * `-pix_fmt` specifies the pixel format 16 | 17 | ## Playing one video after another 18 | The following command can be used to play a sequence of videos with the same width and height. 19 | ``` 20 | ffmpeg -f concat -i videos.txt -c copy joinedVideo.mp4 21 | ``` 22 | The file `videos.txt` contains an ordered list of videos with the following syntax: 23 | ``` 24 | file '/directory/Video1.mp4' 25 | file '/directory/Video2.mp4' 26 | ``` 27 | ## Stacking videos 28 | The following command can be used to vertically stack two videos with the same width. 29 | ``` 30 | ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex vstack out.mp4 31 | ``` 32 | The following command can be used to horizontally stack two videos with the same height. 33 | ``` 34 | ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex hstack out.mp4 35 | ``` 36 | `N` videos can be stacked using the following. 37 | ``` 38 | ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex hstack=N out.mp4 39 | ``` 40 | A 2x2 array of compatible videos can be created using 41 | ``` 42 | ffmpeg -i input0 -i input1 -i input2 -i input3 -filter_complex "[0:v][1:v][2:v][3:v]xstack=inputs=4:layout=0_0|w0_0|0_h0|w0_h0[v]" -map "[v]" output.mp4 43 | ``` 44 | 45 | ## Dealing with an odd number of pixels 46 | Adding `-vf "pad=ceil(iw/2)*2:ceil(ih/2)*2"` to your FFMPEG command as shown below allows you to create a video from images that are not an even number of pixels in height and/or width. 47 | ``` 48 | ffmpeg -r 30 -f image2 -i pic.%04d.png -vcodec libx264 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -crf 25 -pix_fmt yuv420p test.mp4 49 | ``` 50 | 51 | ## Adding an .mp3 to a video 52 | The following command can be used to add sound to video. 53 | ``` 54 | ffmpeg -r 30 -f image2 -i pic.%04d.png -i MP3FILE.mp3 -vcodec libx264 -b 4M -vpre normal -acodec copy test.mp4 55 | ``` 56 | The inputs are: 57 | * `-i MP3FILE.mp3` is the name of the audio file 58 | * `-acodec copy` copies the audio from the input to the output stream 59 | 60 | ## Converting a video to .mp4 61 | The following command can be used to convert a video to .mp4. 62 | ``` 63 | ffmpeg -i INPUT.avi -vcodec libx264 -crf 25 OUTPUT.mp4 64 | ``` 65 | 66 | ## Cropping a video 67 | The following command can be used to crop a video 68 | ``` 69 | ffmpeg -i input.mp4 -vf "crop=w:h:x:y" output.mp4 70 | ``` 71 | where the inputs are 72 | * `-vf` indicates the usage of a video filter 73 | * `crop` is the name of the filter 74 | * `w:h` is the width and height of the output video< 75 | * `x:y` is the coordinate from which the video will be 76 | -------------------------------------------------------------------------------- /Tutorials/contours.md: -------------------------------------------------------------------------------- 1 | # Contours 2 | Contours (and isosurfaces) can be very useful in scientific visualization. 3 | To create contours in Paraview, you must first have point data. 4 | The `Cell Data to Point Data` filter must be applied if your data is cell data. 5 | After this, a `Contour` filter can be applied. 6 | The basic properties of a contour figure are shown below. 7 | 8 | drawing 9 | 10 | - Contour by is the variable contours will be taken over 11 | - Isosurfaces is the list of values for which contours will be made. 12 | You can add and remove contour values using the plus and minus buttons. 13 | Also, note that the value range can help select contour values. 14 | 15 | ## Useful Settings 16 | 17 | - Opacity: Make the contours slightly see-through. 18 | This can be useful if you want to show the contours of one variable over a 2D image of another variable. 19 | 20 | - Line Width: Paraview's default linewidth of 1 pixel often needs to be thicker. 21 | Increasing this makes your lines easier to see. 22 | 23 | - Render Lines as Tubes: This renders lines as tubes and can make contours look better in 3D. 24 | 25 | ## Example 26 | The following is an image of contours of velocity magnitude for a jet impinging a solid wall. 27 | 28 | drawing 29 | -------------------------------------------------------------------------------- /Tutorials/creating-an-annimation.md: -------------------------------------------------------------------------------- 1 | # Creating an Animation 2 | 3 | Animations (videos) are a nice way to show the evolution of transient data over time. 4 | This tutorial assumes that you have already opened a dataset that has multiple snapshots in time, selected a color bar for your data, and performed the steps in [Three Steps to Nicer Visualization](three-steps-to-nice-visualization.md). 5 | 6 | ## Step 1 - Frame your data 7 | 8 | If your data doesn't fill the render view in Paraview, it won't fill the video frame in your video. 9 | The easiest way to make your data fill the frame is to click the Reset Camera Closest or Zoom Closest to Data buttons. 10 | 11 | ![image](../Resources/creatingAnAnnimation/A.png) 12 | 13 | For the data used in this tutorial, the resulting render view is shown below. 14 | 15 | ![image](../Resources/creatingAnAnnimation/B.png) 16 | 17 | To fill the render view horizontally, split the viewing area in half by clicking Split Horizontal Axis and drag the separation line to the desired position. 18 | If your data fills the render view horizontally but not vertically, you can use Split Vertical Axis instead. 19 | These buttons are to the top and right of the render view as shown below. 20 | 21 | ![image](../Resources/creatingAnAnnimation/C.png) 22 | 23 | Once you have your data framed in a way you like, move on to Step 2 to save screenshots of each snapshot in your data. 24 | An example of well-framed data is shown below. 25 | 26 | ![image](../Resources/creatingAnAnnimation/D.png) 27 | 28 | ## Step 2 - Export Snapshots 29 | 30 | Once your data is framed, you can save screenshots by clicking `file -> Save Annimation...`. 31 | Once you give a filename, the following popup appears with a few useful options. 32 | 33 | drawing 34 | 35 | The following options let you control how Paraview saves snapshots: 36 | 37 | - Image Resolution: As the name implies, this is the resolution of the snapshots. 38 | To preserve your well-framed data, the ratio of pixels in each direction must stay the same. 39 | It is also helpful to use an even number of pixels in both directions. 40 | This makes post-processing the images created by Paraview easier. 41 | 42 | - Override Color Palette: This gives you a few options for background colors. 43 | 44 | - Transparent Background: This creates images with transparent backgrounds. 45 | For still images, this feature works as expected. 46 | However, FFMPEG will add a background to transparent images when they are formed into a video. 47 | If you need a video with a transparent background, the easiest thing to do is set the background color in Paraview to match whatever the image will be placed on. 48 | 49 | The rest of the options can generally be left unchanged. 50 | Once you have a directory with a bunch of pictures in it, proceed to step 3. 51 | 52 | ## Step 3 - Merge Snapshots into a Video 53 | 54 | Navigate to the directory in which you saved the snapshots. 55 | You'll see all of the images with numbers appended to them indicating their frame number. 56 | For example, (`pic.00001.png`, `pic.00002.png`, ...) 57 | 58 | ```ffmpeg -r 30 -f image2 -i .%04d.png -vcodec libx264 -crf 25 -pix_fmt yuv420p test.mp4``` 59 | 60 | The inputs are: 61 | 62 | - `-r` is the framerate 63 | 64 | - `crf` is the quality, lower means better quality 65 | 66 | - `-S` (optional) video resolution in pixels 67 | 68 | - `-pix_format` specifies the pixel format 69 | 70 | For additional details on the basics of FFMPEG, see the [FFMPEG Cheat Sheet](FFMPEG-cheat-sheet.md). 71 | -------------------------------------------------------------------------------- /Tutorials/general-interactive-visualization.md: -------------------------------------------------------------------------------- 1 | # General Interactive Visualization 2 | This tutorial outlines how to perform interactive remove visualization on a general cluster. 3 | Using remote visualization allows for the visualization of much larger simulations interactively, without the need for Paraview's batch mode 4 | 5 | ## Step 1 - Setting up your Environment 6 | Begin by downloading the .zip file here (https://gatech.box.com/s/1diud4lgequvuie5fg2ac6hcvoelndu5). 7 | This file contains two things 8 | 9 | - A bash script to automate the job submission process and provide instructions for remote connection. 10 | 11 | - A prebuilt Paraview 5.11 binary 12 | 13 | Place the file `remoteParview.zip` in you scratch direction on Phoenix and unzip is using `unzip remoteParaview.zip`. 14 | Enter the new directory `remoteParaview` and run `tar -xvf ParaView-5.11.0-egl-MPI-Linux-Python3.9-x86_64.tar.gz` to decompress the compiled binary. 15 | Now that you have the binary on Phoenix, you'll need to download Paraview 5.11 on your local machine. 16 | Paraview binaries can be downloaded here (https://www.paraview.org/download/). 17 | Make sure to select `v5.11` from the version drop down bar and install a `5.11.0` version of Paraview. 18 | 19 | ## Step 2 - Customizing the Bash Script 20 | While all of the options for the bash script could be passed as command line arguments, it saves time to hard code certain options that are unlikely to change. 21 | The following is a list of required and suggested updates to make to `remote-paraview-server`. 22 | 23 | - (Optional) Update line 4 to customize the job name that will show up in the scheduler 24 | 25 | - (Required) Update line 6 to point towards the location of you Paraview bin directory 26 | 27 | - (Required) Update line 50 to reflect the number of GPUs per node you'll use 28 | 29 | - (Optional) Update line 51 to reflect the default account you'll use to run Paraview jobs 30 | 31 | - (Optional) Update line 52 to reflect the default wall time requested for your job 32 | 33 | - (Required) Update lines 128 through 140 to match the job scheduler on the machine you are using. 34 | Information on how to do this can be found in the documentation for the machine you're using. 35 | 36 | ## Step 3 - Running remote-paraview-server 37 | Before running `remote-paraview-server` for the first time, you'll need to update its permissions by running `chmod u+x remote-paraview-server` in your command line. 38 | Once this has been done, you can run `./remote-paraview-server` with the following options: 39 | 40 | - `--account` specifies the charge account to use for the job. 41 | If you updated line 51 of `remote-paraview-server` to reflect a default account, this option is optional, otherwise it is required. 42 | 43 | - `--nodes` specifies the number of nodes to request (default 1) 44 | 45 | - `--mem` specifies the memory per node to request (default is to request all memory) 46 | 47 | - `--gres` specifies the GPU resources to request. 48 | These instructions have only been verified to work with `--gres gpu:V100:2`. 49 | 50 | - `--time` specifies the time limit for your job. 51 | This option is optional and defaults to whatever is set on line 52 of `remote-paraview-server`. 52 | 53 | Once you run `./remote-paraview-server `, it'll take a bit to start up. 54 | In the meantime, you'll see the below message: 55 | 56 | ``` 57 | Submitted batch job 58 | Waiting for ParaView server to start. This may take several minutes ... 59 | ``` 60 | 61 | When it's done initializing, you should see a dialogue with some recommended next steps numbered 1-4. 62 | Below is a slightly altered version of that dialogue: 63 | 64 | 65 | 1) Create the appropriate port forwarding for your local ParaView session to connect with. 66 | * On your local machine, run the following from a terminal where `nodeIdentifier` is the remote node running the ParaView server process (given in the output of the batch script) and `SystemIdentifier` is the name of the PACE system (however this is configured with your `.ssh/config`). 67 | * This terminal session must not be killed for the duration of your ParaView session as it maintains the port forwarding. 68 | * `ssh -L 8722::53723 ` 69 | 70 | 2) Once you have `Paraview5.11.0` open on your machine, select `file -> Connect..` to open the remote connection dialogue box. 71 | * If you've already set up the pace connection, simply double-click the existing configuration. 72 | * If you have not yet set up the pace connection, click `Add Server`. 73 | This will bring up a new dialogue box where you can specify a configuration name and set the `Port` to 8722. 74 | Once this is done, click `configure` and then `save` on the next dialogue box. 75 | -------------------------------------------------------------------------------- /Tutorials/interactive-visualization-on-Phoenix.md: -------------------------------------------------------------------------------- 1 | # Interactive Visualization on Phoenix 2 | This tutorial outlines how to perform interactive remove visualization on GATechs Phoenix cluster. 3 | Using remote visualization allows for the visualization of much larger simulations interactively, without the need for Paraview's batch mode 4 | 5 | > [!IMPORTANT] 6 | > Note: Do not use VSCode terminals for the following steps. Use a bare, 'system' terminal instead as some connection oddities have been seen when using remote VSCode terminals for visualization setup. 7 | 8 | ## Step 1 - Setting up your Environment 9 | Begin by downloading the .zip file here (https://gatech.box.com/s/1diud4lgequvuie5fg2ac6hcvoelndu5). 10 | This file contains two things 11 | 12 | - A bash script to automate the job submission process and provide instructions for remote connection. 13 | 14 | - A prebuilt Paraview 5.11 binary 15 | 16 | Place the file `paceParview.zip` in you scratch direction on Phoenix and unzip is using `unzip paceParaview.zip`. 17 | Enter the new directory `paceParaview` and run `tar -xvf ParaView-5.11.0-egl-MPI-Linux-Python3.9-x86_64.tar.gz` to decompress the compiled binary. 18 | Now that you have the binary on Phoenix, you'll need to download Paraview 5.11 on your local machine. 19 | Paraview binaries can be downloaded here (https://www.paraview.org/download/). 20 | Make sure to select `v5.11` from the version drop down bar and install a `5.11.0` version of Paraview. 21 | 22 | ## Step 2 - Customizing the Bash Script 23 | While all of the options for the bash script could be passed as command line arguments, it saves time to hard code certain options that are unlikely to change. 24 | The following is a list of required and suggested updates to make to `pace-paraview-server`. 25 | 26 | - (Optional) Update line 4 to customize the job name that will show up in the scheduler 27 | 28 | - (Required) Update line 6 to point towards the location of you Paraview bin directory 29 | 30 | - (Optional) Update line 51 to reflect the default account you'll use to run Paraview jobs 31 | 32 | - (Optional) Update line 52 to reflect the default wall time requested for your job 33 | 34 | ## Step 3 - Running pace-paraview-server 35 | Before running `pace-paraview-server` for the first time, you'll need to update its permissions by running `chmod u+x pace-paraview-server` in your command line. 36 | Once this has been done, you can run `./pace-paraview-server` with the following options: 37 | 38 | - `--account` specifies the charge account to use for the job. 39 | If you updated line 51 of `pace-paraview-server` to reflect a default account, this option is optional, otherwise it is required. 40 | 41 | - `--nodes` specifies the number of nodes to request (default 1) 42 | 43 | - `--mem` specifies the memory per node to request (default is to request all memory) 44 | 45 | - `--gres` specifies the GPU resources to request. 46 | These instructions have only been verified to work with `--gres gpu:V100:2`. 47 | 48 | - `--time` specifies the time limit for your job. 49 | This option is optional and defaults to whatever is set on line 52 of `pace-paraview-server`. 50 | 51 | Once you run `./pace-paraview-server `, it'll take a bit to start up. 52 | In the meantime, you'll see the below message: 53 | 54 | ``` 55 | Submitted batch job 56 | Waiting for ParaView server to start. This may take several minutes ... 57 | ``` 58 | 59 | When it's done initializing, you should see a dialogue with some recommended next steps numbered 1-4. 60 | Below is a slightly altered version of that dialogue: 61 | 62 | 63 | 1) Create the appropriate port forwarding for your local ParaView session to connect with. 64 | * On your local machine, run the following from a terminal where `nodeIdentifier` is the remote node running the ParaView server process (given in the output of the batch script) and `paceSystemIdentifier` is the name of the PACE system (however this is configured with your `.ssh/config`). 65 | * This terminal session must not be killed for the duration of your ParaView session as it maintains the port forwarding. 66 | * `ssh -L 8722::53723 ` 67 | 68 | 2) Once you have `Paraview5.11.0` open on your machine, select `file -> Connect..` to open the remote connection dialogue box. 69 | * If you've already set up the pace connection, simply double-click the existing configuration. 70 | * If you have not yet set up the pace connection, click `Add Server`. 71 | This will bring up a new dialogue box where you can specify a configuration name and set the `Port` to 8722. 72 | Once this is done, click `configure` and then `save` on the next dialogue box. 73 | -------------------------------------------------------------------------------- /Tutorials/three-steps-to-nice-visualization.md: -------------------------------------------------------------------------------- 1 | # Three Steps to Nicer Visualization 2 | 3 | Advanced features like opacity mapping, ray tracing, and volume rendering can all be used to make nice renderings of scientific data. 4 | However, there are three simple things you can do to turn the default settings in Paraview into visualizations that are nice enough to share with the outside world. 5 | This short set of tips will show you how to do this and get you started on making nice visualizations of scientific data. 6 | To follow along with this tutorial, start by opening the Paraview state file `Resources/cubeAndSphere.pvsm` in the most recent version of Paraview. 7 | 8 | ## Change the default background color 9 | Paraview's default background color is instantly recognizable to anyone who uses the software regularly. 10 | While there's nothing wrong with the default background color, changing it can indicate to others that you've put time and effort into making nice visualizations, and will often look better. 11 | For all but a small subset of visualizations, a black or white background will look much nicer than the default gray background. 12 | To change the background color, scroll to the bottom of the properties tab and unselect Use Color Palette for Background shown below. 13 | 14 | ![image](../Resources/threeStepsToNiceVisualization/A.png) 15 | 16 | To select a color, click the background dropdown shown below and use the resulting popup window to select your desired color. 17 | 18 | ![image](../Resources/threeStepsToNiceVisualization/B.png) 19 | 20 | ## Remove the orientation axis 21 | 22 | The orientation axis is shown by default in the lower left-hand corner of the rear view. 23 | In many cases, it is not relevant to visualization and can be removed. 24 | To do this, unselect Orientation Axis Visibility in the properties tab as shown below. 25 | 26 | ![image](../Resources/threeStepsToNiceVisualization/C.png) 27 | 28 | ## Remove the color bar 29 | 30 | Knowing the values of the color bar is not always pertinent to scientific visualization. 31 | If this is the case, it can be removed, yielding a cleaner visualization. 32 | This can be done by changing the visibility toggle in the properties tab as shown below. 33 | 34 | ![image](../Resources/threeStepsToNiceVisualization/D.png) 35 | 36 | Note that each visible item in the pipeline browser can have its color bar toggled on or off individually. 37 | The render view after making these three changes is shown below. 38 | 39 | ![image](../Resources/threeStepsToNiceVisualization/E.png) 40 | -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | # Contributing Guidelines 2 | The following guidelines ensure uniformity of the resources in this repository. 3 | 4 | - Filenames, filter names, terminal commands, and terminal command options should be wrapped with \`'s, ie. \`\\` 5 | 6 | - When possible, screenshots should be made using  "Capture selected window," or whatever your screenshotting tool uses. 7 | [Three Steps to Nicer Visualization](Tutorials/three-steps-to-nice-visualization.md) provides a good example of this. 8 | 9 | - Paraview dark mode is strongly preferred. 10 | 11 | - Black or white backgrounds should be used in all screenshots (no Paraview default background color please) 12 | 13 | - Boxes with 3pt borders and an RGB value of (255,0,0) should be used to highlight regions in screenshots 14 | 15 | - Screenshots should be placed in `Resources/` and named `A.png`, `B.png`, etc. 16 | 17 | - All tutorials should be listed in the table of contents in the [README](README.md) 18 | -------------------------------------------------------------------------------- /mlc_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "aliveStatusCodes": [417, 403, 200, 429, 206, 0] 3 | } 4 | --------------------------------------------------------------------------------