ESMC_AxisIndex ESMC_DomainList::ESMC_DomainListGetAI(int domainnum, int ainum) { int rc; //ESMC_DomainList *dp = this; ESMC_AxisIndex AI; FTN(f_esmf_domainlistgetai)(this, &domainnum, &ainum, &AI, &rc); return AI; }
void PolyFit1D(UInt nsamples, const double coord[], const double vals[], const std::vector<POLY*> &poly, double coef[]) { #ifdef ESMCI_LAPACK UInt ncoef = poly.size(); int m = nsamples, n = ncoef, nrhs = 1, info = 0, rank, ldb; ldb = std::max(std::max(m,n),1); std::vector<double> mat(nsamples*ncoef); std::vector<double> rhs(ldb); for (UInt i = 0; i < nsamples; i++) { rhs[i] = vals[i]; // sizing might not be right, so copy for (UInt j = 0; j < ncoef; j++) { mat[j*nsamples + i] = EvalPoly<POLY>()(*poly[j], coord[i]); } } std::vector<int> jpvt(ncoef, 0); //int lwork = std::max(std::min(m,n)+2*n+1, 2*std::min(m,n)+nrhs); // TODO figure this out int lwork = 4028; std::vector<double> work(lwork, 0); double rcond=0.0000000000001; FTN(dgelsy)( &m, &n, &nrhs, &mat[0], &m, &rhs[0], &ldb, &jpvt[0], &rcond, &rank, &work[0], &lwork, &info); for (UInt i = 0; i < ncoef; i++) coef[i] = rhs[i]; #endif }
int ESMC_DomainList::ESMC_DomainListGetDE(int domainnum) { int rc, de; //ESMC_DomainList *dp = this; FTN(f_esmf_domainlistgetde)(this, &domainnum, &de, &rc); return de; }