#include "F77Radtran.h" #include "fortranfunctions.h" #include #include #include extern "C" void simulate_refraction_angle( float* zr, float* pr, float* tr, float **tgr, int* nr, int* mr, float* wave, float* re, float* za, float* sim_refrac_angle, int* ncel ) { int mcel; // static int ncel; int mpout; static int c_one = 1; static int debug = 0; // 0 is a false (this is the debug flag) static int irf = 1; // 1 is true always do refraction static int iplat = 0; // observer in space static int ic1 = -1; static int ic2 = 1; std::vector zt, pt, tt, gr, pout; float tearth; // int mr, nr; //std::cout << " here " << std::endl; //std::cout << "wave " << *wave << std::endl; //exit(23); //for (int i = 0; i< *nr; ++i) // std::cout << tr[i] << " " << zr[i] << std::endl; //std::cout << "&" << std::endl; mcel= *ncel ; int it2 = mcel * mcel; int it1 = it2 + mcel; mpout = mcel * 11 + 3 + it1 * 12 + it2 * 3; pout.resize(mpout); zt.resize(mcel); pt.resize(mcel); tt.resize(mcel); gr.resize(2*mcel); ::kp_inita__(&debug, &mcel, (int*)&pout[0] ) ; ::kp_mpath__( mr, &mcel, &mpout, &irf, &c_one, ncel, &c_one, re, ncel, nr, wave, &iplat, za, zr, pr, tr, &tgr[0][0], &zt[0], &pt[0], &tt[0], &gr[0],&tearth, &pout[0] ); for(int ir=1; ir<= *ncel; ++ir ) { sim_refrac_angle[ir-1] = (float)::refraction_( &ir, &ic1, &ic2, &pout[0] ) ; // std::cout << za[ir-1] << " " << sim_refrac_angle[ir-1] << std::endl; } //exit(23); return; }