Table of Contents

Tahoe

Tahoe is a research-oriented platform for the development of numerical methods, finite element models, and material models. It is divided into 2 projects, the public Tahoe project (Tahoe v 2.1) hosted by SourceForge and the private development project hosted by Codesion. The open Tahoe project includes methods and models that have been published and implementations that have been verified. The development project contains unpublished methods models and implementations that have not been verified and thus not yet ready for public release. Go to the tahoe project page for a user guide (incomplete), discussion forum, and developer's wiki http://tahoe.sourceforge.net/

TAHOE User Manual

An incomplete but useful user manual for Tahoe is available here: tahoe.user.pdf

TAHOE on GitHub

Tahoe is now available on GitHub: https://github.com/NguyenLabJHU/Tahoe-FEM. Follow the instructions on GitHub to install Tahoe on macOS and Linux (Ubuntu). Installation instructions on GitHub are based on the following instructions and may need some tweaks. Please contact Bibek if you would like to install Tahoe.

Installation of TAHOE

Below are the directions to download and install both the open and development modules and associated libraries and to update both projects using CVS. Try it first. If you encounter errors, read the log files to figure out the error. If you can't, then email me the log files so that I can help you. Please do not just email me and say that you encountered an error. I need to know the specific error to help you debug.

Nguyen Lab: Please don't just do nothing or copy someone else's executable if you encounter an error. Past experience has shown that doing the latter will only create more problems and will severely hinder my ability to help you with programming, debugging, etc. Ask google, your lab mates, and me for help. This is our primary computing tool and if you can't compile it you won't be getting any work done.

Old instructions for installing TAHOE on macOS and Linux are archived here. You might find it useful in specific circumstances.

Installing on macOS:

