#!/bin/bash # install_rrtmg - install script for creating a RRTMG library #--------------------------------------------------------------------------------# # This file is part of the PALM model system. # # PALM is free software: you can redistribute it and/or modify it under the terms # of the GNU General Public License as published by the Free Software Foundation, # either version 3 of the License, or (at your option) any later version. # # PALM is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along with # PALM. If not, see . # # Copyright 1997-2021 Leibniz Universitaet Hannover #--------------------------------------------------------------------------------# # # Current revisions: # ------------------ # # # Former revisions: # ----------------- # $Id: install_rrtmg 4858 2021-01-29 15:27:59Z schwenkel $ # switch from ksh to bash # # # # 1613 2015-07-08 14:53:29Z maronga # Bugfix: compilation of shared library fails due to misplaced rm command # # 1585 2015-04-30 07:05:52Z maronga # Initial revision # #--------------------------------------------------------------------------------# # install_rrtmg - install script for creating a RRTMG library #--------------------------------------------------------------------------------# # the following variables must be modified for the local system according to # .mrun.config # # Example 1 (lcmuk): # compiler_name="mpif90" # fopts="-fltconsistency -O3 -cpp -r8 -nbs -convert little_endian -I /muksoft/packages/netcdf/4_intel/include" # fopts_trace="-fpe0 -C -check nooutput_conversion -debug -traceback -g -w -xT -O0 -ftz -fno-alias -no-prec-div -no-prec-sqrt -ip -nbs -convert little_endian -diag-disable 8290,8291 -I /muksoft/packages/netcdf/4_intel/include" # # Example 2 (lccrayh): # compiler_name="ftn" # fopts="-em -s real64 -O3 -hnoomp -hfp3 -hdynamic" # fopts_trace="-eD -em -g -R b -K trap=fp -O0 -hnoomp" # # compiler_name="mpif90" fopts="-cpp -DMPI_REAL=MPI_DOUBLE_PRECISION -DMPI_2REAL=MPI_2DOUBLE_PRECISION -fpe0 -O3 -xHost -fp-model source -ftz -fno-alias -no-prec-div -no-prec-sqrt -ip -I /muksoft/packages/fftw/3.3.7/mvapich2-2.3rc1/gnu/include/ -I /muksoft/packages/netcdf4_hdf5parallel/4411c_443f/hdf5-1.10.0-patch1/mvapich2-2.3rc1/intel/2018.1.163/include/" fopts_trace="-fpe0 -C -check nooutput_conversion -debug -traceback -g -w -xT -O0 -ftz -fno-alias -no-prec-div -no-prec-sqrt -ip -nbs -convert little_endian -diag-disable 8290,8291 -I /muksoft/packages/netcdf/4_intel/include" install_path="$HOME/palm/rrtmg" compile_static=false compile_shared=true compile_static_debug=false compile_shared_debug=false while getopts p: option do case $option in (p) install_path=$OPTARG;; (\?) printf "\n +++ unknown option $OPTARG \n" printf "\n --> type \"$0 ?\" for available options \n" locat=parameter;exit;; esac done (( to_shift = $OPTIND - 1 )) shift $to_shift # PRINT SHORT DESCRIPTION OF OPTIONS if [[ "$1" = "?" ]] then (printf "\n *** rrtmg_install can be called as follows:\n" printf "\n rrtmg_install -p.\n" printf "\n Description of available options:\n" printf "\n Option Description Default-Value" printf "\n -p installation path ./" printf "\n " printf "\n Possible values of positional parameter :" printf "\n \"?\" - this outline \n\n") | more exit elif [[ "$1" != "" ]] then printf "\n +++ positional parameter $1 unknown \n" locat=parameter; exit fi prog="librrtmg" version="1.0" # 1 static if [[ $compile_static = true ]] then printf "\n Start compiling static library $prog... (make)\n\n" mkdir -p static/lib mkdir -p static/include make -f Makefile_static F90=$compiler_name PROG=$prog F90FLAGS="$fopts" cp $prog.a static/lib cp *.mod static/include make -f Makefile_static clean mkdir -p $install_path/static/lib mkdir -p $install_path/static/include cp static/lib/$prog.a $install_path/static/lib cp static/include/*.mod $install_path/static/include/ rm -rf static printf "\n finished.\n" fi # 2 static debug if [[ $compile_static_debug = true ]] then printf "\n Start compiling static debug library $prog... (make)\n\n" mkdir -p static_trace/lib mkdir -p static_trace/include make -f Makefile_static F90=$compiler_name PROG=$prog F90FLAGS="$fopts_trace" cp $prog.a static_trace/lib cp *.mod static_trace/include make -f Makefile_static clean mkdir -p $install_path/static_trace/lib mkdir -p $install_path/static_trace/include cp static_trace/lib/$prog.a $install_path/static_trace/lib cp static_trace/include/*.mod $install_path/static_trace/include/ rm -rf static_trace printf "\n finished.\n" fi # 3 shared if [[ $compile_shared = true ]] then printf "\n Start compiling shared (dynamic) library $prog... (make)\n\n" mkdir -p shared/lib mkdir -p shared/include make -f Makefile F90=$compiler_name PROG=$prog F90FLAGS="$fopts" cp $prog.so shared/lib/$prog.so.$version cp *.mod shared/include/ make -f Makefile clean mkdir -p $install_path/shared/lib mkdir -p $install_path/shared/include cp shared/lib/$prog.so.$version $install_path/shared/lib/ cp shared/include/*.mod $install_path/shared/include/ if [ -f $install_path/shared/lib/$prog.so.1 ] then rm $install_path/shared/lib/$prog.so.1 fi ln -s $install_path/shared/lib/$prog.so.$version $install_path/shared/lib/$prog.so.1 if [ -f $install_path/shared/lib/$prog.so ] then rm $install_path/shared/lib/$prog.so fi ln -s $install_path/shared/lib/$prog.so.1 $install_path/shared/lib/$prog.so rm -rf shared printf "\n finished.\n" fi # 4 shared debug if [[ $compile_static_debug = true ]] then printf "\n Start compiling shared debug library $prog... (make)\n\n" mkdir -p shared_trace/lib mkdir -p shared_trace/include make -f Makefile F90=$compiler_name PROG=$prog F90FLAGS="$fopts_trace" cp $prog.so shared_trace/lib/$prog.so.$version cp *.mod shared_trace/include/ make -f Makefile clean mkdir -p $install_path/shared_trace/lib mkdir -p $install_path/shared_trace/include cp shared_trace/lib/$prog.so.$version $install_path/shared_trace/lib cp shared_trace/include/*.mod $install_path/shared_trace/include/ if [ -f $install_path/shared_trace/lib/$prog.so.1 ] then rm $install_path/shared_trace/lib/$prog.so.1 fi ln -s $install_path/shared_trace/lib/$prog.so.$version $install_path/shared_trace/lib/$prog.so.1 if [ -f $install_path/shared_trace/lib/$prog.so ] then rm $install_path/shared_trace/lib/$prog.so fi ln -s $install_path/shared_trace/lib/$prog.so.1 $install_path/shared_trace/lib/$prog.so rm -rf shared_trace printf "\n finished.\n" fi printf "\n Libraries $prog are installed in \"$install_path\".\n\n" printf "\n\n *** all actions complete."