// $Id: transpbh.C,v 1.2 2013/04/19 03:49:25 zjcao Exp $
#ifdef newc
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <cmath>
using namespace std;
#else
#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#endif

#include "macrodef.h"

// transmit black hole's position from bssn class

int BHN;
double Mass[3];
double PBH[9];

void setpbh(int iBHN, double **iPBH, double *iMass, int rBHN)
{
  BHN = Mymax(iBHN, rBHN);
  for (int i = 0; i < iBHN; i++)
  {
    for (int j = 0; j < 3; j++)
      PBH[3 * i + j] = iPBH[i][j];
    Mass[i] = iMass[i];
  }
  if (BHN < rBHN)
  {
    if (rBHN > 2)
      cout << "error in transpbh.C: something wrong." << endl;
    else
    {
      for (int j = 0; j < 3; j++)
        PBH[3 + j] = -iPBH[0][j];

      Mass[1] = Mass[0];
    }
  }
}
extern "C"
{

#ifdef fortran1
  void getpbh
#endif
#ifdef fortran2
      void GETPBH
#endif
#ifdef fortran3
      void
      getpbh_
#endif
      (int &oBHN, double *oPBH, double *oMass)
  {
    oBHN = BHN;
    for (int i = 0; i < BHN; i++)
      oMass[i] = Mass[i];
    for (int i = 0; i < 3 * BHN; i++)
      oPBH[i] = PBH[i];

    //  printf("have set BH_num = %d\n",oBHN);
  }
}
