Skip to content
Snippets Groups Projects
fwd.hpp 1.89 KiB
Newer Older
  • Learn to ignore specific revisions
  • Ian Bell's avatar
    Ian Bell committed
    #pragma once
    
    /**
    * The name of this file is currently a bit of a misnomer while
    * we think about whether it is possible to forward-declare the models
    * 
    * It seems like perhaps that is not possible.  For now this header 
    * just provides the main variant with the model definitions.
    */
    
    #include <valarray>
    #include <variant>
    
    #include "teqp/models/vdW.hpp"
    #include "teqp/models/cubics.hpp"
    #include "teqp/models/CPA.hpp"
    #include "teqp/models/pcsaft.hpp"
    #include "teqp/models/multifluid.hpp"
    
    #include "teqp/models/multifluid_mutant.hpp"
    
    #include "teqp/ideal_eosterms.hpp"
    
    #include "teqp/models/ammonia_water.hpp"
    
    #include "teqp/models/model_potentials/squarewell.hpp"
    #include "teqp/models/model_potentials/exp6.hpp"
    
    Ian Bell's avatar
    Ian Bell committed
    
    namespace teqp {
    
    	using vad = std::valarray<double>;
    
    
    Ian Bell's avatar
    Ian Bell committed
        // Define the EOS types by interrogating the types returned by the respective
        // factory function or by alias of the class name
    
        using canonical_cubic_t = decltype(canonical_PR(vad{}, vad{}, vad{}));
        using PCSAFT_t = decltype(PCSAFT::PCSAFTfactory(nlohmann::json{}));
        using CPA_t = decltype(CPA::CPAfactory(nlohmann::json{}));
        using multifluid_t = decltype(multifluidfactory(nlohmann::json{}));
    
        using multifluidmutant_t = decltype(build_multifluid_mutant(multifluidfactory(nlohmann::json{}), nlohmann::json{}));
    
        using ammonia_water_TillnerRoth_t = AmmoniaWaterTillnerRoth;
    
        using SW_EspindolaHeredia2009_t = squarewell::EspindolaHeredia2009;
        using EXP6_Kataoka1992_t = exp6::Kataoka1992;
        using vdWEOS_t = vdWEOS<double>;
    
        using idealgas_t = IdealHelmholtz;
    
    
    	// The set of these models is exposed in the variant
    
    Ian Bell's avatar
    Ian Bell committed
    	using AllowedModels = std::variant<
    		vdWEOS1,
    
            vdWEOS_t,
    
            canonical_cubic_t,
            PCSAFT_t,
            CPA_t,
    
            multifluid_t,
    
            multifluidmutant_t,
    
            idealgas_t,
    
            ammonia_water_TillnerRoth_t,
            SW_EspindolaHeredia2009_t,
            EXP6_Kataoka1992_t
    
    Ian Bell's avatar
    Ian Bell committed
    	>;