diff --git a/MaterialLib/Fluid/FluidProperties/FluidProperties.h b/MaterialLib/Fluid/FluidProperties/FluidProperties.h index 2e4743b3e684c1a6199869285cfb5f3dd10697ca..22a224a36209bf393f663cde121ec0fee13b816f 100644 --- a/MaterialLib/Fluid/FluidProperties/FluidProperties.h +++ b/MaterialLib/Fluid/FluidProperties/FluidProperties.h @@ -48,11 +48,17 @@ public: std::unique_ptr<MaterialLib::Fluid::FluidProperty>&& heat_capacity, std::unique_ptr<MaterialLib::Fluid::FluidProperty>&& thermal_conductivity) - /* Will use this if MS visual studio compiler supports - : _property_models{{std::move(density), std::move(viscosity), - std::move(heat_capacity), - std::move(thermal_conductivity)}} - */ +#ifndef MSVC + // Up to the latest Visual Studio compiler, Visual Studio 2015 + // list initialization inside member initializer list or non-static data + // member initializer is not implemented. + // See: https://msdn.microsoft.com/en-us/library/dn793970.aspx + : _property_models{{std::move(density), std::move(viscosity), + std::move(heat_capacity), + std::move(thermal_conductivity)}} + { + } +#else { // Move to the initialization list if MS visual studio compiler supports _property_models[static_cast<unsigned>(FluidPropertyType::Density)] = @@ -65,6 +71,7 @@ public: FluidPropertyType::ThermalConductivity)] = std::move(thermal_conductivity); } +#endif virtual ~FluidProperties() = default; @@ -94,6 +101,10 @@ public: const PropertyVariableType variable_type) const = 0; protected: +#ifdef MSVC + std::array<std::unique_ptr<FluidProperty>, FluidPropertyTypeNumber> + _property_models; +#else /** Fluid property models. * 0: density; * 1: viscosity; @@ -102,8 +113,9 @@ protected: * * The index is specified via enum class PropertyType. */ - std::array<std::unique_ptr<FluidProperty>, FluidPropertyTypeNumber> + const std::array<std::unique_ptr<FluidProperty>, FluidPropertyTypeNumber> _property_models; +#endif }; } // end namespace diff --git a/MaterialLib/Fluid/FluidProperties/FluidPropertiesWithDensityDependentModels.cpp b/MaterialLib/Fluid/FluidProperties/FluidPropertiesWithDensityDependentModels.cpp index 9793b70a46fcaac5a1b828571b0ae9675e5e048f..c664c3c12355e60afb1e56c06ea33f34b4f3feb9 100644 --- a/MaterialLib/Fluid/FluidProperties/FluidPropertiesWithDensityDependentModels.cpp +++ b/MaterialLib/Fluid/FluidProperties/FluidPropertiesWithDensityDependentModels.cpp @@ -35,8 +35,8 @@ FluidPropertiesWithDensityDependentModels:: std::move(heat_capacity), std::move(thermal_conductivity)), _is_density_dependent{{false, is_viscosity_density_dependent, - is_heat_capacity_dependent, - is_thermal_conductivity}} + is_heat_capacity_dependent, + is_thermal_conductivity}} { } @@ -77,7 +77,7 @@ double FluidPropertiesWithDensityDependentModels::getdValue( ->getdValue(variable_values, variable_type); } - return 0.; + return 0.0; } double FluidPropertiesWithDensityDependentModels::compute_df_drho_drho_dT(