You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A colleague noticed that when an optimisation switch is added to CCFLAGS or NVCCFLAGS (e.g. -O1 or -O2) in the Makefile, min/max unresolved errors occur. Adding the std:: prefix to each occurrence solves that problem, as follows:
diff --git a/makjonswap.cpp b/makjonswap.cpp
index f9043a0..2a3df0e 100644
--- a/makjonswap.cpp
+++ b/makjonswap.cpp
@@ -76,12 +76,12 @@ void makjonswap(XBGPUParam Param, std::vector<Wavebndparam> wavebnd, int step, i
double * x, *y;
double Hs = wavebnd[step].Hs;
- double Tp = max(wavebnd[step].Tp,1.5); // for very small Tp the wave group generator will request a Giant amount of memory so we need to cap it here
+ double Tp = std::max(wavebnd[step].Tp,1.5); // for very small Tp the wave group generator will request a Giant amount of memory so we need to cap it here
double Dp = wavebnd[step].Dp; // converted to the main angle already
double mainang = Dp;
double fp = 1 / Tp;
double gam = wavebnd[step].gamma;
- double scoeff = max(round(min(wavebnd[step].s,1000.0)),10.0);
+ double scoeff = std::max(round(std::min(wavebnd[step].s,1000.0)),10.0);
printf("Generating JONSWAP spectrum: Hs=%f, Tp=%f, Dp=%f, gam=%f, s=%f\n",Hs,Tp,Dp,gam,scoeff);
@@ -311,8 +311,8 @@ void GenWGnLBW(XBGPUParam Param, int nf, int ndir,double * HRfreq,double * HRdir
Sfmax = 0.0;
for (int n = 0; n < nf; n++)
{
- fmax = max(fmax,HRfreq[n]);
- Sfmax = max(Sfmax, Sf[n]);
+ fmax = std::max(fmax,HRfreq[n]);
+ Sfmax = std::max(Sfmax, Sf[n]);
}
fmax = 2.0*fmax; //????
@@ -340,7 +340,7 @@ void GenWGnLBW(XBGPUParam Param, int nf, int ndir,double * HRfreq,double * HRdir
//wave frequency range
K = ceil(Param.rtlength*(HRfreq[ind2] - HRfreq[ind1]) + 1);
//also include minimum number of components
- K = (int)max(K*1.0, Kmin*1.0);// workaround because template for int not compiling for some reason
+ K = (int)std::max(K*1.0, Kmin*1.0);// workaround because template for int not compiling for some reason
fgen = (double *)malloc(K*sizeof(double));
phigen = (double *)malloc(K*sizeof(double));
@@ -474,7 +474,7 @@ void GenWGnLBW(XBGPUParam Param, int nf, int ndir,double * HRfreq,double * HRdir
if (Sf[n] >= Sfmax*trepfac)
{
- temptrep += (Sf[n] / max(HRfreq[n], 0.001));
+ temptrep += (Sf[n] / std::max(HRfreq[n], 0.001));
tempf += Sf[n];
}
@@ -534,7 +534,7 @@ void GenWGnLBW(XBGPUParam Param, int nf, int ndir,double * HRfreq,double * HRdir
double Tbc = 1 / fgen[0]; //Should be Trep or 1/fpeak...
int ntaper = (int)((5.0*Tbc) / dtin);
- for (int n = 0; n < (int)min(1.0*ntaper, 1.0*tslen); n++)
+ for (int n = 0; n < (int)std::min(1.0*ntaper, 1.0*tslen); n++)
{
taperf[n] = tanh(5.0*n / ntaper); //
taperw[n] = tanh(5.0*n / ntaper); //
@@ -587,7 +587,7 @@ void GenWGnLBW(XBGPUParam Param, int nf, int ndir,double * HRfreq,double * HRdir
for (int i = 0; i < K; i++)
{
dummy = interp1DMono(nf, HRfreq, Sf, fgen[i]);
- vargenq[i] = min(vargen[i] ,dummy);
+ vargenq[i] = std::min(vargen[i] ,dummy);
}
//////////////////////////////////////
@@ -1077,7 +1077,7 @@ void GenWGnLBW(XBGPUParam Param, int nf, int ndir,double * HRfreq,double * HRdir
//Modification Robert + Jaap: make sure that the bound long wave amplitude does not
// !explode when offshore boundary is too close to shore,
// !by limiting the interaction group velocity
- cg3[i + m*(K - 1)] = min(cg3[i + m*(K - 1)], Param.nmax*sqrt(Param.g / k3*tanh(k3*Param.offdepth)));
+ cg3[i + m*(K - 1)] = std::min(cg3[i + m*(K - 1)], Param.nmax*sqrt(Param.g / k3*tanh(k3*Param.offdepth)));
//Determine difference - interaction coefficient according to Herbers 1994
// !eq.A5
diff --git a/read_input.cpp b/read_input.cpp
index d34dc01..e3285a2 100644
--- a/read_input.cpp
+++ b/read_input.cpp
@@ -1363,20 +1363,20 @@ XBGPUParam checkparamsanity(XBGPUParam XParam, std::vector<SLBnd> slbnd, std::ve
XParam.endtime = 1.0 / tiny; //==huge
// if (slbnd.back().time>0.0 && wndbnd.back().time > 0.0)
// {
- // XParam.endtime = min(slbnd.back().time, wndbnd.back().time);
+ // XParam.endtime = std::min(slbnd.back().time, wndbnd.back().time);
// }
//
//
}
//Check that endtime is no longer than the shortest boundary
- double endbnd = min(slbnd.back().time, wndbnd.back().time);
+ double endbnd = std::min(slbnd.back().time, wndbnd.back().time);
- endbnd = min(endbnd, wavbnd.back().time);
+ endbnd = std::min(endbnd, wavbnd.back().time);
- XParam.endtime = min(XParam.endtime, endbnd);
+ XParam.endtime = std::min(XParam.endtime, endbnd);
// Issue a warning?
diff --git a/tools.cpp b/tools.cpp
index 29cc687..a6fd4d6 100644
--- a/tools.cpp
+++ b/tools.cpp
@@ -46,11 +46,11 @@ double interp1D(int nx, double *x, double *y, double xx)
diffx = xx - x[i];
if (diffx <= 0.0)
{
- indx = (int)max(i*1.0 - 1, 0.0);
+ indx = (int)std::max(i*1.0 - 1, 0.0);
break;
}
}
- indxp = (int)min(indx*1.0 + 1, nx*1.0 - 1);
+ indxp = (int)std::min(indx*1.0 + 1, nx*1.0 - 1);
prevx = x[indx];
nextx = x[indxp];
prevy = y[indx];
@@ -73,13 +73,13 @@ double interp1DMono(int nx, double *x, double *y, double xx)
int indx = 0;
int indxp;
- double diffx = max(xx-x[0],0.0);//This has to be positive!
+ double diffx = std::max(xx-x[0],0.0);//This has to be positive!
indx = (int)floor(diffx / dx);
- indxp = (int)min(indx*1.0 + 1, nx*1.0 - 1);
+ indxp = (int)std::min(indx*1.0 + 1, nx*1.0 - 1);
prevx = x[indx];
nextx = x[indxp];
prevy = y[indx];
@@ -110,13 +110,13 @@ double Interp2(int nx, int ny, double *x, double *y, double *z, double xx, doubl
diffx = xx - x[i];
if (diffx <= 0.0)
{
- indx = (int)max(i*1.0 - 1, 0.0);
+ indx = (int)std::max(i*1.0 - 1, 0.0);
break;
}
}
x1 = x[indx];
- indxp = (int)min(indx*1.0 + 1, nx*1.0 - 1);
+ indxp = (int)std::min(indx*1.0 + 1, nx*1.0 - 1);
x2 = x[indxp];
int indy = 0;
@@ -131,13 +131,13 @@ double Interp2(int nx, int ny, double *x, double *y, double *z, double xx, doubl
diffy = yy - y[i];
if (diffy <= 0.0)
{
- indy = (int)max(i*1.0 - 1, 0.0);
+ indy = (int)std::max(i*1.0 - 1, 0.0);
break;
}
}
y1 = y[indy];
- indyp = (int)min(indy*1.0 + 1, ny*1.0 - 1);
+ indyp = (int)std::min(indy*1.0 + 1, ny*1.0 - 1);
y2 = y[indyp];
q11 = z[indx + indy*nx];
A colleague noticed that when an optimisation switch is added to
CCFLAGS
orNVCCFLAGS
(e.g.-O1
or-O2
) in theMakefile
,min
/max
unresolved errors occur. Adding thestd::
prefix to each occurrence solves that problem, as follows:See also comments about the same problem in #51.
The text was updated successfully, but these errors were encountered: