#! /bin/csh -f

#################################################################################
if ($PHASE == set_batch) then
#################################################################################

source ./Tools/ccsm_getenv || exit -1

set npes   = `${CASEROOT}/Tools/taskmaker.pl -sumpes`
set ntasks = `${CASEROOT}/Tools/taskmaker.pl -sumtasks`

set mthrds = `${CASEROOT}/Tools/taskmaker.pl -maxthrds`

set taskpn = ${MAX_TASKS_PER_NODE}
@ tpn = ${taskpn} / ${mthrds}
if ($tpn < 1) set tpn = 1

@ nodes = ${npes} / ${tpn}
if ( ${npes} % ${tpn} > 0) then
  @ nodes = ${nodes} + 1
endif

#--- Job name is first fifteen characters of case name ---
set jobname = `echo ${CASE} | cut -c1-15`

set account_name = "NPSCA07935242"
set walltime = "00:59:00"
set qname = "debug"

if (-e ~/.ccsm_proj) then
   set account_name = `head -1 ~/.ccsm_proj`
endif

if ($nodes > 355) then
  set walltime = "02:00:00"
  set qname = "standard"
endif

if ($CCSM_ESTCOST > 4) then
  set walltime = "02:00:00"
  set qname = "standard"
endif

if ($CCSM_ESTCOST > 7) then
  set walltime = "04:00:00"
  set qname = "standard"
endif

if ($?TESTMODE) then
 set file = $CASEROOT/${CASE}.test 
else
 set file = $CASEROOT/${CASE}.run 
endif

cat >! $file << EOF1
#!/bin/csh -f
#PBS -N ${jobname}
#PBS -q ${qname}
#PBS -A ${account_name}
#PBS -l application=Regional-Arctic-System-Model
#PBS -l select=${nodes}:ncpus=40:mpiprocs=${tpn}
#PBS -l walltime=${walltime}
#PBS -j oe
#PBS -W umask=022
#PBS -o $CASEROOT/
###PBS -M username@domain.com
###PBS -m be

EOF1

#################################################################################
else if ($PHASE == set_exe) then
#################################################################################

set maxthrds = `${CASEROOT}/Tools/taskmaker.pl -maxthrds`
set ntasks = `${CASEROOT}/Tools/taskmaker.pl -sumtasks`

cat >> ${CASEROOT}/${CASE}.run << EOF1
sleep 25
cd \$RUNDIR
echo "\`date\` -- CSM EXECUTION BEGINS HERE" 

#-----
set launchjob = 1
while (\$launchjob > 0)
@ launchjob = \$launchjob + 1
#-----

setenv OMP_NUM_THREADS ${maxthrds}
if ( "\$MPILIB" == "mpi-serial" ) then
  \$EXEROOT/cesm.exe >&! ccsm.log.\$LID
else
 if (${maxthrds} > 1) then
   mpiexec_mpt -np ${ntasks} omplace \$EXEROOT/cesm.exe >&! ccsm.log.\$LID
#   mpirun -np ${ntasks} \$EXEROOT/cesm.exe >&! ccsm.log.\$LID
 else
   mpiexec_mpt -np ${ntasks} \$EXEROOT/cesm.exe >&! ccsm.log.\$LID
#   mpirun -np ${ntasks} \$EXEROOT/cesm.exe >&! ccsm.log.\$LID
 endif
endif

#-----
set fsize = \`wc -c ccsm.log.\$LID | cut -d " " -f 1\`
if (\$fsize > 500 || \$launchjob > 3) then
  set launchjob = 0
  sleep 60
endif
end  # while launchjob
#-----

wait
echo "\`date\` -- CSM EXECUTION HAS FINISHED" 
EOF1

#################################################################################
else if ($PHASE == set_larch) then
#################################################################################

# Create the archive script

set jobname = `echo ${CASE} | cut -c1-12`
set jobname = ${jobname}_la

set account_name = "NPSCA07935242"
if (-e ~/.ccsm_proj) then
   set account_name = `head -1 ~/.ccsm_proj`
endif

cat >! $CASEROOT/${CASE}.l_archive << EOF1
#! /bin/csh -f
###PBS -A ${account_name}
#PBS -N ${jobname}
#PBS -q transfer
#PBS -l application=Regional-Arctic-System-Model
#PBS -l mppwidth=1
#PBS -l walltime=12:00:00
#PBS -j oe
###PBS -M username@domain.com
###PBS -m be

cd $CASEROOT 
source ./Tools/ccsm_getenv || exit -1
cd \$DOUT_S_ROOT
$CASEROOT/Tools/lt_archive.sh -m copy_dirs_hsi
exit 0
EOF1
chmod 775 ${CASEROOT}/${CASE}.l_archive

#################################################################################
else
#################################################################################

    echo "  PHASE setting of $PHASE is not an accepted value"
    echo "  accepted values are set_batch, set_exe and set_larch"
    exit 1

#################################################################################
endif
#################################################################################
