WellAssemble: optionally instantiate for float

This commit is contained in:
Arne Morten Kvarving 2024-04-12 13:11:09 +02:00
parent db3d552fe7
commit aceadc5e88

View File

@ -283,48 +283,55 @@ assembleControlEqInj(const WellState<Scalar>& well_state,
}
}
#define INSTANCE_METHODS(A,...) \
template void WellAssemble<A>:: \
assembleControlEqProd<__VA_ARGS__>(const WellState<typename A::Scalar>&, \
#define INSTANTIATE_METHODS(A,...) \
template void WellAssemble<A>:: \
assembleControlEqProd<__VA_ARGS__>(const WellState<typename A::Scalar>&, \
const GroupState<typename A::Scalar>&, \
const Schedule&, \
const SummaryState&, \
const Well::ProductionControls&, \
const __VA_ARGS__&, \
const std::vector<__VA_ARGS__>&, \
const std::function<__VA_ARGS__()>&, \
__VA_ARGS__&, \
DeferredLogger&) const; \
template void WellAssemble<A>:: \
assembleControlEqInj<__VA_ARGS__>(const WellState<typename A::Scalar>&, \
const GroupState<typename A::Scalar>&, \
const Schedule&, \
const SummaryState&, \
const Well::InjectionControls&, \
const __VA_ARGS__&, \
const __VA_ARGS__&, \
const std::function<__VA_ARGS__()>&, \
__VA_ARGS__&, \
const Schedule&, \
const SummaryState&, \
const Well::ProductionControls&, \
const __VA_ARGS__&, \
const std::vector<__VA_ARGS__>&, \
const std::function<__VA_ARGS__()>&, \
__VA_ARGS__&, \
DeferredLogger&) const; \
template void WellAssemble<A>:: \
assembleControlEqInj<__VA_ARGS__>(const WellState<typename A::Scalar>&, \
const GroupState<typename A::Scalar>&, \
const Schedule&, \
const SummaryState&, \
const Well::InjectionControls&, \
const __VA_ARGS__&, \
const __VA_ARGS__&, \
const std::function<__VA_ARGS__()>&, \
__VA_ARGS__&, \
DeferredLogger&) const;
using FluidSys = BlackOilFluidSystem<double, BlackOilDefaultIndexTraits>;
template<class Scalar>
using FS = BlackOilFluidSystem<Scalar,BlackOilDefaultIndexTraits>;
template class WellAssemble<FluidSys>;
#define INSTANTIATE_TYPE(T) \
template class WellAssemble<FS<T>>; \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,3,0u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,4,0u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,5,0u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,6,0u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,7,0u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,8,0u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,9,0u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,-1,4u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,-1,5u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,-1,6u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,-1,7u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,-1,8u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,-1,9u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,-1,10u>) \
INSTANTIATE_METHODS(FS<T>, DenseAd::Evaluation<T,-1,11u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,3,0u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,4,0u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,5,0u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,6,0u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,7,0u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,8,0u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,9,0u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,-1,4u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,-1,5u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,-1,6u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,-1,7u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,-1,8u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,-1,9u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,-1,10u>)
INSTANCE_METHODS(FluidSys, DenseAd::Evaluation<double,-1,11u>)
INSTANTIATE_TYPE(double)
#if FLOW_INSTANTIATE_FLOAT
INSTANTIATE_TYPE(float)
#endif
} // namespace Opm