@@ -146,22 +146,6 @@ ECVmultiThermalBaric::ECVmultiThermalBaric(const ActionOptions&ao)
146
146
const double kB =plumed.getAtoms ().getKBoltzmann ();
147
147
const double temp0=kbt_/kB ;
148
148
149
- // workaround needed for intel compiler
150
- bool nan_support=true ;
151
- const double my_nan_value=-42 ;
152
- if (!std::isnan (std::numeric_limits<double >::quiet_NaN ()))
153
- {
154
- nan_support=false ;
155
- log .printf (" +++ WARNING +++ do not set PRESSURE_MIN/MAX=%g, see https://github.com/plumed/plumed2/pull/990\n " , my_nan_value);
156
- }
157
- auto isNone=[nan_support,my_nan_value](const double value)
158
- {
159
- if (nan_support)
160
- return std::isnan (value);
161
- else
162
- return value==my_nan_value;
163
- };
164
-
165
149
// parse temp range
166
150
double temp_min=-1 ;
167
151
double temp_max=-1 ;
@@ -175,8 +159,9 @@ ECVmultiThermalBaric::ECVmultiThermalBaric(const ActionOptions&ao)
175
159
geom_spacing_=!geom_spacing_;
176
160
// parse pressures
177
161
parse (" PRESSURE" ,pres0_);
178
- double pres_min=std::numeric_limits<double >::quiet_NaN (); // -1 might be a meaningful pressure
179
- double pres_max=std::numeric_limits<double >::quiet_NaN ();
162
+ const double myNone=std::numeric_limits<double >::lowest (); // quiet_NaN is not supported by some intel compiler
163
+ double pres_min=myNone; // -1 might be a meaningful pressure
164
+ double pres_max=myNone;
180
165
parse (" PRESSURE_MIN" ,pres_min);
181
166
parse (" PRESSURE_MAX" ,pres_max);
182
167
unsigned pres_steps=0 ;
@@ -197,7 +182,7 @@ ECVmultiThermalBaric::ECVmultiThermalBaric(const ActionOptions&ao)
197
182
plumed_massert (temp_steps==0 ," cannot set both SET_ALL_TEMP_PRESSURE and TEMP_STEPS" );
198
183
plumed_massert (pres_steps==0 ," cannot set both SET_ALL_TEMP_PRESSURE and PRESSURE_STEPS" );
199
184
plumed_massert (temp_min==-1 && temp_max==-1 ," cannot set both SET_ALL_TEMP_PRESSURE and TEMP_MIN/MAX" );
200
- plumed_massert (isNone ( pres_min) && isNone ( pres_max) ," cannot set both SET_ALL_TEMP_PRESSURE and PRESSURE_MIN/MAX" );
185
+ plumed_massert (pres_min==myNone && pres_max==myNone ," cannot set both SET_ALL_TEMP_PRESSURE and PRESSURE_MIN/MAX" );
201
186
plumed_massert (cut_corner.size ()==0 ," cannot set both SET_ALL_TEMP_PRESSURE and CUT_CORNER" );
202
187
// setup the target temperature-pressure grid
203
188
derECVs_beta_.resize (custom_lambdas_.size ());
@@ -273,7 +258,7 @@ ECVmultiThermalBaric::ECVmultiThermalBaric(const ActionOptions&ao)
273
258
if (pres_.size ()>0 )
274
259
{
275
260
plumed_massert (pres_steps==0 ," cannot set both PRESSURE_STEPS and PRESSURE_SET_ALL" );
276
- plumed_massert (isNone ( pres_min) && isNone ( pres_max) ," cannot set both PRESSURE_SET_ALL and PRESSURE_MIN/MAX" );
261
+ plumed_massert (pres_min==myNone && pres_max==myNone ," cannot set both PRESSURE_SET_ALL and PRESSURE_MIN/MAX" );
277
262
plumed_massert (pres_.size ()>=2 ," set at least 2 pressures" );
278
263
for (unsigned kk=0 ; kk<pres_.size ()-1 ; kk++)
279
264
plumed_massert (pres_[kk]<=pres_[kk+1 ]," PRESSURE_SET_ALL must be properly ordered" );
@@ -282,12 +267,12 @@ ECVmultiThermalBaric::ECVmultiThermalBaric(const ActionOptions&ao)
282
267
}
283
268
else
284
269
{ // get PRESSURE_MIN and PRESSURE_MAX
285
- if (isNone ( pres_min) )
270
+ if (pres_min==myNone )
286
271
{
287
272
pres_min=pres0_;
288
273
log .printf (" no PRESSURE_MIN provided, using PRESSURE_MIN=PRESSURE\n " );
289
274
}
290
- if (isNone ( pres_max) )
275
+ if (pres_max==myNone )
291
276
{
292
277
pres_max=pres0_;
293
278
log .printf (" no PRESSURE_MAX provided, using PRESSURE_MAX=PRESSURE\n " );
0 commit comments