/*
** (c) 1996-2000 The Regents of the University of California (through
** E.O. Lawrence Berkeley National Laboratory), subject to approval by
** the U.S. Department of Energy.  Your use of this software is under
** license -- the license agreement is attached and included in the
** directory as license.txt or you may contact Berkeley Lab's Technology
** Transfer Department at TTD@lbl.gov.  NOTICE OF U.S. GOVERNMENT RIGHTS.
** The Software was developed under funding from the U.S. Government
** which consequently retains certain rights as follows: the
** U.S. Government has been granted for itself and others acting on its
** behalf a paid-up, nonexclusive, irrevocable, worldwide license in the
** Software to reproduce, prepare derivative works, and perform publicly
** and display publicly.  Beginning five (5) years after the date
** permission to assert copyright is obtained from the U.S. Department of
** Energy, and subject to any subsequent five (5) year renewals, the
** U.S. Government is granted for itself and others acting on its behalf
** a paid-up, nonexclusive, irrevocable, worldwide license in the
** Software to reproduce, prepare derivative works, distribute copies to
** the public, perform publicly and display publicly, and to permit
** others to do so.
*/


//
// $Id: tread.cpp,v 1.1 2001/10/11 16:33:38 lijewski Exp $
//
// Read in and sum up FABs on command line.
//
// This assumes they're all the same size and shape.
//

#include <fstream>
#include <iostream>

#include <Utility.H>
#include <FArrayBox.H>

int
main (int argc, char** argv)
{
    BoxLib::Initialize(argc, argv);

    if (argc < 2)
    {
        std::cerr << "tread: fab1 fab2 fab3 ..." << std::endl;
        exit(1);
    }

    int idx = 1;

    FArrayBox sum;

    std::ifstream ifs;

    ifs.open(argv[idx], std::ios::in);

    if (!ifs.good())
        BoxLib::FileOpenFailed(argv[idx]);

    std::cout << "Reading " << argv[idx] << " ..." << std::endl;

    sum.readFrom(ifs);

    idx++;

    for ( ; idx < argc; idx++)
    {


        FArrayBox tmp;

        std::ifstream ifs;

        ifs.open(argv[idx], std::ios::in);

        if (!ifs.good())
            BoxLib::FileOpenFailed(argv[idx]);

        std::cout << "Reading " << argv[idx] << " ..." << std::endl;

        tmp.readFrom(ifs);

        sum += tmp;
    }

    std::ofstream ofs;

    ofs.open("SUM",std::ios::out|std::ios::trunc);

    if (!ofs.good()) BoxLib::FileOpenFailed("SUM");

    sum.writeOn(ofs);

    BoxLib::Finalize();

    return 0;
}