TAHOE was installed and tested on macOS Catalina 10.15 with open-mpi 4.1.3 and gcc 11.2.0. Sourceforge doesn’t have the current version tahoe-manager available yet but will be updated soon.

  1. Install xcode command line tools to enable basic development libraries and features. On macOS terminal:
    $ xcode-select --install 
  2. If you don’t have an X11 client on macOS, download and install XQuartz. Visit https://www.xquartz.org. If you are accessing macOS via the terminal and have no GUI, you can install XQuartz using homebrew later.

  3. Apple changed the default shell from bash to zsh. In case you don’t have an existing zsh profile, open one. You can skip the step if you have an existing zsh profile.
    $ open ~/.zshrc 
  4. Save and close the zshrc file. We will use this file later to save the environment variables and path related to TAHOE installation.
  5. Download and install homebrew package manager:
    $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 
  6. Change the read and write permission for homebrew:
    $ sudo chown -R $(whoami) $(brew --prefix)/* 
  7. Download and install XQuartz via homebrew, if you haven’t done it before:
    $ brew install --cask xquartz 
  8. Install the following packages using homebrew:
    $ brew install wget
    $ brew install cmake
    $ brew install automake
    $ brew install open-mpi 
    $ brew options subversion
    $ brew install subversion 
  9. The current stable version of open-mpi available via homebrew is 4.1.3 and depends on gcc 11.2.0. Please check the installed versions of gcc, g++, and gfortran from the following directory before proceeding to next step.
    $ cd /usr/local/bin 
  10. Create a symlink for gcc, g++, and gfortran compilers using (Please make sure to use the correct version of the compilers):
    $ ln -s gcc-11 gcc
    $ ln -s g++-11 g++
    $ ln -s gfortran-11 gfortran 
  11. Log out of zsh terminal to activate the changes and log back in.

  12. In your home directory, create a directory for downloading and installing Tahoe and its dependencies:
    $ mkdir tahoe && cd tahoe 
  13. Clone the ACCESS library using git. We will use exodus format. Install the Third-Party Libraries (TPL), build and install SEACAS using the following:
    $ git clone https://github.com/gsjaardema/seacas.git
    $ cd seacas
    $ ./install-tpl.sh
    $ mkdir build && cd build
    $ ../cmake-exodus
    $ make && make install 
  14. Save the following environment variables to your .zshrc file. Go back to the Tahoe directory using - cd .. commands. Please make sure to use the correct directory.
    $ TAHOE_MAIN=$PWD
    $ echo export TAHOE_MAIN=$TAHOE_MAIN >> ~/.zshrc
    $ echo export ACCESS=$TAHOE_MAIN/seacas >> ~/.zshrc
    $ echo export LD_LIBRARY_PATH=$ACCESS/lib >> ~/.zshrc
    $ echo export CVS_RSH=ssh >> ~/.zshrc
    $ source ~/.zshrc 
  15. Create symlinks for exodus libraries.
    $ cd $ACCESS
    $ ln -s include/ inc
    $ cd lib
    $ ln -s libexodus.dylib libexoIIv2c.dylib
    $ ln -s libexodus.a libexoIIv2c.a
    
  16. Log out of zsh terminal to activate the changes and log back in.

  17. Download the latest version of TAHOE-Installer (tahoe-manager, installation macros, and scripts) to /Users/username/Downloads/TAHOE-Installer.

  18. Create a backup directory for downloading all the default and optional modules for TAHOE.
    $ cd $TAHOE_MAIN
    $ mkdir tahoe-backup && cd tahoe-backup 
  19. Set the following variables for ease of usage (“username” should be changed to your own username):
    $ TAHOE_DOWNLOAD=/Users/username/Downloads/TAHOE-Installer
    $ TAHOE_BACKUP=$TAHOE_MAIN/tahoe-backup 
  20. Copy tahoe-manager to the tahoe-backup directory.
    $ cp -i $TAHOE_DOWNLOAD/tahoe-manager $TAHOE_BACKUP 
  21. If the tahoe-manager isn’t already an executable, convert it to an executable file. If tahoe-manager is already an executable, you can skip this step below (it should be under “$TAHOE_BACKUP” directory).
    $ sudo chmod 755 ./tahoe-manager 
  22. Run tahoe-manager to download the macros, default modules, and optional modules:
    $ ./tahoe-manager 
  23. Select connection type: svn, and enter SourceForge user name. It will start downloading the macros. Once the macros are downloaded, enter any architecture type to continue the download.

  24. For optional modules, select 0 (CBLAS), 6 (ACCESS), 8 (benchmark_XML), 10 (contrib), 11 (development), 12 (development_benchmark_xml), 13 (f2c), 14 (metis), 15 (spooles), 16 (spoolesMPI).

  25. Copy the new macro files, GNU-GCC-MPI-9.3.macros and GNU-GCC9.3.macros, to the downloaded marcos directory. This is a temporary step until the newer macros are available on SourceForge.
    $ cp -i $TAHOE_DOWNLOAD/*.macros $TAHOE_BACKUP/macros 
  26. Edit the .tahoe-config file to change the architecture to either GNU-GCC-MPI-9.3 or GNU-GCC9.3.

  27. Use the libf2c_.a file here to replace the one under tahoe-install/f2c/lib directory.

  28. Make a copy of the backup directory for installation and rename it.
    $ cd $TAHOE_MAIN
    $ cp -r tahoe-backup tahoe-install 
  29. Go to the installation directory and run tahoe-manager to update the installation settings with the correct architecture.
    $ cd tahoe-install
    $ ./tahoe-manager update 
  30. Select a connection type as before, enter a user name, and select an architecture. For the parallel version of TAHOE, select GNU-GCC-MPI-9.3 or for serial version of TAHOE, select GNU-GCC-9.3. Select the optional modules as before. If the serial version of TAHOE is being installed, skip optional module 16 (spoolesMPI).

  31. Build and compile TAHOE:
    $ ./tahoe-manager build 
  32. Once TAHOE is compiled and built, add the following environment variables and path to your .zshrc file:
    $ echo export TAHOE_MOD=$TAHOE_MAIN/tahoe-install >> ~/.zshrc
    $ echo export TAHOE_DIR=$TAHOE_MOD/tahoe >> ~/.zshrc
    $ echo export PATH=$PATH:$TAHOE_MOD/bin >> ~/.zshrc
    $ source ~/.zshrc 
  33. If you are using macOS with Apple Silicon processors, then you may have to add the following to your .bashrc file. We have not found a workaround for it yet. Make sure to choose your username.
    install_name_tool -add_rpath “$ACCESS/lib” /Users/beijunshen/tahoe/tahoe-install/tahoe/tahoe 

Installing on Ubuntu:

The parallel version of TAHOE was installed and tested on Ubuntu 20.04 via Windows Subsystem for Linux (WSL). Download the latest version of tahoe-manager, installation macros, and scripts from Nguyen Lab OneDrive. Sourceforge doesn’t have this version and will be updated soon.

  1. Download the latest version of TAHOE-Installer (tahoe-manager, installation macros and scripts) from Nguyen Lab OneDrive to /mnt/c/Users/username/Downloads.

  2. Go to your home directory, and create a directory for downloading and installing Tahoe modules and their dependencies:
    $ cd
    $ mkdir tahoe && cd tahoe
    $ mkdir tahoe-backup && cd tahoe-backup 
  3. Set the following variables for ease of usage. Make sure to use the correct directory.
    $ TAHOE_DOWNLOAD=/mnt/c/Users/username/Downloads/TAHOE-Installer
    $ TAHOE_MAIN=/home/username/tahoe
    $ TAHOE_BACKUP=/home/username/tahoe/tahoe-backup 
  4. Copy install_pre.sh and tahoe-manager to the tahoe-backup and tahoe directory:
    $ cp -i $TAHOE_DOWNLOAD/install_pre.sh $TAHOE_MAIN
    $ cp -i $TAHOE_DOWNLOAD/tahoe-manager $TAHOE_BACKUP
    
  5. Open install_pre.sh using a text editor (for example, VS Code) and change the installation directory variable, TAHOE_MAIN, within the file. Save and close the file.
    $ code install_pre.sh 
  6. Change the permission for install_pre.sh to make it an executable. Run the script to download and install pre-requisite packages for TAHOE.
    $ chmod a+x install_pre.sh
    $ ./install_pre.sh
    
  7. Log out of the bash shell to activate the change and log back in.
  8. Set the following variables for ease of usage:
    $ TAHOE_DOWNLOAD=/mnt/c/Users/username/Downloads/TAHOE-Installer
    $ TAHOE_BACKUP=/home/bibek/TAHOE/tahoe-backup 
  9. Go to tahoe-backup directory. Run tahoe-manager to download the macros, default modules, and optional modules:
    $ cd $TAHOE_BACKUP
    $ ./tahoe-manager 
  10. Select connection type: svn, and enter the SourceForge user name. It will start downloading the macros. Once the macros are downloaded, enter any architecture type to continue downloading.

  11. For optional modules, select 0 (CBLAS), 6 (ACCESS), 8 (benchmark_XML), 10 (contrib), 11 (development), 12 (development_benchmark_xml), 13 (f2c), 14 (metis), 15 (spooles), 16 (spoolesMPI).

  12. Copy the new macro files, GNU-GCC-MPI-9.3.macros and GNU-GCC-9.3.macros, to the downloaded marcos directory. This is a temporary step until the newer macros are available on SourceForge.
    $ cp -i $TAHOE_DOWNLOAD/*.macros $TAHOE_BACKUP/macros 
  13. Clean all the settings before making a copy of the backup directory for installation purposes.
    $ ./tahoe-manager clean 
  14. Make a copy of the backup directory for installation and rename it.
    $ cd $TAHOE_MAIN
    $ cp -r tahoe-backup tahoe-install 
  15. Go to the installation directory and run tahoe-manager to update the installation settings with the correct architecture.
    $ cd tahoe-install
    $ ./tahoe-manager update 
  16. Select a connection type, enter a user name, and select an architecture. For the parallel version of TAHOE, select GNU-GCC-MPI-9.3 or for serial version of TAHOE, select GNU-GCC-9.3. Select the optional modules as before. If the serial version of TAHOE is being installed, skip optional module 16 (spoolesMPI).

  17. Build and compile TAHOE:
    $ ./tahoe-manager build 
  18. Once TAHOE is compiled and built, add the following environment variables and path to your .bashrc file:
    $ echo export TAHOE_MOD=$TAHOE_MAIN/Tahoe-Install >> ~/.bashrc
    $ echo export TAHOE_DIR=$TAHOE_MOD/tahoe >> ~/.bashrc
    $ echo export PATH="$TAHOE_MOD/bin:$PATH" >> ~/.bashrc
    $ source ~/.bashrc 

Installing Tahoe for MARCC

Assuming what is needed in Tahoe serials compiling has been established.

1) load the module required for Tahoe parallel compile on MARCC (GCC, MARCC, CMake)

  module load MARCC
  module load gcc
  module load cmake

2) download the tahoe-install directory

  cvs -d username@tahoe.cvs.sourceforge.net:/cvsroot/tahoe checkout tahoe-install

3) configure tahoe for build:

  cd tahoe-install
 ./tahoe-manager config
 enter Sourceforge "username"
 enter Cloudforge "tahoe.username"
 enter your password for Sourceforge or Cloudforge when prompted (if you don't have ssh key pairs setup)
 default build architecture number: ?   choose 112 (for openmpi on linux)
                                                            * you chose : RedHat.OpenMPI
 do want this to be the default architecture for all modules (y/n) [y]: 
                                                            * default modules : macros expat toolbox tahoe
 do want to add optional modules (y/n) [n]: y
 Choice or modules to toggle (applied left to right): 0 6 7 10 11 13 14 15 16 (turn on CBLAS access aztec contrib development f2c metis spooles spoolesMPI)

4) Build Tahoe

./tahoe-manager build

After installation, If you get the following error when running Tahoe: error while loading shared libraries: libnetcdf.so.11: cannot open shared object file: No such file or directory. Then add “export LD_LIBRARY_PATH=/XXX/lib” (replace XXX with the directory of ACCESS, e.g. LD_LIBRARY_PATH=/home-2/hdong6@jhu.edu/seacas/lib) into the .bashrc file and restart the bash.

Tips: 1. When running parallel, make sure to use the command: $ mpirun -np number_of_cores tahoe -f. Using tahoe -f will run program in serial.

2. When running parallel, make sure that you choose SPOOLES under solver

3. MARCC changed compilers, if your Tahoe does not compile, connect Zheliang Wang (wzhelia1@jhu.edu) for an updated zip file of Tahoe.

4. For more information, see tahoe user manual.

Building Tahoe using Make

The Tahoe project is built using Make. Each module contains a makefile containing the build options and configurations for each module is.

1) To create a makefile for a module (e.g. tahoe), cd to the directory associated with the module (e.g. full_path_to_tahoe-install/tahoe) and cp makefile.template to makefile. Add the HOME_DIR for the module (e.g., full_path_to_tahoe-install/tahoe), and the build architecture (e.g., DARWIN-GCC4.X). Uncomment modules that you want to link to in the build options (e.g. access).

2) Type make help to get all targets. For example, the targets for the Tahoe module are:

3) Each module can be built individually with make init build -s. Initialize and build the toolbox and libraries before the tahoe directory.

4)Resources/instructions for Make

GNU Make

Free Software Foundation

Using SVN

SVN Subversion is an open-source version control system used to manage the collaborative development of Tahoe. Browse through the tahoe svn repositories to see previous versions and track the difference between versions.

The svn repository for the public tahoe project: https://sourceforge.net/p/tahoe/codesvn/HEAD/tree/

The svn repository for the development project: https://sourceforge.net/p/tahoe/codesvn_dev/HEAD/tree/

The svn repository for the development project benchmark: https://sourceforge.net/p/tahoe/codesvn_dev_bench/HEAD/tree/

A tutorial to svn: http://svnbook.red-bean.com/

key commands: commit, update, checkout

Creating Tahoe input files

1) Tahoe uses XML files as input files. There are many XML editors available for purchase and free download from the web. A common one used in the lab is the no-frills GUI XAmple editor.

Installing Xample XML editor on macOS

Xample is probably the best open-source XML editor. It allows you to easily load custom XML schemas (.xsd files), informs you of all the possible inputs for lists and sublists, and allows for easy adding and removing of nodes. Unfortunately, Xample is no longer supported by its original creator, which means it will not run on the latest Java version. The last Java version compatible that Xample ran on was version 8 (1.8.0_91). If you do not have version 8, you must install it. The easiest way to do this is to use homebrew.

check the paths of the versions installed:

You should see something like this:

Alternatively, download the following disk image for v8 and try installing it yourself without brew

jre-8u151-macosx-x64.dmg

Download the following distribution of Xample

xample.tar

untar: tar -xvf xample.tar

If you're using csh or tcsh, you will execute Xample using the run-xample.csh script, but first you will need to set a few variables. open the the run-xample.csh script and add the following after “#!/bin/csh -f ”

1) setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home

2) set JAVA = /usr/bin/java

3) set xampledir = [Full path to Xample]/XAmple-distr You can run Xample by running the script in the X-window.

Next, create the xml schema by typing tahoe -xsd (to create file tahoe.xsd). 3) Open tahoe.xsd in Xample. 4) At this point, you can create an .xml input file from scratch or open and edit an existing .xml input file (for example using a benchmark).

Install jedit

Another good open-source xml editor is jedit. I allows you to load custom .xsd or .dtd xml schema and has a tree view of the inputs as well as a table of allowable inputs for each sublist. It's still not as convenient as Xample, but it is an actively supported application that runs on the latest version of java.

To install jedit, download the installation package for your platform from: http://www.jedit.org/index.php?page=download Install according to the directions on the website. For mac, you may have to run the application from the command line using the latest version of java.

% java -jar [full path to jEdit]/jEdit.app/Contents/Java jedit.jar

Next, install the XML plug-in. You can do this in the application's pull-down menu Plugins → Plugin Manager and check the boxes for XML, XercesPlugin, and SideKick. To download and install the plug-ins manually, follow the instructions at http://plugins.jedit.org/ .

When you open an existing tahoe xml file or create a new one, you have to associate either the tahoe.xsd or tahoe.dtd schema with it. To do so got to Plugins → Set Schema Type and choose between XSD or DTD. Next, go to Plugins → Set Schema. The sidekick window will now show you a tree view of all of your lists and sublists of the input file. You can dock the sidekick window by clicking on the down arrow at the top of the window. To insert a new field, scroll to the line that you want to insert something in, then go to Plugins → XML Insert. This will create another window of all the input fields allowed for that list item. You can also dock this window in the main window by clicking on the down arrow at the top of the menu.

Benchmark examples

All benchmark examples reside in tahoe-install/benchmark_XML and are organized as follows:

Running Tahoe

1) Run interactively by typing tahoe at the command line. You'll be prompted to enter the input file path or option.

2) Run tahoe with command line options (tahoe [-option]):

3) Run tahoe batch processes and create a text file with @ in the first line. List the input files in subsequent lines. Download example:

run.batch

Adding users and permissions Add user to sourceforge and cloudforge repositories. For sourceforge:

In the tahoe directory, checkout CVSROOT