#! /usr/bin/env perl
use strict;
use Cwd;

if ($#ARGV == -1) {
    die " ERROR cpl.buildexe: must specify a caseroot input argument";
}
my ($CASEROOT) = @ARGV;
chdir "${CASEROOT}";

my @dirs = ("$CASEROOT/Tools");
unshift @INC, @dirs;
require SetupTools;
my $sysmod; 

my $ATM_GRID		= `./xmlquery  ATM_GRID		-value`;
my $CASEBUILD		= `./xmlquery  CASEBUILD	-value`;
my $CASEROOT		= `./xmlquery  CASEROOT		-value`;
my $CAM_CONFIG_OPTS	= `./xmlquery  CAM_CONFIG_OPTS	-value`;
my $CIMEROOT		= `./xmlquery  CIMEROOT		-value`;
my $GRID		= `./xmlquery  GRID		-value`;
my $LND_GRID		= `./xmlquery  LND_GRID		-value`;
my $OCN_GRID		= `./xmlquery  OCN_GRID		-value`;
my $ROF_GRID		= `./xmlquery  ROF_GRID		-value`;
my $RUNDIR		= `./xmlquery  RUNDIR		-value`;
my $WAV_GRID		= `./xmlquery  WAV_GRID		-value`;

if (! -d "$CASEBUILD/cplconf" ) {
    $sysmod = "mkdir $CASEBUILD/cplconf";
    system($sysmod) == 0 or die "ERROR cpl.buildnml: $sysmod failed: $?\n";
}
chdir "$CASEBUILD/cplconf";

# -----------------------------------------------------
# create cplconf/cesm_namelist
# -----------------------------------------------------

my $infile_text = "";
if ($CAM_CONFIG_OPTS) {
    if ( "$CAM_CONFIG_OPTS" =~ /.*adiabatic.*/ ) {
	$infile_text .= "atm_adiabatic = .true.";
    }
    if ( "$CAM_CONFIG_OPTS" =~ /.*ideal.*/ ) {
	$infile_text .=  "atm_ideal_phys = .true.";
    }
    if ( "$CAM_CONFIG_OPTS" =~ /.*aquaplanet.*/ ) {
	$infile_text .= "aqua_planet     = .true.";
	$infile_text .= "aqua_planet_sst = 1";
    }
}

SetupTools::create_namelist_infile("$CASEROOT", 
				   "$CASEROOT/user_nl_cpl", 
				   "$CASEBUILD/cplconf/cesm_namelist", 
				   "$infile_text");

# -----------------------------------------------------
# call build-namelist
# -----------------------------------------------------

$sysmod = "$CIMEROOT/driver_cpl/bld/build-namelist";
$sysmod = "$sysmod -infile $CASEBUILD/cplconf/cesm_namelist";
$sysmod = "$sysmod -caseroot $CASEROOT";
$sysmod = "$sysmod -scriptsroot $CIMEROOT/scripts";
$sysmod = "$sysmod -grid $GRID -rof_grid $ROF_GRID -atm_grid $ATM_GRID ";
$sysmod = "$sysmod -lnd_grid $LND_GRID -ocn_grid $OCN_GRID -wav_grid $WAV_GRID";
system($sysmod) == 0 or die "ERROR cpl.buildnml: $sysmod failed: $?\n";

# -----------------------------------------------------
# move drv_in, seq_maps.rc and all *modio* files to $RUNDIR
# -----------------------------------------------------

if (-d ${RUNDIR}) {
    $sysmod = "cp $CASEBUILD/cplconf/drv_in       ${RUNDIR}/.";
    system($sysmod) == 0 or die "ERROR cpl.buildnml: $sysmod failed: $?\n";

    $sysmod = "cp $CASEBUILD/cplconf/seq_maps.rc  ${RUNDIR}/.";
    system($sysmod) == 0 or die "ERROR cpl.buildnml: $sysmod failed: $?\n";

    $sysmod = "cp $CASEBUILD/cplconf/*modelio*    ${RUNDIR}/.";
    system($sysmod) == 0 or die "ERROR cpl.buildnml: $sysmod failed: $?\n";
}

exit (0);




