#! /bin/sh # $Header: /home/ubuntu/mnt/e9_copy/MITgcm/verification/cpl_aim+ocn/run_cpl_test,v 1.5 2004/10/28 20:46:45 jmc Exp $ # $Name: $ Np=3 Opt=' ' Opt='-ieee' if [ $# -lt 1 ] then echo 'Usage:'`basename $0`' step ' echo ' => test coupled set-up on myrinet cluster' echo 'step = 0 : clean all directories' echo 'step = 1 : compile the 3 executables (cpl,ocn,atm)' echo 'step = 2 : copy input files and dir(s)' echo "step = 3 : run on $Np processor" echo 'step = 4 : check the results' exit fi kpr=$1 dir=`pwd` #- only works from a 3 nodes PBS bach session ( qsub -I -l nodes=3:p4 ) # on myrinet cluster: xx=`hostname | sed 's/[0-9]/X/g'` if test $xx != 'myrinet-X-XX' then echo ' hostname='`hostname` echo 'for now, works only on myrinet cluster' exit 9 fi if test 'dummy'$PBS_NODEFILE = 'dummy' then echo ' $PBS_NODEFILE not defined' echo "for now, works only from a $Np nodes PBS bach session" exit 8 else ncpus=`wc -l $PBS_NODEFILE | awk '{print $1}'` if test $ncpus != $Np ; then echo ' Nb of nodes from $PBS_NODEFILE =' $ncpus echo "for now, works only from a $Np nodes PBS bach session" exit 8 fi fi #============================================================================ if test $kpr = 0 then rm -f genmake_optfile pr_group std_outp Coupler.0000.clog rm -f build_???/TTT.*make.* build_???/TTT.mkdepend.* /bin/rm -r -f rank_0 rank_1 rank_2 if test -f build_cpl/Makefile ; then cd build_cpl ; make CLEAN ; cd .. ; fi if test -f build_ocn/Makefile ; then cd build_ocn ; make CLEAN ; cd .. ; fi if test -f build_atm/Makefile ; then cd build_atm ; make CLEAN ; cd .. ; fi fi if test $kpr = 1 then cp -p ../../tools/build_options/linux_ia32_ifc+mpi_cg01 genmake_optfile echo '==== compile coupler:' cd build_cpl echo ' --- genmake2 (cpl):' ../../../tools/genmake2 -of ../genmake_optfile $Opt > TTT.genmake.$$ tail -5 TTT.genmake.$$ echo ' --- make depend (cpl):' make depend > TTT.mkdepend.$$ tail -5 TTT.mkdepend.$$ echo ' --- make (cpl):' make > TTT.make.$$ 2>&1 tail -10 TTT.make.$$ echo ' ' ; cd $dir echo '==== compile OGCM:' cd build_ocn echo ' --- genmake2 (ocn):' ../../../tools/genmake2 -of ../genmake_optfile $Opt > TTT.genmake.$$ tail -5 TTT.genmake.$$ echo ' --- make depend (ocn):' make depend > TTT.mkdepend.$$ tail -10 TTT.mkdepend.$$ echo ' --- make (ocn):' make > TTT.make.$$ 2>&1 tail -10 TTT.make.$$ echo ' ' ; cd $dir echo '==== compile AGCM:' cd build_atm echo ' --- genmake2 (atm):' ../../../tools/genmake2 -of ../genmake_optfile $Opt > TTT.genmake.$$ tail -5 TTT.genmake.$$ echo ' --- make depend (atm):' make depend > TTT.mkdepend.$$ tail -10 TTT.mkdepend.$$ echo ' --- make (atm):' make > TTT.make.$$ 2>&1 tail -10 TTT.make.$$ echo ' ' ; cd $dir ls -l build_???/mitgcmuv fi if test $kpr = 2 then cp -p -r input_cpl rank_0 cp -p -r input_ocn rank_1 cp -p -r input_atm rank_2 cd rank_1 ./IMPORT_INPUT_FILES cd $dir cd rank_2 ./SHARE_OCN_GRID '../rank_1' cd $dir fi if test $kpr = 3 then ROOTDIR=$dir rm -f rank_?/pickup*.ckptA.00?.00?.??ta echo $ROOTDIR tmpfil=TTT.$$ echo $PBS_NODEFILE list=`cat $PBS_NODEFILE` rm -f pr_group ; touch pr_group nc=0 ; dd1=cpl ; for xx in $list do echo $xx $nc $dir/build_$dd1/mitgcmuv >> pr_group if test $nc = 0 ; then dd1=ocn ; else dd1=atm ; fi nc=1 done cd $ROOTDIR # -wd $ROOTDIR /usr/local/pkg/mpi/mpi-1.2.4..8a-gm-1.5/pgi/bin/mpirun.ch_gm -pg pr_group --gm-kill 5 -v ./build_cpl/mitgcmuv > std_outp 2>&1 tail -20 std_outp ls -l rank_?/pickup*.ckptA.001.001.data fi if test $kpr = 4 then if test -f rank_1/STDOUT.0000 then echo '==> check Ocean output:' /home/jmc/bin/comp_res rank_1/STDOUT.0000 results/ocnSTDOUT.0000 echo ' ' else echo 'No Ocean output file in rank_1' ; fi if test -f rank_2/STDOUT.0000 then echo '==> check Atmos output:' /home/jmc/bin/comp_res rank_2/STDOUT.0000 results/atmSTDOUT.0000 echo '==> check Land output:' /home/jmc/bin/comp_res rank_2/STDOUT.0000 results/atmSTDOUT.0000 L echo '==> check thSIce output:' /home/jmc/bin/comp_res rank_2/STDOUT.0000 results/atmSTDOUT.0000 I echo ' ' else echo 'No Atmos output file in rank_1' ; fi fi exit 0