#!/usr/bin/perl
#
$template = 'glbmean.inp';  # template namelist file must exist
$basename = 'glbmean-';     # basename for new file names
$nfiles = 81;                # number of new files to make
#$nfiles = 10;                # number of new files to make
#
# User name for use in default file paths:
#
$user  = $ENV{"LOGNAME"};
($USER = $user) =~ tr/a-z/A-Z/;
$TGCMDATA  = $ENV{"TGCMDATA"};
#
# Set keyword values for each namelist file to be made:
#
%keyval = ();
$keyval{'F107'} = [(
'0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03', 
'0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02', 
'0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03', 
'0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03', 
'0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02', 
'0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03', 
'0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03', 
'0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02', 
'0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03', 
'0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03', 
'0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02', 
'0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03', 
'0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03', 
'0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02', 
'0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03', 
'0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03', 
'0.1600E+03')];

$keyval{'F107a'} = [(
'0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03', 
'0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02', 
'0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03', 
'0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03', 
'0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02', 
'0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03', 
'0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03', 
'0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02', 
'0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03', 
'0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03', 
'0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02', 
'0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03', 
'0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03', 
'0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02', 
'0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03','0.1600E+03', 
'0.7000E+02','0.1150E+03','0.1600E+03','0.7000E+02','0.1150E+03', 
'0.1600E+03')];
 
$keyval{'AJOUL_INP'} = [(
'0.1000E+11','0.1000E+11','0.1000E+11','0.2500E+11','0.2500E+11', 
'0.2500E+11','0.5000E+11','0.5000E+11','0.5000E+11','0.1000E+11', 
'0.1000E+11','0.1000E+11','0.2500E+11','0.2500E+11','0.2500E+11', 
'0.5000E+11','0.5000E+11','0.5000E+11','0.1000E+11','0.1000E+11', 
'0.1000E+11','0.2500E+11','0.2500E+11','0.2500E+11','0.5000E+11', 
'0.5000E+11','0.5000E+11','0.1000E+11','0.1000E+11','0.1000E+11', 
'0.2500E+11','0.2500E+11','0.2500E+11','0.5000E+11','0.5000E+11', 
'0.5000E+11','0.1000E+11','0.1000E+11','0.1000E+11','0.2500E+11', 
'0.2500E+11','0.2500E+11','0.5000E+11','0.5000E+11','0.5000E+11', 
'0.1000E+11','0.1000E+11','0.1000E+11','0.2500E+11','0.2500E+11', 
'0.2500E+11','0.5000E+11','0.5000E+11','0.5000E+11','0.1000E+11', 
'0.1000E+11','0.1000E+11','0.2500E+11','0.2500E+11','0.2500E+11', 
'0.5000E+11','0.5000E+11','0.5000E+11','0.1000E+11','0.1000E+11', 
'0.1000E+11','0.2500E+11','0.2500E+11','0.2500E+11','0.5000E+11', 
'0.5000E+11','0.5000E+11','0.1000E+11','0.1000E+11','0.1000E+11', 
'0.2500E+11','0.2500E+11','0.2500E+11','0.5000E+11','0.5000E+11', 
'0.5000E+11')];
 
$keyval{'ALP_INP'} = [(
'0.1000E+01','0.1000E+01','0.1000E+01','0.1000E+01','0.1000E+01', 
'0.1000E+01','0.1000E+01','0.1000E+01','0.1000E+01','0.2500E+01', 
'0.2500E+01','0.2500E+01','0.2500E+01','0.2500E+01','0.2500E+01', 
'0.2500E+01','0.2500E+01','0.2500E+01','0.5000E+01','0.5000E+01', 
'0.5000E+01','0.5000E+01','0.5000E+01','0.5000E+01','0.5000E+01', 
'0.5000E+01','0.5000E+01','0.1000E+01','0.1000E+01','0.1000E+01', 
'0.1000E+01','0.1000E+01','0.1000E+01','0.1000E+01','0.1000E+01', 
'0.1000E+01','0.2500E+01','0.2500E+01','0.2500E+01','0.2500E+01', 
'0.2500E+01','0.2500E+01','0.2500E+01','0.2500E+01','0.2500E+01', 
'0.5000E+01','0.5000E+01','0.5000E+01','0.5000E+01','0.5000E+01', 
'0.5000E+01','0.5000E+01','0.5000E+01','0.5000E+01','0.1000E+01', 
'0.1000E+01','0.1000E+01','0.1000E+01','0.1000E+01','0.1000E+01', 
'0.1000E+01','0.1000E+01','0.1000E+01','0.2500E+01','0.2500E+01', 
'0.2500E+01','0.2500E+01','0.2500E+01','0.2500E+01','0.2500E+01', 
'0.2500E+01','0.2500E+01','0.5000E+01','0.5000E+01','0.5000E+01', 
'0.5000E+01','0.5000E+01','0.5000E+01','0.5000E+01','0.5000E+01', 
'0.5000E+01')];
 
$keyval{'EAUR_INP'} = [(
'0.1000E-01','0.1000E-01','0.1000E-01','0.1000E-01','0.1000E-01', 
'0.1000E-01','0.1000E-01','0.1000E-01','0.1000E-01','0.1000E-01', 
'0.1000E-01','0.1000E-01','0.1000E-01','0.1000E-01','0.1000E-01', 
'0.1000E-01','0.1000E-01','0.1000E-01','0.1000E-01','0.1000E-01', 
'0.1000E-01','0.1000E-01','0.1000E-01','0.1000E-01','0.1000E-01', 
'0.1000E-01','0.1000E-01','0.2500E-01','0.2500E-01','0.2500E-01', 
'0.2500E-01','0.2500E-01','0.2500E-01','0.2500E-01','0.2500E-01', 
'0.2500E-01','0.2500E-01','0.2500E-01','0.2500E-01','0.2500E-01', 
'0.2500E-01','0.2500E-01','0.2500E-01','0.2500E-01','0.2500E-01', 
'0.2500E-01','0.2500E-01','0.2500E-01','0.2500E-01','0.2500E-01', 
'0.2500E-01','0.2500E-01','0.2500E-01','0.2500E-01','0.5000E-01', 
'0.5000E-01','0.5000E-01','0.5000E-01','0.5000E-01','0.5000E-01', 
'0.5000E-01','0.5000E-01','0.5000E-01','0.5000E-01','0.5000E-01', 
'0.5000E-01','0.5000E-01','0.5000E-01','0.5000E-01','0.5000E-01', 
'0.5000E-01','0.5000E-01','0.5000E-01','0.5000E-01','0.5000E-01', 
'0.5000E-01','0.5000E-01','0.5000E-01','0.5000E-01','0.5000E-01', 
'0.5000E-01')];
 
#
# OUTPUT files:
# 
for ($i=1; $i<=$nfiles; ++$i) {
  if ($i <= 9) {  
    $n = "00${i}"; 
  } elsif ($i <= 99) { 
    $n = "0${i}"; 
  } 
  push(@ncfiles,"\'$basename${n}.nc\'");
}
#print "ncfiles=@ncfiles\n";
$keyval{'OUTPUT'} = [( @ncfiles )];
#
# 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) {
  if ($n <= 9) {  
    $n = "00${n}"; 
  } elsif ($n <= 99) { 
    $n = "0${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
