#!/bin/csh -f cont1: if ( ! -e configure.wrf ) then ./configure $1 set dontask endif #---------------------------------- if ( ! $?WRF_KPP ) setenv WRF_KPP 0 if ( $WRF_KPP == 1 ) then chem/KPP/compile_wkc endif #--------------------------------- if ( ! $?dontask && $?prompt ) then echo "This script assumes you have configured the code already." echo "You only need to configure once." echo "If you wish to reconfigure, type c at the prompt below" echo " " echo "Ready to compile? [ync]" set resp=$< if ( "$resp" == "c" ) then ./configure goto cont1 endif if ( "$resp" == "n" ) then exit 2 endif endif set arglist="" foreach a ( $argv ) if ( "$a" == "-h" ) then goto hlp else if ( "$a" != "-d" ) then set arglist = ( $arglist $a ) endif if ( "$a" == "all_wrfvar" ) then grep "DA_CORE=1" configure.wrf > /dev/null if ( ! $status ) then # If configuration file has DA_CORE=1 hardwired, ok to set WRF_DA_CORE to 1 if ( ! $?WRF_DA_CORE ) setenv WRF_DA_CORE 1 endif if ( ! -d var ) then echo " " echo "You need to download and untar the WRF DA code" echo " " exit endif endif if ( "$a" == "nmm_real" ) then grep "NMM_CORE=1" configure.wrf > /dev/null if ( ! $status ) then # If configuration file has NMM_CORE=1 hardwired, ok to set WRF_NMM_CORE to 1 if ( ! $?WRF_NMM_CORE ) setenv WRF_NMM_CORE 1 endif endif endif end if ( $arglist == "" ) then goto hlp else unsetenv A2DCASE setenv A2DCASE `echo $arglist | grep 2d` if ( ! ( $?WRF_EM_CORE || $?WRF_NMM_CORE \ || $?WRF_COAMPS_CORE || $?WRF_EXP_CORE )) then echo 'None of WRF_EM_CORE, WRF_NMM_CORE, ' # echo ' WRF_COAMPS_CORE, or WRF_EXP_CORE ' echo ' specified in shell environment.... ' setenv WRF_EM_CORE 1 setenv WRF_NMM_CORE 0 setenv WRF_COAMPS_CORE 0 setenv WRF_EXP_CORE 0 endif # these settings get passed down through the environment in the # calls to Make if ( ! $?WRF_DA_CORE ) setenv WRF_DA_CORE 0 if ( ! $?WRF_EM_CORE ) setenv WRF_EM_CORE 0 if ( ! $?WRF_NMM_CORE ) setenv WRF_NMM_CORE 0 if ( ! $?WRF_NMM_NEST ) setenv WRF_NMM_NEST 0 if ( ! $?WRF_COAMPS_CORE ) setenv WRF_COAMPS_CORE 0 if ( ! $?WRF_EXP_CORE ) setenv WRF_EXP_CORE 0 if ( ! $?WRF_CHEM ) setenv WRF_CHEM 0 if ( ! $?WRF_CONVERT ) then if ( "$arglist" == "convert_em" ) then setenv WRF_CONVERT 1 setenv WRF_EM_CORE 0 else setenv WRF_CONVERT 0 endif endif if ( ! $?DA_ARCHFLAGS ) setenv DA_ARCHFLAGS "" if ( ( $WRF_DA_CORE == 1 ) && ( ! -d var ) ) then echo " " echo "You need to download and untar the Var code, or" echo "unset the WRF_DA_CORE env variable." echo " " exit endif if ( ( $WRF_CHEM == 1 ) && ( ! -d chem ) ) then echo " " echo "You need to download and untar the chem code, or" echo "unset the WRF_CHEM env variable." echo " " exit endif set overwrite=0 if ($WRF_NMM_CORE == 1 && $WRF_CHEM == 1 ) then echo "Chemistry not yet supported in NMM core, set WRF_CHEM to 0 " if ( ! -f Registry/Registry ) then echo Registry file does not exist set overwrite=1 else head -2 Registry/Registry | tail -1 | grep NMM_CHEM > /dev/null if ( $status ) then set overwrite=1 else set nmm_time=`ls -1tr Registry | cat -n | grep -w 'Registry\.NMM_CHEM' | grep -v 'Registry.NMM_CHEM.' | awk '{print $1}'` set rg_time=`ls -1tr Registry | cat -n | grep -w 'Registry' | grep -v 'Registry.' | awk '{print $1}'` if ( $nmm_time > $rg_time ) set overwrite=1 endif endif if ( $overwrite ) then echo copying Registry/Registry.NMM_CHEM to Registry/Registry echo '## WARNING: this file is autogenerated from Registry/Registry.NMM_CHEM. Changes may be lost' > Registry/Registry /bin/cat Registry/Registry.NMM_CHEM >> Registry/Registry endif # exit 2 endif if ($WRF_EM_CORE == 1 && $WRF_NMM_CORE == 1 ) then echo "Cannot compile both EM and NMM cores in same executable yet." exit 2 endif if ($WRF_EM_CORE == 0 && $WRF_NMM_CORE == 0 && ! $WRF_CONVERT == 1 ) then echo "Cannot compile because both EM and NMM cores are set to 0." exit 2 endif if ($arglist == 'nmm_real' && $WRF_NMM_CORE == 0) then echo WRF_NMM_CORE must be set to 1 in order to compile nmm_real exit 2 endif if (($WRF_EM_CORE == 1)&&($WRF_DA_CORE == 0 ) &&($WRF_CHEM == 0 )&&($WRF_CONVERT == 0)) then if ( ! -f Registry/Registry ) then set overwrite=1 else head -2 Registry/Registry | tail -1 | grep EM > /dev/null if ( $status ) then set overwrite=1 else set em_time=`ls -1tr Registry | cat -n | grep -w 'Registry\.EM' | grep -v 'Registry.EM.' | awk '{print $1}'` set rg_time=`ls -1tr Registry | cat -n | grep -w 'Registry' | grep -v 'Registry.' | awk '{print $1}'` if ( $em_time > $rg_time ) set overwrite=1 endif endif if ( $overwrite ) then echo copying Registry/Registry.EM to Registry/Registry echo '## WARNING: this file is autogenerated from Registry/Registry.EM. Changes may be lost' > Registry/Registry /bin/cat Registry/Registry.EM >> Registry/Registry endif else if (($WRF_EM_CORE == 1)&&($WRF_CHEM == 1 )) then if ( ! -f Registry/Registry ) then set overwrite=1 else head -2 Registry/Registry | tail -1 | grep EM_CHEM > /dev/null if ( $status ) then set overwrite=1 else set em_time=`ls -1tr Registry | cat -n | grep -w 'Registry\.EM_CHEM' | grep -v 'Registry.EM_CHEM.' | awk '{print $1}'` set rg_time=`ls -1tr Registry | cat -n | grep -w 'Registry' | grep -v 'Registry.' | awk '{print $1}'` if ( $em_time > $rg_time ) set overwrite=1 endif endif if ( $overwrite ) then echo copying Registry/Registry.EM_CHEM to Registry/Registry echo '## WARNING: this file is autogenerated from Registry/Registry.EM_CHEM. Changes may be lost' > Registry/Registry /bin/cat Registry/Registry.EM_CHEM >> Registry/Registry endif else if (($WRF_EM_CORE == 0)&&($WRF_CONVERT == 1 )) then if ( ! -f Registry/Registry ) then set overwrite=1 else head -2 Registry/Registry | tail -1 | grep EM_CONVERT > /dev/null if ( $status ) then set overwrite=1 else set em_time=`ls -1tr Registry | cat -n | grep -w 'Registry\.EM_CONVERT' | grep -v 'Registry.EM_CONVERT.' | awk '{print $1}'` set rg_time=`ls -1tr Registry | cat -n | grep -w 'Registry' | grep -v 'Registry.' | awk '{print $1}'` if ( $em_time > $rg_time ) set overwrite=1 endif endif if ( $overwrite ) then echo copying Registry/Registry.CONVERT to Registry/Registry echo '## WARNING: this file is autogenerated from Registry/Registry.CONVERT. Changes may be lost' > Registry/Registry /bin/cat Registry/Registry.CONVERT >> Registry/Registry endif else if ( $WRF_DA_CORE == 1 ) then if ( ! -f Registry/Registry ) then set overwrite=1 else head -2 Registry/Registry | tail -1 | grep WRFVAR > /dev/null if ( $status ) then set overwrite=1 else set nmm_time=`ls -1tr Registry | cat -n | grep -w 'Registry\.NMM' | grep -v 'Registry.NMM.' | awk '{print $1}'` set rg_time=`ls -1tr Registry | cat -n | grep -w 'Registry' | grep -v 'Registry.' | awk '{print $1}'` if ( $nmm_time > $rg_time ) set overwrite=1 endif endif if ( $overwrite ) then echo copying Registry/Registry.wrfvar to Registry/Registry echo '## WARNING: this file is autogenerated from Registry/Registry.wrfvar. Changes may be lost' > Registry/Registry /bin/cat Registry/Registry.wrfvar >> Registry/Registry setenv DA_ARCHFLAGS "-DBUFR -DFFTPACK -DPROMOTE_FLOAT -DNONSTANDARD_SYSTEM -DNORESHAPE" endif endif if (($WRF_NMM_CORE == 1)&&($WRF_CHEM == 0 )) then if ( ! -f Registry/Registry ) then set overwrite=1 else head -2 Registry/Registry | tail -1 | grep NMM > /dev/null if ( $status ) then set overwrite=1 else set nmm_time=`ls -1tr Registry | cat -n | grep -w 'Registry\.NMM' | grep -v 'Registry.NMM.' | awk '{print $1}'` set rg_time=`ls -1tr Registry | cat -n | grep -w 'Registry' | grep -v 'Registry.' | awk '{print $1}'` if ( $nmm_time > $rg_time ) set overwrite=1 endif endif if ( $overwrite ) then if (($WRF_NMM_CORE == 1)&&($WRF_NMM_NEST == 1)) then echo copying Registry/Registry.NMM_NEST to Registry/Registry echo '## WARNING: this file is autogenerated from Registry/Registry.NMM_NEST. Changes may be lost' > Registry/Registry /bin/cat Registry/Registry.NMM_NEST >> Registry/Registry else echo copying Registry/Registry.NMM to Registry/Registry echo '## WARNING: this file is autogenerated from Registry/Registry.NMM. Changes may be lost' > Registry/Registry /bin/cat Registry/Registry.NMM >> Registry/Registry endif endif # integrity check for a kludge where a hard coded value in the # registry must match the same value in arch/preamble_new set registryvalue=`grep 'dimspec.* q ' Registry/Registry.NMM | sed -e 's/..*constant=//' -e 's/ ..*$//'` set preamblevalue=`grep 'DNMM_MAX_DIM=.*' arch/preamble_new | sed -e 's/..*-DNMM_MAX_DIM=//' -e 's/ ..*$//'` if ( $registryvalue != $preamblevalue ) then echo "Harded coded value of dimspec q in Registry ($registryvalue) does not" echo "equal the hard coded value of NMM_MAX_DIM in arch/preamble_new ($preamblevalue)" echo "Please fix and try again." exit 2 endif endif echo " " echo -n "**** Compiling: " if ( $WRF_DA_CORE ) echo -n "WRF_DA_CORE " if ( $WRF_EM_CORE ) echo -n "WRF_EM_CORE " if ( $WRF_NMM_CORE ) echo -n "WRF_NMM_CORE " if ( $WRF_COAMPS_CORE ) echo -n "WRF_COAMPS_CORE " if ( $WRF_EXP_CORE ) echo -n "WRF_EXP_CORE " echo "." echo " " if ( ! $?WRF_SRC_ROOT_DIR ) setenv WRF_SRC_ROOT_DIR `pwd` make $arglist A2DCASE="$A2DCASE" WRF_SRC_ROOT_DIR="$WRF_SRC_ROOT_DIR" endif exit 0 hlp: echo ' ' echo 'Usage:' echo ' ' echo ' compile wrf compile wrf in run dir (NOTE: no real.exe, ndown.exe, or ideal.exe generated)' echo ' ' echo ' or choose a test case (see README_test_cases for details) :' foreach d ( `/bin/ls test` ) if ( "$d" != "CVS" ) then echo " compile $d" endif end echo ' ' echo ' compile -h help message'