> For the complete documentation index, see [llms.txt](https://wiki.solids.group/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.solids.group/alamo/visit.md).

# VisIt

## Installing visit on Ubuntu

Get Visit here: <https://visit-dav.github.io/visit-website/releases-as-tables/#latest>

Download the latest version for which your version of Ubuntu is supported. Note that it often will not work if your version of Ubuntu is too new. The tarball (.tgz) is recommended.

where you must change the path (the red part) to whatever path you

Extract and put in a common location (usually /opt). The executable is in {extracted path}/bin/. You can add it to your shell by putting the following in your `./.bashrc` file:

```
export PATH=${PATH}:/opt/visit3_3_3.linux-x86_64/bin/
```

where you must change the path to match whatever the unzipped tarball was.

## Visit on Nova

[The Gist](https://gist.github.com/mcmehrtens/8ff559da75699f5084e89e7aeab9549a) has files and scripts to build VisIt and connect to VisIt with client-server, serial/parallel mode.

### Version Support

These scripts and configurations have been tested with VisIt **3.4.2** built with the following environment modules:

| Software | Version               |
| -------- | --------------------- |
| gcc      | 14.2.0-cuda12-vx6uhdf |
| openmpi  | 4.1.6-jd5jqt4         |
| libtool  | 2.4.7-cmddukv         |
| expat    | 2.6.3-73vqnat         |
| git      | 2.47.0-hy4cypr        |

<details>

<summary>All environment modules loaded</summary>

```
Currently Loaded Modules:
  1) libiconv/1.17-pdnbqbs      21) libedit/3.1-20230828-ziky75n
  2) xz/5.4.6-xbpkfgh           22) libxcrypt/4.4.35-x6xdydt
  3) zlib-ng/2.2.1-4rxbcvx      23) openssh/9.7p1-bcpncex
  4) libxml2/2.10.3-6ujajfv     24) ucx/1.17.0-cp7fonc
  5) cuda/12.4.1-cz3ljd3        25) openmpi/4.1.6-jd5jqt4
  6) gmp/6.3.0-ag5gd7k          26) findutils/4.9.0-53nrqrw
  7) mpfr/4.2.1-coqqwdx         27) libtool/2.4.7-cmddukv
  8) mpc/1.3.1-uzqwyku          28) libmd/1.0.4-dwc5q6s
  9) zstd/1.5.6-qfc7cs2         29) libbsd/0.12.2-vn3dd6q
 10) gcc/14.2.0-cuda12-vx6uhdf  30) expat/2.6.3-73vqnat
 11) rdma-core/48.0-wp5qvyu     31) nghttp2/1.63.0-h7jonug
 12) libfabric/1.21.0-47d4rok   32) curl/8.8.0-vcz5nyl
 13) numactl/2.0.16-xzha46m     33) pcre2/10.44-fxqjqnn
 14) bzip2/1.0.8-jxv7h7d        34) libunistring/1.2-gqiej3l
 15) ncurses/6.5-55fd2mx        35) libidn2/2.3.7-5yea6hh
 16) pigz/2.8-edkwki4           36) berkeley-db/18.1.40-zfcwoxv
 17) tar/1.34-dimfnd7           37) readline/8.2-g32sjp4
 18) gettext/0.22.5-zik5ihu     38) gdbm/1.23-exqbrui
 19) openssl/3.3.1-5v6rl3q      39) perl/5.40.0-l2sxfqz
 20) krb5/1.21.2-xrjw5a4        40) git/2.47.0-hy4cypr
```

</details>

### Building

Edit the `build-visit.sh` script below as follows:

* Add your email address to the `--mail-user` field.
* Set `VISIT_ROOT` to the directory VisIt should be installed to.

Run `sbatch build-visit.sh` to build VisIt. I've run into an issue where the VisIt build will fail occasionally because it can't find the Python include directory. Running the build job again usually resolves this issue.

{% hint style="warning" %}
For more information, refer to VisIt's [build instructions](https://visit-sphinx-github-user-manual.readthedocs.io/en/v3.4.2/building_visit/Basic_Usage.html) and [advanced build instructions](https://visit-sphinx-github-user-manual.readthedocs.io/en/v3.4.2/building_visit/Advanced_Usage.html).
{% endhint %}

### Configuring Shell

When you use VisIt in client-server mode, it first must spin up a metadata server and several other background processes on the server. To do so, VisIt must be able to resolve the OpenMPI library that was used to build VisIt. Since it is currently [impossible to run commands immediately after the SSH session is established](https://github.com/visit-dav/visit/issues/18883), we need to run any necessary commands in your remote shell's startup files.

Add the following code to your remote shell's startup file (normally `.bashrc`). This code may need to be modified for non-Bash shells.

```bash
# if the shell is not interactive
if [[ $- != *i* ]]; then
        GROUP_OPT=/work/brunnels/opt

        # load modules required for client-server VisIt
        module purge
        module load gcc/14.2.0 openmpi/4.1.6 libtool/2.4.7 expat/2.6.3 git/2.47.0
        export PATH="$GROUP_OPT:$PATH"
        if [ -d $GROUP_OPT ]; then
            for dir in "$GROUP_OPT"/*/bin; do
                if [ -d "$dir" ]; then
                    export PATH="$dir:$PATH"
                fi
            done

            for dir in "$GROUP_OPT"/*/lib; do
                if [ -d "$dir" ]; then
                    export LD_LIBRARY_PATH="dir:$LD_LIBRARY_PATH"
                fi
            done
        fi
fi
```

### Configuring VisIt

Download the `host_isu_nova.xml` file from this Git gist. This file is a [*host profile*](https://visit-sphinx-github-user-manual.readthedocs.io/en/v3.4.2/using_visit/ClientServer/Host_Profiles.html#host-profiles) which VisIt uses to configure the remote server. Put this file in [VisIt's host profile directory](https://visit-sphinx-github-user-manual.readthedocs.io/en/v3.4.2/using_visit/Preferences/File_Locations.html#host-profile-files). For macOS, this directory is `~/.visit/hosts`.

You will need to set a couple parameters of the host profile for your own installation. These can be set [in the GUI](https://visit-sphinx-github-user-manual.readthedocs.io/en/v3.4.2/using_visit/ClientServer/Host_Profiles.html) or by directly editing the `.xml` file.

* `userName`: set to your username on the remote server
* `directory`: set to the root VisIt directory (this is `$VISIT_ROOT` in `build-visit.sh`)

Once configured, follow the [VisIt documentation to connect via a host profile](https://visit-sphinx-github-user-manual.readthedocs.io/en/v3.4.2/using_visit/ClientServer/Host_Profiles.html).

If you have problems connecting, you may need to [configure passwordless SSH](https://visit-sphinx-github-user-manual.readthedocs.io/en/v3.4.2/using_visit/ClientServer/Client_server_mode.html#setting-up-password-less-ssh) or [start VisIt from the command line with the `-nopty` option](https://visit-sphinx-github-user-manual.readthedocs.io/en/v3.4.2/getting_started/Startup_Options.html#startup-options).

## Visit tips and tricks

<details>

<summary>Suppressing warnings and error dialogs</summary>

Visit's warning/error dialog messages are obnoxious and excessive. To hard-suppress them during a session, open Controls -> Command and execute

<pre><code><strong>SuppressMessages(1)
</strong></code></pre>

You can pass 2 instead of 1 to suppress warnings only.

(Even then, some errors will make it though - visit is quite persistent. But it should be a little less intrusive.)

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://wiki.solids.group/alamo/visit.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
