#!perl #
#
# Perl script 'fv.pl' to perform network ray tracing in Fresnel volumes
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Usage:
#     perl fv.pl $-
# Parameters:
#     $-...   Prefix of the input data files.
# Input files required:
#     $-gri1.dat, $-net1.dat, $-net2.dat,
#     $-gri3.dat, $-net3.dat, $-net4.dat, $-net.h and files referred
#                                                 from them.
#     First  3 files correspond to the first iteration,
#     latter 3 files correspond to all subsequent iterations.
#     Inside all these files $-net.out, which will be created of
#     $-net.h, has to be referred as the SEP parameter file describing
#     the grid dimensions and numerical parameters.
# Note:
#     After each network ray tracing from the 1st (source) point to the
#     2nd (receiver) point, you may Quit the iterations.  Consecutive
#     network ray tracing in the opposite is not required during the
#     last iteration, which may be reported by program 'netind.for' or
#     indicated by a user.
# ======================================================================
# Input files required:
  $PREFIX=$ARGV[0];
  @ARGV=();
  require        'go.pl'             ;
# &CHK("net/"   ,"net.fs2"          ); # just in 2-D
# &CHK("net/"   ,"net.fs3"          ); # just in 3-D
  &CHK("net/fv/","${PREFIX}gri1.dat");
  &CHK("net/fv/","${PREFIX}net1.dat");
  &CHK("net/fv/","${PREFIX}net2.dat");
  &CHK("net/fv/","${PREFIX}gri3.dat");
  &CHK("net/fv/","${PREFIX}net3.dat");
  &CHK("net/fv/","${PREFIX}net4.dat");
  &CHK("net/fv/","${PREFIX}net.h"   );
# &CHK("net/fv/","${PREFIX}src.dat" ); # or whatever is referred
# &CHK("net/fv/","${PREFIX}rec.dat" ); # or whatever is referred
# &CHK("net/fv/","vgr-mod.dat"      ); # or whatever is referred
#
# Copy file $-net.h to $-net.out:
  ©("${PREFIX}net.h","${PREFIX}net.out");
#
# First iteration:
  &RUN("grid"  ,"'${PREFIX}net.out' '${PREFIX}gri1.dat' /");
  &ECHO(       ">>${PREFIX}net.out","  NET='${PREFIX}net1.dat'");
  &RUN("net"   ,"'${PREFIX}net.out' /");
  &ECHO(       ">>${PREFIX}net.out","  NET='${PREFIX}net2.dat'");
  &RUN("net"   ,"'${PREFIX}net.out' /");
  &RUN("netind","'${PREFIX}net.out' '${PREFIX}net1.dat' '${PREFIX}net2.dat' '${PREFIX}net3.dat' /");
#
# Next iterations:
FV:
  &RUN("grid"  ,"'${PREFIX}net.out' '${PREFIX}gri3.dat' /");
  &ECHO(       ">>${PREFIX}net.out","  NET='${PREFIX}net3.dat'");
  &RUN("net"   ,"'${PREFIX}net.out' /");
  print "Type Q[uit] to terminate iterations, RETURN to continue: ";
  $ans=;
  exit 0 if $ans=~ /^[Qq]/;
  &ECHO(       ">>${PREFIX}net.out","  NET='${PREFIX}net4.dat'");
  &RUN("net"   ,"'${PREFIX}net.out' /");
  &RUN("netind","'${PREFIX}net.out' '${PREFIX}net3.dat' '${PREFIX}net4.dat' '${PREFIX}net3.dat' /");
goto FV;
#
1;                                                               #