Files
AMSS-NCKU/AMSS_NCKU_source/transpbh.C
2026-01-13 15:01:15 +08:00

75 lines
1.4 KiB
C

// $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);
}
}