Menu

simulationCases/runCode.sh

runCode.sh

#!/bin/bash

# Check if .project_config exists
if [ ! -f ../.project_config ]; then
    echo "Error: .project_config not found!"
    echo "Please run the installation script first:"
    echo "  cd .. && ./reset_install_requirements.sh"
    exit 1
fi

source ../.project_config
echo "BASILISK: \$BASILISK"

# Check if qcc is available
if ! command -v qcc &> /dev/null; then
    echo "Error: qcc command not found!"
    echo "Please run the installation script first:"
    echo "  cd .. && ./reset_install_requirements.sh"
    exit 1
fi

# Parse command-line arguments
VIEW_MODE=\false
FILE_NAME=""

for arg in "\$@"; do
    case \$arg in
        --view)
            VIEW_MODE=\true
            ;;
        *)
            if [[ -z "\$FILE_NAME" && "\$arg" != "--view" ]]; then
                FILE_NAME="\$arg"
            fi
            ;;
    esac
done

# Set default filename if not provided
FILE_NAME=\${FILE_NAME:-plateau}

mkdir -p \$FILE_NAME

# Conditional compilation based on mode
if [ "\$VIEW_MODE" = true ]; then
    # Visualization mode - no MPI, with OpenGL libraries
    qcc -O2 -Wall -disable-dimensions -I\$PWD/src-local -I\$PWD/../src-local \$FILE_NAME.c -o \$FILE_NAME/\$FILE_NAME -L\$BASILISK/gl -lglutils -lfb_tiny -lm
else
    # MPI mode - existing compilation
    if [[ "\$OSTYPE" == "darwin"* ]]; then
        # macOS
        CC99='mpicc -std=c99' qcc -Wall -O2 -D_MPI=1 -disable-dimensions -I\$PWD/src-local -I\$PWD/../src-local \$FILE_NAME.c -o \$FILE_NAME/\$FILE_NAME -lm
    else
        # Linux
        CC99='mpicc -std=c99 -D_GNU_SOURCE=1' qcc -Wall -O2 -D_MPI=1 -disable-dimensions -I\$PWD/src-local -I\$PWD/../src-local \$FILE_NAME.c -o \$FILE_NAME/\$FILE_NAME -lm
    fi
fi

cd \$FILE_NAME

# Conditional execution based on mode
if [ "\$VIEW_MODE" = true ]; then
    # Direct execution for visualization
    ./\$FILE_NAME
else
    # MPI execution
    mpirun -np 4 ./\$FILE_NAME
fi

cd ..