#!/usr/bin/perl
#
$template = 'tiegcm.inp';  # template namelist file must exist
$basename = 'tiegcm-';              # basename for new file names
$nfiles = 5;                        # number of new files to make
#
# User name for use in default file paths:
#
$user  = $ENV{"LOGNAME"};
($USER = $user) =~ tr/a-z/A-Z/;
#
# Set keyword values for each namelist file to be made:
#
%keyval = ();
$keyval{'LABEL'}        = [ ("'nstepqrj=2'","'nstepqrj=4'","'nstepqrj=6'",
                             "'nstepqrj=8'","'nstepqrj=10'") ];
# $keyval{'START_YEAR'}   = [ (2001,2002,2003) ];
# $keyval{'START_DAY'}    = [ (80,81,82) ];
# $keyval{'SOURCE'}       = [ ("'tiegcm.p001.nc'","'tiegcm.p002.nc'","'tiegcm.p003.nc'") ];
# $keyval{'SOURCE_START'} = [ ('80,0,0','81,0,0','82,0,0') ];
# $keyval{'START'}        = [ ('80,0,0','81,0,0','82,0,0') ];
# $keyval{'STOP'}         = [ ('81,0,0','82,0,0','83,0,0') ];
# $keyval{'HIST'}         = [ (' 1,0,0',' 1,0,0',' 1,0,0') ];
# $keyval{'SAVE'}         = [ (' 1,0,0',' 1,0,0',' 1,0,0') ];
# $keyval{'STEP'}         = [ (90,120,180) ];

$keyval{'NSTEPQRJ'}       = [ (2,4,6,8,10) ];
$keyval{'OUTPUT'}       = 
  [ ("'/$USER/tiegcmdr/nstepqrj2_p001.nc'",
     "'/$USER/tiegcmdr/nstepqrj4_p001.nc'",
     "'/$USER/tiegcmdr/nstepqrj6_p001.nc'",
     "'/$USER/tiegcmdr/nstepqrj8_p001.nc'",
     "'/$USER/tiegcmdr/nstepqrj10_p001.nc'") ];

# $keyval{'SECSTART'}     = [ ('80,0,0','81,0,0','82,0,0') ];
# $keyval{'SECSTOP'}      = [ ('81,0,0','82,0,0','83,0,0') ];
# $keyval{'SECHIST'}      = [ (' 0,1,0',' 0,1,0',' 0,1,0') ];
# $keyval{'SECSAVE'}      = [ (' 0,6,0',' 0,6,0',' 0,6,0') ];

$keyval{'SECOUT'}       = 
  [ ("'/$USER/tiegcmdr/nstepqrj2_s001.nc','/$USER/tiegcmdr/nstepqrj2_s002.nc',
      '/$USER/tiegcmdr/nstepqrj2_s003.nc'",
     "'/$USER/tiegcmdr/nstepqrj4_s001.nc','/$USER/tiegcmdr/nstepqrj4_s002.nc',
      '/$USER/tiegcmdr/nstepqrj4_s003.nc'",
     "'/$USER/tiegcmdr/nstepqrj6_s001.nc','/$USER/tiegcmdr/nstepqrj6_s002.nc',
      '/$USER/tiegcmdr/nstepqrj6_s003.nc'",
     "'/$USER/tiegcmdr/nstepqrj8_s001.nc','/$USER/tiegcmdr/nstepqrj8_s002.nc',
      '/$USER/tiegcmdr/nstepqrj8_s003.nc'",
     "'/$USER/tiegcmdr/nstepqrj10_s001.nc','/$USER/tiegcmdr/nstepqrj10_s002.nc',
      '/$USER/tiegcmdr/nstepqrj10_s003.nc'") ];

# $keyval{'F107'}         = [ ('150.','160.','170.') ];
# $keyval{'F107A'}        = [ ('150.','160.','170.') ];
# $keyval{'POWER'}        = [ (' 16.',' 18.',' 20.') ];
# $keyval{'CTPOTEN'}      = [ (' 45.',' 90.','135.') ];
#
# Save template file in @template_lines:
#
open (TEMPLATE,"< $template") || die "Cannot open template file $template";
while (<TEMPLATE>) {
  push(@template_lines,$_);
}
close TEMPLATE;
#
# For each new file:
#
for ($n=1; $n<=$nfiles; ++$n) {
  $newfile = "$basename${n}.inp";
  print "Making file $newfile\n"; 
  open (NEWFILE,"> $newfile")   || die "Cannot open new file $newfile";
#
# Lines of template file:
#
  foreach $line (@template_lines) {
    $found = 0;
#
# Check for keywords in current line, and replace values if found:
#
    foreach $key (keys %keyval) {
      if ($line =~ /\s*$key\s*=/ and $line !~ /\S+$key/) {   # found keyword
        $nvals = $#{ $keyval{$key} } + 1;   # number of user values this key
        if ($n > $nvals) {                  # not enough user values!
          print "WARNING file $n: key $key has only $nvals values.\n" };
        $value = (@{$keyval{$key}})[$n-1];  # user's value for this file
        print NEWFILE " $key = $value\n";   # new keyword=value pair
        $found = 1;
      } # found keyword
    } # foreach key
    if (! $found) { print NEWFILE $line; }  # echo template's keyword=value
  } # while template
  close NEWFILE;
} # for n=1,nfiles
